基于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 相关文章推荐
Javascript的构造函数和constructor属性
Jan 09 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
Nov 06 Javascript
JS获取select的value和text值的简单实例
Feb 26 Javascript
推荐一个自己用的封装好的javascript插件
Jan 29 Javascript
js中数组插入、删除元素操作的方法
Feb 15 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
Nov 17 Javascript
浅谈vuejs实现数据驱动视图原理
Feb 23 Javascript
Angular 容器部署的方法
Apr 17 Javascript
微信小程序实现城市列表选择
Jun 05 Javascript
vue组件命名和props命名代码详解
Sep 01 Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 Javascript
Vue实现返回顶部按钮实例代码
Oct 21 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
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
文本链接逐个出现的js脚本
2007/12/12 Javascript
asp批量修改记录的代码
2008/06/25 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
vue配置nprogress实现页面顶部进度条
2019/09/21 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
python列表去重的二种方法
2014/02/14 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
CentOS 6.5中安装Python 3.6.2的方法步骤
2017/12/03 Python
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
2019/01/23 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
Python的垃圾回收机制详解
2019/08/28 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
七年级数学教学反思
2014/01/22 职场文书
公司领导班子民主生活会对照检查材料
2014/10/02 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
高中运动会广播稿
2015/08/19 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书