移动端——滑屏原理分析—上下滑屏不过界

本文介绍了一个简单的HTML滑屏示例,通过触摸事件实现上下滑动效果,并确保滑动不超出预设边界。代码中详细展示了如何使用JavaScript监听touchstart和touchmove事件来控制滑动层的位置。
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <meta name="viewport" content="width=device-width,user-scalable=no" />
        <style>
            html{
                height: 100%;
            }
            body{
                margin: 0;
                height: 100%;
                position: relative;
                overflow: hidden;
            }
            #wrap{
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;

            }
            #scroll{
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
            }
        </style>
        <script>
            window.onload=function(){
                var wrap=document.querySelector('#wrap');
                var scroll=document.querySelector('#scroll');
                var startPoint=0;//用于储存手指按下的坐标
                var startElement=0;//用于储存手指按下时元素距离定位父级的距离
                var maxTop=wrap.clientHeight-scroll.offsetHeight;//负值  包裹层的可视层高度-滚动层的占位高度=最大的可移动距离

                wrap.addEventListener('touchstart',function(e){
                    var touch = e.changedTouches[0];
                    startPoint = touch.pageY; //记录手指按下时手指在页面的位置
                    startElementTop = scroll.offsetTop;//当前元素距离包裹层的TOP值
                });

                wrap.addEventListener('touchmove',function(e){
                    var touch = e.changedTouches[0];
                    var nowPoint = touch.pageY;//记录移动后手指的在页面中的位置
                    var distance = nowPoint-startPoint;//记录move的移动距离
                    var top=startElementTop+distance;//滚动层当前的top值

                    if(top>0){//手指向下↓移动 
                        top=0;
                    }
                    if(top<maxTop){//手指向上↑移动 ,到最低部
                        top=maxTop;
                    }
                    scroll.style.top=top+'px';//滚动层当前的top值=手指按下时的TOP值+手指的移动距离
                });
            }
        </script>
    </head>
    <body>
        <div id="wrap">
            <div id="scroll">
                top为0<br />
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                滑屏原理分析——上下不能拉过界<br>
                top为MaxTop<br />
            </div>
        </div>
    </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值