2017-06-01 40 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; 
}