H5頁面適配 iPhoneX

大家都知道,iphoneX猖吴,屏幕頂部都有一個齊劉海,iPhoneX 取消了物理按鍵挥转,改成底部小黑條海蔽,如果不做適配共屈,這些地方就會被遮擋,因此本文講述下齊劉海與底部小黑條的適配方法党窜。

幾個新概念

安全區(qū)域

安全區(qū)域指的是一個可視窗口范圍拗引,處于安全區(qū)域的內(nèi)容不受圓角(corners)、齊劉海(sensor housing)幌衣、小黑條(Home Indicator)影響矾削,如下圖所示:


image.png

viewport-fit

iOS11 新增特性,蘋果公司為了適配 iPhoneX 對現(xiàn)有 viewport meta 標(biāo)簽的一個擴展豁护,用于設(shè)置網(wǎng)頁在可視窗口的布局方式哼凯,可設(shè)置三個值:

  • contain: 可視窗口完全包含網(wǎng)頁內(nèi)容(左圖)
  • cover:網(wǎng)頁內(nèi)容完全覆蓋可視窗口(右圖)
  • auto:默認(rèn)值,跟 contain 表現(xiàn)一致

constant 函數(shù)

iOS11 新增特性楚里,Webkit 的一個 CSS 函數(shù)断部,用于設(shè)定安全區(qū)域與邊界的距離,有四個預(yù)定義的變量(單位是px):

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

注意:網(wǎng)頁默認(rèn)不添加擴展的表現(xiàn)是 viewport-fit=contain班缎,需要適配 iPhoneX 必須設(shè)置 viewport-fit=cover蝴光,不然constant 函數(shù)是不起作用的,這是適配的必要條件达址。

官方文檔中提到將來 env()要替換 constant ()蔑祟,目前還不可用。

適配例子

第一步:設(shè)置網(wǎng)頁在可視窗口的布局方式

<meta name='viewport'  content="width=device-width, viewport-fit=cover"  />

第二步:頁面主體內(nèi)容限定在安全區(qū)域內(nèi)

body {
  /* 適配齊劉海*/
  padding-top: constant(safe-area-inset-top);  
 /* 適配底部黑條*/
  padding-bottom: constant(safe-area-inset-bottom);
}

第三步:fixed 元素的適配

  • bottom 不是0的情況
// bottom 不是0的情況
.fixed {
  bottom: calc(50px(原來的bottom值) + constant(safe-area-inset-bottom));
}
  • 吸底的情況(bottom=0)
/* 方法1 :設(shè)置內(nèi)邊距 擴展高度*/
/* 這個方案需要吸底條必須是有背景色的沉唠,因為擴展的部分背景是跟隨外容器的疆虚,否則出現(xiàn)鏤空情況。*/
.fix {
  padding-bottom: constant(safe-area-inset-bottom);
}
/* 直接擴展高度*/
.fix {
  height: calc(60px(原來的高度值) + constant(safe-area-inset-bottom));
}

/* 方法2 :在元素下面用一個空div填充右冻, 但是背景色要一致 */
.blank {
  position: fixed;
  bottom: 0;
  height: 0;
  width: 100%;
  height: constant(safe-area-inset-bottom);
  background-color: #fff;
}
/* 吸底元素樣式 */
.fix {
  margin-bottom: constant(safe-area-inset-bottom);
}

最后: 使用@supports

因為只有有齊劉海和底部黑條的機型才需要適配樣式装蓬,可以用@support配合使用:


@supports (bottom: constant(safe-area-inset-bottom)) {
  body {
    padding-bottom: constant(safe-area-inset-bottom);
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市纱扭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌儡遮,老刑警劉巖乳蛾,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鄙币,居然都是意外死亡肃叶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門十嘿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來因惭,“玉大人,你說我怎么就攤上這事绩衷”哪В” “怎么了激率?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長勿决。 經(jīng)常有香客問我乒躺,道長,這世上最難降的妖魔是什么低缩? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任嘉冒,我火速辦了婚禮,結(jié)果婚禮上咆繁,老公的妹妹穿的比我還像新娘讳推。我一直安慰自己,他們只是感情好玩般,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布银觅。 她就那樣靜靜地躺著,像睡著了一般壤短。 火紅的嫁衣襯著肌膚如雪设拟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天久脯,我揣著相機與錄音纳胧,去河邊找鬼。 笑死帘撰,一個胖子當(dāng)著我的面吹牛跑慕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播摧找,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼核行,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蹬耘?” 一聲冷哼從身側(cè)響起芝雪,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎综苔,沒想到半個月后惩系,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡如筛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年堡牡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杨刨。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡晤柄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出妖胀,到底是詐尸還是另有隱情芥颈,我是刑警寧澤惠勒,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站浇借,受9級特大地震影響捉撮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜妇垢,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一巾遭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧闯估,春花似錦灼舍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刚夺,卻和暖如春献丑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背侠姑。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工创橄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人莽红。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓妥畏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親安吁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容