2017-06-01 38 views
1

我只是注意到,如果我将“tr”元素的颜色设置为红色,那么“td”边框颜色也会设置为红色。这是浏览器的错误吗?为什么表​​边框颜色继承自<tr>元素的颜色?

https://jsfiddle.net/tbgggu62/3/

<table> 
    <tbody> 
     <tr style="color: red;"> 
      <td >A</td> 
      <td>B</td> 
     </tr> 
     <tr class="spaceUnder"> 
      <td>C</td> 
      <td>D</td> 
     </tr> 
     <tr> 
      <td>E</td> 
      <td>F</td> 
     </tr> 
    </tbody> 
</table> 

http://i.imgur.com/ieBNAcv.jpg

感谢。

+2

这实质上已经在[为什么CSS边框颜色继承colo r属性?](https://stackoverflow.com/questions/34667409/why-is-the-css-border-color-inheriting-the-the-color-property) - 唯一的区别在于td是继承来自父tr的指定颜色值,然后完全按照链接中所述将其应用于其自己的边框。 – BoltClock

+0

据我了解,TR是虚拟元素,TD是可视化的。逻辑说,是的,它是继承的,这应该是正常的行为,而不是一个错误。无论如何,我不是这方面的专家,更好的寻求另一种意见。 – Wh1T3h4Ck5

回答

6

这不是一个错误。您已将tr的颜色设置为redtd从其父项继承color,因此也是red。最后,您已设置tdborder-styleborder-width,但您没有设置border-colorborder-colordefaults to currentcolor,这是元素的文本颜色:在这种情况下是red

通过一系列继承和默认值,它按预期工作。

+0

我认为OP有望改变文字颜色。但他也显示边界颜色的变化。所以,他问了这个问题。 – Vishal

0

正如Joseph Marikle所说,颜色是默认继承的。因为它被设置在tr级别,所以它下面的所有东西都会被设置为红色,除非你不想要它。

离开文本显示为红色,而是更改边框颜色使用:

td { 
    border-style: solid; 
    border-width: 1px; 
    border-color:black; 
} 

或使用简写(节省空间)

td { 
    border:solid 1px black; 
} 

有边框的红色,而是更改文本颜色在第一行做到这一点:

td { 
    border:solid 1px; 
} 

tr:nth-child(1) td{ 
    color:black; 
    border: solid 1px red; 
}