JS 实现自定义滚动效果

72 篇文章 0 订阅
20 篇文章 0 订阅
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);
        });
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_格鲁特宝宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值