国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 蘋果教程教程 > 詳細頁面

iPhoneX安全區域(Safe Area)底部小黑條在微信小程序與H5的屏幕適配_html5_頁面制作

iPhoneX安全區域(Safe Area)底部小黑條在微信小程序與H5的屏幕適配_html5_頁面制作

更新時間:2024-04-12 文章作者:未知 信息來源:網絡 閱讀次數:

最近寫小程序時,遇到了 iPhoneX 底部小黑線與內容重疊的問題,實際上是iPhoneX安全區域的適配問題,了解清楚這個問題花了挺多時間的,也實操出了結果,忍不住來總結總結。前言在蘋果 iPhon...

最近寫小程序時,遇到了 iPhoneX 底部小黑線與內容重疊的問題,實際上是iPhoneX安全區域的適配問題,了解清楚這個問題花了挺多時間的,也實操出了結果,忍不住來總結總結。

前言

在蘋果 iPhoneX 、iPhone XR等設備上,可以看到物理Home鍵被取消,改為底部小黑條替代home鍵功能。微信小程序和 h5 網頁需要針對這種情況進行適配,否則可能會遇到底部按鈕或選項卡欄與底部黑線重疊的情況,如下圖。

iPhoneX安全區域(Safe Area)底部小黑條在微信小程序和H5的屏幕適配_html5_網頁制作_本站

1. 安全區域是什么意思?

想要解決內容與小黑線重疊的問題,我們需要先了解清楚蘋果對于安全區域的定義。

安全區域

安全區域指的是一個可視窗口范圍,處于安全區域的內容不受圓角(corners)、齊劉海(sensor housing)、小黑條(Home Indicator)的影響。

看看蘋果官方給的這2張圖就明白了,中間藍色區域即為安全區域。也就是說,適配安全區域也就是讓小程序或者H5的內容顯示在藍色區域部分。

iPhoneX安全區域(Safe Area)底部小黑條在微信小程序和H5的屏幕適配_html5_網頁制作_本站

同時安全區域是在IOS11之后并且是iPhoneX及以上機型才有的,所以需要適配的是這一類機型(為了方便,下文中統稱這類需要適配的機型為iPhoneX),更老的機型則不需要考慮適配問題。

2. 在微信小程序上適配安全區域

三種方案:

  • 使用已知底部小黑條高度34px/68rpx來適配(不推薦)
  • 使用微信官方API,getSystemInfo()中的safeArea對象進行適配(推薦)
  • 使用蘋果官方推出的css函數env()、constant()適配(推薦)函數env()、constant()適配(推薦)的css函數env()、constant()適配(推薦)

方案一:使用已知底部小黑條高度34px/68rpx來適配(不推薦)

這是比較老的方法,跟方案2、3比已經不推薦了,大家可以了解了解,著急可以直接看方案2和3。

從網上了解到,iPhone底部的小黑條(Home Indicator)高度是34px,實際我也在真機確認了是34px,所以可以根據該值,設置底部按鈕或選項卡的margin-bottom、padding-bottom、height等,或者添加一個div來占位小黑條的位置。

這樣做要有一個前提,需要判斷當前機型是需要適配安全區域的機型。

問題:如何判斷當前機型是需要適配安全區域

2種方案:

  • 使用wx.getSystemInfoSync()model屬性判斷
  • 使用wx.getSystemInfoSync()中的screenHeightsafeArea對象的bottom屬性判斷

方法一:使用wx.getSystemInfoSync()model屬性判斷

已知市面上已有的帶安全區域的蘋果設備包括iPhone X、iPhone XR、iPhone XS Max、iPhone 11、iPhone 11 Pro、iPhone 11 Pro Max,所以可以直接從getSystemInfoSync()方法中拿到model屬性進行判斷。iPhone系列微信還未適配手機的model返回值為unknown(iphone),也可以提前做適配。

let IPHONE_X = /iphone x/i
let IPHONE_X_11 = /iphone 11/i
let IPHONE_UNKNOWN = /unknown\(iphone\)/i

//方法一:使用model判斷是否是IPhoneX及其他包含安全區域的機型手機
const isIPhoneX = () => {
  let model = wx.getSystemInfoSync().model
  return (model.search(IPHONE_X) > -1 || model.search(IPHONE_X_11) > -1 ||
    model.search(IPHONE_UNKNOWN) > -1)
}

