自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Html5解決華為原生瀏覽器底部欄兼容問題

開發(fā) 前端
我們之前開發(fā)的H5網頁,有客戶反饋頁面底部被瀏覽器下方的工具欄遮住了,經過測試發(fā)現目前只有華為原生x5瀏覽器底部欄出現這個兼容問題,它遮住了底部頁面,造成了這個樣式兼容問題。

我們之前開發(fā)的H5網頁,有客戶反饋頁面底部被瀏覽器下方的工具欄遮住了,經過測試發(fā)現目前只有華為原生x5瀏覽器底部欄出現這個兼容問題,它遮住了底部頁面,造成了這個樣式兼容問題。

可以看出:在華為瀏覽器中下方工具條的高度不算在瀏覽器自身bom高度上,而是算網頁dom的一部分。更通俗地理解可以為,它就是個z-index:無限高;position:fixed;bottom:0的<div/>。

那么隨之而來的幾種解決思路是:

1、x5內核強制“開啟全屏”

有沒有那么一種設置,可以讓這個瀏覽器組件像ios或vivo oppo等其它手機的瀏覽器一樣正常算在其自身高度內?經百度,并沒有。但是,有個x5內核強制“開啟全屏”的meta設置:

// 開啟x5內核瀏覽器的全屏模式
<meta name="x5-fullscreen" content="true">

相對應的,還有個親測也是可以的:

// 據稱是uc瀏覽器開始全屏模式,但是我在x5內核中測試也是可以的
<meta name=”full-screen” content=”yes”>

本來很開心地看到頁面完美地如期展現。但是幾番操作,發(fā)現這種方法不穩(wěn)定,主要有兩個問題:

  • 全屏模式下,x5瀏覽器會自動開啟一個懸浮按鈕,來進行“全屏-非全屏”狀態(tài)的切換。這個是設計圖之外的東西,在一定程度上對設計圖的實現造成了破壞,且會給用戶帶來迷茫感。
  • 全屏模式的保持并不穩(wěn)定。在某些路由跳轉時刻、某些布局下,會退出全屏模式,沒有根治樣式兼容性缺陷。

2、處理交互障礙

也就是說,這個缺陷帶來的問題是,用戶看不到底部內容,且無法通過下拉顯示(因為它不是不存在,而是被一個更高層的div蓋住了),那么我們就把底部內容的padding-bottom增高:

.footer{
  padding-bottom: 95px; // 因為95px是后面講到的,在移動瀏覽器中實際算出的距離差,所以不需要換算為rem,直接使用即可。
}

撐起下部被遮擋部分;或者將document的height增高,同樣達到撐起被遮擋部分的作用。

document,.root{
  height: calc(100vh + 95px);
}

但是這樣帶來的問題是,用戶現在確實可以通過下拉頁面,最終看到底部內容。但依舊不是在一屏以內。

這種改進方式和產品、設計的初始預期出入較大,很容易被否掉,后期還是要改。且作為一名有良好“產品感”的前端攻城獅,本身應該也很難接受這種調整方案。

3、將非全屏模式下,底部工具欄占用的空間減掉

就是算出在“全屏和非全屏模式”下,由于底部虛擬工具欄的出現,而造成

這種解決方式主要有一點需要考慮:改虛擬工具欄,在多臺設備上的高度是否統(tǒng)一。

若不統(tǒng)一,那么此方法不可行,更難受的是,那么就面臨著此題無解的尷尬局面。于是我找測試人員借來4臺華為設備,通過計算發(fā)現高度幾乎完全一致,其值大概是95px,那么我們通過ua判定是否為x5內核,如果是x5內核下,則設置底部組件的style為:

style={{
  position: `fixed`,
  width: `100%`,
  left: 0,
  bottom: navigator.userAgent.toLowerCase().includes(`qqbrowser`) ? `95px` : 0,
}}

綜合考慮三種方式,最終選擇最后一種方式,他相對第一種比較穩(wěn)定,相對第二種對交互侵入性最小,是目前最適合的答案。 

但是因為x5內核并沒有給出一個方法獲取虛擬工具欄的實際高度,且發(fā)現其在多臺設備上高度確有2px的差距,所以這點也算是隱患。

責任編輯:華軒 來源: web前端開發(fā)
相關推薦

2010-08-11 13:35:10

JavaScriptCSS

2010-09-15 09:43:24

Javascript瀏覽器兼容

2010-10-09 13:07:51

Javascript兼容

2010-09-16 13:48:15

CSS Hack

2010-08-30 15:40:31

CSS瀏覽器兼容

2011-05-11 18:00:10

HTML5兼容性

2013-01-21 15:33:30

瀏覽器

2016-09-18 20:48:21

蘋果safari瀏覽器

2011-04-12 16:51:29

Javascript兼容性

2010-04-01 13:03:10

2012-05-08 11:35:01

傲游HTML5

2010-08-18 14:21:48

FirefoxIE7IE6

2009-02-20 15:24:00

IE8火狐瀏覽器

2012-05-05 09:17:03

2012-02-10 10:26:55

手機瀏覽器HTML5

2012-05-01 22:15:18

HTML5

2012-05-18 13:24:55

手機瀏覽器HTML5內核

2012-09-18 09:30:56

html5

2012-11-06 11:32:38

傲游瀏覽器

2012-05-27 20:21:40

點贊
收藏

51CTO技術棧公眾號