當ios、input、fixed碰到一塊兒時

最近在作H5的項目,彈出框裏有input,測試在測兼容時候發現,input光標下移,偏移位置。只有 ios11 系統會出現這種狀況。 html

而後 github一下發現是 ios11 系統版本帶來的 Bug,緣由就是:彈框的定位採起 position:fixed,而 ios(safari) 對定位屬性 position:fixed的解析不一致致使。

因此我想到的解決方法就是:把 fixedabsolute替換掉。可是首頁過長,會致使彈出框定位到第一屏,當頁面滑到最下發,點擊登陸會致使看不到彈出框。
最終決定,當頁面滑到最下方,用戶點登陸時,使頁面回滾到最上方,而後在 body加個樣式 overflow:hidden;
代碼以下:

document.body.scrollTop = document.documentElement.scrollTop = 0;	
document.body.style.overflow = "hidden";
複製代碼

在關閉彈窗時候記得把body設置回來overflow:auto;喲~ios

document.body.style.overflow = "auto";
複製代碼

第二個問題就是在ios中輸入完第一個input,在去點第二個input框時候,會出現彈出框上來,要在拉一下才能回到原位。 git

最後的解決方式就是在 input失焦時候,自動回滾一下。代碼以下:
html:

<input v-model="pwdNum" type="password"  placeholder="請輸入交易密碼" class="input-form" autocomplete="new-password"/>
複製代碼

js:github

//失去焦點回正
changeCount(){
    window.scroll(0,0);
}
複製代碼

這就是我解決這兩個問題的方法,但願有遇到一樣問題的小夥伴,能夠幫助到你喲~bash

相關文章
相關標籤/搜索