//也可以使用正則表達式判斷
const isIPhoneXRegex = () => {
  let model = wx.getSystemInfoSync().model
  return (/iphone\sx/i.test(model)
    || (/iphone/i.test(model) && /unknown/.test(model))
    || /iphone\s11/i.test(model)) 
}

方法二:使用wx.getSystemInfoSync()中的screenHeightsafeArea對象的bottom屬性判斷

這里使用screenHeight而不是windowHeight,因為bottom是以屏幕左上角為原點開始計算的,所以需要的是屏幕高度,對比screenHeightbottom,如果相等則說明不需要適配,不相等則需要適配。

注意:如果使用微信開發者工具中的模擬器,screenHeight和bottom始終是相等的,需要用真機來測試。

//方法二:使用wx.getSystemInfoSync()中的screenHeight和safeArea的bottom判斷
const isIPhoneX = () => {
  let screenHeight = wx.getSystemInfoSync().screenHeight
  let bottom = wx.getSystemInfoSync().safeArea.bottom
  return screenHeight !== bottom
}

解決了如何判斷設備是iPhoneX的問題,就可以寫代碼了。

<view class="bottom-button {{isIpX ? 'view-IPX' : ''}}">底部按鈕</view>

方案二:使用微信官方API,getSystemInfo()中的safeArea對象進行適配(推薦)

使用wx. getSystemInfo()中的safeArea對象獲取底部小黑條的高度

step 1:使用上面講的方法先判斷是否是需要適配的iPhone機型
step 2:如果是需要適配的機型,使用safeArea中的bottom,得到安全區域底部縱坐標,然后使用screenHeight減去bottom就能得到小黑條的高度。保存到localstorage里面,全局都可以使用。

iPhoneX安全區域(Safe Area)底部小黑條在微信小程序和H5的屏幕適配_html5_網頁制作_本站

方案三:使用蘋果官方推出適配方案css函數env()、constant()來適配 (推薦)

蘋果官方推薦使用env()constant()來適配,建議使用該方案,不需要管數值具體是多少。這2個方法是什么呢?

env()和constant(),是IOS11新增特性,Webkit的css函數,用于設定安全區域與邊界的距離,有4個預定義變量:

  • safe-area-inset-left:安全區域距離左邊邊界的距離
  • safe-area-inset-right:安全區域距離右邊邊界的距離
  • safe-area-inset-top:安全區域距離頂部邊界的距離
  • safe-area-inset-bottom :安全距離底部邊界的距離

因為目標是需要對底部小黑條做適配,所以只需要關注safe-area-inset-bottom這個值。

而env()和constant()函數有個必要的使用前提,當網頁設置viewport-fit=cover的時候才生效,根據微信小程序的表現和我在實際真機測試時這兩個函數生效,推測小程序里的viewport-fit默認是cover

有一點要注意,在IOS11.2系統以前,可以使用constant()函數,但是在IOS11.2系統以后,這個函數就被廢棄了,被env()函數替代了。官方原話如下:

The env() function shipped in iOS 11 with the name constant(). Beginning with Safari Technology Preview 41 and the iOS 11.2 beta, constant() has been removed and replaced with env(). You can use the CSS fallback mechanism to support both versions, if necessary, but should prefer env() going forward.

所以我們在做屏幕適配時,需要這樣寫:

padding-bottom: constant(safe-area-inset-bottom); /*兼容 IOS<11.2*/
padding-bottom: env(safe-area-inset-bottom); /*兼容 IOS>11.2*/

注意:env()和constant()需要同時存在,而且順序不能換。

3. 在H5上適配安全區域

在H5上適配安全區域就方便多了,采用viewport+env+constant方案。

viewport-fit 默認有3個值:

  • contain:可視窗口完全包含網頁內容(左圖)
  • cover:網頁內容完全覆蓋可視窗口(右圖)
  • auto:默認值,此值不影響初始布局視圖端口,并且整個web頁面都是可查看的。

contain和cover具體區別如下圖:

iPhoneX安全區域(Safe Area)底部小黑條在微信小程序和H5的屏幕適配_html5_網頁制作_本站

而我們需要將viewport設置為cover,env和constant才能生效。設置代碼如下:

<meta name="viewport" content="width=device-width,initial-scale=1.0,viewport-fit=cover">

