關於rem佈局問題
這個js檔案來設定根元素的font-size,從而換算之後在頁面中rem佈局。這次我做h5活動頁,還是那個安卓下喚起軟鍵盤整個頁面變小問題,關於這個問題我們不能按照原先的佈局一直這樣下去。所以我抽時間查詢了一下這個問題。如下:
1、先看我們的程式碼:程式碼中alert出獲取寬度的方法名:根元素的font-size;
下面看下在iOS和安卓下的對比:
iOS:
(1)剛渲染頁面彈出:
(2)點選輸入框喚起軟鍵盤:頁面沒有任何變化,沒有彈出alert;
安卓:
(1)、剛渲染頁面彈出:
(2)、點選輸入框彈出
(3)、點選以上確定後頁面變小並再次彈出,此時font-size=(2)中39.6px;
原因:Android軟鍵盤的顯示原理
軟鍵盤其實是一個Dialog
InputMethodService為我們的輸入法建立了一個Dialog,並且對某些引數進行了設定,使之能夠在底部或者全屏顯示。當我們點選輸入框時,系統會對當前的主視窗進行調整,以便留出相應的空間來顯示該Dialog在底部,或者全屏。
相關看下原理解析:傳送門
所以,由於軟鍵盤造成主視窗的調整,clientWidth再次獲取會變化;
具體涉及獲取寬高度的看圖,定義感覺很模糊:
解決問題(兩種思路):
1、修改獲取方式:
A、改用offsetWidth/offsetHeight:(節省空間就不附圖了)
iOS:
(1)剛渲染頁面彈出:offsetWidth:55.2px;
(2)擊輸入框喚起軟鍵盤:頁面沒有任何變化,沒有彈出alert;
安卓:
(1)剛渲染頁面彈出:offsetWidth:48px;
(2)點選輸入框彈出:offsetWidth:48px;
(3)點選以上確定後頁面變小並再次彈出:offsetWidth:48px;
這種方式可以在安卓點選輸入框時不改變頁面大小;
B、用getBoundingClientRect.width、getBoundingClientRect.height獲取同樣可以達到不改變頁面大小問題;只是此方法有相容問題。
2、考慮安卓在喚起軟鍵盤的時候禁止預設行為,目前沒有實現;
總結:
以後我們在引入此外掛時需要修改clientWidth、clientHeight為offsetWidth、offsetHeight;我也找了下用offsetHeight的影響,如:計算offsetWidth與offsetHeight 屬性,獲取元素在視窗中的位置會導致頁面的迴流影響效能,還有就是換了offsetWidth之後對其他功能的頁面的影響。
我們在這個檔案中做一層安卓的判斷,為了不影響之前,另起一個檔案運用並測試;
相關文章
- 關於佈局以及rem的小結REM
- rem佈局REM
- rem佈局解析REM
- rem 適配佈局REM
- rem自適應佈局REM
- rem響應式佈局REM
- 關於css佈局、居中的問題以及一些小技巧CSS
- 關於流逝佈局作業7.0顯示問題詳解
- web移動佈局所需:remWebREM
- rem佈局和hotcss原理分析REMCSS
- 關於C++物件的成員變數的佈局問題C++物件變數
- CSS關於flex佈局CSSFlex
- rem佈局原理和優缺點REM
- Vue專案rem佈局設定VueREM
- 關於REMREM
- 關於聖盃佈局和雙飛翼佈局
- 移動端適配-Rem 佈局篇REM
- 前端響應式佈局基礎——rem前端REM
- 使用rem進行移動端佈局REM
- 使用 REM 進行佈局和適配.REM
- 關於flex佈局的應用Flex
- 關於微信小程式佈局排列微信小程式
- 基於媒體查詢和 rem 的響應式佈局實踐REM
- 關於響應式佈局,你必須要知道關於響應式佈局的幾件事
- rem在響應式佈局中的應用REM
- AndroidUI佈局問題總結AndroidUI
- 【iOS】關於 UICollectionView 的自定義佈局iOSUIView
- android 相對佈局,程式碼建立imageview,佈局居中問題AndroidView
- 保安日記:前端學習第十三篇之移動端佈局rem佈局前端REM
- 移動端第十八章 rem適配佈局REM
- 如何利用vw+rem進行移動端佈局REM
- 移動開發,Webapp 淘寶手機 rem 佈局移動開發WebAPPREM
- 移動端自適應佈局的最好工具-remREM
- 【佈局技巧】Flex 佈局下居中溢位滾動截斷問題Flex
- 移動端網頁固定佈局例項使用媒體查詢rem進行佈局。網頁REM
- CSS 佈局經典問題初步整理CSS
- self.view.frame的佈局問題View
- 一個窗體佈局的問題