首页 > 代码库 > 运动-手风琴
运动-手风琴
一、html+css布局
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>手风琴</title> <script src=http://www.mamicode.com/‘../../package/move.js‘></script> <style> *{ list-style: none; margin: 0; padding: 0; } #box{ width: 500px; height: 250px; margin: 100px auto; position: relative; overflow: hidden; } #box ul li{ width: 500px; height: 250px; position: absolute; top:0; } #box ul li img{ width: 500px; height: 250px; } </style> </head> <body> <div id="box"> <ul> <li><img src=http://www.mamicode.com/"../img/qin/1.jpg" alt=""></li> <li><img src=http://www.mamicode.com/"../img/qin/2.jpg" alt=""></li> <li><img src=http://www.mamicode.com/"../img/qin/3.jpg" alt=""></li> <li><img src=http://www.mamicode.com/"../img/qin/4.jpg" alt=""></li> <li><img src=http://www.mamicode.com/"../img/qin/5.jpg" alt=""></li> </ul> </div> </body> </html>;
二、获取需要操作的元素
var oBox=document.getElementById(‘box‘); var aLi=oBox.getElementsByTagName(‘li‘);
三、布局
分析布局可以知道,第一个li的left值为0,位置是不需要变化的
我们假设右边每个竖条的宽度为30 var w=30;
第二个li的left值为:oBox的盒模型的宽度减去4*w -------->4===aLi.length-1;
第三个li的left值为:oBox的盒模型的宽度减去3*w -------->3===aLi.length-2;
第三个li的left值为:oBox的盒模型的宽度减去2*w -------->2===aLi.length-3;
第三个li的left值为:oBox的盒模型的宽度减去1*w -------->1===aLi.length-4;
//布局 var w=30; for(var i=1;i<aLi.length;i++){ aLi[i].style.left=oBox.offsetWidth-(aLi.length-i)*w+‘px‘; }
四、for循环,给每个li添加一个鼠标移入事件
假设移入之后的样式为上图所示,则分析布局:
左边:
第一个:left为w*0;
第二个:left为w*1
中间部分:left为w*2
右边:
第一个:left为oBox.offsetWidth-2*w+‘px‘;-------->2===(aLi.length-3)*w+‘px‘;
第二个:left为oBox.offsetWidth-1*w+‘px‘;-------->1===(aLi.length-4)*w+‘px‘;
所以我们需要循环判断li是在左边还是在右边,假设每个li上面都有一个索引值,从0开始,则第一个的索引值为0,第二个为1,第三个为2,依次类推,如果i的值是小于等于当前li的index的时候,则使li全部处于左边,否则处于右边,代码如下:
for(var i=0;i<aLi.length;i++){ aLi[i].index=i; aLi[i].onmouseover=function(){ for(var i=0;i<aLi.length;i++){ if(i<=this.index){ /*aLi[i].style.left=i*w+‘px‘;*/ move(aLi[i],{left:i*w}) }else{ /*aLi[i].style.left=oBox.offsetWidth-(aLi.length-i)*w+‘px‘;*/ move(aLi[i],{left:oBox.offsetWidth-(aLi.length-i)*w}) } }; }; };
完整代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>手风琴</title> <script src=http://www.mamicode.com/package/move.js‘></script>"color: #000000">{ list-style: none; margin: 0; padding: 0; } #box{ width: 500px; height: 250px; margin: 100px auto; position: relative; overflow: hidden; } #box ul li{ width: 500px; height: 250px; position: absolute; top:0; } #box ul li img{ width: 500px; height: 250px; } </style> <script> window.onload=function(){ var oBox=document.getElementById(‘box‘); var aLi=oBox.getElementsByTagName(‘li‘); //布局 var w=30; for(var i=1;i<aLi.length;i++){ aLi[i].style.left=oBox.offsetWidth-(aLi.length-i)*w+‘px‘; } for(var i=0;i<aLi.length;i++){ aLi[i].index=i; aLi[i].onmouseover=function(){ for(var i=0;i<aLi.length;i++){ if(i<=this.index){ /*aLi[i].style.left=i*w+‘px‘;*/ move(aLi[i],{left:i*w}) }else{ /*aLi[i].style.left=oBox.offsetWidth-(aLi.length-i)*w+‘px‘;*/ move(aLi[i],{left:oBox.offsetWidth-(aLi.length-i)*w}) }; }; }; }; }; </script> </head> <body> <div id="box"> <ul> <li><img src="http://www.mamicode.com/img/qin/1.jpg" ></li> <li><img src="http://www.mamicode.com/img/qin/2.jpg" ></li> <li><img src="http://www.mamicode.com/img/qin/3.jpg" ></li> <li><img src="http://www.mamicode.com/img/qin/4.jpg" ></li> <li><img src="http://www.mamicode.com/img/qin/5.jpg" ></li> </ul> </div> </body> </html>;
运动-手风琴
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。