
https://www.dongchedi.com/auto/series/4499
图片素材

1 2 3 4 5 6 7
| <div id="box"> <img src="img/1.png" alt=""> <div class="btn"> <a href="javascript:;" class="prev"><</a> <a href="javascript:;" class="next">></a> </div> </div>
|

原理:就是通过js改变img标签的src地址,附值不同角度的图片
https://www.dongchedi.com/auto/series/4499 下的效果是通过控制不同角度的图片的opacity实现的
关于增加性能开启了3D加速:
动态改变元素的translate3D,自然开启了3D加速。
setTimeout/setInterval/requestAnimationFrame和CSS3没有很大的帧速差别。
现今主要的不同点是:
- 功能涵盖面,JS比CSS3大
定义动画过程的@keyframes不支持递归定义,如果有多种类似的动画过程,需要调节多个参数来生成的话,将会有很大的冗余(比如jQuery Mobile的动画方案),而JS则天然可以以一套函数实现多个不同的动画过程时间尺度上,@keyframes的动画粒度粗,而JS的动画粒度控制可以很细CSS3动画里被支持的时间函数非常少,不够灵活以现有的接口,CSS3动画无法做到支持两个以上的状态转化。
- 实现/重构难度不一,CSS3比JS更简单,性能调优方向固定。
- 对于帧速表现不好的低版本浏览器,CSS3可以做到自然降级,而JS则需要撰写额外代码。
- CSS3有兼容性问题,而JS大多时候没有兼容性问题。
如何判断鼠标或触摸是向左、向右、向上、向下滑动
触摸参考:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| var startx, starty; function getAngle(angx, angy) { return Math.atan2(angy, angx) * 180 / Math.PI; }; function getDirection(startx, starty, endx, endy) { var angx = endx - startx; var angy = endy - starty; var result = 0; if (Math.abs(angx) < 2 && Math.abs(angy) < 2) { return result; } var angle = getAngle(angx, angy); if (angle >= -135 && angle <= -45) { result = 1; } else if (angle > 45 && angle < 135) { result = 2; } else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) { result = 3; } else if (angle >= -45 && angle <= 45) { result = 4; } return result; } document.addEventListener("touchstart", function(e) { startx = e.touches[0].pageX; starty = e.touches[0].pageY; }, false); document.addEventListener("touchend", function(e) { var endx, endy; endx = e.changedTouches[0].pageX; endy = e.changedTouches[0].pageY; var direction = getDirection(startx, starty, endx, endy); switch (direction) { case 0: alert("未滑动!"); break; case 1: alert("向上!") break; case 2: alert("向下!") break; case 3: alert("向左!") break; case 4: alert("向右!") break; default: } }, false);
|
鼠标模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| $(function () { var div=document.getElementById("元素id"); div.onmousedown=function(e){ document.onmousemove=function(e){ }; document.onmouseup=function(){ document.onmouseup=null; document.onmousemove=null; }; }; });
|