<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
ul {
list-style: none
}
* {
margin: 0;
padding: 0;
}
div {
position: relative;
width: 1200px;
height: 400px;
margin: 50px auto;
border: 1px solid red;
overflow: hidden;
}
div li {
width: 1200px;
height: 400px;
/*float: left;*/
position: absolute;
}
div ul {
width: 1200px;
}
</style>
</head>
<body>
<div id="box">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<script>
手風琴主要是幾個盒不觸發事件時,會相同大小的排列在一排
這裏我們是通過定位的佈局,每次移動鼠標改變他們的left值實現的;
也可以用浮動改寬度的方式;
//1 獲取元素
var box = document.getElementById("box");
var box = document.getElementById('box');
var lis = box.children[0].children;//操作的li
var lis = box.children[0].children;
for(var i =0; i < lis.length; i++){
lis[i].style.background = 'url(images/'+(i+1)+'.jpg)'
animatess(lis[i], 'left', i*240); //鼠標不移入的時候,每個盒子的寬度相等
lis[i].index = i;
lis[i].onmouseover = function(){
for(var j = 0; j < lis.length; j++){
if(lis[j].index <= this.index){ //當盒子移入時:
animatess(lis[j],'left', j*100); //自身和之前的圖片的left是i*100;
}else{
animatess(lis[j], 'left', j*100+700); //自身之後的圖片的left值是i*100+700;
}
}
}
lis[i].onmouseout = function(){
for(var j = 0; j < lis.length; j++){
animatess(lis[j], 'left', j*240);
}
}
}
// 還是那個運動函數
function animatess(tag,attr,target){
clearInterval(tag.timer);
tag.timer = setInterval(function(){
var leader = parseInt(getStyle(tag,attr)) || 0;
var step = (target - leader) / 10;
step = step > 0 ? Math.ceil(step) : Math.floor(step);
leader = leader + step;
tag.style[attr] = leader + 'px';
if(leader == target){
clearInterval(tag.timer);
}
},20)
}
function getStyle(tag,attr){
return tag.currentStyle ? tag.currentStyle[attr] : getComputedStyle(tag,null)[attr];
}
</script>
</body>
</html>