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);
});
}
}