无缝连续滚动字幕

如题。

原来一直用的是这段代码:(向上方向:

<div id="dome" style="overflow: hidden; height: 80px; width: 320px;">
            <div id="dome1">
                <div id="notice_cont">
                    <ul>
                      <%=showNotices()%>   
                    </ul>
                  
                </div>
            </div>
            <div id="dome2">
            </div>
        </div>

       <script>
var speed=100;
dome2.innerHTML=dome1.innerHTML;
dome.scrollTop=dome.scrollHeight;
function Marquee(){
if(dome1.offsetTop-dome.scrollTop>=0)
dome.scrollTop+=dome2.offsetHeight;
else{
dome.scrollTop--;
}
}
var MyMar=setInterval(Marquee,speed);
dome.οnmοuseοver=function() {clearInterval(MyMar)}
dome.οnmοuseοut=function() {MyMar=setInterval(Marquee,speed);}
</script>

后来发现一个问题,单只有一条通知的时候重复显示,并且不能滚动,其次2个的时候一顿一顿的滚动,效果不好。但是3个以上显示效果不错.今天发现第一个DIV的高度设置很重要,应设置为你所要滚动条数的高度总和,还要小些才行,打于就会不滚动。哎,回去好好想想原理。。。

 

2011-6-9

http://www.cnblogs.com/rubylouvre/archive/2009/10/01/1577219.html 这个是可以运行的。我试了下,是可以的,我知道我的为什么不行的原因,因为我要滚动的不仅仅是文字,是文字+图片所以需要放在一个DIV 里面,但是改成DIV后就不能循环滚了~~~

 

 

 

于是上网找,没能解决。自己目前对JS又不是太懂,于是换了一个: 有点类似翻牌的效果,代码如下:

 <div style="overflow: hidden; line-height: 18px; height: 60px; width: 360px">
            <div id="notice_cont" style="margin-top: 0px">
                <ul>
                   <%=showNotices()%> 
                </ul>
            </div>
        </div>

        <script>
function startmarquee(lh,speed,delay) {
var p=false;
var t;
var o=document.getElementById("notice_cont");
o.innerHTML+=o.innerHTML;
o.style.marginTop=0;
o.οnmοuseοver=function(){p=true;}
o.οnmοuseοut=function(){p=false;}
function start(){
t=setInterval(scrolling,speed);
if(!p) o.style.marginTop=parseInt(o.style.marginTop)-1+"px";
}
function scrolling(){
if(parseInt(o.style.marginTop)%lh!=0){
o.style.marginTop=parseInt(o.style.marginTop)-1+"px";
if(Math.abs(parseInt(o.style.marginTop))>=o.scrollHeight/2) o.style.marginTop=0;
}else{
clearInterval(t);
setTimeout(start,delay);
}
}
setTimeout(start,delay);
}
startmarquee(20,20,1500);   //自行设置
        </script>

效果不错,它能一个一个往上翻,显示一个停顿下,同时下面的依次网上挪动。已测试1,2,3 都可完美滚动。不错,类似现在CSDN首页上的文字滚动效果。

 

!!! 今天发现一个BUG:条数多的时候10左右,每次滚一下,好线就会减1px,将-1+"px",改为2还是不行,设置startmarquee(X,X,X);  都没用。代码也看了,没看出来。我查看了CSDN首页JS 发现基本就是这么个思路做的。可是CSDN显示在多都不会错位~

不过最后还是设置startmarquee(X,X,X);给解决了。<div style="overflow: hidden; line-height: 18px; height: 60px; width: 360px"> 中 line-height: 18px; 很重要,它是给定显示每行的宽度,startmarquee第一个参数要设置比line-height: 给1~2px可以解决。以后有就会在改改吧,就这样。

另附上显示部分的CSS:

#notice_cont
{
 padding-left: 2px;
}
#notice_cont li {
 
 background-image: url(../images/1217.gif);
 background-repeat: no-repeat;
 background-position: 1px;
 border-bottom-width: 1px;
 border-bottom-style: dashed;
 border-bottom-color: #729EC0;
 list-style-type: none;
 
 padding-left: 5px;
 width: 320px;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值