ios設備觸發虛擬鍵盤輸入后position:fixed 無效的一些簡單另類的解決方法


首先看一下我要解決的問題,第一張圖是正常的情況下,第二張圖是點擊了輸入框之后的情況,就是要解決此問題~!

百度了一下解決方法,好像有以下的一些方法:

1. iscroll

2. Jquery Mobile

3. 監聽屏幕滾動事件給 #footer 賦值 

由於本人新手,第1,2種的方法就沒學過,所以暫時不用這2方法,來看第三種:監聽屏幕滾動事件給 #footer 賦值

1. 首先設置 #footer 的 position 的值為 absolute

2. 然后用$(window).scroll() 來監聽,再給 #footer 設置坐標( top 屬性)

不過這方法我感覺有點不好,就是ios設備在拖動屏幕的時候,頁面DOM的操作會被掛起,就是說你手指滾動屏幕的時候頁面會定死,當你的手指離開了屏幕后,dom的操作才執行。所以我也不用這種方式了。。

下面說下我用的另類方式,

1.  監聽input輸入框獲取焦點事件 $().focus()

2.  把屏幕滾動到底部 $window  scroll to bottom

3.  把 #footer 的 position 屬性設置成 static (或者absolute)

這樣 #footer 就會定位到最底部(但不是固定) 為什么我要這么做呢? 因為呢,移動設備彈出虛擬鍵盤的時候,頁面可見的地方已經很少了,一般情況在輸入的狀態下是不會拖動屏幕的了,所以就采用這種方式。

4.  監聽 input 失去焦點事件 $().blur()

5.  然后把 #footer 的 position 屬性設置成 fixed。 

這樣就好了。。。。

總結來說就是觸發虛擬鍵盤的時候把position屬性改成static/absolute, 虛擬鍵盤消失的時候再把 position 屬性改回 fixed........

function sb_blur(){ $('#order_summary').css({ "position":"fiexd", "bottom":"0" }) } function sb_focus(){ $(window).scrollTop(0); $('#order_summary').css({ "position":"relative" }) } 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM