JS 实现自定义滚动效果

var timer = null;
//获得当前滚动盒子scrollBox
var ulList = $(".scroll ul.scrollBox");
//获得当前scrollBox里面滚动元素的个数
var ulNum = $(".scroll ul.scrollBox").children("li").length;
if (ulNum > 2) {
    timer = setInterval(function() {
        scrollList(ulList);
    }, 4000);
    //鼠标经过清空定时器
    ulList.hover(function() {
        clearInterval(timer);
    }).mouseleave(function(){
        timer = setInterval(function() {
            scrollList(ulList);
        }, 4000);
    })
}
//滚动动画
function scrollList(obj) {
    //获得当前<li>的边距大小
    var scrollMargin= parseInt($("ul.scrollBox li:first-child").css('marginRight'));
    //获得当前<li>的高度
    var scrollHeight = $("ul.scrollBox li:first").width() + scrollMargin; 
    //滚动出一个<li>的高度+边距
    obj.stop().animate({
        marginLeft: -(scrollHeight+scrollMargin)
    }, 2000,
    function() {
        //动画结束后,将当前<ul>margin置为初始值0状态,再将第一个<li>拼接到末尾。
        obj.css({
            marginLeft: 0
        }).find("li:first").appendTo(obj);
    });
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

var timer = null;
var scrollBox = $(".list_area ul.list_box");
function scrollArea(obj) {
    // 每次滚动与下一次滚动时间间隔
    var timeInterval = 5000;
    // 每次滚动所经历时间
    var goByTime = 1000;
    //获得当前scrollBox里面滚动元素的个数
    var liLength = obj.children("li").length;
    if (liLength > 1) {
        timer = setInterval(function() {
            scrollAnimate(obj);
        }, timeInterval);
        //鼠标经过清空定时器
        obj.hover(function() {
            clearInterval(timer);
        }).mouseleave(function(){
            timer = setInterval(function() {
                scrollAnimate(obj);
            }, timeInterval);
        })
    }
    //滚动动画
    function scrollAnimate(obj) {
        //获得当前<li>的边距大小
        var scrollMargin= parseInt(scrollBox.children('li').eq(0).css('marginRight'));
        //获得当前<li>的高度
        var scrollHeight = scrollBox.children('li').eq(0).width() + scrollMargin; 
        //滚动出一个<li>的高度+边距
        obj.stop().animate({
            marginLeft: -(scrollHeight+scrollMargin)
        }, goByTime,
        function() {
            //动画结束后,将当前<ul>margin置为初始值0状态,再将第一个<li>拼接到末尾。
            obj.css({
                marginLeft: 0
            }).find("li:first").appendTo(obj);
        });
    }
}

 

posted @ 2018-12-11 18:27  格鲁特baby  阅读(169)  评论(0编辑  收藏  举报