jQuery滚动新闻实现代码
网上下载了一个Jquery新闻滚动Demo,效果不错。我根据自己情况,做了些调整。
下载后,除了Html及Jquery.js,还有三个文件,分别是Css,主Js和一个定位Js(jquery.dimensions.js),Css文件完全可以通过动态赋值实现,省的在Css文件中添加了,况且可以重定义,应该效果更好。
定位Js只用到一个方法,我把它整合到之中了,少加载一个是一个么。
原Demo是一行显示的滚动效果,有一个Bug,即不等的多行显示时会跑错,已修复。
原Demo有一个mouseover属性,我一般不用(效果不好,看一下实现方法也有漏洞,在多行时效果更差),删除了。
借鉴别人的思路与代码,不敢独享。
删除的部分:
$('>ul',this)
.bind('mouseover',function(e){
if($(e.target).is('li')){
$(e.target).addClass('hover');
}
})
.bind('mouseout',function(e){
if($(e.target).is('li')){
$(e.target).removeClass('hover');
}
});
调整后代码:
html部分:
<divid="tbNews">
<ul>
<li>1、滚动新闻,滚动新闻,滚动新闻,滚动新闻,滚动新闻</li>
<li>2、滚动新闻,滚动新闻</li>
<li>3、滚动新闻,滚动新闻,滚动新闻,滚动新闻</li>
<li>4、滚动新闻,滚动新闻,滚动新闻,滚动新闻,滚动新闻</li>
<li>5、滚动新闻</li>
</ul>
</div>
<scriptlanguage="JavaScript"src="jdNewsScroll.js"type="text/javascript">
</script>
<scriptdefer="defer"language="JavaScript"type="text/javascript">
$(function(){
$('#tbNews').jdNewsScroll({divWidth:130,divHeight:50,fontSize:'10.5pt'});
});
</script>
Js代码:
(function($){
varELMS=[];
$.fn.jdNewsScroll=function(settings){
settings=$.extend({},arguments.callee.defaults,settings);
$(this).css({"position":"relative","overflow":"hidden","width":settings.divWidth,"height":settings.divHeight});
$(this).find("ul").css({"position":"relative","list-style-type":"none","font-size":settings.fontSize,"margin":"0px"});
$(this).find("li").css({"line-height":"130%","margin":"0px","padding":"2px10px1px10px"});
$(this).each(function(){
this.$settings=settings;
this.$pause=false;
this.$counter=settings.beginTime;
$(this).hover(function(){$(this).jdNewsScrollPause(true)},function(){$(this).jdNewsScrollPause(false)});
ELMS.push(this);
});
returnthis;
};
$.fn.jdNewsScroll.defaults={
beginTime:10,
fontSize:'9pt',
divWidth:'100%',
divHeight:'200px',
lineHeight:'130%',
delay:20,
step:2
};
$.fn.jdNewsScrollPause=function(pause){
returnthis.each(function(){
this.$pause=pause;
});
}
functionouterHeight(options){
if(!this[0])0;
options=$.extend({margin:false},options||{});
returnthis[0]==window||this[0]==document?
this.height():this.is(':visible')?
this[0].offsetHeight+(options.margin?(num(this,'marginTop')+num(this,'marginBottom')):0):
this.height()
+num(this,'borderTopWidth')+num(this,'borderBottomWidth')
+num(this,'paddingTop')+num(this,'paddingBottom')
+(options.margin?(num(this,'marginTop')+num(this,'marginBottom')):0);
}
setInterval(scroll,80);
functionscroll(){
for(vari=0;i<ELMS.length;i++){
varelm=ELMS[i];
if(elm&&!elm.$pause){
if(elm.$counter==0){
varul=$('>ul',elm)[0];
if(!elm.$steps){
elm.$steps=$('>li:first-child',ul).outerHeight();
elm.$step=0;
}
if((elm.$steps+elm.$step)<=0){
elm.$counter=elm.$settings.delay;
elm.$steps=false;
$(ul).css('top','0').find('>li:last-child').after($('>li:first-child',ul));
$('>*',ul).not('li').remove();
}else{
elm.$step-=elm.$settings.step;
if(-elm.$step>elm.$steps){
elm.$step=-elm.$steps;
}
ul.style.top=elm.$step+'px';
}
}else{
elm.$counter--;
}
}
}
};
})(jQuery);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。