2012-04-17 69 views
2

我最近開始了我學習CSS的旅程,並一直在研究Gmail的設計,因爲我一直對Gmail的工作原理感到好奇。Gmail如何防止使用絕對定位的元素髮生重疊?

我似乎無法弄清楚的一個問題就是,Gmail似乎如何獲得絕對定位的div,它仍然是流程的一部分。下面是我指到div:

enter image description here

該分區的計算樣式如下: enter image description here

的問題是,當瀏覽器寬度減小,我認爲這絕對定位div將直接在搜索表單的左側與搜索表單重疊。相反,它似乎壓縮了搜索表單,好像它仍然是流程的一部分。我檢查了搜索表單和其周圍的其他元素,尋找可能的邊緣或填充物,以防止它們重疊,但是我的未經訓練的眼睛沒有發現任何東西。

這裏希望更有經驗的CSS和Gmail用戶可以看一下Gmail DOM樹並向我解釋這一點。 乾杯!

+0

您是否禁用Javascript嗎? – Ben 2012-04-18 00:01:47

+1

瞭解事情是如何運作的很好,但我不會建議將Google的代碼視爲如何做好事情的一個例子。 – reisio 2012-04-18 00:11:41

回答

2

你可以使用JavaScript。您可以綁定到窗口對象的resize事件,並在瀏覽器調整大小時重新計算和重新定位元素。

在普通的JavaScript:

window.onresize = function(event) { 
    // recalculate 
}; 

在jQuery中:

$(window).resize(function(event) { 
    // recalculate 
}); 

另一種選擇是有一個位置:圍繞所述絕對定位元素在容器上相對的。如果該相對容器使用瀏覽器窗口調整大小,那麼其中的絕對容器將隨之移動。

+1

感謝羅布,你能指點我可以找到這個事件監聽器的元素嗎? – hangsu 2012-04-18 04:43:39

+0

更新了我的回答 – Rob 2012-04-18 14:42:02

+0

偉大的澄清羅布。任何有關使用JavaScript爲此目的與使用您提供的第二個選項有關絕對位置內相對位置的意見?你認爲一種方式一定更好嗎? – hangsu 2012-04-18 15:45:02

相關問題