基于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 相关文章推荐
十分钟打造AutoComplete自动完成效果代码
Dec 26 Javascript
Javascript UrlDecode函数代码
Jan 09 Javascript
JS获取计算机mac地址以及IP的实现方法
Jan 08 Javascript
更快的异步执行(setTimeout多浏览器)
Aug 12 Javascript
jQuery手动点击实现图片轮播特效
Apr 20 Javascript
js实现动态创建的元素绑定事件
Jul 19 Javascript
微信小程序 form组件详解
Oct 25 Javascript
js 毫秒转天时分秒的实例
Nov 17 Javascript
详解使用React进行组件库开发
Feb 06 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
Dec 29 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
Jan 07 Javascript
vue基于Teleport实现Modal组件
May 31 Vue.js
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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
php getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
PHP发送短信代码分享
2015/08/11 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
jQuery中find()方法用法实例
2015/01/07 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
JavaScript实现自定义媒体播放器方法介绍
2017/01/03 Javascript
JS生成随机打乱数组的方法示例
2017/12/23 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
JavaScript Reflect Metadata实现详解
2019/12/12 Javascript
详解React 元素渲染
2020/07/07 Javascript
python 获取图片分辨率的方法
2019/01/08 Python
python 切换root 执行命令的方法
2019/01/19 Python
python日期与时间戳的各种转换示例
2020/02/12 Python
python之生成多层json结构的实现
2020/02/27 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
房屋转让协议书范本
2014/04/11 职场文书
《祁黄羊》教学反思
2014/04/22 职场文书
教师一帮一活动总结
2014/07/08 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
婚礼答谢礼品
2015/01/20 职场文书
承诺书模板大全
2015/05/04 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
调研报告的主要写法
2019/04/18 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis
Pytorch 如何实现常用正则化
2021/05/27 Python
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL
python中使用redis用法详解
2022/12/24 Redis