1 <body> 2 <div id="wrap"> 3 <img src="img/0.png"/> 4 <img src="img/1.png"/> 5 <img src="img/2.png"/> 6 <img src="img/3.png"/> 7 <img src="img/4.png"/> 8 <img src="img/5.png"/> 9 <img src="img/6.png"/> 10 </div> 11 12 </body>
1 <style> 2 body{ 3 margin: 0; 4 background-color: #999; 5 } 6 #wrap{ 7 height: 500px; 8 background: url(img/bg.png) no-repeat center; 9 background-size: 1800px 500px; 10 position: relative; 11 transform-style: preserve-3d; 12 perspective: 800px; 13 margin-top: 100px; 14 } 15 img{ 16 border: none; 17 vertical-align: top; 18 } 19 #wrap img{ 20 width: 300px; 21 height: 200px; 22 position: absolute; 23 left: 50%; 24 top: 50%; 25 margin-left: -150px; /* 居中*/ 26 margin-top: -100px; 27 transition: 0.7s ease-in-out; 28 } 29 </style>
<script type="text/javascript"> window.onload = function() { var imgs = document.getElementsByTagName("img"); var target = ""; var n = 6; //开始值 var onoff = true; //解决快速多点 乱跑问题 setTimeout(function(){ tab(n) },200) // 3 4 5 6 0 1 2 function tab(n) { for (var i = 0; i < 3; i++) { var left = n-1-i; if (left<0) { // 重要步骤一 left = left +7; } imgs[left].style.transform = "translateX("+(-150*(i+1))+"px) translateZ("+(200-i*100)+"px) rotateY(30deg)"; //往右边移动 150 景深 2边 离中心越远 越 小 var right = n+1+i; if (right>6) {// 重要步骤一 right = right -7; } imgs[right].style.transform = "translateX("+(150*(i+1))+"px) translateZ("+(200-i*100)+"px) rotateY(-30deg)"; } imgs[n].style.transform = "translateZ(300px)"; } for (var i = 0; i < imgs.length; i++) { imgs[i].index = i; imgs[i].onclick = function() { if(!onoff){ return; } onoff = false; target = this.index; //alert(this.index) //gonext(); //是否走下一张最近 还是上一张最近 当前值 》点击值 相减 》= 3 if(target > n) // 点击 6 当前 2 { if(target-n <= 3) { gonext() //往上走 }else{ goprev(); //往下走 } }else{// 点击 0 当前 6 if(n -target >=4){ gonext() //往上走 }else{ goprev(); //往下走 } } } } function gonext() //图片切换 { n++ // +1 if(n>6){ //判断是否大于6 回归 0 n = 0; } tab(n); //顺序不能乱 if(n == target){ //点击值 == 已经到达的值则退出 运动完成 onoff = true; return; } setTimeout(function(){ gonext(); },700) } function goprev() //图片切换 { n-- // +1 if(n<0){ //判断是否大于6 回归 0 n =6; } tab(n); //顺序不能乱 if(n == target){ //点击值 == 已经到达的值则退出 onoff = true; return; } setTimeout(function(){ goprev(); },700) } } </script>