2014-04-03 64 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