3、js原生实现移动端手指滑动轮播图效果(3)
2017-10-19 15:34
1041 查看
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0"> <title>3、js原生实现移动端手指滑动轮播图效果(3)</title> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <style> *{ margin: 0; padding: 0; } html, body { height: 100%; width: 100%; } ul, ol { list-style: none; } /*清除浮动*/ .box{ height: 50vh; width: 100vw; background: red; } .box1{ background: yellow; } .box2{ background: yellowgreen; } .box3{ background: cyan; } .box4{ background: orange; } /*轮播图*/ .banner{ position: relative; top: 10vh; width: 100vw; height: 100%; overflow: hidden; } .li{ position: absolute; left: 0; top:0; } .li:nth-of-type(1){ left:0; } .li:nth-of-type(2){ left:375px; } .li:nth-of-type(3){ left:700px; } .li:nth-of-type(4){ left:1075px; } </style> </head> <body> <div class="banner"> <ul class="ul1"> <li class="li"> <div class="box box1">1111</div> </li> <li class="li"> <div class="box box2">2222</div> </li class="li"> <li class="li"> <div class="box box3">3333</div> </li> <li class="li"> <div class="box box4">444</div> </li> </ul> </div> </body> </html> <script> var banner = document.querySelector('.banner'); var width = banner.offsetWidth; var ul1Node = banner.querySelector('.ul1'); var liNode = document.querySelectorAll('.li'); var liLength = liNode.length; var startX = 0;//开始坐标 var moveX = 0;//移动时x的坐标 var distancex = 0;//移动距离 var isMove = false;//是否滑动过 var index = 0;//当前图片索引 banner.addEventListener('touchstart',(e) => { startX = e.touches[0].clientX; }) banner.addEventListener('touchmove',(e) => { moveX = e.touches[0].clientX; distancex = moveX - startX; translateX(ul1Node,-index * width + distancex); }) banner.addEventListener('touchend',(e) => { if( Math.abs(distancex) > (width/2) ){ if (distancex > 0) { if(index >= 1){ index --; }else{ index = 0 } } else { if(index < liLength-1){ index ++; }else{ index =liLength-1 } } addTransition(); translateX(ul1Node,-index * width); }else { addTransition(); translateX(ul1Node,-index * width); } console.log(index); }) /*公用方法*/ //添加过渡 var addTransition = function () { ul1Node.style.webkitTransition = 'all .2s '; ul1Node.style.transition = "all .2s"; } //删除过渡 var removeTransition = function () { ul1Node.style.webkitTransition = 'none'; ul1Node.style.transition = "none"; } // 设置定位 var translateX = function (ul1Node,x) { ul1Node.style.webkitTransform = 'translateX(' + x + 'px)'; ul1Node.style.transform = 'translateX(' + x + 'px)'; } </script>
相关文章推荐
- 1、js原生实现移动端手指滑动轮播图效果(2)
- 1、js原生实现移动端手指滑动轮播图效果
- js实现移动端手指左右上下滑动翻页效果
- 網頁設計% JS 移动端原生JS实现手指跟随触控滑动
- js原生实现移动端手指滑动轮播图效果的示例
- 移动端手指滑动实现轮播效果
- 原生JS实现移动端模块的左右滑动切换效果,基于vue、stylus
- 原生js实现图片层叠轮播切换效果
- js实现移动端轮播图效果
- 移动端touch事件---利用bootstrap实现轮播图手指左右滑动事件
- 利用原生js实现轮播图效果
- 原生js实现图片层叠轮播切换效果
- js实现移动端导航点击自动滑动效果
- 原生js和css实现图片轮播效果
- 原生js实现旋转木马轮播图效果
- 原生JS改变透明度实现轮播效果
- JS仿京东移动端手指拨动切换轮播图效果
- 原生js实现焦点轮播图效果
- 纯css,js原生,js原型,jquery四种方式实现轮播图效果
- 原生js实现移动端触摸轮播