表结构中的子选择器与后代选择器
在 HTML 文档中选择元素时,开发者经常使用子选择器(>)来target 直接子代和后代选择器以定位任何嵌套元素。但是,在某些情况下,子选择器似乎会意外失败。
请考虑以下示例:
table tr td {
background-color: red;
}
table > tr > td {
background-color: blue;
}
第一条规则成功选择了所有
。 |
内的元素 中的元素元素。但是,第二条规则使用子选择器 (>),无法设置任何 的样式。 对这种行为感到困惑,开发人员可能会认为自从 | 是
|
的子级,而
又是 的子级,则应应用子选择器。隐式包含
会产生混乱。 HTML 中的元素。默认情况下,浏览器会插入一个
。包含 的元素元素。结果,实际的元素结构变成:<table>
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>
在这个修改后的结构中,
不再是 的直接子级,而是 的子级,而
本身又是 的子级。因此,>选择器无法定位 因为它不是 |
的直接子元素。要纠正此问题,开发人员必须显式选择 tbody 元素:
table > tbody > tr > td {
background-color: blue;
}
这可确保子选择器定位正确的修改结构中的元素。此外,如果 tbody 元素显式添加到 HTML 文档中,则可以使用相同的选择器。
以上是为什么我的子选择器无法设置表格单元格的样式?的详细内容。更多信息请关注PHP中文网其他相关文章!