解決華為手機用rem單位,內容超出屏幕寬度問題


在H5手機頁面上,用rem單位布局,配合js計算出一個根節點的font-size(原理是屏幕寬度乘以一個固定比例,如1/100),之后頁面中所有的px全都換算成了rem單位來寫,優點是能適配各種不同屏幕尺寸的手機,不需要寫媒體查詢!
例如:設計稿是640px,用js計算出來的根節點font-size是100px(證明此時屏幕寬度是640px),那最外層的容器寬度就寫成6.4rem(計算成像素也是640),正常情況下是內容寬度就會和屏幕寬度一樣。
然而某款華為手機、自帶的瀏覽器下,最外層的容器寬度就會比屏幕寬度要寬,橫向竟然可以滾動!

經過各種調試,找出了問題的根本,華為自帶瀏覽器上rem單位計算不准! 計算后的值比正確值大了。

然后開始想解決方案,當時想到了第一種方案,用css3把body整個縮小,比例就是華為瀏覽器上放大的比例,這樣界面上看起來就正常了
實驗過后發現這種方法可行,加班了半天、下班走人。但是隨之帶來了另外兩個問題:
1、縮小后body的高度也縮小了,但是頁面高度並沒有縮小,所以頁面底部會有一大片的空白區域。
2、使用css3的scale后,所有子元素的position:fixed全部失效,全部變成absolute了

so這個方案不行,第二天上班路上,突然靈機一動,想到了另一個方法:
1、計算出最外層容器是否大於屏幕寬度。2、如果大於、計算誤差的比例。3、直接重置根節點的font-size! 尼瑪完美解決!!

 

PS:注意:有時候其實沒有那么麻煩,只要把你寫的控制fontsize代碼放到頭部就好了,放在common.js里面有時候函數會不執行。


免責聲明!

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



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