同時設置env和constant代碼,同樣env()和constant()需要同時存在,而且順序不能換。

/* 可以通過增加padding-bottom來適配 */
padding-bottom: constant(safe-area-inset-bottom); /*兼容 IOS<11.2*/
padding-bottom: env(safe-area-inset-bottom); /*兼容 IOS>11.2*/

/* 可以通過margin-bottom來適配 */
margin-bottom: constant(safe-area-inset-bottom);
margin-bottom: env(safe-area-inset-bottom);

/* 或者改變高度*/
height: calc(55px +  constant(safe-area-inset-bottom));
height: calc(55px +  env(safe-area-inset-bottom));

也可以在底部添加一個空白的div顏色塊來做適配。

還有一種是使用 @supports 隔離兼容樣式

可以使用 @supports 來隔離兼容樣式,當瀏覽器支持bottom: constant(safe-area-inset-bottom)或者bottom: env(safe-area-inset-bottom)的時候,bottom-button類就會新增margin-bottom的樣式

@supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) { 
    .bottom-button {
        margin-bottom: constant(safe-area-inset-bottom);
        margin-bottom: env(safe-area-inset-bottom);  
    }
}

以上就是我對iPhoneX安全區域(Safe Area)底部小黑條在微信小程序和H5適配的總結。

如果對你有幫助的話,點贊、評論、贊賞都是對我的鼓勵,也是支持我寫下去的動力,謝謝!

參考文章:

網頁適配 iPhoneX,就是這么簡單

蘋果官方開發者文檔關于屏幕適配的說明

微信小程序吸底區域適配iPhone X

微信小程序適配 iPhone X 總結

到此這篇關于iPhoneX安全區域(Safe Area)底部小黑條在微信小程序和H5的屏幕適配的文章就介紹到這了,更多相關iPhoneX底部H5的屏幕適配內容請搜索本站以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持本站!



溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        91精品国产免费| 67194成人在线观看| 亚洲欧洲国产日韩| 久久久精品影视| 《视频一区视频二区| 不卡视频在线观看| 一本一道久久a久久精品| 在线免费观看一区| 日韩亚洲国产中文字幕欧美| 久久伊人中文字幕| 亚洲午夜三级在线| 狠狠狠色丁香婷婷综合激情| 成人av电影在线| 亚洲品质自拍视频网站| 老司机精品视频在线| 成年人午夜久久久| 亚洲综合激情另类小说区| 老司机午夜精品99久久| 精品国产免费人成电影在线观看四季 | 99久久免费精品| 欧美一区二区三区日韩| 精久久久久久久久久久| 欧美丝袜自拍制服另类| 国产精品热久久久久夜色精品三区 | 激情小说亚洲一区| 日韩一区有码在线| 欧美一区二区三区不卡| 99久久精品国产导航| 亚洲国产精品一区二区尤物区| 欧美老人xxxx18| 亚洲在线免费播放| 欧美变态tickle挠乳网站| 亚洲男女一区二区三区| 欧美一级爆毛片| 成人一道本在线| 91亚洲精品久久久蜜桃| 日韩一区二区三区视频| 成人国产亚洲欧美成人综合网| 亚洲主播在线播放| 中文字幕在线观看一区二区| 欧美精品tushy高清| 99热99精品| 欧美国产日产图区| 久久激情五月婷婷| 亚洲精品中文字幕在线观看| 亚洲欧美另类图片小说| 日韩欧美国产高清| 麻豆精品视频在线观看视频| 色丁香久综合在线久综合在线观看| 中文字幕一区二区三区在线播放 | 日韩一区二区在线看| 欧美最猛性xxxxx直播| 9i看片成人免费高清| 国产成人综合网站| 国产欧美一区二区三区网站| 成人黄色a**站在线观看| 国产一区二区三区在线观看免费视频| 久久久久久电影| 欧美大片一区二区| 精品久久久久久亚洲综合网| 一区二区三区 在线观看视频| 欧美视频日韩视频| www.久久精品| 99这里只有精品| 91首页免费视频| av在线不卡网| 成人动漫视频在线| 无码av免费一区二区三区试看| 欧美日韩免费电影| 日日夜夜一区二区| 欧美男人的天堂一二区| 国产日韩综合av| 日韩午夜激情av| 欧美丰满少妇xxxxx高潮对白 | 国产精品美女久久福利网站| 精品国一区二区三区| 久久一夜天堂av一区二区三区| 亚洲精品一区二区三区香蕉| 国产蜜臀97一区二区三区| 国产午夜亚洲精品理论片色戒| 国产精品一区在线观看乱码| 国产精品乱码一区二区三区软件| 日本一区二区成人| 久久精品在线免费观看| 精品精品欲导航| 中文字幕av资源一区| 亚洲一区二区精品视频| 亚洲午夜精品一区二区三区他趣| 亚洲男人的天堂在线观看| 亚洲成人自拍偷拍| 国产欧美日韩视频一区二区| 亚洲欧洲韩国日本视频 | 专区另类欧美日韩| 欧美zozozo| 综合久久久久久| 蜜桃av一区二区三区电影| 丰满亚洲少妇av| 精品亚洲成a人在线观看| 懂色av一区二区在线播放| 欧美日韩免费电影| 国产精品不卡在线| 中文字幕在线一区二区三区| 亚洲国产日韩一区二区| 国产传媒久久文化传媒| 欧美精品高清视频| 国产精品白丝在线| 韩国欧美一区二区| 欧美日本国产视频| 一区二区三区中文字幕精品精品 | 亚洲人妖av一区二区| 麻豆精品视频在线| 欧美日韩亚洲综合一区二区三区| 国产精品99久久久久久似苏梦涵| 99久久精品免费看国产免费软件| 欧美日韩不卡视频| 一级特黄大欧美久久久| 国产做a爰片久久毛片| 精品视频免费在线| 久久久久久久久久久久久女国产乱| 国产精品福利一区二区三区| 精品一区二区三区在线播放视频 | 韩国精品久久久| 欧美军同video69gay| 欧美国产日韩一二三区| 国产一二精品视频| 精品美女在线播放| 乱中年女人伦av一区二区| 欧美精品久久天天躁| 午夜视频在线观看一区| 欧美日韩精品系列| 亚洲情趣在线观看| 国产精品成人一区二区艾草 | 亚洲精品国产品国语在线app| 国产成人av一区二区三区在线观看| 在线精品视频小说1| 亚洲三级小视频| www.亚洲色图| 国产精品福利电影一区二区三区四区| 国产剧情一区二区| 亚洲精品一区二区三区蜜桃下载| 天堂在线一区二区| 欧美一级久久久| 天天操天天色综合| 欧美一级午夜免费电影| 精品一区二区免费视频| 久久久久久9999| 国产91对白在线观看九色| 国产精品电影一区二区| 在线一区二区三区四区| 日日骚欧美日韩| 精品1区2区在线观看| 菠萝蜜视频在线观看一区| 一区二区三区欧美久久| 欧美一区永久视频免费观看| 国产麻豆午夜三级精品| 136国产福利精品导航| 欧美日本免费一区二区三区| 久久99国产精品麻豆| 国产欧美一区二区三区在线老狼| 99国产精品一区| 天天综合网 天天综合色| 久久这里只精品最新地址| av电影天堂一区二区在线 | 日韩精品色哟哟| 久久丝袜美腿综合| 91在线观看地址| 奇米综合一区二区三区精品视频| 日韩激情在线观看| 国产欧美日产一区| 欧美日韩一区不卡| 国产精品123| 亚洲一卡二卡三卡四卡| 国产日产欧美一区二区三区 | 国产精品高潮呻吟| 91精品久久久久久久99蜜桃| 大美女一区二区三区| 青青草国产成人av片免费| 国产精品夫妻自拍| 久久综合九色欧美综合狠狠| 欧美在线小视频| 成人黄色免费短视频| 蜜臀va亚洲va欧美va天堂 | 日韩av一级片| 69久久夜色精品国产69蝌蚪网| 国产精品影视天天线| 日韩高清在线一区| 亚洲自拍都市欧美小说| 日本一区二区三区四区| 欧美一三区三区四区免费在线看| 91免费视频网| www.66久久| 国产精品影视在线| 狠狠色丁香婷婷综合| 日本不卡一区二区三区高清视频| 一区二区免费在线| 亚洲日本青草视频在线怡红院| 国产精品无人区| 中文字幕第一区二区| 国产日韩精品一区二区浪潮av| 日韩欧美一二三四区|