关于 -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,大家可以去尝试看看

### 回答1: -webkit-overflow-scrolling: touch; 是一个CSS属性,用于在移动设备上实现平滑的滚动效果。它可以应用于具有滚动内容的元素,例如 div 或 iframe。当用户在移动设备上滚动该元素时,它将以流畅的方式滚动,而不是像默认滚动一样卡顿。 ### 回答2: -webkit-overflow-scrolling:touch;是一个CSS属性,用于移动设备的浏览器中控制页面滚动的行为。当一个页面在移动设备上被访问时,其内容有可能会超过设备屏幕的大小,此时就需要滚动来查看页面内容。但是,在移动设备上的滚动效果相较于在桌面电脑上的体验要差很多,因为它们通常会有卡顿、慢反应或跳跃等不良效果。这样的效果会影响用户的体验,因此必须要采用一些方法来改善这种情况。 -webkit-overflow-scrolling:touch;可以帮助我们实现流畅的滚动效果,消除卡顿、慢反应和跳跃等问题。这个属性是仅适用于 Webkit 内核的,因此在移动设备上使用较为广泛。它会在页面滚动时使用硬件加速来优化滚动性能,从而实现更加平滑、自然的滚动。 这个属性使用起来非常简单,只需要将它添加到滚动区域的 CSS 样式中即可。例如: #scrollable { height: 150px; -webkit-overflow-scrolling: touch; overflow-y: auto; } 在这个例子中,页面中的一个元素被定义为滚动区域。当使用触摸设备滚动时,-webkit-overflow-scrolling:touch;会生效,从而确保滚动平滑自然。 总之,-webkit-overflow-scrolling:touch;是一个非常有用的属性,它可以提高移动设备上页面滚动的性能和用户体验。无论是开发移动网站还是移动应用,我们都应该考虑使用这个属性来改善用户体验。 ### 回答3: -webkit-overflow-scrolling: touch;是一个CSS属性,用于在屏幕上启用流畅的滚动功能。它主要应用于移动设备上的网页浏览器。通过启用此属性,用户可以在触摸屏上轻松地使用手指来滚动页面,而不会出现卡顿或延迟的情况。 该属性只能在Webkit浏览器中使用,以确保兼容性。它适用于大多数常见的移动设备和平板电脑,包括iPhone, iPad, Android手机和平板电脑等。 此属性的主要目的是优化网页在移动设备上的用户体验。由于移动设备的屏幕尺寸通常较小,因此需要在较小的屏幕上显示更多的内容。通过使用此属性,用户可以轻松地滚动网页并捕捉所需要的内容,而无需缩放视图或调整字号。 此外,-webkit-overflow-scrolling: touch;还可用于增强应用程序的用户体验。例如,在移动应用程序中,可以使用此属性使用户可以轻松地滚动列表或其他元素。 总之,-webkit-overflow-scrolling: touch;是一种对网页和应用程序的特殊效果,可以在移动设备上改善用户体验。它通过启用流畅的滚动功能,让用户可以轻松地浏览内容,缩小了移动设备和桌面网页之间的差距。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值