XScroll 是移动端web高性能模拟滚动解决方案,包含节点回收、下拉刷新、上拉加载等功能。
config
:
renderTo
渲染节点,内部需要包含class为xs-container,xs-content两个容器
height
外容器视窗高度
width
外容器视窗宽度
containerHeight
内容器高度
containerWidth
内容器宽度
scrollbarX
是否开启横向滚动条
scrollbarY
是否开启纵向滚动条
lockX
是否锁定横向滚动
lockY
是否锁定纵向滚动
gpuAcceleration
是否开启GPU硬件加速(在性能提升的同时需要注意内存控制)
enableGPUAcceleration()
开启硬件加速
disableGPUAcceleration()
开启硬件加速
getOffset()
获取水平和垂直偏移量,如:{x:0,y:100}
getOffsetTop()
获取垂直偏移量
getOffsetLeft()
获取水平偏移量
scrollTo(offset, duration, easing, callback)
滚动到某处 offset必须为{x:a,y:b}格式。
scrollX(x, duration, easing, callback)
水平滚动到某处
scrollY(y, duration, easing, callback)
垂直滚动到某处
bounce(enable,callback)
手动触发边缘回弹
on(event,handler)
监听某个事件
fire(event)
触发某个事件
detach(event,[handler])
移除某个事件
plug(plugin)
绑定插件
unplug(pluginId|plugin)
移除某插件
getPlugin(pluginId)
获取某个插件
extand XScroll
config
:
renderHook
逐行渲染的function,和传入的data相关联
itemHeight
默认每行行高,如果data中有定义,则该属性被覆盖
data
页面的数据,为一个Array,数组中每个对象必须为{data:{},style:{},recycled:false} 的格式,其中data代表真实数据,style代表样式,recycled代表当前行dom是否需要回收
appendDataSet(dataset)
添加一个数据集合
removeDataSet(datasetId)
移除一个数据集合
getDataSets()
获取所有数据集合
getDataSetById(datasetId)
根据集合ID获取数据集合
getCellByPageY(pageY)
根据视图坐标位置获取当前行单元
getCellByRow(row)
根据行号获取当前单元
getCellByOffsetY(offsetY)
根据当前滚动容器的offsetTop值获取当前单元
insertData(datasetIndex,rowIndex,data)
插入某组数据,插入位置为第datasetIndex组,第rowIndex行
getData(datasetIndex,rowIndex)
updateData(datasetIndex,rowIndex,data)
removeData(datasetIndex,rowIndex)
_getDomInfo()
获取当前xlist文档流内所有元素的位置、样式、数据信息
Example:
var xlist = new XList({ //set configs here }) var dataset = new XList.DataSet({ id:"section1", data:[ { data:{ name:"Jack" } }, { data:{ name:"Tom" } } ] }); //appendTo Xlist xlist.appendDataSet(dataset); //reflow xlist.render();
config
id
唯一ID,可省略
data
传入数据
appendData(data)
追加数据
insertData(index,data)
插入数据至某处
removeData(index)
删除数据
getData(index)
获取数据,参数为空则所有数据
setId(datasetId)
设置ID
getId()
获取ID
pull down to refresh or reload.
Example
var xlist = new XList(); // or XScroll.Plugin.PullDown var pulldown = new XList.Plugin.PullDown(); //plug xlist.plug(pulldown); xlist.render();
config
content
内容,若需要使用动画进行如上下箭头切换,则配置此项
downContent
下拉前展示的内容,默认为'Pull Down To Refresh'
upContent
松手展示内容,默认为'Release To Refresh'
loadingContent
加载中展示内容,默认为'Loading...'
prefix
class前缀,默认为'xs-plugin-pulldown-'
height
进行下拉和松手以及加载状态切换的高度,默认60
setContent(html)
改变数据
reset(callback)
数据加载完毕后,通知控件进行回弹
on("loading",fn)
监听loading事件,进行异步请求等逻辑
pull up to reload.
Example
var xlist = new XList(); var pullup = new XList.Plugin.PullUp(); //plug xlist.plug(pullup); xlist.render(); pullup.on("loading",function(){ // get remote data getData(); }); var page = 1, totalPage = 10; function getData(){ // $.ajax({ url:"demo.php", dataType:"json", callback:function(data){ if(page > totalPage) { //last page pullup.reset(); //destroy plugin xlist.unplug(pullup); return; }; ds.appendData(data); xlist.render(); //loading complate pullup.complete(); page++; } }) }
config
content
内容,同PullDown
upContent
下拉前展示的内容,默认为'Pull Up To Refresh'
downContent
松手展示内容,默认为'Release To Refresh'
loadingContent
加载中展示内容,默认为'Loading...'
prefix
class前缀,默认为'xs-plugin-pullup-'
height
加载状态时底部被拓展的边界高度,默认40
pullUpHeight
up和down切换的高度,默认80
setContent(html)
改变数据
reset(callback)
数据加载完毕后,通知控件进行回弹
on("loading",fn)
监听loading事件,进行异步请求等逻辑
complete()
加载结束后恢复上拉控件的状态至'up'
swipe left to delete or favourite etc.
Example
var xlist = new XList({ renderTo: "#J_Scroll", data: data, itemHeight: 62 , infiniteElements:"#J_Scroll .xs-row", renderHook:function(el,row){ el.innerHTML = '<div class="lbl">'+row.data.text+'</div>'+ '<div class="control"><div class="btn btn-mark">mark</div>'+ '<div class="btn btn-delete">delete</div></div>'; } }); var swipeEditPlugin = new XList.Plugin.SwipeEdit({ labelSelector:".lbl", width:maxWidth }); xlist.plug(swipeEditPlugin); xlist.on("click",function(e){ //delete if(e.target.className.match("btn-delete")){ xlist.removeData(0,e.cell._row) xlist.render(); } //mark if(e.target.className.match("btn-mark") && !e.target.className.match("btn-marked")){ var data = xlist.getData(0,e.cell._row) data.data.marked = true; e.target.className += " btn-marked"; } }) xlist.on("click", function(e) { //hide the buttons if(!e.target.parentNode.className.match('control')){ swipeEditPlugin.slideAllExceptRow(); } }); xlist.render();
config
labelSelector
操作栏的类选择器,如'.lbl'
width
操作栏总宽度
Email:huxiaoqi567@gmail.com
想写这个框架很长时间了,一直没有时间,断断续续写了一些,端午节这两天宅在家把它完成了。 兼容ie9+以上windowphone,android,ios等支持现代浏览器的移动端。 支持多层嵌套scroll和页面多scroll,随时改变宽度和改变内容对scroll无影响,开发者只需关注内容和业务逻辑。 废话少说,以下是github地址和demo地址,欢迎大家拍砖。 github: https://gi
首先说明,这是一个未完成版本。 最近一直在写这个XScroll.js,一直纠结于要不要发布出来,因为每次要发布的时候,我就觉得还没有写完善,还有bug,像个半吊子产品。但这两天我觉得,自己的javascript知识还是不足,如果等这个作品完善了才发布的话,我很担心要等到世界末日那天了。于是,我决定发布出来,当作学习过程的展示吧。 XScroll.js介绍: 更新:2012-4-13更新0.2版,加
准确获得页面、窗口高度及宽度的JS function getPageSize(){ var xScroll, yScroll; if (window.innerHeight && window.scrollMaxY) { xScroll = document.body.scrollWidth; yScroll = window.innerHeight + window.scrollMaxY; }
原XScroll发布文见此:http://www.cnblogs.com/lixlib/archive/2012/03/21/javascript-tupian-qiehuan-xscroll_js.html 2012-4-13: 加入了交错切换效果。看示例页第一个例子——现在我可以说XScroll.js支持17种切换效果了吗。。。还是心虚 所谓的交错切换,就是当前图片向左移动,下一张图片向右移动
问题描述: 根据用户反映,发现在ios系统中用vux-xscroll组件写的界面会出现停止滑动自动回到顶部的问题,然后找了几个手机试了下,发现升级了ios13的有问题、ios13以下的没有问题、安卓的没有问题 解决办法: 由于目前vux-xscroll不再维护了,只能自己修改组件的源码了。 找到\node_modules\_vux-xscroll@3.1.12@vux-xscroll\build
Click 的 300ms 延迟响应 click 的 300ms 延迟是由双击缩放(double tap to zoom)所导致的,由于用户可以进行双击缩放或者双击滚动的操作,当用户一次点击屏幕之后,浏览器并不能立刻判断用户是确实要打开这个链接,还是想要进行双击操作。因此,移动端浏览器就等待 300 毫秒,以判断用户是否再次点击了屏幕。 随着响应式网页逐渐增多,用户使用双击缩放机会减少,这 300
AKjs前端框架是Andrew.Kim和他的团队一起研发的基于jQuery的一个轻量级前端框架。它是只要懂jQuery的语法很容易上手的框架。该框架里面现在发布了很多移动端常用的功能效果;开发者们使用过程中功能插件也可以自己扩展增加。另一方面,它是相当于一个丰富的组件化UI框架,优点是开发要前后端分离,项目开发过程中后端通过ajax调用数据的机制。 AKjs是一个基于jQuery的一套构建用户界面
在使滚动系列事件正常运行方面存在问题(根本不符合设计)。已经浏览了所有关于此的文章、代码建议和其他帮助主题,但没有人能够解释为什么此示例根本不起作用: 基本页面html: 好的,如果复制粘贴,则需要替换包含文件,并且版本可能不同。对这种行为表示怀疑。当我取出jquery时。移动包含该脚本按预期工作,每当滚动位置改变时,都会将滚动注释记录到控制台中。 当我包含jquery.mobile页面加载时它会
我正在使用添加元素的JscrollPane,当元素超过7个时,JscrollPane中的JScrollBar将被激活。我需要当我引入一个新元素时,滚动条向右移动 构造函数: 滚动条向右移动,但从来没有达到最大值,总是有多一点的距离滚动。 有人知道为什么会这样吗?我看到使用setValue和getMaximum将滚动条向右移动,但对我来说,它停留在靠近右边的地方,而不是右边。 下面是一张截图来看看。
本文向大家介绍说说移动端Web分辨率相关面试题,主要包含被问及说说移动端Web分辨率时的应答技巧和注意事项,需要的朋友参考一下 从以下几个方面做答: (1) pc到移动,渲染的变迁 (2) 可以更改的布局宽度 (3) 再次变迁的像素 (4) 又一次变迁 (5) 是时候说说安卓了 详细参见:https://segmentfault.com/a/1190000005884985 性能和效率
本文向大家介绍学习使用jquery iScroll.js移动端滚动条插件,包括了学习使用jquery iScroll.js移动端滚动条插件的使用技巧和注意事项,需要的朋友参考一下 大家在日常工作中最常用的插件是什么,jQurey?Lazyload?但是这些都是在PC端,但是在移动端最常用的插件莫过于iScroll了,iScroll到底是什么东西,应该怎么用?iScroll是个很强大的插件,我也只是