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


Posted in Javascript onMay 11, 2012

在线演示:http://demo.3water.com/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.3water.com/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://3water.com">公告[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>
Javascript 相关文章推荐
js function使用心得
May 10 Javascript
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
May 13 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
Nov 30 Javascript
jquery触发a标签跳转事件示例代码
Jul 21 Javascript
浅谈EasyUI中编辑treegrid的方法
Mar 01 Javascript
jQuery里filter()函数与find()函数用法分析
Jun 24 Javascript
AngularJS实现DOM元素的显示与隐藏功能
Nov 22 Javascript
Angular Renderer (渲染器)的具体使用
May 03 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
Jul 23 Javascript
微信小程序实现选项卡效果
Nov 06 Javascript
jQuery实时统计输入框字数及限制
Jun 24 jQuery
vue实现登陆页面开发实践
May 30 Vue.js
javascript 事件处理、鼠标拖动效果实现方法详解
May 11 #Javascript
通过百度地图获取公交线路的站点坐标的js代码
May 11 #Javascript
疯狂Jquery第一天(Jquery学习笔记)
May 11 #Javascript
jQuery 过滤not()与filter()实例代码
May 10 #Javascript
jQuery 在光标定位的地方插入文字的插件
May 10 #Javascript
javascript 在firebug调试时用console.log的方法
May 10 #Javascript
jQueryUI写一个调整分类的拖放效果实现代码
May 10 #Javascript
You might like
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
phplot生成图片类用法详解
2015/01/06 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
js中获取事件对象的方法小结
2011/03/13 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
AngularJS入门教程之路由机制ngRoute实例分析
2016/12/13 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
JS实现十分钟倒计时代码实例
2018/10/18 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
js代码实现轮播图
2020/05/04 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
python解析xml文件实例分析
2015/05/27 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
巴西在线鞋店:Shoestock
2017/10/28 全球购物
住宅质量保证书
2014/04/29 职场文书
装修施工安全责任书
2014/07/24 职场文书
检察机关个人对照检查材料
2014/09/15 职场文书
《植树问题》教学反思
2016/03/03 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle