Javascript模拟Marquee

     在一个项目中,本来是用Marquee实现滚动新闻的,因为客户希望页面一加载就能看到新闻,而不是加载后才慢慢出现.所以在网络上查找解决方案,找到一篇用Javascript模拟Marquee的文章,稍作改动后就用在工程中了,感觉比Marquee好多了.上代码,是个用户控件的代码:

 

<%@ Control Language="C#" AutoEventWireup="true" Codebehind="GG.ascx.cs" Inherits="gxasti.Modules.GG" %>
<div id="header_demo" style="overflow:hidden; width:500px;">
    
<table border="0" cellspacing="0" cellpadding="0">
        
<tr>
            
<td id="header_demo1" nowrap>
                
<!--滚动头条-->
                
<asp:Repeater ID="repColumn" runat="server">
                    
<ItemTemplate>
                        
&nbsp;&nbsp;<target="_blank" href="News_View.aspx?SubWebItemNo=<%# DataBinder.Eval(Container.DataItem, "SubWebItemNo") %>&id=<%# DataBinder.Eval(Container.DataItem, "id"%>"><font
                            
style="font-size: 14px; font-weight: bold; color: #ff8a00;">·<%# DataBinder.Eval(Container.DataItem, "titles")%></font></a>
                    
</ItemTemplate>
                
</asp:Repeater>
            
</td>
            
<td id="header_demo2" nowrap>
            
</td>
        
</tr>
    
</table>
</div>

<script type="text/javascript">

    
//滚动头条
    //滚动效果
    var header_demo = document.getElementById("header_demo");
    
var header_demo1 = document.getElementById("header_demo1");
    
var header_demo2 = document.getElementById("header_demo2");
    
var speed=20;    //数值越大滚动速度越慢
    header_demo2.innerHTML = header_demo1.innerHTML;

    
function Marquee(){
        
//如果内容宽度比容器可视宽度小,不滚动,也不显示第二部分
        if(header_demo1.clientWidth > header_demo.clientWidth)
        
{
            
if(header_demo2.offsetWidth-header_demo.scrollLeft<=0)
                header_demo.scrollLeft
-=header_demo1.offsetWidth
            
else{
                header_demo.scrollLeft
++
            }

        }

        
else
        
{
            header_demo2.style.display 
= "none";
        }

    }

    
var MyMar = setInterval(Marquee,speed);
    header_demo.onmouseover 
= function(){clearInterval(MyMar)}
    header_demo.onmouseout 
= function(){MyMar = setInterval(Marquee,speed)}
</script>

 

 

CSCode
posted on 2008-12-23 10:19  飘渺冰血  阅读(541)  评论(0编辑  收藏  举报