zoukankan      html  css  js  c++  java
  • 移动端页面顶部滑动实现菜单的弹出与隐藏

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title></title>
        <style>
            .outer-scroll {
                position: relative;
            }
            .top-box {
                width: 100%;
                background: #666;
                display: none;
                padding: 10px;
            }
            .scroll-box {
                width: 100%;
                height: 1000px;
                top: 0;
                background: #ccc;
                position: absolute;
                padding: 10px;
            }
        </style>
    </head>
    <body>
        <div class="outer-scroll">
            <div class="top-box">
                <h4>This is top menu</h4>
                <h4>It will be show after touch down</h4>
                <h4>It will be hidden after touch up</h4>
            </div>
            <div class="scroll-box">
                <h1>page layout</h1>
                <h1>page layout</h1>
                <h1>page layout</h1>
                <h1>page layout</h1>
            </div>
        </div>
        <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
        <script>
            let scroll = document.querySelector('.scroll-box');
            let outer_scroll = document.querySelector('.outer-scroll');
            let topbox = document.querySelector('.top-box');
            let topboxHeight;
            let touchStart;
            let touchDis;
            // 注意如果绑定触摸时的事件则会在下拉时从手指的下拉位置开始下拉 该事件在手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。
            scroll.ontouchstart = function (event) {
                touchStart = 0;
                touchDis = 0;
                // 说明:由于手指头是多点触摸到屏幕上的我们所以e.originalEvent.targetTouches的
                // 意思是一个手指触碰点集合我们只需要获取第一个点就可以了所以
                touchStart = event.targetTouches[0].pageY;
    
            };
            // 当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件可以阻止滚动。
            scroll.ontouchmove = function (event) {
                // 顶部上下拖拽
                let touchPos = event.targetTouches[0].pageY;
                touchDis = touchPos - touchStart;
                if (document.documentElement.scrollTop == 0 && touchDis > 0) {
                    topbox.style.display = 'block';
                }
                if (!topboxHeight) {
                    topboxHeight = topbox.offsetHeight;
                }
                if (touchDis >= 0) {
                    $(scroll).stop().animate({top: topboxHeight}, 'fast');
                } else {
                    if (topbox.style.display == 'block') {
                        $(scroll).stop().animate({top: '0'}, 'fast');
                        event.preventDefault();
                    }
                }
            };
        </script>
    </body>
    </html>
  • 相关阅读:
    setup命令开机启动服务配置
    setup命令网卡配置
    ARM架构与ARM内核
    菁华开示目录
    末法时代选修净土法门可得解脱
    净宗之声 | 向知识分子介绍净土法门(文声对照)
    1217. 无量寿经颂序
    150.2 重刻安士全书序二
    往生典范|黄忠昌往生记实+西方发愿文+止语的好处等
    深度揭秘|邪淫、艳遇背后的真相(影音+图文)
  • 原文地址:https://www.cnblogs.com/bagexiaowenti/p/10841947.html
Copyright © 2011-2022 走看看