html - CSS 中的奇怪继承

标签 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>

它工作正常。 “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>

“tr”的属性边界不被子“td”继承。为什么?

最佳答案

在呈现的最终 html 中,tr 不是表的子元素而是 tbody。

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

tbody 的默认边框不是 inherit 而是 `medium ,因此 tr 不继承。

试试这个:

tbody, tr {
    border: inherit;
}

关于html - CSS 中的奇怪继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26333423/

相关文章:

html - 移动页面时使背景图像移动

java - 有人可以帮我理解以下与hibernate中的继承策略相关的逻辑吗?

c++ - 通过继承与对象引用的回调

javascript - 逐个字母地显示文本,但保留 html 格式

html - 修复表 td 中值的格式

javascript - 如果返回值为空,则隐藏一行

css - jQuery-ui-Slider-Pips 阿拉伯语支持

c++ - 从 cv::Mat 继承,一个好主意?

javascript - 如何限制div的旋转 Angular

html - 在 CSS Grid 中使网格项内的内容等于高度