基于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实现的模拟jquery的animate自定义动画(2.5K)
Jul 20 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
Sep 11 Javascript
关于jquery的多个选择器的使用示例
Oct 18 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
Jan 28 Javascript
angular bootstrap timepicker TypeError提示怎么办
Jun 13 Javascript
基于easyui checkbox 的一些操作处理方法
Jul 10 Javascript
js实现关闭网页出现是否离开提示
Dec 07 Javascript
create-react-app修改为多页面支持的方法
May 17 Javascript
javascript实现计算指定范围内的质数示例
Dec 29 Javascript
vue实现移动端H5数字键盘组件使用详解
Aug 25 Javascript
浅谈vant组件Picker 选择器选单选问题
Nov 04 Javascript
vue 给数组添加新对象并赋值
Apr 20 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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
一个很不错的PHP翻页类
2009/06/01 PHP
PHP递归复制、移动目录的自定义函数分享
2014/11/18 PHP
php blowfish加密解密算法
2016/07/02 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
jQuery实现hover合成事件的方法
2015/08/06 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
python实现简单socket通信的方法
2016/04/19 Python
Python数据可视化正态分布简单分析及实现代码
2017/12/04 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
python manage.py runserver流程解析
2019/11/08 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
Python计算IV值的示例讲解
2020/02/28 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
详解python with 上下文管理器
2020/09/02 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
365 Tickets英国:全球景点门票
2019/07/06 全球购物
高中学生自我评价范文
2014/09/23 职场文书
商场收银员岗位职责
2015/04/07 职场文书
2015年科协工作总结
2015/05/19 职场文书
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python
python绘制箱型图
2021/04/27 Python
pytorch--之halfTensor的使用详解
2021/05/24 Python
Win11 PC上的Outlook搜索错误怎么办?
2022/07/15 数码科技
详解SQL报错盲注
2022/07/23 SQL Server