从子 scss 调用父

Call parent from child scss

我有<td>,里面还有<a>

例如

<td>
     <a>test</a>
</td>
<td>

</td>

起初<td>只有<a>。其余没有<a>我的要求是悬停时突出显示 <td> 标记 <a>

所以只有第一个 td 会在悬停时改变突出显示。

我的代码=>

td{
      
      $this:&;

      &:hover {
        a {          
          #{$this} & {
            background-color: blue;
          }
        }
      }
    } 

但此代码无效。我错过了什么?

由于 CSS 中没有父选择器,您有 2 个可行的选择。

  1. 在包含锚元素的 TD 上使用 class 名称
  2. 使用 link 的 &::after 伪元素应用样式

选项一更加灵活,提供了更多可能性。

SCSS代码:

$col-blue: blue;
$col-yellow: yellow;

td {
  position: relative;
  padding: 10px;
  border: 1px solid $col-blue;

  // Option 1 - uses td for hover and pseudo element for styling
  &>a {
    &::after {
      content: "";
      position: absolute;
      display: none;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      background: $col-blue;
      z-index: -1;
    }
  }

  &:hover {
    &>a {
      color: $col-yellow;

      &::after {
        display: block;
      }
    }
  }
}

// Option 2 - apply class name to TD with link
.td-with-link {
  &:hover {
    color: $col-yellow;
    background: $col-blue;
  }
}

我设置了一个 JSFiddle 演示:https://jsfiddle.net/robertp/409un7hf/