CSS中的奇怪继承

Que*_*low 0 html css inheritance

我有以下代码:

<html>
<head>
<style>
    table {
        border: solid red 2px;
    }
    tr {
        border: solid red 2px;
    }
    td {
        border: inherit;
    }
</style>
</head>
<body>
    <table>
    <tr>
        <td> 1 </td> <td> 2 </td>
    </tr>
    <tr>
        <td> 1 </td> <td> 2 </td>
    </tr>
    </table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

它工作正常."tr"的属性边界由子"td"继承.

但是这个代码的工作方式不同,尽管如此,工作的逻辑是相同的:

<html>
<head>
<style>
    table {
        border: solid red 2px;
    }
    tr {
        border: inherit;
    }
    td {
        border: inherit;
    }
</style>
</head>
<body>
    <table>
    <tr>
        <td> 1 </td> <td> 2 </td>
    </tr>
    <tr>
        <td> 1 </td> <td> 2 </td>
    </tr>
    </table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

"tr"的财产边界不由子"td"继承.为什么?

gp.*_*gp. 5

在渲染的最终html中,tr不是table的子项,而是tbody.

层次结构是:table- > tbody- >tr

tbody的默认边界不是继承,而是"中",因此,tr不会继承.

试试这个:

tbody, tr {
    border: inherit;
}
Run Code Online (Sandbox Code Playgroud)