JS新闻滚动效果

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title> code.js.cn </title>
<style>
a{display:block;font-size:15px;line-height:18px;text-decoration:none;color:#333;font-family:Arial;font-size:12px;}
.shell{
    background:url(http://bbs.blueidea.com/images/common/xml.gif) no-repeat 4px 5px;
    border:1px solid #aaa; 
    width:400px;
    padding:3px 2px 2px 20px; 
}
#div1{
    height:18px;
    overflow:hidden;
}
</style>
</head>
<body>
<div class="shell">
    <div id="div1">
      <a href="javascript:">请教高手帮我看下这段代码 FLASH显示不了</a>
      <a href="javascript:">请教在UTF-8编辑下的符号显示问题 </a>
      <a href="javascript:">jquery做的一个滑动效果,不知如何增加延迟,现在太灵敏了</a>
      <a href="javascript:">技术研究-QQ09版按钮渐显渐隐的由来 </a>
      <a href="javascript:">javascript读取Json数据并分页显示,支持键盘和滚轮翻页 </a>
      <a href="javascript:">腾讯网奇怪的PNG文件,拜师以求解惑</a>
      <a href="javascript:">更新lhgdialog-ver2.0.1弹出窗口组件 2009-7-18 </a>
    </div> 
<div>
</body>
<script>
var box=document.getElementById("div1"),can=true;
box.innerHTML+=box.innerHTML;
box.onmouseover=function(){can=false};
box.onmouseout=function(){can=true};
new function (){
    var stop=box.scrollTop%18==0&&!can;
    if(!stop)box.scrollTop==parseInt(box.scrollHeight/2)?box.scrollTop=0:box.scrollTop++;
    setTimeout(arguments.callee,box.scrollTop%18?10:1500);
};
</script>
</html>

 

 

下面这2个代码更少:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title> code.js.cn </title>
<style>
a{display:block;font-size:15px;line-height:18px;text-decoration:none;color:#333;font-family:Arial;font-size:12px;}
.shell{
    background:url(http://bbs.blueidea.com/images/common/xml.gif) no-repeat 4px 5px;
    border:1px solid #aaa; 
    width:400px;
    padding:3px 2px 2px 20px; 
}
#div1{
    height:18px;
    overflow:hidden;
}
</style>
</head>
<body>
<div class="shell">
    <div id="div1">
      <a href="javascript:">请教高手帮我看下这段代码 FLASH显示不了</a>
      <a href="javascript:">请教在UTF-8编辑下的符号显示问题 </a>
      <a href="javascript:">jquery做的一个滑动效果,不知如何增加延迟,现在太灵敏了</a>
      <a href="javascript:">技术研究-QQ09版按钮渐显渐隐的由来 </a>
      <a href="javascript:">javascript读取Json数据并分页显示,支持键盘和滚轮翻页 </a>
      <a href="javascript:">腾讯网奇怪的PNG文件,拜师以求解惑</a>
      <a href="javascript:">更新lhgdialog-ver2.0.1弹出窗口组件 2009-7-18 </a>
    </div> 
<div>
</body>
<script>
var c,_=Function;
with(o=document.getElementById("div1")){ innerHTML+=innerHTML; onmouseover=_("c=1"); onmouseout=_("c=0");}
(F=_("if(#%18||!c)#++,#%=o.scrollHeight>>1;setTimeout(F,#%18?10:1500);".replace(/#/g,"o.scrollTop")))();
</script>
</html>

 

 

 

不用字符串生成function是不行的,缩的就是这个部分代码里面重复的字符。
其实还真没必要用with,

把with(){}换成四个“o.”,代码长度不是只差一个“;”么?再把重复的“o.innerHTML”给缩了,就更省字了。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title> code.js.cn </title>
<style>
a{display:block;font-size:15px;line-height:18px;text-decoration:none;color:#333;font-family:Arial;font-size:12px;}
.shell{
    background:url(http://bbs.blueidea.com/images/common/xml.gif) no-repeat 4px 5px;
    border:1px solid #aaa; 
    width:400px;
    padding:3px 2px 2px 20px; 
}
#div1{
    height:18px;
    overflow:hidden;
}
</style>
</head>
<body>
<div class="shell">
    <div id="div1">
      <a href="javascript:">请教高手帮我看下这段代码 FLASH显示不了</a>
      <a href="javascript:">请教在UTF-8编辑下的符号显示问题 </a>
      <a href="javascript:">jquery做的一个滑动效果,不知如何增加延迟,现在太灵敏了</a>
      <a href="javascript:">技术研究-QQ09版按钮渐显渐隐的由来 </a>
      <a href="javascript:">javascript读取Json数据并分页显示,支持键盘和滚轮翻页 </a>
      <a href="javascript:">腾讯网奇怪的PNG文件,拜师以求解惑</a>
      <a href="javascript:">更新lhgdialog-ver2.0.1弹出窗口组件 2009-7-18 </a>
    </div> 
<div>
</body>
<script>
var c,_=Function,o=document.getElementById("div1"),d=o.innerHTML;
d+=d;o.onmouseover=_("c=1");o.onmouseout=_("c=0");
(F=_("if(#%18||!c)#++,#%=o.scrollHeight>>1;setTimeout(F,#%18?10:1500);".replace(/#/g,"o.scrollTop")))();
</script>
</html>

 

 

 

var c,_=Function;
with(o=document.getElementById("div1")){ innerHTML+=innerHTML; onmouseover=_("c=1"); onmouseout=_("c=0");}
(F=_("if(#%18||!c)#++,#%=o.scrollHeight>>1;setTimeout(F,#%18?10:1500);".replace(/#/g,"o.scrollTop")))();

var c;
var _=Function;// “_”是变量名,按最短的名字起就是了
var o=document.getElementById("div1"); // 这里使用变量前,没有声明,o就是全局变量了,不推荐大*这么做


// 把with语句分解了,这样做了以后,代码的可读性和可维护性更好
o.innerHTML+=o.innerHTML;
/*
* 推荐这么写,最常见的方法,就不多解释了
* o.onmouseover = function(){c=1}; 
*/
o.onmouseover = _("c=1"); // 相当域 new Function("c=1"); 这个就是我说的不推荐大*这么创建函数的地方,执行效率极低。
o.onmouseout = _("c=0");

// F没有先声明,也是new Function创建函数,翻译一下
/*
* (function F(){
*     if(o.scrollTop%18||!c){
*         o.scrollTop++;
*         o.scrollTop%=o.scrollHeight>>1;
*         setTimeout(F,#%18?10:1500); // 没有滚完一行,滚动的时间间隔为10ms,滚完一行,停1.5秒再继续滚到下一行
*     }
* })() // 一个自执行的闭包函数
*/
(F=_("if(#%18||!c)#++,#%=o.scrollHeight>>1;setTimeout(F,#%18?10:1500);".replace(/#/g,"o.scrollTop")))();

  

 

 

 

 

 

 

新闻向上滚动:

 

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>新闻向上滚动</title>
<style type="text/css">
* { padding:0; margin:0; }
#list { width:400px; height:100px; margin:50px auto; position:relative; overflow:hidden; }
#list ul { position:absolute; top:0; }
#list li { height:22px; line-height:22px; }
#list li a { color:#333; text-decoration:none; font-size:14px; }
#list a:hover { text-decoration:underline; color:#000; }
</style>
</head>

<body>



<div id="list">
    <ul>
      <li><a href="#">日本东京都完成钓鱼岛海域非法调查 </a></li>
      <li><a href="#">北京规定买白加黑等药品需身份证</a></li>
      <li><a href="#">江苏滨海一民警坠楼身亡 死前刚被局纪委约谈</a></li>
      <li><a href="#">央视评论员陶伟追悼会举行 生前众好友冒雨送别</a></li>
      <li><a href="#">***:已建成保障房要尽快入市巩固调控</a></li>
    </ul>
</div>




<script type="text/javascript">
window.onload = function()
{
    var list = document.getElementById("list").getElementsByTagName("ul")[0];
    var timer = null;
    
    list.innerHTML += list.innerHTML;
    function marquee()
    {
        list.style.top = list.offsetTop - 3 + "px";
        if(list.offsetTop < -list.offsetHeight/2)
        {
            list.style.top = "0px";
        }
    }
    timer = setInterval(marquee,50);
    list.onmouseover = function() { clearInterval(timer); }
    list.onmouseout = function() { timer = setInterval(marquee,30); }
}
</script>

</body>
</html>

 

 

 

 

posted @ 2012-07-14 17:51  赵小磊  阅读(4225)  评论(0编辑  收藏  举报
回到头部