削剑

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

功能需求:

1、滚动框内显示10条记录;
2、有向上和向下滚动按钮,每次点击按钮向上或向下滚动记录条数,不自动滚动;
3、记录条数不循环滚动,滚动到起点或终点则停止滚动。

下面介绍一个简单实现方法:

1、外层容器(div) overflow: hidden,内层列表(ul)

2、按钮点击事件触发一个修改列表的函数

3、应用animate实现动画效果

具体不再啰嗦,直接上代码

CSS设置

    <style type="text/css">
        ul, li
        {
            margin: 0;
            padding: 0;
        }
        #scrollDiv
        {
            width: 300px;
            height: 250px;
            min-height: 25px;
            line-height: 25px;
            border: #ccc 1px solid;
            overflow: hidden;
        }
        #scrollDiv li
        {
            height: 25px;
            padding-left: 10px;
        }
    </style>

JQuery 代码

 <script type="text/javascript">
         (function ($) {
             $.fn.extend({
                 Scroll: function (opt, callback) {
                     if (!opt) var opt = {};
                     var _btnUp = $("#" + opt.up); //Shawphy:向上按钮      
                     var _btnDown = $("#" + opt.down); //Shawphy:向下按钮
                     var _this = this.eq(0).find("ul:first");
                     var lineH = _this.find("li:first").height(); //获取行高     
                     var line = opt.line ? parseInt(opt.line, 10) : parseInt(this.height() / lineH, 10); //每次滚动的行数,默认为一屏,即父容器高度
                     var speed = opt.speed ? parseInt(opt.speed, 10) : 600; //卷动速度,数值越大,速度越慢(毫秒) 
                     var m = line;  //用于计算的变量
                     var count = _this.find("li").length; //总共的<li>元素的个数
                     var upHeight = line * lineH;
                     function scrollUp() {
                         if (!_this.is(":animated")) {  //判断元素是否正处于动画,如果不处于动画状态,则追加动画。
                             if (m < count) {  //判断 m 是否小于总的个数
                                 m += line;
                                 _this.animate({ marginTop: "-=" + upHeight + "px" }, speed);
                             }
                         }
                     }
                     function scrollDown() {
                         if (!_this.is(":animated")) {
                             if (m > line) { //判断m 是否大于一屏个数
                                 m -= line;
                                 _this.animate({ marginTop: "+=" + upHeight + "px" }, speed);
                             }
                         }
                     }
                     _btnUp.bind("click", scrollUp);
                     _btnDown.bind("click", scrollDown);
                 }
             });
         })(jQuery);
       $(function () {
             $("#scrollDiv").Scroll({ line: 10, speed: 500,up: "btn1", down: "btn2" });
         });         
    </script>

可以设置$("#scrollDiv").Scroll({ line: 10, speed: 500,up: "btn1", down: "btn2" });对滚动按钮,滚动行数,滚动速度进行设置。

Html Body 内容

<body>
    <p style="font-family: 微软雅黑; font-weight: bold;">
        信息滚动栏DEMO:</p>
    <div id="scrollDiv">
        <ul>
            <li>这是滚动信息的第1行</li>
            <li>这是滚动信息的第2行</li>
            <li>这是滚动信息的第3行</li>
            <li>这是滚动信息的第4行</li>
            <li>这是滚动信息的第5行</li>
            <li>这是滚动信息的第6行</li>
            <li>这是滚动信息的第7行</li>
            <li>这是滚动信息的第8行</li>
            <li>这是滚动信息的第9行</li>
            <li>这是滚动信息的第10行</li>
            <li>这是滚动信息的第11行</li>
            <li>这是滚动信息的第12行</li>
            <li>这是滚动信息的第13行</li>
            <li>这是滚动信息的第14行</li>
            <li>这是滚动信息的第15行</li>
            <li>这是滚动信息的第16行</li>
            <li>这是滚动信息的第17行</li>
            <li>这是滚动信息的第18行</li>
            <li>这是滚动信息的第19行</li>
            <li>这是滚动信息的第20行</li>
            <li>这是滚动信息的第21行</li>
            <li>这是滚动信息的第22行</li>
            <li>这是滚动信息的第23行</li>
            <li>这是滚动信息的第24行</li>
            <li>这是滚动信息的第25行</li>
            <li>这是滚动信息的第26行</li>
            <li>这是滚动信息的第27行</li>
            <li>这是滚动信息的第28行</li>
            <li>这是滚动信息的第29行</li>
            <li>这是滚动信息的第30行</li>
            <li>这是滚动信息的第31行</li>
            <li>这是滚动信息的第32行</li>
        </ul>
    </div>
    <button id="btn1">
        上滚</button>
    <button id="btn2">
        下滚</button>
</body>

 


 

 

 

posted on 2011-08-25 18:17  转角遇到猫  阅读(7530)  评论(3编辑  收藏  举报