惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

博客园 - Sangplus

[转]C#单进程解决方案 extern alias 英语面试常用语 【转】FLASH轮换广告源码 让Enumerable可以具有each方式的语法。 C#之扩展方法学习 使用非托管代码进行字节数组的快速拷贝 c#复习——虚方法、重写方法和抽象方法(官方解释) vs2005工具栏重置 一种实用的页面传参方法 所有HTTP状态代码及其定义 ASP.NET验证控件祥解[转] C#制作WinForm控件[转] 关于web.config的读写管理 关于SqlServer2005开发者版不同电脑之间的连接问题 JavaScript中有时候需要给this起一个别名。 不知不觉代码已经超过1万行了 关于RequiredFieldValidator的怪异现象 javascript添加下拉列表和速度有关系吗?
走马灯的js代码
Sangplus · 2010-02-21 · via 博客园 - Sangplus

近来做一网站,需要用到走马灯效果,根据网上结果,整理代码如下,以方便以后直接使用。

在js文件中加入如下函数:

代码


function Marquee(objID,vh,w,h,sp){
    var objOri=document.getElementById(objID);
    var objHTML=objOri.outerHTML;
    if(!objHTML)
    {
        var div = document.createElement("div");
        div.appendChild( objOri.cloneNode(true));
        objHTML = div.innerHTML;
    }
    var MarqueeFrame="MarqueeFrame_"+objID;
    var MarqueeObj="MarqueeObj_"+objID;
    var MarqueeObjPost="MarqueeObjPost_"+objID;
    var str="
<div id="+MarqueeFrame+" style=\"OVERFLOW: hidden; WIDTH: "+w+"px; HEIGHT: "+h+"px\">";
    str+="
<table border=0 align=center cellpadding=0 cellspacing=0 cellspace=0><tr>";
    str+="
<td id="+MarqueeObj+" valign=top >"+objHTML+"</td>";
    str+=vh=="v"?"
</tr><tr>":"";
    str+="
<td id="+MarqueeObjPost+">"+objHTML+"</td></tr></table></div>";
    
    //objOri.outerHTML=str;
    //FF不支持outerHTML,可以改用一下方法,不过需要jQuery1.3.2支持
    $(objOri).replaceWith(str);
    
    var mf=document.getElementById(MarqueeFrame);
    var obj=document.getElementById(MarqueeObj);
    var objPost=document.getElementById(MarqueeObjPost);
    
    var MyMar=setInterval(function(){InternalMarquee(mf,obj,objPost,vh)},sp);
    mf.onmouseover=function() {clearInterval(MyMar)};
    mf.onmouseout=function() {MyMar=setInterval(function(){InternalMarquee(mf,obj,objPost,vh)},sp)};
}

function InternalMarquee(mf,obj,objPost,vh)
{
    if(vh=="v")
    {
        if(objPost.offsetTop-mf.scrollTop

<=0){
            mf.scrollTop-
=obj.offsetHeight;
        
}
        else{
            mf.scrollTop++;
        }
    }
    else
    {
        if(objPost.offsetLeft-mf.scrollLeft<
=0){
            
mf.scrollLeft-=obj.offsetWidth;
        
}
        else{
            mf.scrollLeft++;
        }
    }
}

在页面中引入该js文件:

1     <script src="Scripts/jquery-1.3.2.js" type="text/javascript"></script>
2     <script src="Scripts/Script.js" type="text/javascript"></script>

页面中的调用方法:

代码

 1 
 2     <div id="Div1" style="white-space:nowrap;">
 3     <img alt="" src="Images/sy-mxhy-04.gif"/>
 4     <img alt="" src="Images/sy-mxhy-05.gif" />
 5     </div>
 6     <div id="test">
 7     <div id="Div2">
 8     <img alt="" src="Images/sy-mxhy-04.gif"/>
 9     <img alt="" src="Images/sy-mxhy-05.gif" />
10     </div>
11     </div>   
12     <table id="Div3">
13     <tr>
14     <td>
15     <img alt="" src="Images/sy-mxhy-04.gif"/>
16     </td>
17     <td>
18     <img alt="" src="Images/sy-mxhy-05.gif" />
19     </td>
20     </tr>
21     </table>
22     <div id="div4">中华人民共和国</div>
23     <script type="text/javascript">
24     Marquee("Div1","h",145,125,3);
25     Marquee("Div2","v",145,30,3);
26     Marquee("Div3","h",145,126,3);
27     Marquee("Div4","h",10,126,20);
28     </script>

注意事项:

  当进行水平滚动时,应该由使用者设置目标元素宽度,或在目标元素中加入white-space:nowrap式样,以防止内容本身换行导致的效果失败

  宽度(或高度)设置不应超过目标元素本身的宽度或高度,否则没有效果

  本函数中仅有两个方向,在使用中可以适当修改vh相关代码来增加其他动画方向。