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

 更新时间:2012年05月11日 16:52:38   转载 作者:  
今天看到一个网站的公告栏一个小效果,如果有2条公告或以上就有个滚动效果,特整理下分享给大家
在线演示: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="https://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>

相关文章

  • jQuery控制iFrame(实例代码)

    jQuery控制iFrame(实例代码)

    这篇文章主要是对jQuery控制iFrame的实例代码进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • 基于jQuery实现仿微博发布框字数提示

    基于jQuery实现仿微博发布框字数提示

    这篇文章主要为大家详细介绍了基于jQuery实现仿微博发布框字数提示的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • jQuery中值得注意的trigger方法浅析

    jQuery中值得注意的trigger方法浅析

    在前端页面开发中,我们有时候希望能自定执行一些人性化操作,比如鼠标不用点击自动就能点击等操作,利用传统的js语言需要编写复杂的代码才能实现此功能,这时候我们使用jquery的trigger()方法就能轻松实现。本文就给大家详细介绍了关于jQuery中值得注意的trigger方法。
    2016-12-12
  • jQuery DataTables插件自定义Ajax分页实例解析

    jQuery DataTables插件自定义Ajax分页实例解析

    这篇文章主要为大家详细介绍了jQuery DataTables插件自定义Ajax分页的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • jquery实现div拖拽宽度示例代码

    jquery实现div拖拽宽度示例代码

    本例为大家演示个比较简单的div拖动,另外可根据自己的需求,添加相应的代码,实现自己的想要的效果,具体如下,喜欢的请支持下
    2013-07-07
  • jQuery UI Grid 模态框中的表格实例代码

    jQuery UI Grid 模态框中的表格实例代码

    这篇文章主要介绍了jQuery UI Grid 模态框中的表格实例代码讲解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-04-04
  • jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用

    jQuery Form 表单提交插件之formSerialize,fieldSerialize,fie

    这篇文章主要介绍了jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用的相关资料,需要的朋友可以参考下
    2016-01-01
  • jquery操作复选框(checkbox)的12个小技巧总结

    jquery操作复选框(checkbox)的12个小技巧总结

    本篇文章主要是对jquery操作复选框(checkbox)的12个小技巧进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • jquery实现简单手风琴菜单效果实例

    jquery实现简单手风琴菜单效果实例

    这篇文章主要介绍了jquery实现简单手风琴菜单效果的方法,实例分析了jQuery操作页面样式、html页面布局及SCSS样式设置的相关技巧,需要的朋友可以参考下
    2015-06-06
  • jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)

    jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)

    Selectator是一款实现多选和搜索过滤功能的jQuery下拉列表框插件。下文给大家介绍jQuery使用Selectator插件实现多选下拉列表过滤框,需要的朋友一起学习吧
    2016-04-04

最新评论