如何将 CSS 设置仅设置为外部 table 的 td 而不是内部 table?

How to set a CSS settings only to the td of an external table but not to the internal table?

我正在处理使用 table 布局的旧网页(不幸的是我无法用新的纯 HTML\CSS 布局替换)并且我遇到以下问题。

我有这样的情况:

<table class="externalTable">
    <tr id="firstRow">
        <td>
            <div>
                <table id="tablistOn">
                    <!-- SOME ROWS ARE SHOWED -->
                </table>
            </div>
        </td>

        <td>SECOND td</td>
        <td>THIRD td</td>
    </tr>
</table>

我只需要将 bottom-border 属性 应用到 #firstRow 行,我是这样做的:

.externalTable #firstRow td, .externalTable #firstRow th {
    border-top: 1px solid red;
    border-bottom: 1px solid red;
}

但这样做的问题是这种样式也适用于内部 table 行(具有 id="tablistOn" 的行)内的所有丝束。

我认为我可以覆盖它,为此 table 定义一个新样式,但我想问我是否可以仅将我的样式应用到外部 table 选择 class="externalTable" table 但不是其内部 table id="tablistOn".

我怎样才能以某种方式做到这一点?

Tnx

您正在使用后代 selectors,它将匹配元素中的 all children。你需要的是 child selectors - > - 这只会 select direct 一个元素的后代。

.externalTable #firstRow>td, .externalTable #firstRow>th {
    border-top:1px solid red;
    border-bottom:1px solid red;
}

尝试这样做:

.externalTable #firstRow td, .externalTable #firstRow th {
    border-top: 1px solid red;
    border-bottom: 1px solid red;
}

#firstrow table td {
    border: none;
}

此致。

你可以写两种方法来解决这个问题。

1.

#externalTable  td{
// One Style
}

#tablistOn td{
// One Style
}

2

#externalTable  td:not(#tablistOn td) {
// Styles
}