微信H5兼容iPhoneX

問題拋出,主要是由於iphoneX屏幕的齊劉海和底部滑條帶來的一些操做問題。css


 

解決方案一(不針對微信H5或者手QH5)html

1.iPhoneX的適配,在iOS 11中採用了viewport-fit的meta標籤做爲適配方案;viewport-fit的默認值是auto。git

<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">

關於 viewport-fit

1.viewport-fit 有三個可選值:github

  • contain: 最初的佈局視窗和視覺佈局視窗被設置爲最大的矩形。在Viewport以外的UA繪製的是未定義的,它多是畫布的背景色,或者UA認爲合適的其餘東西;
  • cover:  初始佈局視窗和視覺佈局視窗被設置爲設備物理屏幕的限定矩形;
  • auto: 這個值不影響初始佈局視窗,整個Web頁面是可視的。在視窗以外的UA繪製的是未定義的,它多是畫布的背景色,或者是UA認爲合適的其餘東西;

 

2.在iOS 11中的WebKit包含了一個新的CSS函數constant(),以及一組四個預約義的常量web

safe-area-inset-left, 微信

safe-area-inset-right, iphone

safe-area-inset-top,函數

safe-area-inset-bottom。佈局

當使用viewport-fit等於auto或者contain的時候,4個預約於的常量設置是不生效的。spa

 

3.經過給頁面設置viewport-fit=cover,能夠將頁面的佈局區域延伸到頁面頂部和底部。

而後就能夠自定義設置你喜歡的內邊距大小,或者使用IOS 11中的預設常量。

body{ padding-top: constant(safe-area-inset-top); padding-left: constant(safe-area-inset-left); padding-right: constant(safe-area-inset-right); padding-bottom: constant(safe-area-inset-bottom); }

或者

body{ padding-top: 88px; padding-left: 0px; padding-right: 0px; padding-bottom: 34px; }

選擇本身喜歡的。


 

解決方案二(針對微信H5或者手QH5)

由於微信H5或者手QH5即便設置了viewport-fit=cover,也不生效,具體緣由https://cloud.tencent.com/developer/article/1006338能夠查看這個地址。

因此解決思路是經過css的媒體查詢,針對iphoneX作單獨樣式處理,以下

寫一個單獨的樣式文件針對iphonex的。

@media only screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) { //這裏寫 須要針對iPhonex單獨重寫的樣式,好比頂部或者底部菜單欄,具體的看本身的需求寫就行了 //好比我全部樣式中須要針對iphonex重寫的以下 .bottom-height{ height: 90px !important; } .bottom-menu { padding-bottom: 20px; } .home-footer-bar{ height: 70px !important; } .newyear-doorbtn{ bottom:80px !important; } .paddingb60{ padding-bottom: 80px !important; } }

如圖效果:

 

 


參考資料:

    iPhone X 適配手Q H5 頁面通用解決方案

 關於H5在iphoneX中的適配

相關文章
相關標籤/搜索