2012-06-19 82 views
2

您可以在http://jsfiddle.net/vW45s/處看到我要去的內容。一箇中心div,包含兩行文本,左側和右側的文本與中心div底部的文本相鄰。使用CSS居中漂浮,寬度較小的div

我希望文本以頁面爲中心(主要是「hello world」或第二行)。現在我正在使用指定的widthmargin: auto的外部div。如果寬度太大,文本將不會顯示居中;如果寬度對於內部文本來說太小,則div將被堆疊:http://jsfiddle.net/vW45s/1/

有沒有更好的方法來居中這三個浮動的div,同時仍然獲得左右文本與中心div的第二行對齊?

任何提示將不勝感激。 CSS不是我的強項,但我正在學習。

+2

嘗試使用'text-align',這裏是一個用inline-block divs而不是浮動的http://jsfiddle.net/mowglisanu/vW45s/2/ – Musa

+1

http://pmob.co.uk/pob/centred-float .htm – biziclop

+0

@eli這是一個有趣的問題(+1);這只是一個實驗,還是它有一個預期的實際應用? – AlexMA

回答

2

浮動和居中混合不好。爲了能夠集中某些東西,瀏覽器必須能夠確定元素的寬度。爲了確定它的寬度,它需要知道其他浮動的寬度是多少。它們的寬度取決於要居中的元素的寬度。

您有以下選擇:

  1. 設法得到它,而無需指定大小的工作。這可能是可能的。準備好花一兩天時間,讓它在Firefox和Chrome上運行,然後再用一個星期的時間在IE中修復它。 )

  2. 分配寬度的所有三個div小號

  3. 使用絕對定位,而不是浮置的。使中心列100%寬,並移動它的前面的列(一個留下left: 0,另一個右邊right: 0;兩者都需要一個確定的寬度)。直到您開始調整瀏覽器窗口的大小(並且邊欄開始與中心重疊),這種方式才起作用。

  4. 使用tabledisplay: table-cell因爲表格單元格瞭解他們的兄弟姐妹寬度不浮動。這意味着您可以將寬度分配給兩個側欄,然後讓內欄增長。注:

PS:是的,我知道桌子壞的神話。神話是一種粗略的簡化。如果您可以通過兩個div和一些智能CSS獲得相同的結果,那麼嵌套500個表以獲得您想要的設計是不好的。但這並不意味着你一定不能使用表格。

+0

由於文本有些隨意,我無法指定寬度。我會選擇1.如果我堅持8-10,不應該在IE中花太長時間。雖然有些有用的指針。 – mgiuffrida

0

您是否嘗試將width: 33%text-align: center一起添加到左側,右側和中間的div中?