先是HTML部分
<div id="alternate"> <ul class="img_list clear"> <li><a href="#"><img src="1.jpg" /></a></li> <li><a href="#"><img src="2.jpg" /></a></li> <li><a href="#"><img src="3.jpg" /></a></li> <li><a href="#"><img src="4.jpg" /></a></li> <li><a href="#"><img src="5.jpg" /></a></li> </ul> <a href="javascript:;" class="btn_left"></a> <a href="javascript:;" class="btn_right"></a> </div>
样式部分:
<style> body,ul{padding:0;margin:0} li{list-style:none;} #alternate{ width:900px; position:relative; margin:30px auto; overflow:hidden; } .btn_left{ width:60px; height:60px; position:absolute; top:223px; left:10px; background:url(btn.gif) no-repeat; opacity:0.3; filter:alpha(opacity:30); } .btn_left:hover{ opacity:1; filter:alpha(opacity:30); } .btn_right{ width:60px; height:60px; position:absolute; top:223px; right:10px; background:url(btn.gif) no-repeat 0 -60px; opacity:0.3; filter:alpha(opacity:30); } .btn_right:hover{ opacity:1; filter:alpha(opacity:30); } .img_list{ width:45000px; position:relative; left:0; } .img_list li{ float:left; } .clear:after{ clear:both; display:block; content:""; height:0; overflow:hidden; visibility:hidden; } </style>
然后是JS方面:
先上一个通过CLASS来获取样式,前面的随笔文章当中有发布过:通过正则写一个较为完美的getByClass函数
function getByClass(oParent,sClass){ var aChild = oParent.getElementsByTagName("*"), result = []; for(var i =0;i<aChild.length;i++){ if(aChild[i].className.match(new RegExp("(\\s|^)" + sClass+ "(\\s|$)"))){ //判断是否有该class result.push(aChild[i]); }; }; return result; };
链接外部样式,可以参考 多用途运动框架
<script src="move.js"></script>
主体部分:
<script> window.onload = function(){ var oUl = document.getElementById("alternate").getElementsByTagName("ul")[0]; var aLi = oUl.getElementsByTagName("li"); var aPrev = getByClass(document.getElementById("alternate"),"btn_left")[0]; var aNext = getByClass(document.getElementById("alternate"),"btn_right")[0]; var iNow = 0; var timer; //oUl.innerHTML += oUl.innerHTML; oUl.style.width = aLi[0].offsetWidth * aLi.length + "px"; aNext.onclick = function(){ clearInterval(timer); //每次点击按钮的时候清楚定时器 if(iNow < aLi.length-1){ iNow++; }else{ iNow = 0; }; move(oUl,{left:-aLi[0].offsetWidth*iNow}); timer= setInterval(rollNext,3000); //运行完点击后的代码,才开始定时器,这样确保每次运动的间隔是一样的 }; aPrev.onclick = function(){ clearInterval(timer); if(iNow !==0){ iNow--; }else{ iNow = aLi.length-1; }; move(oUl,{left:-aLi[0].offsetWidth*iNow}); timer= setInterval(rollNext,3000); }; timer= setInterval(rollNext,3000); function rollNext(){ if(iNow < aLi.length-1){ iNow++; }else{ iNow = 0; }; move(oUl,{left:-aLi[0].offsetWidth*iNow}); } function getByClass(oParent,sClass){ var aChild = oParent.getElementsByTagName("*"), result = []; for(var i =0;i<aChild.length;i++){ if(aChild[i].className.match(new RegExp("(\\s|^)" + sClass+ "(\\s|$)"))){ //判断是否有该class result.push(aChild[i]); }; }; return result; }; }; </script>