input聚焦時,滾動至可視區域

這裏的代碼來自vux,以爲vux處理得很好,在此記錄一下。
當咱們在手機上填表單的時候,咱們會但願正在填的input或者textarea會自動滾動至可視區域,方便咱們邊填寫邊查看內容。之前個人作法是,獲取元素,而後手動設置它距離頂部的高度,這種方法可行,但顯得麻煩而笨重。查看了一下vux的源碼,發現有一個直接的方法就能夠作到這種效果,就是scrollIntoViewIfNeeded,這裏分享一下它的寫法。ios

mounted () {
    window.addEventListener('resize', this.scrollIntoView)
},
methods: {
    // 鍵盤彈出,頁面重繪,將得到焦點的元素滾動至可視區域內
    scrollIntoView (time = 0) {
      // ios自帶調整,因此無論
      if (/iphone/i.test(navigator.userAgent)) {
        // return
      }
      if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') {
        setTimeout(() => {
          document.activeElement.scrollIntoViewIfNeeded(true)
        }, time)
      }
    },
}

簡單明瞭,這裏就不作解釋了,咱們只需知道scrollIntoViewIfNeeded Api的做用,https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollIntoViewIfNeeded,這是它的官方網址。
另外,建議將此方法封裝至mixins裏面,這樣在所需的頁面直接引入便可。iphone

相關文章
相關標籤/搜索