關於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
- 關於css佈局、居中的問題以及一些小技巧CSS
- 關於流逝佈局作業7.0顯示問題詳解
- web移動佈局所需:remWebREM
- 關於REMREM
- CSS關於flex佈局CSSFlex
- rem佈局原理和優缺點REM
- Vue專案rem佈局設定VueREM
- 前端響應式佈局基礎——rem前端REM
- 移動端適配-Rem 佈局篇REM
- 關於flex佈局的應用Flex
- 基於媒體查詢和 rem 的響應式佈局實踐REM
- 關於響應式佈局,你必須要知道關於響應式佈局的幾件事
- 關於微信小程式佈局排列微信小程式
- 【iOS】關於 UICollectionView 的自定義佈局iOSUIView
- [筆記]關於blade佈局的使用筆記
- 保安日記:前端學習第十三篇之移動端佈局rem佈局前端REM
- 【佈局技巧】Flex 佈局下居中溢位滾動截斷問題Flex
- 如何利用vw+rem進行移動端佈局REM
- 移動端第十八章 rem適配佈局REM
- 移動端網頁固定佈局例項使用媒體查詢rem進行佈局。網頁REM
- 關於 Grid 佈局的那點事兒
- 快速學習掌握移動Web開釋出局總結(流式佈局+flex伸縮佈局+rem佈局+Boostrap框架 )(更新中)WebFlexREM框架
- dcat-admin card的chart佈局問題
- 利用vw+rem實現移動web適配佈局REMWeb
- 適配手機頁面佈局的動態rem方案REM
- 我的前端自學之路2020/12/31 rem適配佈局前端REM
- flex佈局,一行三列布局問題Flex
- 關於移動端rem的設定REM
- 關於this指向的問題
- 關於跨域問題跨域
- Flutter佈局之標題Flutter
- 2020-12-17 html、css面試題3: 水平垂直居中,左右固定中間自適應 三欄佈局,靜態佈局、自適應佈局、流式佈局、響應式佈局、彈性佈局,IE中常見的相容性問題,清空陣列的方法HTMLCSS面試題陣列
- Vue 引用阿里小圖示 移動端rem佈局 v-touch使用Vue阿里REM
- Android開發-掌握ConstraintLayout(一)傳統佈局的問題AndroidAI
- Android開發 - 掌握ConstraintLayout(一)傳統佈局的問題AndroidAI