关于 -webkit-overflow-scrolling:touch 的小bug

最近在写页面时遇到一个页面长度刚刚超过手机高度一点,所以页面这时是可以上下滑动的,在安卓手机上滑动很流畅,但是在苹果手机上下滑动时会出现卡顿回弹等现象导致不流畅;故我给body加了body{ -webkit-overflow-scrolling:touch; } 此时苹果手机滑动也流畅了,但是带来一个bug,页面中我有一处弹窗,弹窗的高度是刚好100%的,而且弹窗出现底部内容是不能滑动的,在没给body加之前是正常的,但是加了后苹果手机弹窗的高度并没有100%全屏,大约是70%左右而且位置错乱了并且底部内容可以滑动;解决办法我用srollTop()和bind()结合,当点击弹窗按钮时先拿到当前页面body的scrollTop(),然后赋值给弹窗盒子的top 如下:

<!DOCTYPE html>

<html lang="en">

<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 name="apple-mobile-web-app-capable" content="yes" />

<meta name="apple-mobile-web-app-status-bar-style" content="black" /><title>叫我小潘哥</title>

<link rel="stylesheet" type="text/css" href="css/reset.css" />

<script type="text/javascript" src="js/jquery-1.9.1.min.js">

</script>

<style type="text/css">

html,body{width: 100%;height: auto;overflow-x: hidden;}

body{ -webkit-overflow-scrolling:touch; }

.box{width: 100%;height: auto;background: pink;}

.div1{width:80%;height:230px;margin-left:10%;margin-bottom: 3%;background:orange;} button{width:80%;height:50px;background:yellow;} .box2{width:100%;height:100%;background:rgba(0,0,0,0.6);overflow: hidden;position: absolute;left:0%;top:0%;z-index: 100;}

.box2-1{width:100%;height:100%;overflow: hidden;position: relative;} .tick{width:80%;height:30%;background:#fff;border-radius: 5px;position: absolute;;left:50%;-webkit-transform: translateX(-50%);top:30%;font-size: 25px;text-align: center;color:#f40;padding-top:7%;box-sizing: border-box;} #btn2{font-size: 25px;padding:3%;margin-top:10%;margin-left:0%;color:#f40;background:yellow;}

.hide{display:none;}

</style>

</head>

<body>

<div class="box">

<div class="div1"></div>

<div class="div1"></div>

<div class="div1">

<button id="btn">点击打开弹窗</button>

</div>

</div>

<div class="box2 hide"> <div class="box2-1"> <p class="tick"> 感谢关注!! <button id='btn2'>点击关闭弹窗</button> </p> </div>

</div>

<script type="text/javascript">

$(function(){

var ST;

$("#btn").click(function(event) {

$('body').bind("touchmove",function(e){e.preventDefault();});

ST = $("body").scrollTop()

alert(ST)

$(".box2").removeClass('hide').css('top', ST); });

$("#btn2").click(function(event) { $(".box2").addClass('hide')

$("body").unbind("touchmove");

});

})

</script>

</body>

</html>

之前遇到过页面用了position:fixed;也导致苹果手机滑动不流畅问题也是加了-webkit-overflow-scrolling:touch后流畅性好了很多,但是网上也还有关于这个属性带来的小bug,大家可以去尝试看看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值