window.onload?=?function()?{
//容器對象
var?box?=?document.getElementById("container");
var?imgs?=?box.getElementsByTagName("img");
//單張圖片的寬度
var?imageWidth?=?imgs[0].offsetWidth;
//設置掩蓋門體露出的寬度
var?exposeWidth?=?160;
//設置容器總寬度
var?boxWidth?=?imageWidth?+?exposeWidth?*?(imgs.length?-?1);
box.style.width?=?boxWidth?+?"px";
//設置每道門?的初始位置
function?setImgsPos()?{
for(var?i=1,len=imgs.length;?i<len;?i++)?{
imgs[i].style.left?=?imageWidth?+?exposeWidth?*?(i?-?1)?+?"px";??
}
}
setImgsPos();
//緩沖
function?startMove(obj,?iTarget)?{
clearInterval(obj.timer);
obj.timer?=?setInterval(function()?{
var?speed?=?(iTarget?-?obj.offsetLeft)/10;
speed?=?speed>0???Math.ceil(speed)?:?Math.floor(speed);
if(obj.offsetLeft?==?iTarget)?{
clearInterval(obj.timer);
}?else?{
obj.style.left?=?obj.offsetLeft?+?speed?+"px";
}
}?,30);
}
//計算每道門打開時應移動的距離
var?translate?=?(imageWidth?-?exposeWidth);
//為每道門邦定事件
for(var?i=0,len=imgs.length;?i<len;?i++)?{
//匿名函數獲取不同的i值
(function(i)?{
// imgs[i].timer?=?null;
imgs[i].onmouseover?=?function()?{
// setImgsPos();
for(var?j=1;?j<=i;?j++)?{
var?iTarget?=?(imageWidth?+?exposeWidth?*?(j?-?1)?-?translate);?
startMove(imgs[j],?iTarget);
//如果想只是單張移動,如下:
// startMove(this,?iTarget);
}
}
imgs[i].onmouseout?=?function()?{
// setImgsPos();
for(var?j=1;?j<=i;?j++)?{
var?iTarget?=?(imageWidth?+?exposeWidth?*?(j?-?1));?
startMove(imgs[j],?iTarget);
//如上,單張:
// startMove(this,?iTarget);
}
}
})(i)
}
}
2016-09-23
我還想為每個滑動門加上 透明效果 就是 mouseover的時候 為不透明 ? mouseout的時候是覆蓋著透明的黑色...我怎么弄都弄不出來
2016-09-23
<style?type="text/css"> body?{ margin:?0; padding:?0; } #container?{ margin:?0?auto; height:?477px; border-right:?1px?solid?#ccc; border-bottom:?1px?solid?#ccc; overflow:?hidden; position:?relative; } #container?.door1?{ filter:?alpha(opacity:?100); opacity:?1; } #container?img?{ position:?absolute; display:?block; left:?0; border-left:?1px?solid?#ccc; filter:?alpha(opacity:?30); opacity:?0.3; } </style>2016-09-23
window.onload?=?function()?{ //容器對象 var?box?=?document.getElementById("container"); var?imgs?=?box.getElementsByTagName("img"); //單張圖片的寬度 var?imageWidth?=?imgs[0].offsetWidth; //設置掩蓋門體露出的寬度 var?exposeWidth?=?160; //設置容器總寬度 var?boxWidth?=?imageWidth?+?exposeWidth?*?(imgs.length?-?1); box.style.width?=?boxWidth?+?"px"; //設置每道門?的初始位置 function?setImgsPos()?{ for(var?i=1,len=imgs.length;?i<len;?i++)?{ imgs[i].style.left?=?imageWidth?+?exposeWidth?*?(i?-?1)?+?"px";??//px別忘了 } } setImgsPos(); //透明度 function?startOpacity(obj,?iTarget)?{ clearInterval(obj.timer); obj.timer?=?setInterval(function()?{ var?speed?=?(iTarget?-?obj.alpha)/10; speed=speed>0???Math.ceil(speed)?:?Math.floor(speed); if(obj.alpha?==?iTarget)?{ clearInterval(obj.timer); }?else?{ obj.alpha?+=?speed; obj.style.filter?=?"alpha(opacity:"?+?obj.alpha?+?")"; obj.style.opacity?=?obj.alpha/100; } }?,30); } //計算每道門打開時應移動的距離 var?translate?=?imageWidth?-?exposeWidth; //為每道門邦定事件 for(var?i=0,len=imgs.length;?i<len;?i++)?{ imgs[0].alpha?=?100; //匿名函數獲取不同的i值 (function(i)?{ imgs[i].timer?=?null; imgs[i].alpha?=?30; imgs[i].onmouseover?=?function()?{ //先復位每道門 setImgsPos(); //打開門 startOpacity(this,?100); for(var?j=1;?j<=i;?j++)?{ imgs[j].style.left?=?parseInt(imgs[j].style.left,?10)?-?translate?+?"px"; } } imgs[i].onmouseout?=?function()?{ setImgsPos(); startOpacity(this,?30); } })(i) } }2016-09-23
為什么不用清除定時器吶?