背景:在項自測過程中發現的問題,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。
各有優缺點,結合項目實際情況取捨。