当我的选择器有伪类时,如何附加到类名?

时间:2016-03-11 13:59:35

标签: sass

所以我通过sass(s​​css)写我的CSS。我使用&符号(&)来定位孩子。但是,当我做某个元素的悬停状态时,我再也不能让孩子们了。有没有办法做到这一点?

要明确:我想按照他们的班级而不是他们的元素(例如:span)来定位孩子。

HTML:

<div class="container">
    <div class="container__inner">
       <p class="container__inner__paragraph">
       foo to the
       <span class="container__inner__paragraph__highlight">
       bar
      </span>
      </p>
    </div>
</div>

SCSS

.container{
  &__inner{
    &__paragraph{
      color: yellow;
      background: black;

      &:hover{
        background: rgba(0,0,0, .3);

        // This obviously works
        span{
          color: green;
        }

        // This obviously works too
        .container__inner__paragraph__higlight{
          color: green;
        }

        // This however doesn't work
        &__highlight{
          color: green;
        }
      }

      &__highlight{
        text-transform: uppercase;
        font-weight: 700;
      }
    }
  }
}

有希望解释我的斗争的代码笔:

http://codepen.io/anon/pen/GZqGPq

4 个答案:

答案 0 :(得分:3)

您可以尝试这种方式:

.container__inner__paragraph {
  &:hover &__highlight {
    background: red!important;
  }
}

但我不是百分百肯定你想要什么?

答案 1 :(得分:0)

你现在可以使用类名,你的代码是正确的,你只有一个拼写错误,你的scss中有.container__inner__paragraph__higlight但是正确的类名是.container__inner__paragraph__highlight < / p>

http://codepen.io/anon/pen/yOJEdE

答案 2 :(得分:0)

如果您需要在悬停在段落标记上时设置突出显示类的样式,请尝试此操作:

.highlight&amp; {color:blue;}

答案 3 :(得分:0)

感谢@ simey.me我找到了合适的解决方案。如果在&amp;:hover后面添加&符号(&amp; -mark),则可以以&符号方式定位子类。

恋人的Codepen! http://codepen.io/anon/pen/GZqGPq

scss:

.container{
  &__inner{
    &__paragraph{
      color: yellow;
      background: black;
      display: inline-block;
      padding: 4rem;

      &:hover &{
        &__highlight{
          color: green;  
        }
      }

      &__highlight{
        text-transform: uppercase;
        font-weight: 700;
      }
    }
  }
}