我如何定位一些子元素,除了,其中父母是其父母的第一个或最后一个孩子?
请参阅我的CSS中的评论,以便更好地了解我的意思。
CSS:
/* Always apply */
tr th, tr td
{
text-align: left;
vertical-align: top;
}
/* Apply to all except first <tr> */
tr th, tr td
{
padding-top: 5px;
}
/* Apply to all except last <tr> */
tr th, tr td
{
border-bottom: 1px solid #c4c4c4;
padding-bottom: 5px;
}
HTML:
<table>
<tr>
<th>Born</th>
<td><time datetime="1986-11-05">5<sup>th</sup> November 1986</time></td>
</tr>
<tr>
<th>Gender</th>
<td>Male</td>
</tr>
<tr>
<th>Sports</th>
<td>Football<br />Tennis</td>
</tr>
<tr>
<th>Teams</th>
<td>Liverpool FC<br />Spain FC</td>
</tr>
</table>
答案 0 :(得分:7)
您在链接的问题中找到了解决方案。使用:not()
伪类:
/* Apply to all except first <tr> */
tr:not(:first-child) th, tr:not(:first-child) td{
padding-top: 5px;
}
/* Apply to all except last <tr> */
tr:not(:last-child) th, tr:not(:last-child) td{
border-bottom: 1px solid #c4c4c4;
padding-bottom: 5px;
}
(虽然这在IE 8中不起作用)
<小时/> IE 7+的替代方案,如果边框样式可以更改:
/* Apply to all */
tr th, tr td{
border-top: 1px solid #c4c4c4;
padding-top: 5px;
}
/* Remove styles from first */
tr:first-child th, tr:first-child td{
border-top: 0;
padding-top: 0;
}
或
/* Apply to all but first */
tr + tr th, tr + tr td{
border-top: 1px solid #c4c4c4;
padding-top: 5px;
}
(但不确定IE 7是否支持+
)
答案 1 :(得分:1)
tr th,
tr td
{} /* always apply */
tr:first-child th,
tr:first-child td
{} /* apply only to td and th of the first tr */
tr:last-child th,
tr:last-child td
{} /* apply only to td and th of the last tr */
答案 2 :(得分:1)
你可以通过
实现这一目标tr:not(:first-child) th, tr:not(:first-child) td{
padding-top:5px;
}
tr:not(:last-child) th, tr:not(:last-child) td{
border-bottom: 1px solid #c4c4c4;
padding-bottom: 5px;
}
您还可以为每个类的第一个和最后一个添加一个类,可能类似于firstth
和lastth
。这肯定是最简单的解决方案。它也受到所有浏览器的支持
另外,正如韦斯所说,你可以定义法线,然后对第一个和最后一个应用不同的样式,虽然这不是一个完整的方法
tr th, tr td{
padding: 5px 0; /*I would combine the padding for top and bottom for a more condensed and semantically correct markup*/
border-bottom: 1px solid #c4c4c4;
}
tr:first-child th, tr:first-child td{
padding:top: 0;
}
tr:last-child th, tr:last-child td{
border-bottom:0;
padding-bottom:0
答案 3 :(得分:1)
tr:first-child ~ tr:not(:last-child) td,
tr:first-child ~ tr:not(:last-child) th
{background:red;}
这是你可以用兄弟姐妹组合器存档的最好的,但是它不适用于旧的浏览器,因为:不是也可能也是〜