移動(dòng)端虛擬鍵盤遮擋頁(yè)面輸入框等元素的解決方案

Element.scrolltoView()

Element.scrollIntoView() 方法讓當(dāng)前的元素滾動(dòng)到瀏覽器窗口的可視區(qū)域內(nèi)。

element.scrollIntoView(); // 等同于element.scrollIntoView(true) 
element.scrollIntoView(alignToTop); // Boolean型參數(shù) 
element.scrollIntoView(scrollIntoViewOptions); // Object型參數(shù)

參數(shù)

1、element.scrollIntoView(); 不顯示聲明任何參數(shù),則相當(dāng)于是element.scrollIntoView(true)
?
2、element.scrollIntoView(alignToTop);
Boolean類型參數(shù)
如果為 true,則元素的頂部將盡可能滾動(dòng)到與父元素可見區(qū)域頂部對(duì)齊的位置,這是默認(rèn)值。
如果為 false,則元素的底部將盡可能滾動(dòng)到與父元素可見區(qū)域底部對(duì)齊的位置
?
3、element.scrollIntoView(scrollIntoViewOptions);
Object類型參數(shù)
{
behavior: 'auto' | 'instant' | 'smooth',
block: 'start' | 'end'
}

behavior:定義了元素滾動(dòng)的行為,instant代表是立即滾動(dòng)元素,smooth代表動(dòng)畫性的平滑滾動(dòng),但大部分瀏覽器并不支持smooth這個(gè)屬性值,一般都是 instant。
block:定義了元素滾動(dòng)的方向,對(duì)應(yīng)Boolean類型參數(shù),如果設(shè)置了start值,則相當(dāng)于是設(shè)置了element.scrollIntoView(true),如果設(shè)置了end值,則相當(dāng)于是設(shè)置了element.scrollIntoView(false)

示例:

var element = document.getElementById("box");

element.scrollIntoView();
element.scrollIntoView(false);
element.scrollIntoView({block: "end"});
element.scrollIntoView({block: "end", behavior: "smooth"});

Element.scrollIntoViewIfNeeded()

Element.scrollIntoViewIfNeeded()方法用來(lái)將不在瀏覽器窗口的可見區(qū)域內(nèi)的元素滾動(dòng)到瀏覽器窗口的可見區(qū)域。 如果該元素已經(jīng)在瀏覽器窗口的可見區(qū)域內(nèi),則不會(huì)發(fā)生滾動(dòng)。 此方法是標(biāo)準(zhǔn)的Element.scrolltoView()方法的專有變體。

此API是非標(biāo)準(zhǔn)的方法,支持的瀏覽器也比較少,不過(guò)如果只是考慮移動(dòng)端的場(chǎng)景,那么完全是可以使用的

element.scrollIntoViewIfNeeded(); // 等同于element.scrollIntoViewIfNeeded(true) 
element.scrollIntoViewIfNeeded(true); 
element.scrollIntoViewIfNeeded(false);

參數(shù)

Element.scrollIntoViewIfNeeded(opt_center)

如果設(shè)置為 true,并且當(dāng)前元素在視窗的可見范圍內(nèi)不可見,元素將盡量滾動(dòng)到父元素可視區(qū)域的中部位置(垂直方向)
如果設(shè)置為 false,并且當(dāng)前元素在視窗的可見范圍內(nèi)不可見,元素將盡量滾動(dòng)到父元素可視區(qū)域距離最近的一邊,至于到底滾動(dòng)到父元素的頂部還是底部,取決于滾動(dòng)的子元素距離父元素的哪一邊比較近。

手機(jī)點(diǎn)擊輸入框時(shí),當(dāng)鍵盤彈起,界面上彈,鍵盤收起,界面下來(lái)

var wHeight = window.innerHeight;   //獲取初始可視窗口高度
window.addEventListener('resize', function(){       //監(jiān)測(cè)窗口大小的變化事件
    var hh = window.innerHeight;     //當(dāng)前可視窗口高度
    ar viewTop = $(window).scrollTop();   //可視窗口高度頂部距離網(wǎng)頁(yè)頂部的距離
    if(wHeight > hh){           //可以作為虛擬鍵盤彈出事件
        $(".content").animate({scrollTop:viewTop+100});    //調(diào)整可視頁(yè)面的位置
    }else{         //可以作為虛擬鍵盤關(guān)閉事件
        $("content").animate({scrollTop:viewTop-100});
    }
    wHeight = hh;
});

最后編輯于
?著作權(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),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,163評(píng)論 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,825評(píng)論 1 45
  • 大學(xué)時(shí),同宿舍六個(gè)人中最不能理解的就是呆子了。她在宿舍排行第二,為人固執(zhí)且倔強(qiáng),頗有種撞了南墻也不回頭的氣勢(shì),因此...
    妃子笑_拾月閱讀 6,625評(píng)論 285 224
  • 耐不住寂寞,就守不住繁華。 祝你的未來(lái)不是夢(mèng)!早安,3月! 01 養(yǎng)成一些好習(xí)慣 我堅(jiān)持5點(diǎn)起床,晨跑,記單詞,寫...
    6ad5b7598ebc閱讀 444評(píng)論 1 11
  • 2017-02-21 張小瓊 瓊追不舍 訂閱《通往財(cái)富自由之路》已經(jīng)半年又一個(gè)月,來(lái)做一次與自己的對(duì)話。從...
    張小瓊閱讀 179評(píng)論 0 0

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