CSS兄弟悬停状态相互影响

标签 css less

我想仅使用 CSS/LESS 解决表格中的以下情况:

在行的悬停上指示关闭图标上的交互

悬停在完成图标上表示在完成图标上进行交互

这个例子被简化来解释我遇到的问题。

.row:hover {
  .close {
    color: red;
  }
}
.doneCell:hover {
  .done:hover {
    color: red;
  }
  & ~ .closeCell {
      .close {
        color: black;
      }
  }
}

我目前所拥有的并没有完全按照我的意愿行事,当单元格悬停时,它会删除关闭图标上的交互悬停,因此当 doneCell 悬停时,它看起来没有交互。如果 .done:hover 存在,我只希望应用黑色。

我正在查看 :not 来尝试用一些疯狂的东西来解决问题,比如:

.closeCell:not(~ .doneCell:hover .done:not(&:hover)) {
    .close {
      color: black;
    }
}

但是我尝试使用的 :not 的任何变体都无法达到我的需要。我希望有人能看到我缺少的一些简单的东西。

谢谢

这是我目前的尝试:

.row:hover .close {
  color: red;
}
.doneCell:hover .done:hover {
  color: red;
}
.doneCell:hover ~ .closeCell .close {
  color: black;
}
.close,
.done {
  background-color: pink;
}
table {
  max-width: 400px;
}
table,
th,
td {
  border: 1px solid black;
  border-collapse: collapse;
}
th,
td {
  padding: 5px;
  text-align: left;
<script src="https://cdnjs.cloudflare.com/ajax/libs/less.js/3.0.0/less.min.js"></script>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
      rel="stylesheet">
<table style="width:100%">
  <tbody>
    <tr class="row">
      <td class="cell doneCell">
        <i class="material-icons done">done</i>
      </td>
      <td class="cell closeCell">
        <i class="material-icons close">close</i>
      </td>
      <td>Some data</td>
    </tr>
   </tbody>
</table>

https://codepen.io/sheogora/pen/VXeJwv

最佳答案

为第一部分使用合适的选择器:

.row > td.closeCell:hover {
  .close {
    color: red;
  }
}

并添加另一种情况:

.row > td.doneCell:hover {
  .done {
    color: red;
  }
}

现在,当它们自己的单元格悬停时,它们都被涂成红色。

关于CSS兄弟悬停状态相互影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49276790/

相关文章:

html - CSS 未在实时网站上显示

css - 在语义 UI 中增加平板电脑容器大小并重建它

css - 更少的CSS类层次结构

css - LESS 和特异性

css - Jasny-Bootstrap 在 lessfile 中使用 ".offcanvas-sm"

html - Div类定位

html - 电子邮件模板的跨客户端 float

jquery - 关于 Jquery 背景图像淡入淡出的问题

html - 嵌套列表中的 IE 7 错误 div 正在破坏布局

css - LESS 到 CSS 的转换