Scroller

自然滚动组件,主要的应用场景有 弹窗内长规则、视差滚动页面的内部滚动(竖向滚动),还有应用下载页的介绍缩略图的浏览(水平滚动)

调用方式

HTML 示意:

<div class="ui-scroller">
    <ul>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</div>

这里定义两个概念:wrapper 和 scroller。wrapper 即外层的包含 DOM,如 div.ui-scroller;scroller 即内部滚动的元素(wrapper 的第一个子元素,有且只有一个),如 <ul>。组件初始化的时候需要传入 wrapper ('.ui-scroller'),类名无限制。实际滚动的是内部的 scroller ('<ul>')。对于 scroller 的标签无要求。

调用方式相对简单。需要注意的是:

  • scroller 的宽/高必须大于 wrapper 的宽/高才能发生滚动
  • 若要水平滚动,则 scrollY: false
/* 竖直滚动(fz 即 FrozenJS 的意思)*/
var scroll = new fz.Scroll('.ui-scroller', {
    scrollY: true
});

/* 水平滚动 */
var scroll = new fz.Scroll('.ui-scroller', {
    scrollY: false,
    scrollX: true
});

配置说明

name type default description
scrollX boolean false 水平滚动
scrollY boolean true 竖直滚动
bounce boolean true 反弹动画
scrollTo(x, y) function - 滚动到具体坐标
scrollToElement(el, time, offsetX, offsetY) function - 滚动到具体坐标:el: 元素;time:滚动时间(ms);offsetX:水平偏移量;offsetY:垂直偏移量。
getComputedPosition() function - 返回 scroller 当前的 {x:x, y:y} 坐标轴
enable() function - 全局开关,开启滚动
disable() function - 全局开关,禁止滚动
refresh() function - 刷新当前位置
destroy() function - 销毁对象

DEMO演示

<!-- css -->
<style>
     .ui-scroller {width:auto;height:300px;margin:20px;padding:10px;overflow:hidden;border:1px solid #ccc;}
     .ui-scroller li {margin-bottom:10px;}
</style>

<!-- html -->
<div class="ui-scroller">
    <ul>
        <li>1、活动时间:2014.09.25 - 2014.10.31</li>
        <li>2、活动面向“预付费(Q点Q币、QQ卡、财付通/银行卡)开通超级QQ”的用户。以下支付方式的用户不 在本次活动范围内,“同时开通预付费超级QQ和短信版超级QQ”、“同时开通预付费超级QQ与短信版 会员”、“同时开通预付费超级QQ与iOS会员”、“开通短信版超级QQ”及“宽带/固定电话/超级/”(相关活动可留意超级QQ官网消息)。</li>
        <li>3、活动中,成长值的转移规则:① QQ会员成长值 = 超级QQ成长值 -(超级QQ成长值/超级QQ成长速度)*(超级QQ成长速度 - 同条件下会员成长速度)② 若您在转移前同时开通了超级QQ和QQ会员,转移后会员成长值在上述成长值(超Q转换而来)与原会员成长值间取较高者。较低部分,转换成等值的QQ会员加倍成长卡赠送给您。</li>
        <li>4、活动时间:2014.09.25 - 2014.10.311、活动间2014.09.25 - 2014.10.31、活动时间:  2014.09.25 -  活动时间活动时间活动时间  </li>
    </ul>
</div>

<!-- js -->
<script>
(function() {
    var scroll = new fz.Scroll('.ui-scroller', {
        scrollY: true
    });

    // scroll.scrollTo(0, 200);

    // 若 offsetX 和 offsetY 都是 true,则滚动到元素位于屏幕中央的位置;
    scroll.scrollToElement("li:nth-child(3)", 1000, true, true);

})();
</script>