2011-12-07 60 views
0

我正在嘗試學習如何將表格內容放入css浮動。行格div上的bg顏色

我的方法是在「表」級別,「行」級別和「單元格」級別使用div。不知道這是一個好策略。

無論如何,當我在「表格」或「單元格」級別設置背景樣式時,我可以看到顏色變化。當我將它設置在行級時,它保持白色。

任何猜測發生了什麼事?有一個更好的方法嗎?

<h2>"Tables" work</h2> 
<div style="width: 455px; background-color:#a4c4fc"> 
    <div> 
     <div style="width: 70px; float: left">ID</div> 
     <div style="width: 220px; float: left">Lemons</div> 
     <div style="width: 50px; float: left">Horseradish</div> 
    </div> 
    <br clear: both> 
    <div> 
     <div style="width: 70px; float: left">1<LEFT></div> 
     <div style="width: 220px; float: left">3</div> 
     <div style="width: 50px; float: left">4</div> 
    </div> 
</div> 

<br> 

<h2>"Row" divs do not seem to work</h2> 
<div style="width: 455px"> 
    <div style="background-color:#a4c4fc"> 
     <div style="width: 70px; float: left">ID</div> 
     <div style="width: 220px; float: left">Lemons</div> 
     <div style="width: 50px; float: left">Horseradish</div> 
    </div> 
    <br clear: both> 
    <div style="background-color:#a4c4fc"> 
     <div style="width: 70px; float: left">0</div> 
     <div style="width: 220px; float: left">0</div> 
     <div style="width: 50px; float: left">1</div> 
    </div> 
</div> 

<br> 

<h2>Individual cell divs work</h2> 
<div style="width: 455px"> 
    <div style="background-color:#a4c4fc"> 
     <div style="width: 70px; float: left; background-color:#a4c4fc">ID</div> 
     <div style="width: 220px; float: left; background-color:#a4c4fc">Lemons</div> 
     <div style="width: 50px; float: left; background-color:#a4c4fc">Horseradish</div> 
    </div> 
    <br clear: both> 
    <div style="background-color:#a4c4fc"> 
     <div style="width: 70px; float: left; background-color:#a4c4fc">0</div> 
     <div style="width: 220px; float: left; background-color:#a4c4fc">0</div> 
     <div style="width: 50px; float: left; background-color:#a4c4fc">1</div> 
    </div> 
</div> 
+2

你爲什麼要這樣做?對於表格內容,表格完全可以接受...... –

+1

我的意思是說,我真的希望這不是對基於表格佈局的完全合法討伐的錯誤延伸。當它們用於其預期目的時,表格是有效的和語義HTML。 –

+0

@大衛:數值是編輯/刪除按鈕等的東西的佔位符。檸檬和辣根也是,嗯,表演。有趣的派系/十字軍東征,合法性。 – micahhoover

回答

5

這看起來像表格數據。

如果是這樣,則應使用HTML table元素來顯示此信息。

太多人會因爲聽到「桌子不好」而犯錯誤,並嘗試使用div來解決問題,即使桌子最合適也是如此。

當人們說你不應該使用表格時,他們指的是佈局結構。在這種情況下使用它仍然很好,它們不是邪惡的!

然後你就可以做到:

<tr style="background-color:#a4c4fc;"> 

</tr> 

如果您使用的div您的問題一定是因爲「細胞」的div都是float:left;。因此你的「行」div沒有高度。

您可以添加以下的 「細胞」 的底部,以解決此問題:

<div style="background-color:#a4c4fc"> 
     <div style="width: 70px; float: left">ID</div> 
     <div style="width: 220px; float: left">Lemons</div> 
     <div style="width: 50px; float: left">Horseradish</div> 
     <div style="clear:both;overflow:hidden;height:0;"></div> 
</div> 

另外,使用display:inline-block;

<div style="background-color:#a4c4fc"> 
     <div style="width: 70px; display:inline-block;">ID</div> 
     <div style="width: 220px; display:inline-block;">Lemons</div> 
     <div style="width: 50px; display:inline-block;">Horseradish</div> 
</div> 

http://jsfiddle.net/hRCWk/2/

但是不要那麼,請使用table :)

+1

很好的答案。但爲什麼需要浮動divs呢。很確定你可以使用'display:inline-block'來獲得更好的效果。儘管如此,桌子是最好的選擇 – musefan

+0

只是做了一個快速小提琴,http://jsfiddle.net/hRCWk/2/,你說得對!以前從來不知道。但是,不管怎樣,'table'是解決方案 – Curt

2

清除你的花車。將overflow:hidden;添加到您的行區域。

另外,<br clear: both>是沒有意義的。刪除或使用<div style="clear:both;"></div>

演示:http://jsfiddle.net/RX8Pq/

1

而是浮你的div元素,你可以設置它們的顯示爲嵌入塊...

display:inline-block; 

那麼你不需要清除DI V之後漂浮。

當然,你應該只使用一個表反正

注意:顯然,這不會在IE8和更早版本。

+1

'inline-block'在 AlienWebguy

+0

@AlienWebguy中不適用於自然塊元素:很多東西在IE8中不起作用,但我沒有看到規範說這必須 – musefan

+0

它可能是最好的不給一個解決方案,不適用於一半的用戶羣。我在Dictionary.com工作,超過70%的用戶使用IE8。這是一個不幸的現實,而不是規範。 – AlienWebguy