1. 程式人生 > 實用技巧 >jquery myscroll文字上下無縫滾動外掛 簡單使用

jquery myscroll文字上下無縫滾動外掛 簡單使用

效果圖

scroll_table.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>表格滾動</title>
        <script src="jquery.min.1.8.3.js" type="text/javascript" charset="utf-8"></script>
        <script src="scroll_table.js" type="text/javascript"
charset="utf-8"></script> <script type="text/javascript"> $(function() { function getData() { var html = ''; for (var i = 0; i < 100; i++) { var value = i + 1; html
+= '<tr>' + '<td>' + value + '</td>' + '<td>' + value + '</td>' + '<td>' + value + '</td>' + '<td>' + value + '</td>' + '
</tr>'; } $('#tbList').html(html); } getData(); setTimeout(function() { $('.s_div').myScroll({ speed: 60, rowHeight: 40 }); }, 500); }); </script> <style type="text/css"> table{ width: 100%; } #tbList tr{ height: 40px; /*不給固定高度,會抽搐*/ } #tbList tr td{ text-align: center; } </style> </head> <body> <div class="main_table" style="width: 600px; height: 400px; margin: 0 auto; border: 1px solid #eee;"> <table class="table-info-header"> <colgroup> <col width="25%" /> <col width="25%" /> <col width="25%" /> <col width="25%" /> </colgroup> <thead> <tr> <th> 1 </th> <th> 2 </th> <th> 3 </th> <th> 4 </th> </tr> </thead> </table> <div class="s_div" style="height:320px;overflow: hidden;"> <table class="table-info"> <colgroup> <col width="25%" /> <col width="25%" /> <col width="25%" /> <col width="25%" /> </colgroup> <tbody id="tbList"> </tbody> </table> </div> </div> </body> </html>
View Code

scroll_table.js

// JavaScript Document
(function($) {
    $.fn.myScroll = function(options) {
        //預設配置
        var defaults = {
            speed: 40, //滾動速度,值越大速度越慢
            rowHeight: 24 //每行的高度
        };

        var opts = $.extend({}, defaults, options),
            intId = [];

        function marquee(obj, step) {

            obj.find("table").animate({
                marginTop: '-=1'
            }, 0, function() {
                var s = Math.abs(parseInt($(this).css("margin-top")));
                if (s >= step) {
                    $(this).find("tr").slice(0, 1).appendTo($(this));
                    $(this).css("margin-top", 0);
                }
            });
        }

        this.each(function(i) {
            var sh = opts["rowHeight"],
                speed = opts["speed"],
                _this = $(this);
            intId[i] = setInterval(function() {
                if (_this.find("table").height() <= _this.height()) {
                    clearInterval(intId[i]);
                } else {
                    marquee(_this, sh);
                }
            }, speed);

            _this.hover(function() {
                clearInterval(intId[i]);
            }, function() {
                intId[i] = setInterval(function() {
                    if (_this.find("table").height() <= _this.height()) {
                        clearInterval(intId[i]);
                    } else {
                        marquee(_this, sh);
                    }
                }, speed);
            });

        });

    }

})(jQuery);
View Code

scroll_ul.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>列表滾動</title>
        <script src="jquery.min.1.8.3.js" type="text/javascript" charset="utf-8"></script>
        <script src="scroll_ul.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function() {
                function getData() {
                    var html = '';
                    for (var i = 0; i < 100; i++) {
                        var value = i + 1;
                        html += '<li>' + value + '</li>';
                    }
                    $('#tbList').html(html);
                }

                getData();
                setTimeout(function() {
                    $('.s_div').myScroll({
                        speed: 60,
                        rowHeight: 40
                    });
                }, 500);
            });
        </script>
        <style type="text/css">
            .list {
                width: 270px;
                border: 1px solid #eee;
                margin: 30px auto;
            }

            .s_div {
                height: 400px;
                overflow: hidden;
            }
            
            #tbList li{
                height: 40px;    /*不給固定高度,會抽搐*/
            }
        </style>
    </head>
    <body>
        <div class="list">
            <h2>列表滾動</h2>
            <div class="s_div">
                <ul id="tbList"></ul>
            </div>
        </div>
    </body>
</html>
View Code

scroll_ul.js

// JavaScript Document
(function($) {
    $.fn.myScroll = function(options) {
        //預設配置
        var defaults = {
            speed: 40, //滾動速度,值越大速度越慢
            rowHeight: 24 //每行的高度
        };

        var opts = $.extend({}, defaults, options),
            intId = [];

        function marquee(obj, step) {

            obj.find("ul").animate({
                marginTop: '-=1'
            }, 0, function() {
                var s = Math.abs(parseInt($(this).css("margin-top")));
                if (s >= step) {
                    $(this).find("li").slice(0, 1).appendTo($(this));
                    $(this).css("margin-top", 0);
                }
            });
        }

        this.each(function(i) {
            var sh = opts["rowHeight"],
                speed = opts["speed"],
                _this = $(this);
            intId[i] = setInterval(function() {
                if (_this.find("ul").height() <= _this.height()) {
                    clearInterval(intId[i]);
                } else {
                    marquee(_this, sh);
                }
            }, speed);

            _this.hover(function() {
                clearInterval(intId[i]);
            }, function() {
                intId[i] = setInterval(function() {
                    if (_this.find("ul").height() <= _this.height()) {
                        clearInterval(intId[i]);
                    } else {
                        marquee(_this, sh);
                    }
                }, speed);
            });

        });

    }

})(jQuery);
View Code