求一个控制多条公告向上滚动的js代码!

rtkj123 2012-06-09 05:45:47
求一个控制多条公告向上滚动的js代码!我用的是div显示一行公告的,求高人指点啊!
...全文
241 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rtkj123 2012-06-11
  • 打赏
  • 举报
回复
thank you !很有用的代码额,谢了!
liyajie865808403 2012-06-09
  • 打赏
  • 举报
回复
001007009 2012-06-09
  • 打赏
  • 举报
回复

<!DOCTYPE HTML>
<html>
<head>
<meta charset="gb2312" />
<title></title>
<style>
ul {
margin:100px;
height:22px; border:1px solid red;
overflow:hidden;
}
li {
height:22px; line-height:22px; font-size:12px;
}
</style>
</head>
<body>
<ul id="a">
<li>1-1</li>
<li>1-2</li>
<li>1-3</li>
<li>1-4</li>
</ul>
<script>
//document.getElementById()的最简化应用
function $(element){
if(arguments.length>1){
for(var i=0,length=arguments.length,elements=[];i<length;i++){
elements.push($(arguments[i]));
}
return elements;
}
if(typeof element=="string"){
return document.getElementById(element);
}else{
return element;
}
}
//类创建函数
var Class={
create:function(){
return function(){
this.initialize.apply(this,arguments);
}
}
}
//对象属性方法扩展
Function.prototype.bind=function(object){
var method=this;
return function(){
method.apply(object,arguments);
}
}
var Scroll=Class.create();
Scroll.prototype={
//第一个参数定义要滚动的区域,第二个参数定义每次滚动的高度
initialize:function(element,height,delay){
this.element=$(element);
this.element.innerHTML+=this.element.innerHTML;
this.height=height;
this.delay=delay*1000;
this.maxHeight=this.element.scrollHeight/2;
this.counter=0;
this.scroll();
this.timer="";
this.element.onmouseover=this.stop.bind(this);
this.element.onmouseout=function(){this.timer=setTimeout(this.scroll.bind(this),1000);}.bind(this);
},
scroll:function(){
if(this.element.scrollTop<this.maxHeight){
this.element.scrollTop++;
this.counter++;
}else{
this.element.scrollTop=0;
this.counter=0;
}

if(this.counter<this.height){
this.timer=setTimeout(this.scroll.bind(this),5);
}else{
this.counter=0;
this.timer=setTimeout(this.scroll.bind(this),this.delay);
}
},
stop:function(){
clearTimeout(this.timer);
}
}
new Scroll('a', 22, 0.2)
</script>
</body>
</html>




楼主 参考下
  • 打赏
  • 举报
回复
简单来说吧。假设有n个图片纵向排列,假设其总高度是x,那么你需要将它们再复制一份(类似于将div的innerHtml再复制一份)放在下面(这样总高度就是x+x了)。

然后让这个新的组合,在一个js定时器作用下向上滚动(减小其top值),超出外边框的部分自动剪切,而当最后一张图片已经全都显示之后,显然下边也还能看到顶部第一张图片接在下面,所以产生了连续滚动的效果。

实际上是靠上下复制一次要显示的内容才能做到貌似连续滚动效果的!而js控制其连续性的代码只需要写一行,就是捕获当滚动的top值等于(或者小于)-x的时候,立刻让top等于0。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