基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)


Posted in Javascript onMarch 28, 2011

从需求上来说,这个功能需要实时调用最新的微博数据,单就前端开发来说,其需求可以拆分如下:
1 内容持续滚动;
2 新微博将下面的微博先推下去,然后淡入进来;
3 鼠标经过内容暂停滚动;
4 容器底部渐变消失在背景色下。
上述4个需求之中,需求1-3为js技术实现,需求4为css技术实现,下面逐个需求来讲。
需求1和需求2:内容持续滚动的需求有些类似前一篇文章《小模块:公告滚动并暂停》中介绍的功能,在那篇文章中,此功能使用css的position定位来控制整个ul列表的移动动画。结合需求2,我们可以写得更简单一些,让最后的li元素定时插入第一个li元素的上方,然后采用animate方法来改变li的高度和透明效果。而不停顿的滚动依然要用到setTimeout方法。在没有新数据加载的情况下,要实现有限内容循环滚动。
需求3:鼠标经过暂停的需求可以当鼠标hover经过的时候在某元素上加上某属性的值,这里采用name属性——判断此值是否存在,如果存在则不执行代码。
需求4:可以通过在内容上覆盖渐变的png24图片来实现,IE6对png24支持不好,如果需要顾及性能的话,在此容器上加display:none的IE6hack。接下来的问题是解决图片覆盖到文字之上,文字如何可以点击或选中的问题,这时候需要一个特殊的css属性“pointer-events”,此属性的值设为none之后,鼠标就可以透过绝对定位在文字上的图片选中下面的文字。
综合代码如下:
HTML

<div class="messagewrap"> 
<ul> 
<li><!--多个li,请自行复制或者设置重复区域--></li> 
</ul> 
<div class="bottomcover"> 
<!--为了符合w3c要求不能有空标签的要求,此处可选择写一个 --> 
</div> 
</div>

CSS
.messagewrap{overflow:hidden;position:relative;width:500px;height:300px} 
li{height:50px;} 
.bottomcover{width:500px;height:45px;position:absolute;bottom:0;left:0; 
pointer-events:none;background:url(halftransp.png) left bottom no-repeat; 
/*某从背景色向上渐变透明图片*/ _display:none;/*针对IE6体验降级*/}

JS
<script> 
$(function(){ 
msgmove(); 
$("ul").hover(function(){ 
$(this).attr("name","hovered"); //鼠标经过设置ul的name值为"hovered" 
},function(){ 
$(this).removeAttr("name"); 
}); 
}); 
function msgmove(){ 
var isIE=!!window.ActiveXObject; 
var isIE6=isIE&&!window.XMLHttpRequest; 
if($("ul").attr("name") != "hovered"){ 
//判断ul的name属性是否为"hovered",决定下面代码块是否运行,以实现鼠标经过暂停滚动。 
var height = $("li:last").height(); 
if(isIE6){ 
//判断IE6,jQuery的animate动画和opacity透明在一起使用在IE6中会出现中文重影现象, 
//所以在ie6中实行透明的禁用。 
$("li:last").css({"height":0}); 
}else{ 
$("li:last").css({"opacity":0,"height":0}); 
//列表最后的li透明和高度设置为0 
} 
$("li:first").before($("li:last")); 
//把列表最后的li提升到顶部,实现有限列表项无限循环滚动显示 
$("li:first").animate({"height":height},300); 
//列表顶部的li高度逐渐变高以把下面的li推下去 
if(!isIE6){ 
$("li:first").animate({"opacity":"1"},300); 
//在非IE6浏览器中设置透明淡入效果 
} 
} 
setTimeout("msgmove()",5000); 
//设置5秒滚动一次 
} 
</script>
Javascript 相关文章推荐
JS 显示当前日期与时间的代码
Mar 24 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
Apr 14 Javascript
JavaScript 学习笔记之语句
Jan 14 Javascript
jQuery中Ajax的get、post等方法详解
Jan 20 Javascript
Javascript核心读书有感之语言核心
Feb 01 Javascript
js钢琴按钮波浪式图片排列效果代码分享
Aug 26 Javascript
JavaScript实现给定时间相加天数的方法
Jan 25 Javascript
bootstrap多层模态框滚动条消失的问题
Jul 21 Javascript
vue-router 权限控制的示例代码
Sep 21 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
Jan 04 Javascript
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
Mar 06 Javascript
JavaScript中遍历的十种方法总结
Dec 15 Javascript
jquery向.ashx文件post中文乱码问题的解决方法
Mar 28 #Javascript
JQuery.ajax传递中文参数的解决方法 推荐
Mar 28 #Javascript
jQuery中调用WebService方法小结
Mar 28 #Javascript
利用jQuery接受和处理xml数据的代码(.net)
Mar 28 #Javascript
jquery.combobox中文api和例子,修复了上面的小bug
Mar 28 #Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
Sep 12 #Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
Mar 28 #Javascript
You might like
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
基于Jquery的温度计动画效果
2010/06/18 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
jQuery根据表单name获取值的方法
2016/05/24 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
浅谈vuex actions和mutation的异曲同工
2018/12/13 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
JS常用跨域方法实现原理解析
2020/12/09 Javascript
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
python中将正则过滤的内容输出写入到文件中的实例
2018/10/21 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
Python urllib.request对象案例解析
2020/05/11 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
python中os包的用法
2020/06/01 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
html5教程制作简单画板代码分享
2013/12/04 HTML / CSS
10条PHP编程习惯
2014/05/26 面试题
交通法规咨询中心工作职责
2013/11/27 职场文书
农村婚礼证婚词
2014/01/08 职场文书
出国留学单位推荐信
2015/03/26 职场文书
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android