點(diǎn)擊底部input輸入框,彈出的軟鍵盤擋住input(蘋果手機(jī)使用第三方輸入法 )

測(cè)試移動(dòng)端頁面的時(shí)候,偶然發(fā)現(xiàn)點(diǎn)擊底部input輸入框時(shí),彈出的虛擬鍵盤偶爾會(huì)擋住input輸入框。

輸入框固定在頁面底部,如圖所示:

input固定底部設(shè)計(jì)圖.png

點(diǎn)擊底部input輸入框喚起軟鍵盤時(shí),軟鍵盤擋住輸入框。如圖所示:


點(diǎn)擊input鍵盤擋住圖.png

測(cè)試過多臺(tái)真機(jī)發(fā)現(xiàn)安卓的手機(jī)都不會(huì)出現(xiàn)這個(gè)問題,個(gè)別的iOS手機(jī)有問題。而且同一型號(hào)的蘋果有的有問題有的沒有問題。經(jīng)過多方的歸納、總結(jié)驚奇的發(fā)現(xiàn):會(huì)出現(xiàn)這個(gè)bug的蘋果手機(jī),使用的都是蘋果第三方輸入法,而使用蘋果自帶的輸入法則沒有這個(gè)bug。

出現(xiàn)這個(gè)bug的時(shí)候輸入字符的時(shí)候,input輸入框又會(huì)滾動(dòng)上去。沿著這個(gè)思路往下想,我想到input獲取焦點(diǎn)失敗、滾動(dòng)瀏覽器窗口或容器元素的問題。

解決這個(gè)問題的思路是,點(diǎn)擊input輸入框的時(shí)候,讓其input滾動(dòng)到當(dāng)前div的頂部。于是我想到了Element.scrollIntoView() 方法。

DOM規(guī)范中并沒有規(guī)定各瀏覽器需要實(shí)現(xiàn)怎樣的滾動(dòng)頁面區(qū)域,各瀏覽器實(shí)現(xiàn)了相應(yīng)的方法,可以使用不同的方式控制頁面區(qū)域的滾動(dòng)。這些方法作為HTMLElement類型的擴(kuò)展存在,所以它能在所有元素上使用。

Element.scrollIntoView()語法:
<code>
element.scrollIntoView(); // Equivalent to element.scrollIntoView(true)
element.scrollIntoView(alignToTop); // Boolean arguments
element.scrollIntoView(scrollIntoViewOptions); // Object argument
</code>

參數(shù):alignToTop(可選)
<code>
Is a Boolean value:
If true, the top of the element will be aligned to the top of the visible area of the scrollable ancestor. This is the default value.( 如果alignToTop為true,該元素的頂部將對(duì)齊的滾動(dòng)的祖先的可見區(qū)域的頂部。這是默認(rèn)值。)
If false, the bottom of the element will be aligned to the bottom of the visible area of the scrollable ancestor.(如果alignToTop false, 該元素的底部將對(duì)齊的滾動(dòng)的祖先的可見區(qū)域的底部。)
</code>

點(diǎn)擊input底部輸入框,軟鍵盤擋住輸入框的解決辦法是,點(diǎn)擊輸入框的時(shí)候給input綁定事件,使用 Element.scrollIntoView()方法使元素彈到祖元素可見區(qū)域的頂部。代碼如下:
<code>
$("input").on("click", function() {
var target = this;
setTimeOut(function() {
target.scrollIntoView(true);
}, 100);
})
</code>

歡迎學(xué)習(xí)交流——陳林林

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容