web行動端fixed佈局和input等表單的愛恨情仇

WBOY
發布: 2016-09-11 11:19:53
原創
1261 人瀏覽過

【問題】移動端開發,ios下當fixed屬性和輸入框input(這裡不限於input,只要可以調用移動端輸入法的都包括,如:textarea、HTML5中contenteditable等),同時存在的時候;
兩位大俠瞬間發生劇烈的化學反應,出現各種奇葩問題,見下圖:

【結論】輸入框position屬性值不是fixed,而變成了absolute

【出現狀況】當我們喚起鍵盤的時候,輸入框位置不再頁面最下面,或者說頁面當時還可以繼續往下滾動,再或者頁面沒有滾動到最下邊,這個時候就會出現上面的問題

【學習失敗,在失敗中成長】,接下來我們開始,開啟戰鬥模式:

【解決想法】既然在ios下方由於軟鍵盤出現後,頁面fixed屬性會失效,導致跟隨頁面一起滾動,那麼假如頁面不會過長出現滾動,那麼即便fixed屬性失效,也無法跟隨頁面滾動,問題也就不復存在

如圖頁面分成兩個部分,上部分內容部分,下部分輸入框部分;兩部分都使用fixed屬性,使得頁面無法進行滾動,正好符合我們上面的思考,上面內容部分使用overflow:auto;直接支持在其內部進行滾動;

到此,由fixed和input的愛恨情仇,應被解決,上面遇到的問題也不再出現,但相應的也產生了其它問題

【新問題1】上邊內容部分滾動非常不流暢,滑動的手指鬆開後,滾動立即停止,失去了原本的流暢滾動特性(可以自己搜關於【彈性滾動】方面的資料進行了解)

【解決方法】使用-webkit-overflow-scrolling: touch;屬性解決問題,頁面滾動恢復流暢

【新問題2】在頁面滾動到上下邊緣的時候,如果繼續拖曳會將整個頁面一起拖曳走,導致頁面的"露底"的現象,如下圖:

同時,當我們進行內容滾動的時候,有時會滑動下部分,導致內容滾動停止,給用戶的體驗極其不舒服

【解決方法】設定頁面overflow:hidden;(也就是body標籤),問題到此,得到完美解決

 

【注!注!注! 】下面總結一下其它一些細節問題

1. overflow:scroll/auto;本身帶有的兼容性,如:一些Android系統不支援此屬性,所以需要我們使用isScroll.js第三方插件,實現頁面內部滾動

2. 在ios下使用第三方輸入法時,輸入法被喚醒的時候,會出現輸入框被遮蓋住,這個暫時沒有找到解決答案,先挖個坑,埋起來

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板