时尚

使用原生JS实现移动端图片轮播效果2

2019-11-10 03:46:33来源:励志吧0次阅读

在上篇文章中,使用改变left的值实现轮播效果,在pC端上由于要兼容旧版浏览器,所以都采用这种做法。但是在移动端上会使浏览器造成极大的性能开销,在一些老机型中会出现明显的卡顿,用户体验不好,所以在这篇文章中将使用translate实现轮播。translate样式的变化会造成重绘,但是并不会进行CSS样式的重新计算和布局,其性能要明显优于left。

在整体结构不变的条件下,只是更改了其JS文件就能实现相关效果,为了能够更好的更改和读取其translateX的值,所以写了一个相干的函数。

// 只传入两个实参则为获取,传入三个实参为设置参数值,当然为了简单点,所以只加入了translateX这一单一属性,用户可以自行对该函数进行改造,//可以适当的加入translateYscaleXscaleY等值。 function cssTransform(eleattrval){ if(!ele.transform){ ele.transform = {}; };//当传入值时对属性进行设置。 if(arguments.length>2){ ele.transform[attr] = val; var sval = \\; for(var s in ele.transform){ if(s == \translateX\){ sval += s + \(\+ele.transform[s] +\px)\; } ele.style.WebkitTransform = ele.style.transform = sval; } }else{ val = ele.transform[attr]; if(typeof val==\undefined\){ if(attr==\translateX\){ val = 0; } }; console.log(val); return val; } }

在代码中,有几个重要的点,掌握其原理之后,移动端轮播就基本可以了。

1.在页面刚加载时,设置盒子的translateX为0,并取消定时器。

2.当手指按下的时候,取消其transition,判断当前属于第几张图片,当为第零张图片的时候,将盒子迅速拉至复制出来的图片的第一张,当图片在最后一张的时候,将盒子迅速拉至未复制的图片的最后一张。

3.当手指滑屏时,改变其box的tranflateX.

4.当手指抬起时,得到处于第几张照片,然后将其滑入,并开启定时器。

var wrap = document.querySelector(\.wrap\);var box = document.querySelector(\.box\);box.innerHTML+=box.innerHTML;var aLi = document.querySelectorAll(\.box li\);var aNav = document.querySelectorAll(\nav span\);var aHeight = aLi[0].offsetHeight;var aWidth = wrap.offsetWidth; wrap.style.height = aHeight + 'px';box.style.width = aLi.length * 100 + \%\;for(var i=0;i

点击链接加入群【前端交流总群】:https://jq.qq.com/?_wv=1027&k=47bGc0u

伟哥保密配送吗

圣女viagra

枸酸西地那非片价格

昂度神油

分享到:
  • 友情链接
  • 合作伙伴