zoukankan      html  css  js  c++  java
  • 模仿头条导航的左右滚动效果

    用jquery模仿头条导航的滚动效果

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
        <title></title>
        <script src="jquery.js"></script>
        <style>
            .scroll{
                2000px;
                height:100px;
                display: flex;
                flex-direction: row;
                border:1px solid gray;
                position: fixed;
                top: 0;
                left:0;
            }
            .flex-item{
                flex: 14;
                border-right: 1px solid gray;
                line-height: 100px;
                text-align: center;
            }
        </style>
    </head>
    <body>
    
    <div class="scroll">
        <div class="flex-item">推荐</div>
        <div class="flex-item">热点</div>
        <div class="flex-item">视频</div>
        <div class="flex-item">济南</div>
        <div class="flex-item">社会</div>
        <div class="flex-item">头条</div>
        <div class="flex-item">问答</div>
        <div class="flex-item">图片</div>
        <div class="flex-item">娱乐</div>
        <div class="flex-item">科技</div>
        <div class="flex-item">汽车</div>
        <div class="flex-item">体育</div>
        <div class="flex-item">财经</div>
        <div class="flex-item">军事</div>
    </div>
    
    <script>
        var startX=0;
        var startY=0;
        var enX=0;
        var screenWidth=$(window).width();
        var elementWidth=$(".scroll").width();
        var lei=0;
        var flag=false;
        var flag1=false;
    
        var leijia=0;
        $('body').bind('touchstart',function(e){
            startX = e.originalEvent.changedTouches[0].pageX,
                    startY = e.originalEvent.changedTouches[0].pageY;
    
        });
        $('body').bind('touchend',function(e){
            enX = e.originalEvent.changedTouches[0].pageX
                console.log("离开屏幕*********"+enX)
            lei=enX-startX;
            leijia=leijia+lei;
    
        });
        $('body').bind('touchmove',function(e){
            //获取滑动屏幕时的X,Y
    
            endX = e.originalEvent.changedTouches[0].pageX,
                    endY = e.originalEvent.changedTouches[0].pageY;
            //获取滑动距离
            distanceX = endX-startX;
            distanceY = endY-startY;
            //判断滑动方向
            if(Math.abs(distanceX)>Math.abs(distanceY) && distanceX>0){
                console.log('往右滑动');
                if(flag){
                    leijia=-(elementWidth-screenWidth);
                    flag=false;
                }
                var offsetop=$(".scroll").offset().left;
                if(offsetop<0){
                    $(".scroll").css({'left':leijia+distanceX});
                }else{
                    $(".scroll").css({'left':0});
                    leijia=0;
                    flag1=true;
                }
            }else if(Math.abs(distanceX)>Math.abs(distanceY) && distanceX<0){
                console.log('往左滑动'+"*********"+leijia);
                if(flag1){
                    leijia=0;
                    flag1=false;
                }
                var offsetop=$(".scroll").offset().left;
                if(offsetop>-(elementWidth-screenWidth)){
                    $(".scroll").css({'left':leijia+distanceX});
                }else{
                    $(".scroll").css({'left':-(elementWidth-screenWidth)});
                    leijia=-(elementWidth-screenWidth);
                    flag=true;
                }
                console.log("offsetTop********************"+$(".scroll").offset().left)
            }else if(Math.abs(distanceX)<Math.abs(distanceY) && distanceY<0){
                console.log('往上滑动');
            }else if(Math.abs(distanceX)<Math.abs(distanceY) && distanceY>0){
                console.log('往下滑动');
            }else{
                console.log('点击未滑动');
            }
    
        });
        
    </script>
    </body>
    </html>
    

      

    请爱好前端技术的朋友,联系我,有问题大家一起讨论
  • 相关阅读:
    Vue 封装axios(四种请求)及相关介绍
    简单的按钮样式,两个连在一起的按钮
    http接口访问正常,https访问报错,基础连接已经关闭: 发送时发生错误.
    单点登录思路,多台服务器共用一个数据库,登录信息解决方案
    Wait()在过滤器中卡住 ,在异步代码上阻塞时的常见死锁问题
    接口对接,接口通过原有代码无法访问,解决办法,用postman解决
    svg基础标签说明
    server 2016部署网络负载平衡(NLB)
    写 JS 逻辑判断,不要只知道用 if-else 和 switch
    .NetCore部署IIS出错原因未安装ASP.N.NetCore部署IIS出错原因未安装ASP.NET Core Module v2ET Core Module v2
  • 原文地址:https://www.cnblogs.com/liuhao-web/p/6378786.html
Copyright © 2011-2022 走看看