jQuery无缝滚动

<style type="text/css">
*{margin:0;padding:0;}
img{border:none;}
#slide{overflow:hidden;width:900px;margin:100px auto;}
ul{list-style:none;width:2999px;}
li{float:left;}
</style>
<script type="text/javascript" src="../../jquery-1.11.1.min.js"></script>
<script type="text/javascript">
function AutoScroll(){
var _scroll = $("#slide>ul");
//ul往左边移动300px
_scroll.animate({marginLeft:"-300px"},1000,function(){
//把第一个li丢最后面去
_scroll.css({marginLeft:0}).find("li:first").appendTo(_scroll);
});
}
$(function(){
//两秒后调用
var _scrolling=setInterval(AutoScroll,2000);
$("#slide>ul").hover(function(){
//鼠标移动DIV上停止
clearInterval(_scrolling);
},function(){
//离开继续调用
_scrolling=setInterval(AutoScroll,2000);
});
});
</script>
</head>

<body>
<div id="slide">
<ul>
<li><img src="1.jpg" /></li>
<li><img src="2.jpg" /></li>
<li><img src="3.jpg" /></li>
<li><img src="4.jpg" /></li>
<li><img src="5.jpg" /></li>
</ul>
</div>

演示

上面是一张一张滚动

下面是一直滚动

<style type="text/css">
*{margin:0;padding:0;}
img{border: none;}
#slide{overflow:hidden;width:900px;margin:100px auto;}/*必须加一个宽度,超出后隐藏,否则有可能不会滚动*/
ul{list-style:none;}
li{float:left;}
/*.slideul1{width:3999px;} 改用js定义这个宽度等于要滚动元素的两倍*/
</style>
<div id="slide">
<ul class="slideul1">
<li class="slideli1">
<ul class="slideul2">
<li><img src="1.jpg"/></li>
<li><img src="2.jpg"/></li>
<li><img src="3.jpg"/></li>
<li><img src="4.jpg"/></li>
<li><img src="5.jpg"/></li>
</ul></li>
<li class="slideli2"></li>
</ul>
</div>
<script type="text/javascript">
var _speed=30;
var slideWidth = $('.slideli1 li').size() * $('.slideli1 li').width();
$('.slideul1').css('width',slideWidth*2);//用js定义这个宽度
var _slide = $("#slide");
var _slideli1 = $(".slideli1");
var _slideli2 = $(".slideli2");
_slideli2.html(_slideli1.html());
function Marquee(){
if(_slide.scrollLeft() >= _slideli1.width())
_slide.scrollLeft(0);
else{
_slide.scrollLeft(_slide.scrollLeft()+1);
}
}
$(function(){
//两秒后调用
var sliding=setInterval(Marquee,_speed)
_slide.hover(function() {
//鼠标移动DIV上停止
clearInterval(sliding);
},function(){
//离开继续调用
sliding=setInterval(Marquee,_speed);
});
});
</script>

演示

2016.07.30更新

增加demo,完善代码,我自己写的无缝滚动插件也是跟这个差不多,如果你有兴趣,可以去了解一下。

jQuery无缝滚动插件

来自这里:http://ons.me/299.html


关注我

我的微信公众号:前端开发博客,在后台回复以下关键字可以获取资源。

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
  • 回复「Vue脑图」获取 Vue 相关脑图
  • 回复「思维图」获取 JavaScript 相关思维图
  • 回复「简历」获取简历制作建议
  • 回复「简历模板」获取精选的简历模板
  • 回复「加群」进入500人前端精英群
  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
  • 回复「知识点」下载高清JavaScript知识点图谱

每日分享有用的前端开发知识,加我微信:caibaojian89 交流