IOS中select、input失焦后,页面上移,点击不了解决办法

$(function () {
        var u = navigator.userAgent;
        var flag;
        var myFunction;
        var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
        if (isIOS) {
            document.body.addEventListener('focusin', () => {  //软键盘弹起事件
                flag = true;
            clearTimeout(myFunction);
        })
            document.body.addEventListener('focusout', () => { //软键盘关闭事件
                flag = false;
            if (!flag) {
                myFunction = setTimeout(function () {
                    window.scrollTo({ top: 0, left: 0, behavior: "smooth" })//重点  =======当键盘收起的时候让页面回到原始位置(这里的top可以根据你们个人的需求改变,并不一定要回到页面顶部)
                }, 200);
            } else {
                return
            }
        })
        } else {
            return
        }

    });
 

1.input输入框聚焦问题

-webkit-user-select:auto; /*webkit浏览器*/
user-select:auto;
-o-user-select:auto;
-ms-user-select:auto;

2.滚动行为卡顿问题

overflow: auto;
-webkit-overflow-scrolling: touch;
overflow-y: scroll;

解析:

-webkit-overflow-scrolling: touch;,启用了硬件加速特性,所以滑动很流畅。可以解决ios5.0、android4.0以后系统的滑动卡顿问题。

-webkit-overflow-scrolling: auto  |  touch;

auto: 普通滚动,当手指从触摸屏上移开,滚动立即停止

touch:滚动回弹效果,当手指从触摸屏上移开,内容会保持一段时间的滚动效果,继续滚动的速度和持续的时间和滚动手势的强烈程度成正比。同时也会创建一个新的堆栈上下文。

兼容写法
over-flow: auto;     /* winphone8和android4+ */
-webkit-overflow-scrolling: touch;    /* ios5+ */
ps:

1、如果添加了此属性但是不起作用,再添加overflow-y: scroll,就可以了。

2、当一个元素设置过position: absolute|relative,后再增加-webkit-overflow-scrolling: touch;属性后,会发现,滑动几次后就滚动区域会卡住,不能在滑动,这时给元素增加个z-index值就可以了。

webkit-overflow-scrolling: touch;
position:absolute;
z-index:1;

你可能感兴趣的:(基础知识)