【发布时间】:2018-04-30 13:52:22
【问题描述】:
我只是想知道为什么子选择器在 .nav1 和 tr:last-child 之间不起作用,但是当我使用 .nav1 tr:last-child 时它起作用了,是不是子选择器被认为是后代选择器,所以它应该适用于两种代码或:last-child 需要特殊处理吗?
代码如下:
.nav1 td {
background-color: #5d93ea;
padding: 30px 60px;
border-radius: 20px;
}
/*it works when using: .nav1 > tr:last-child > td */
.nav1>tr:last-child>td {
border-radius: 20px 20px 0px 0px;
}
a {
text-decoration: none;
font-family: 'Open Sans', sans-serif;
font-weight: bold;
font-size: 1.2em;
color: black;
}
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
<table cellspacing="10px" class="nav1">
<tr>
<td><a href="#">1</a></td>
<td><a href="#">2</a></td>
<td><a href="#">3</a></td>
<td><a href="#">4</a></td>
</tr>
<tr>
<td><a href="#">1</a></td>
<td><a href="#">2</a></td>
<td><a href="#">3</a></td>
<td><a href="#">4</a></td>
</tr>
</table>
【问题讨论】:
-
<tr>不应该是<table>的直接后代,并且(某些?)浏览器通过使用<tbody>隐式包装行来解决此问题。 -
@pawel 错了。
<tr>是<table>的孩子完全没有错 -
@JonathanNicol 不确定谁觉得您的评论有用。检查我的答案,了解两者之间的区别。
-
@j08691 然后向浏览器供应商提交错误报告,他们决定用 tbody 包装行。
-
@pawel。这不是 j08691 的重点。什么是有效的 HTML,以及浏览器如何处理 HTML,在 HTML 规范中是两个完全不同的东西。 j08691 的观点是 tr 元素作为表元素的子元素是完全有效的。您引用的内容来自描述浏览器解析器如何以
text/html语法处理 HTML 的部分。浏览器也可以用application/xhtml+xml语法解析HTML。在那里,tbody 元素不会被自动添加,tr 将是表的子元素,这是完全有效的。表格的有效子 tr 也可以在 JavaScript 中构造。
标签: html css css-selectors