英豪教育老师直接接听

400-029-09** 400-029-0997 转 15093
查看完整号码
扫码拨号
微信扫码拨号

学习H5前端开发一般会遇到哪些问题?

2023/5/11 9:33:19

网页设计培训

资深H5前端开发讲师教你如何解决iOS上拉边界下拉出现白色空白的问题。

 

iOS上拉边界下拉出现白色空白:

手指按住屏幕下拉,屏幕顶部会多出一块白色区域。手指按住屏幕上拉,底部多出一块白色区域。

iOS上拉边界下拉出现白色空白产生原因:

在iOS中,手指按住屏幕上下拖动,会触发touchmove事件。这个事件触发的对象是整个 webview容器,容器自然会被拖动,剩下的部分会成空白。

iOS上拉边界下拉出现白色空白产生解决方案

1. 监听事件禁止滑动,移动端触摸事件有三个,分别定义为

touchstart:手指放在一个DOM元素上。

touchmove:手指拖曳一个DOM元素。

touchend:手指从一个DOM元素上移开。

显然我们需要控制的是touchmove事件,W3C文档有这样一段话

Note that the rate at which the user agent sends touchmove events is implementation-defined, and may depend on hardware capabilities and other implementation details.

If the preventDefault method is called on the first touchmove event of an active touch point, it should prevent any default action caused by any touchmove event associated with the same active touch point, such as scrolling.

touchmove事件的速度是可以实现定义的,取决于硬件性能和其他实现细节

preventDefault方法,阻止同一触点上所有默认行为,比如滚动。

由此我们找到解决方案,通过监听 touchmove,让需要滑动的地方滑动,不需要滑动的地方禁止滑动。

值得注意的是我们要过滤掉具有滚动容器的元素。

实现如下:

document.body.addEventListener('touchmove', function(e) {

    if(e._isScroller) return;

    // 阻止默认事件

    e.preventDefault();

}, {

    passive: false

});

2. 滚动妥协填充空白,装饰成其他功能

在很多时候,我们可以不去解决这个问题,换一直思路。根据场景,我们可以将下拉作为一个功能性的操作

添加微信咨询
杨老师 @苏州英豪教育

苏州英豪教育 官方咨询微信

微信号:fei******22

立即咨询

“苏州英豪教育”是苏州术业培训管理有限公司在教育宝平台开设的店铺,若该店铺内信息涉嫌虚假或违法,请点击这里向教育宝反馈,我们将及时进行处理。

机构评分

环境:4.5师资:5.0服务:4.5效果:4.5

公示信息

店铺名称:苏州英豪教育

单位名称:苏州术业培训管理有限公司

账号名称:szyhjy(152******29)

所属城市:江苏苏州

入驻时长:16年

在线客服:在线聊

微信咨询

返回顶部