我正在使用SASS为'tbody
'元素中的行创建一个边框,但是我无法在一个案例中删除它。
例如,
在第一个'tbody
'元素中,tbody
有两个子类compDetails-row
,我在那里创建一个边框。
然而,在第二个tbody
元素中,正如你所看到的,只有一个子类compDetails-row
,我不想应用边框,因此,我尝试使用only-of-type
选择器,但似乎不起作用。
我该怎么补救?
<!-- language: lang-css -->
.compDetails-row {
position: relative;
&:before {
content: '';
display: inline-block;
height: 100%;
border-left: 1px solid grey;
float: right;
position: absolute;
right: 20%;
}
&.compDetails-row:only-of-type {
&:before {
border: none;
}
}
}
<!-- language: lang-html -->
<tbody>
<tr class="compDetails-row">
<td>Row1 Column1</td>
<td>Row1 Column2</td>
<td>Row1 Column3</td>
</tr>
<tr class="compDetails-row">
<td>Row2 Column1</td>
<td>Row2 Column2</td>
<td>Row2 Column3</td>
</tr>
<tr>
<td>View Details</td>
</tr>
</tbody>
<tbody>
<tr class="compDetails-row">
<td>Row1 Column1</td>
<td>Row1 Column2</td>
<td>Row1 Column3</td>
</tr>
<tr>
<td>View Details</td>
</tr>
</tbody>
3条答案
按热度按时间svujldwt1#
不幸的是,
:first-of-type
只检查标签名(在本例中为tr
),并且目前没有:first-of-class
伪类。理想情况下,如果有多个.compDetails-row
,您可以在运行时修改表标记,如果没有,您最好使用一些JavaScript。你可以访问CSS/SASS,难道你不能访问JavaScript吗?这个问题只针对CSS,但正如我提到的,如果不修改标记,它实际上是不可行的。
如果您能够访问JavaScript文件,或者在网站的页脚添加JavaScript标记,这里有一个简单的纯JavaScript方法,如果同一个
tbody
中有多个类,则将multiple
添加到.compDetails-row
。h79rfbju2#
使用the
:has()
pseudo-class、which is currently a working draft and behind a flag in Firefox,这只能通过CSS实现。JSFiddle
nvbavucw3#
我假设它有一个表作为父级,因此可以使用伪选择器
first-of-type
,或者如果表没有<thead>
,则使用first-child