2020-11-19 移动端兼容问题汇总

一下是自己做移动端遇到的问题以及在网上搜集整理的常见问题,自己做个记录,方便以后查看。

1.移动端click事件300ms的延迟相应

    移动设备上的web网页是有300ms延迟的,往往会造成按钮点击延迟甚至是点击失效。

      这是由于区分单机事件和双击屏幕缩放的历史原因造成的。

      解决方式:

fastclick可以解决在手机上点击事件的300ms延迟

zepto的touch模块,tap事件也是为了解决在click的延迟问题

触摸屏的相应顺序为touchstart-->touchmove-->touchend-->click,也可以通过绑定ontouchstart事件,加快事件的响应,解决300ms的延迟问题

2.    一些情况下对非可点击元素(label,span)监听click事件,iso下不会触发,css增加cursor:pointer就搞定了。

3.h5底部输入框被键盘遮挡问题

      h5页面有个很蛋疼的问题就是,当输入框在最底部,点击软键盘后输入框会被遮挡。可采用如下方式解决

  var oHeight = $(document).height(); //浏览器当前的高度

$(window).resize(function(){

      if($(document).height() < oHeight){

                  $("#footer").css("position","static");

            }else{

                $("#footer").css("position","absolute");

            }

      });

4.CSS动画页面闪白,动画卡顿

-webkit-user-select:none

解决方法:

    1.尽可能地使用合成属性transform和opacity来设计CSS3动画,不使用position的left和top来定位

     2.开启硬件加速

-webkit-transform: translate3d(0, 0, 0);

-moz-transform: translate3d(0, 0, 0);

-ms-transform: translate3d(0, 0, 0);

transform: translate3d(0, 0, 0);

5.fixed定位缺陷

ios下fixed元素容易定位出错,软键盘弹出时,影响fixed元素定位

android下fixed表现要比iOS更好,软键盘弹出时,不会影响fixed元素定位

ios4下不支持position:fixed

6.上下拉滚动条卡顿: overflow-scrolling: touch;

7. 禁止复制选中文本: user-select: none;

8. 横平时字体加粗不一致: text-size-adjust: 100%;

9.1px边框问题

#ele:before{

content:'';

position: absolute;

top: 0;

left: 0;

border: 1px solid #ccc;

width: 200%;

height: 200%;

box-sizing:border-box;

-webkit-box-sizing:border-box;

-webkit-transform: scale(0.5);

transform: scale(0.5);

-webkit-transform-origin: left top;

transform-origin: left top;

}

10.IOS系统调用第三方输入法时,系统无法监测到input的input、focus、change、blur事件

解决办法:计算input值的length的长度,判断input的值是否变化

11.ios滑动不流畅

在 iOS 5.0 以及之后的版本,滑动有定义有两个值 auto 和 touch,默认值为 auto。

-webkit-overflow-scrolling: touch; /* 当手指从触摸屏上移开,会保持一段时间的滚动 */-webkit-overflow-scrolling: auto; /* 当手指从触摸屏上移开,滚动会立即停止 */

解决方法:

     1.在滚动容器上增加滚动 touch 方法

将-webkit-overflow-scrolling 值设置为 touch

.wrapper {

    -webkit-overflow-scrolling: touch;

}

设置滚动条隐藏: .container ::-webkit-scrollbar {display: none;}

可能会导致使用position:fixed; 固定定位的元素,随着页面一起滚动

       2.设置外部 overflow 为 hidden,设置内容元素 overflow 为 auto。内部元素超出 body 即产生滚动,超出的部分 body 隐藏。

body {

    overflow-y: hidden;

}

.wrapper {

    overflow-y: auto;

}

两者结合使用更佳!

12.ios上拉下拉边界出现白的空白

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

 解决方案:

       监听事件禁止滑动

        移动端触摸事件有三个,分别定义为

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

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

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

document.body.addEventListener('touchmove',function(e){if(e._isScroller)return;// 阻止默认事件e.preventDefault();},{passive: false});

你可能感兴趣的:(2020-11-19 移动端兼容问题汇总)