fox瀏覽器兼容flexbox問題

背景:在項自測過程中發現的問題,ffox瀏覽器在展開左側數據樹時,會把右側數據區也拉伸開來,這是表象。

分析:

1.計算一下右側數據區的clientHeight高度,是正確的,左側元數據區域,會隨着子組件內部樹的拉伸越來越高,但clientHeight到一定值就不變了,和右側相等。

2.經過自行計算髮現,ffox在計算的時候,沒有算上層的工具欄height。初始的時候,左側右側clientHeight相同,樹的展開,左側就忽略了工具欄的height,這太奇怪了。

3.針對奇怪的現象,需要最小化demo看下是什麼原因,因此上面這些都是廢話,看下面的內容。


Demo鏈接:https://jsfiddle.net/9817e2yv/5/  (不能訪問的同學,自行翻牆操作)

問題描述:chrome滾動顯示正確,在紅色區域,在ffox環境,滾動條顯示的是整體區域的,如何解決該問題?

chrome效果: ffox效果:

必備知識:需要熟悉瞭解Flex佈局的有哪些屬性,以及各自的作用(自行百度)

解決辦法,經過大家的討論,給出四種有效辦法,各有優缺點:

1.https://jsfiddle.net/9817e2yv/6/  增加一個具有高度的div撐開,佔位。<div class="normal"></div>

2.https://jsfiddle.net/9817e2yv/7/  使用絕對定位,讓左側脫離文檔流,但需要右側增加margin-left屬性。

3.https://jsfiddle.net/9817e2yv/8/  上種辦法的優化,增加一個固定寬度的div佔位,去除右側的margin-left值,如果需要隱藏左側,只要同時處理兩個div就可以,不需要右側變更。

4.https://jsfiddle.net/9817e2yv/12/  結合overflow:hidden和flex 1 0 0 處理,控制外層的顯示,形成BFC。如果內部需要顯示,可以內部設置overflow:visible。

各有優缺點,結合項目實際情況取捨。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章