基于jQuery的公告无限循环滚动实现代码

在线演示:http://demo.jb51.net/js/2012/callboard/

jQuery代码 
复制代码代码如下:

//第二版:Newton改造 
(function (win){ 
var callboarTimer; 
var callboard = $('#callboard'); 
var callboardUl = callboard.find('ul'); 
var callboardLi = callboard.find('li'); 
var liLen = callboard.find('li').length; 
var initHeight = callboardLi.first().outerHeight(true); 
win.autoAnimation = function (){ 
if (liLen <= 1) return; 
var self = arguments.callee; 
var callboardLiFirst = callboard.find('li').first(); 
callboardLiFirst.animate({ 
marginTop:-initHeight 
}, 500, function (){ 
clearTimeout(callboarTimer); 
callboardLiFirst.appendTo(callboardUl).css({marginTop:0}); 
callboarTimer = setTimeout(self, 5000); 
}); 

callboard.mouseenter( 
function (){ 
clearTimeout(callboarTimer); 
}).mouseleave(function (){ 
callboarTimer = setTimeout(win.autoAnimation, 5000); 
}); 
}(window)); 
setTimeout(window.autoAnimation, 5000); 

HTML代码: 
复制代码代码如下:

<div id="callboard"> 
<ul> 
<li> 
<a href="http://www.qianduanzu.com/2012042036.html">公告:前端组主题正在整理中..有需要用的朋友请留个言,以方便及时通知!</a> 
</li> 
<li> 
<span style="color:red;">公告:前端组上线一个月零八天,PR升为3,BD权重1</span> 
</li> 
</ul> 

CSS代码:(可根据需求另设) 
复制代码代码如下:

#callboard { height:24px; line-height:24px; overflow:hidden;} 
#callboard ul { padding:0;} 
#callboard li { padding:0;} 

完整演示代码:
复制代码代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>滚动公告栏</title> 
<style type="text/css"> 
header, nav, aside, menu, figure, article, footer { display:block; } 
body, div, form, textarea, label, input, ul, ol, li, dl, dt, dd, p, span, a, img, h1, h2, h3, h4, h5, h6, tbody, tfoot, tr, th, td, pre, code, form, fieldset, legend, font { margin:0; padding:0; } 
table { border-collapse:collapse; border-spacing:0; } 
caption, th { text-align:left; } 
sup { vertical-align:text-top; } 
sub { vertical-align:text-bottom; } 
li { list-style:none; } 
fieldset, img { border:none; } 
input, textarea, select { font-family:inherit; font-size:inherit; font-weight:inherit; *font-size:100%; 
color:inherit; _color:#333; *color:#333; 
outline:none; } 
/*BASE CLASS*/ 
.cfix { *display:inline-block;*zoom:1} 
.cfix:after { content:"."; display:block; height:0; clear:both; visibility:hidden; } 
/*公告栏滚动CSS*/ 
#callboard { width:600px; margin:100px auto 0; height:24px; line-height:24px; overflow:hidden; font-size:12px; background-color:#f5f5f5;} 
#callboard ul { padding:0; } 
#callboard li { padding:0; } 
</style> 
<script type="text/javascript" src="http://demo.jb51.net/jslib/jquery/jquery-1.7.2.min.js"></script> 
</head> 
<body> 
<div id="callboard"> 
<ul> 
<li> 
<span style="color:red;">公告[2]:前端组上线一个月零八天,PR升为3,BD权重1</span> 
</li> 
<li> 
<span style="color:red;">公告[3]:撤下了BloggerAds,原因为收入太少,打开速度慢!</span> 
</li> 
<li style="margin-top: 0px;"> 
<a href="http://www.jb51.net">公告[1]:前端组主题正在整理中..有需要用的朋友请留个言,以方便及时通知!</a> 
</li> 
</ul> 
</div> 
<!--公告板滚动--> 
<script type="text/javascript"> 
(function (win){ 
var callboarTimer; 
var callboard = $('#callboard'); 
var callboardUl = callboard.find('ul'); 
var callboardLi = callboard.find('li'); 
var liLen = callboard.find('li').length; 
var initHeight = callboardLi.first().outerHeight(true); 
win.autoAnimation = function (){ 
if (liLen <= 1) return; 
var self = arguments.callee; 
var callboardLiFirst = callboard.find('li').first(); 
callboardLiFirst.animate({ 
marginTop:-initHeight 
}, 500, function (){ 
clearTimeout(callboarTimer); 
callboardLiFirst.appendTo(callboardUl).css({marginTop:0}); 
callboarTimer = setTimeout(self, 5000); 
}); 

callboard.mouseenter( 
function (){ 
clearTimeout(callboarTimer); 
}).mouseleave(function (){ 
callboarTimer = setTimeout(win.autoAnimation, 5000); 
}); 
}(window)); 
setTimeout(window.autoAnimation, 5000); 
</script> 
</body> 

</html>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值