2014-04-03 94 views
0

對於CSS,我試圖將5px填充添加到沒有將邊框屬性設置爲「0」的表格中。要做到這一點,我能夠選擇這些表像這樣,通過使這些紅色的背景顏色進行測試:在非邊界表格中填充「0」

table:not([border="0"]),table:not([border="0"])>tr,table:not([border="0"])>tr>td 
{ 
    background-color: red; 
} 

而且,這部作品讓所有表都填充:

td,th 
{ 
    padding: 5px; 
} 

不過,我只想與邊框的表有填充,這不起作用:

table:not([border="0"]),table:not([border="0"])>tr,table:not([border="0"])>tr>td 
{ 
    padding: 5px; 
} 

有誰看到一個問題嗎?提前致謝。

編輯:我看到我上面貼的實際工作,我不知道,我離開了這打破了它的代碼的代碼,但是這是我試圖讓工作:

table:not([border="0"]),table:not([border="0"])>tr,table:not([border="0"])>tr>td 
{ 
    border: 1px solid rgba(0,0,0,.25); 
    border-collapse: collapse; 
    padding: 15px; 
} 

border-collapse:collapse;屬性似乎是造成這個問題。有沒有辦法在同一時間單元格和填充單邊框?

+0

如果我控制了HTML,我可能會應用CSS類到表中,而不是像這樣做。雖然這可能起作用,但當我沒有其他選擇的時候,我更願意像這樣聰明。 –

+0

您的代碼實際上按照您的預期工作,請參閱小提琴,http://jsfiddle.net/AHDYc/1/ –

+1

沒有添加tbody,我看不到代碼如何工作(請參閱我的答案)。雖然表本身獲得填充,但單元格不填充。 –

回答

0

A <table>總是有<tbody>如果您沒有明確指定在HTML中。 (這在XHTML中會有所不同,但這是HTML,而不是XHTML。)

解決方案:還要在CSS選擇器中指定tbody。

table:not([border="0"]), table:not([border="0"])>tbody>tr, table:not([border="0"])>tbody>tr>td 
{ 
    padding:15px; 
} 

fiddle

順便說一句,你可以從規則中刪除中間選擇(在tr結束),因爲它沒有做任何事情。你不能給表格行填充。

你說它可以在你的文章中的第一個例子中工作,但這並不完全正確。只有第一個選擇器有效,整個表格呈現紅色背景,其他兩個被忽略,因此單元格保持透明。

哦,最好不要再使用border屬性。 WHATWG和W3C之間有關它是否仍然有效的爭議,但他們最終認爲它已經過時。

+0

謝謝,添加tbody的工作 – Dav999