美文网首页
h5无缝滚动

h5无缝滚动

作者: 嘬烟盒的程序员 | 来源:发表于2017-01-05 22:54 被阅读0次
    <!DOCTYPE html>
    
    <html>
    
    <head>
    
    <meta charset="utf-8">
    
    <meta name="viewport"
    
    content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    
    <title>h5无缝滚动</title>
    
    <style>
    
    *{
    
    margin:0;
    
    padding:0;
    
    list-style: none;
    
    }
    
    #box{
    
    width:16rem;
    
    height: 7.5rem;
    
    overflow: hidden;
    
    position: relative;
    
    maring:0 auto;
    
    }
    
    #box ul{
    
    width:96rem;
    
    height: 7.5rem;
    
    transform: translateX(-16rem);
    
    }
    
    #box ul li{
    
    width:16rem;
    
    height:7.5rem;
    
    float: left;
    
    font-size:2rem;
    
    color: #fff;
    
    line-height: 7.5rem;
    
    text-align: center;
    
    }
    
    </style>
    
    <script>
    
    (function(win,doc){
    
    function change(){
    
    doc.documentElement.style.fontSize = doc.documentElement.clientWidth*20/320 +'px';
    
    }
    
    change();
    
    win.addEventListener('resize',change,false);
    
    })(window,document);
    
    </script>
    
    <script>
    
    document.addEventListener('DOMContentLoaded',function(){
    
    var oBox = document.getElementById('box');
    
    var oUl = document.querySelector('#box ul');
    
    var aLi = oUl.children;
    
    var iNow = 1;
    
    var x = -iNow*aLi[0].offsetWidth;
    
    var bReady = true;
    
    oUl.addEventListener('touchstart',function(ev){
    
    if(bReady==false){return;}
    
    bReady = false;
    
    oUl.style.transition = 'none';
    
    var disX = ev.targetTouches[0].pageX - x;
    
    var downX = ev.targetTouches[0].pageX;
    
    function fnMove(ev){
    
    x = ev.targetTouches[0].pageX - disX;
    
    oUl.style.transform = 'translateX('+x+'px)';
    
    }
    
    function fnEnd(ev){
    
    var upX = ev.changedTouches[0].pageX;
    
    //判断是否移动距离大于50
    
    if(Math.abs(upX - downX)>50){
    
    //左边移动
    
    if(upX - downX<0){
    
    iNow++;
    
    if(iNow==aLi.length){iNow=aLi.length-1;}
    
    }else{
    
    //右边移动
    
    iNow--;
    
    if(iNow==-1){iNow=0;}
    
    }
    
    }
    
    x = -iNow*aLi[0].offsetWidth;
    
    oUl.style.transform = 'translateX('+x+'px)';
    
    oUl.style.transition = '200ms all ease';
    
    function tEnd(){
    
    if(iNow==5){
    
    iNow=1;
    
    }
    
    if(iNow==0){iNow=4;}
    
    oUl.style.transition = 'none'
    
    x = -iNow*aLi[0].offsetWidth;
    
    oUl.style.transform = 'translateX('+x+'px)';
    
    bReady = true;
    
    }
    
    oUl.addEventListener('transitionend',tEnd,false);
    
    document.removeEventListener('touchend',fnEnd,false);
    
    document.removeEventListener('touchmove',fnMove,false);
    
    }
    
    document.addEventListener('touchmove',fnMove,false);
    
    document.addEventListener('touchend',fnEnd,false);
    
    ev.preventDefault();
    
    },false);
    
    },false);
    
    </script>
    
    </head>
    
    <body>
    
    <div id="box">
    
    <ul>
    
    <li style ="background:green">3</li>
    
    <li style="background: red;">0</li>
    
    <li style="background: yellow;">1</li>
    
    <li style="background: blue;">2</li>
    
    <li style ="background:green">3</li>
    
    <li style="background: red;">0</li>
    
    </ul>
    
    </div>
    
    </body>
    
    </html>
    

    相关文章

      网友评论

          本文标题:h5无缝滚动

          本文链接:https://www.haomeiwen.com/subject/vvctbttx.html