2010-08-19 19 views
5

我是一名程序員,嘗試在網頁設計中做一些修補,並且通常會發現css非常合乎邏輯。到目前爲止,只有「拳擊模式」仍然是一個神奇的土地,充滿了對我而言的小型電影和幽默。我將與實施例說明它:瞭解容器如何在css中工作

  • http://jsfiddle.net/qyMxv/
    與指定填充div的內部元件去的格空間之外。不應該把div放在裏面?除此之外,還有什麼意義呢?

  • http://jsfiddle.net/wk9Kg/
    父div完全消失,而孩子正常顯示。更奇怪的是,這種行爲是由float:left;觸發的。

是否有任何教程/參考書可以幫助我看到這些怪癖中的邏輯?我相信w3schools一段時間,但他們在這個問題上非常簡短。在網上找到好的內容也變得困難。現在我只是撥弄display,positionfloat屬性,直到它的工作。

謝謝!

+2

信任W3Schools的是不是一個好主意的部分。良好的初學者指南,糟糕的參考。 – 2010-08-19 02:44:30

回答

3

浮動元素被取出正常流量,因此不計入佔用任何高度。
要解決這個問題,可以在浮點數後加上一個空元素clear:both。清除元素是流中的常規元素,並且clear屬性將其強制在浮動元素下面。
因此,包含框將展開以包含清除元素,並且將巧合地還包含浮動元素。

有關詳細信息,請參閱spec

由於浮子是不是在流動, 非定位塊盒流動 垂直彷彿浮子沒有之前和浮動框之後創建 存在。

6
  1. 一般來說股利應該附上/裏面含有任何相對或staticly定位,非浮動元素,但是你可以用內聯元素上的填充脫身因爲你擁有它,或切緣陰性/與位置相關的負值。這可以讓我想到更靈活的佈局。

  2. 因爲它們沒有流動,所以不應該包含浮動,除非您有一個元素隨後清除,或溢出設置爲除可見之外的任何其他元素。在IE7/IE6中,你只需要觸發hasLayout,這可以通過大量的屬性/值組合來完成(這違背了規範)。請參見http://work.arounds.org/clearing-floats/,瞭解如何清除內部浮子。

下面是我從另一個問題,編譯網站跨瀏覽器的bug列表:

+0

感謝您的迴應!你能澄清一下#1嗎? _但是你可以在內聯元素上使用填充,就像你擁有它一樣。因爲我擁有它,它似乎不起作用。 (或負值/相對位置爲負值)。我已經瞭解負利潤率的工作原理,但不確定我是否理解這個技巧。父母的負利潤率? 順便說一下,我目前的解決方法是用「display:inline-block」聲明孩子(儘管我沒有在IE中測試過)。 – 2010-08-20 22:56:26

2
  • 埃裏克邁爾的CSS: The Definitive Guide是一個很好的參考。這是舊的,但盒模型沒有改變。
  • quirksmode對瀏覽器特定行爲有很好的解釋。
  • 例如#2,您可以在第二黑塊或高度和寬度,以容器<div>
+0

qurks模式的+1。 positioniseverything.net對我來說也是一個很好的資源......不知道它是否仍然是最新的。 – prodigitalson 2010-08-19 02:33:32

1

我發現克里斯科伊爾的文章寫得很好,很容易理解。他對核心概念,包括像Floats主題和Box Model

希望這有助於 JD