基于 jQuery 的图片/文字无缝滚动
你知道 jQuery,你也知道图片滚动的效果,但是你知道啥叫无缝滚动不?无缝滚动,就是无缝的滚动!换句话说,无缝滚动就是,图片或者文字下一张下一张地滚动,当滚动到屁股的时候就看到头了,反过来,当滚动到头的时候又能看到屁股了。还是看 DEMO 吧,或许更好理解一些。如你所见,当作为一排图片展示的时候,无缝滚动可以让人有无尽的感觉,页面一下子就充实了。
因为我也不是刻意去写这个 jQuery 的无缝滚动,所以 JS 也没封装过,只提供了几个基本的参数作修改,只能仅作参考。
HTML 部分:
<div class="scroll_list">
<ul class="scroll_ul">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul>
</div>
<a id="prev" class="btn_icon" href="javascript:;">上一个</a>
<a id="next" class="btn_icon" href="javascript:;">下一个</a>
</div>
jQuery 部分:
//配置变量
var config = {
showNum : 3, //设置滚动的显示个数
autoScroll : false, //是否自动滚动,默认为 false
autoScrollInterval : 3000 //自动滚动间隔,默认为 3000 毫秒,autoScroll = true 时才有效
}
var scrollUlWidth = $('.scroll_ul li').outerWidth(true), //单个 li 的宽度
scrollUlLeft = 0, //.scroll_ul 初使化时的 left 值为 0
prevAllow = true, //为了防止连续点击上一页按钮
nextAllow = true; //为了防止连续点击下一页按钮
//计算父容量限宽
$('.scroll_list').width(config.showNum * scrollUlWidth);
//点击上一页
$('#prev').click(function() {
if (prevAllow) {
prevAllow = false;
scrollUlLeft = scrollUlLeft - scrollUlWidth;
$('.scroll_ul').css('left', scrollUlLeft);
//复制最后一个 li 并插入到 ul 的最前面
$('.scroll_ul li:last').clone().prependTo('.scroll_ul');
//删除最后一个 li
$('.scroll_ul li:last').remove();
$('.scroll_ul').animate({
left : scrollUlLeft + scrollUlWidth
}, 300, function() {
scrollUlLeft = parseInt($('.scroll_ul').css('left'), 10);
prevAllow = true;
})
}
});
//点击下一页
$('#next').click(function() {
if (nextAllow) {
nextAllow = false;
$('.scroll_ul').animate({
left : scrollUlLeft - scrollUlWidth
}, 300, function() {
scrollUlLeft = parseInt($('.scroll_ul').css('left'), 10);
scrollUlLeft = scrollUlLeft + scrollUlWidth;
$('.scroll_ul').css('left', scrollUlLeft);
//复制第一个 li 并插入到 ul 的最后面
$('.scroll_ul li:first').clone().appendTo('.scroll_ul');
//删除第一个 li
$('.scroll_ul li:first').remove();
nextAllow = true;
})
}
});
//自动滚动
if (config.autoScroll) {
setInterval(function() {
$('#next').trigger('click');
}, config.autoScrollInterval)
}
})
基本原理和使用方法都写在注释里了,我也就不多作解释了。最后说一句,google、百度上搜一下就知道,已经有大把大把写好的横的竖的无缝的滚动,总有一款适合你,但是我觉得,只有自己亲自写的才最适合自己的需要,所以就有了以上代码。
-
jQuery 按需加载 HighSlide 效果2011年10月10日 -
jQuery/JavaScript 实现的异步加载图片2011年04月10日 -
利用 JQuery 实现图片显隐特效2010年04月8日 -
JQuery 实现带滑动层的图片展示效果2010年02月24日
学习了!万哥老老有才了!
正在努力学习JS,上面的代码都能看懂,但还是写不出来,如果一个页面出现不止一个这样的效果,该怎么写?
学习下 谢谢;老师分享啊
这样的文章才适合这里!呵呵....好久没有见技术文了
拿来试试,谢万叔了
之前有过类似的需求,当时还是简单的dw时代,在网上搜一对js实现的,还是自动滚动的哦
好详细的注释。
前端生活很自得其所啊
应该加个鼠标放上就上下滚动哪个效果啥的
万兄好像最近对jq很热忠啊。我好像也是。博上几个东西都是jq的。
终于发力了哦。。。
灰常不错的说 实力的象征啊
竟然是要点击的……为什么不在两端放上箭头,光标悬停的时候自己开始滚动呢?(←还是一如既往地站着说话不腰疼丝毫不理解码农的艰辛
这个主意不错,在 version 9999 的时候推出此功能吧,哇哈哈哈哈
very good very strong and big
strong and big, hoho~~
又粗又大……
又来向万戈学习了~~~~
又来搞一些小技巧了~
怎么感觉这么像《锋利的jquery》作者的思路?
我来吐槽,中间缝隙那么大?也叫无缝?
7个人吐槽~~看来今天我来早了。。
操作DOM的呀,朱GG
是啊,丁GG,半年前咱们还在为这个讨论了半天呢
文章给力啊!
都消失好久了
万大叔这儿抢沙发真挺难..
来个靠近位置吧
代码写的越来越模块化了,看来学习js成效很好啊,我还是继续随便YY……你看我YY的“read more”hover效果就知道我是多么无聊、蛋疼和随意
刚试了一下“read more”,一直试到“^_^......”,不知道后面还有没有,等不下去了
专心学个半年,就能熟练了,嘿嘿
板凳也好
沙了个发!哈哈,懂了
挤挤。。
来蛋疼一把,嘎嘎