如何实现:css中的父选择器

时间:2015-08-07 05:42:59

标签: css

如下面的代码片段所示,我在td中有span元素。同样如CSS部分所述,我已经为DOM使用了悬停属性,其中class =" open"。 问题是我想让整个td元素在悬停时突出显示,而不仅仅是span元素。我想如果在css中有一些亲切的父选择器,但不幸的是它没有。 有没有办法得到理想的结果。

提前很多!!!!

<tr>                
    <td><span class="open">07</span></td>
    <td><span class="open">08</span></td>
    <td><span class="open">09</span></td>
    <td><span class="close">10</span></td>
    <td><span class="close">11</span></td>
</tr>

CSS:

.open:hover {
background-color: #42C0FB;
color: white;
cursor: pointer;
}

4 个答案:

答案 0 :(得分:1)

选项1,将范围设置为td宽度的100%,或者如果不希望这样,则选项2将改为定位td元素。

选项1
CSS:

.open:hover {
background-color: #42C0FB;
color: white;
cursor: pointer;
width: 100%;
}

选项2
HTML:

<tr>                
    <td class="open"><span>07</span></td>
    <td class="open"><span>08</span></td>
    <td class="open"><span>09</span></td>
    <td class="close"><span>10</span></td>
    <td class="close"><span>11</span></td>
</tr>

答案 1 :(得分:0)

简短回答:没有父选择器,你不能创建任何。

您的案例中的解决方案:

1)将span声明为inline-block并将大小设置为td-element的大小

2)在你的css规则中使用td而不是span元素

答案 2 :(得分:0)

.open {
display:inline-block;
}

答案 3 :(得分:0)

如果要在将元素悬停在其中时突出显示容器(在OP的示例中,将鼠标悬停在跨越内部时突出显示td),您可以使用标签和输入来完成此操作。

在表格之前放置一堆隐藏的输入,并将标签放在表格单元格中。然后,您可以定位整个单元格,因为输入在此之前,即使标签位于内部。

table {border:1px outset;}
td {border:1px inset; padding:1em;}
label {cursor:pointer; border:1px solid #ddd;}
input {display:none;}
#input07:hover ~ table td:first-child, 
#input08:hover ~ table td:nth-child(2), 
#input09:hover ~ table td:nth-child(3) {
  background-color: #42C0FB;
  color: white;
  cursor: pointer;
}
<input id="input07"><input id="input08"><input id="input09"><input id="input10"><input id="input11">
<table>
  <tr>
    <td><label for="input07" class="open">07</label></td>
    <td><label for="input08" class="open">08</label></td>
    <td><label for="input09" class="open">09</label></td>
    <td><label for="input10" class="close">10</label></td>
    <td><label for="input11" class="close">11</label></td>
  </tr>
</table>