微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XScroll XScroll<a href="https://github.com/huxiaoqi567/xscroll#xlist"></a>XList<a href="https://github.com/huxiaoqi567/xscroll#xlistdataset"></a>XList.DataSet<a href= 移动 Web 端滚动框架

程序名称:XScroll XScroll<a href="https://github.com/huxiaoqi567/xscroll#xlist"></a>XList<a href="https://github.com/huxiaoqi567/xscroll#xlistdataset"></a>XList.DataSet<a href=

授权协议: MIT

操作系统: 跨平台

开发语言: JavaScript

XScroll XScroll<a href="https://github.com/huxiaoqi567/xscroll#xlist"></a>XList<a href="https://github.com/huxiaoqi567/xscroll#xlistdataset"></a>XList.DataSet<a href= 介绍

XScroll 是移动端web高性能模拟滚动解决方案,包含节点回收、下拉刷新、上拉加载等功能

XScroll

  • 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) 获取某个插件

XList

  • 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文档流内所有元素的位置、样式、数据信息

XList.DataSet

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

Plugins

  • 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 操作栏总宽度

Questions?

XScroll XScroll<a href="https://github.com/huxiaoqi567/xscroll#xlist"></a>XList<a href="https://github.com/huxiaoqi567/xscroll#xlistdataset"></a>XList.DataSet<a href= 官网

http://huxiaoqi567.github.io/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