一个轻巧又好用的脚本,修改起来很简单,li标签里面不加图片加文字也可以。自己重新弄了个demo测试了一下,效果还不错。
发觉其实JS的一些小巧的动态脚本也是可以给做网页设计者带来灵感的,一些平面化的东西做太多思维容易被局限住,有时有点动感,给你的用户一点“反应”,也是件不错的事。当然一切还是要从实际需求出发,单纯为了视觉效果不是本人迷恋和追求的东西。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>1KB的横向滑动菜单JS脚本</title> <style type="text/css"> ul{margin:20px;padding:0;} .sm {list-style:none; width:350px; height:32px; display:block; overflow:hidden} .sm li {float:left; display:inline; overflow:hidden} </style> </head> <body οnlοad="slideMenu.build('sm',140,10,10,1)"> <ul id="sm" class="sm"> <li><img src="http://www.cargoo.net/p/x/images/1.gif" alt="" /></li> <li><img src="http://www.cargoo.net/p/x/images/2.gif" alt="" /></li> <li><img src="http://www.cargoo.net/p/x/images/3.gif" alt="" /></li> <li><img src="http://www.cargoo.net/p/x/images/4.gif" alt="" /></li> </ul> </body> </html>
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
脚本部分:
var slideMenu=function(){
var sp,st,t,m,sa,l,w,sw,ot;
return{
build:function(sm,sw,mt,s,sl,h){
sp=s; st=sw; t=mt;
m=document.getElementById(sm);
sa=m.getElementsByTagName('li');
l=sa.length; w=m.offsetWidth; sw=w/l;
ot=Math.floor((w-st)/(l-1)); var i=0;
for(i;i<l;i++){s=sa[i]; s.style.width=sw+'px'; this.timer(s)}
if(sl!=null){m.timer=setInterval(function(){slideMenu.slide(sa[sl-1])},t)}
},
timer:function(s){s.onmouseover=function(){clearInterval(m.timer);m.timer=setInterval(function(){slideMenu.slide(s)},t)}},
slide:function(s){
var cw=parseInt(s.style.width,'10');
if(cw<st){
var owt=0; var i=0;
for(i;i<l;i++){
if(sa[i]!=s){
var o,ow; var oi=0; o=sa[i]; ow=parseInt(o.style.width,'10');
if(ow>ot){oi=Math.floor((ow-ot)/sp); oi=(oi>0)?oi:1; o.style.width=(ow-oi)+'px'}
owt=owt+(ow-oi)}}
s.style.width=(w-owt)+'px';
}else{clearInterval(m.timer)}
}
};
}();
html代码部分(CSS很简单,我合并在head标签里了):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Horizontal Slide Menu</title>
<script type="text/javascript" src="http://www.cargoo.net/p/x/script/slidemenu.js"></script>
<style type="text/css">
ul{margin:20px;padding:0;}
.sm {list-style:none; width:350px; height:32px; display:block; overflow:hidden}
.sm li {float:left; display:inline; overflow:hidden}
</style>
</head>
<body onload="slideMenu.build('sm',140,10,10,1)">
<ul id="sm" class="sm">
<li><img src="http://www.cargoo.net/p/x/images/1.gif" alt="" /></li>
<li><img src="http://www.cargoo.net/p/x/images/2.gif" alt="" /></li>
<li><img src="http://www.cargoo.net/p/x/images/3.gif" alt="" /></li>
<li><img src="http://www.cargoo.net/p/x/images/4.gif" alt="" /></li>
</ul>
</body>
</html>
原文地址:http://www.leigeber.com/2008/05/horizontal-javascript-accordion-menu/