造成這種問題的原因是body沒有復位,所以把body 復位就可以了。
解決思路:1、input獲取焦點的時候記住當前滾動的位置,2、input失去焦點的時候滾動到之前的位置。(親測有效)。
附vue 代碼,其他框架可以依據該思路修改。
PageScroll:0,// 位置 這個在data 裏面定義變量
inputLoseBlur() { setTimeout(() => { window.scrollTo(0, this.PageScroll); }, 100); }, inputLoseFocus() { this.PageScroll = this.GetPageScroll() }, GetPageScroll(){ var y; if (window.pageYOffset) { // all except IE y = window.pageYOffset; } else if (document.documentElement && document.documentElement.scrollTop) { // IE 6 Strict y = document.documentElement.scrollTop; } else if (document.body) { // all other IE y = document.body.scrollTop; } return y },
一共三個方法,第一個是失去焦點的時候滾動到之前位置,第二個是獲取焦點的時候將當前位置的數據賦值給變量,第三個是獲取當前位置。
<mt-field label="" placeholder="請輸入手機號碼" @focus.native.capture="inputLoseFocus" @blur.native.capture="inputLoseBlur" type="tel" v-model="loginMsg.mobile"></mt-field>
上面是使用方式。