【问题标题】:How do I apply :hover to multiple bem statements in sass?如何将 :hover 应用于 sass 中的多个 bem 语句?
【发布时间】:2019-06-04 14:48:35
【问题描述】:

我有这个:

.magic-sparkles {

    &-red {
        background: red;
    }

    &-blue {
        background: blue;
    }

    &-green {
        background: green;
    }
}

但我想更改它,使其仅适用于悬停。

编译的最终结果是:

.magic-sparkles-red:hover { background: red;}
.magic-sparkles-blue:hover { background: blue;}
.magic-sparkles-green:hover { background: green;}

将第一行更改为.magic-sparkles:hover { 不起作用。我是否需要简单地将:hover 添加到每个嵌套项,或者有没有办法同时将其应用于所有嵌套项?

【问题讨论】:

  • 只是 &:hover?应该是这样的
  • 我需要简单地将 :hover 添加到每个嵌套项吗? - 是的。或者你可以创建你的 scss 函数,但是当只有 3 个项目时,它没有多大意义

标签: css sass bem


【解决方案1】:

这将起作用:

:hover.magic-sparkles {
    &-red {
        background: red;
    }

    &-blue {
        background: blue;
    }

    &-green {
        background: green;
    }
}

【讨论】:

  • 聪明,我没想到!
  • 这太不可思议了。写 CSS 10 多年了,从来没想过。
【解决方案2】:

html:

<div class="parent"></div>
<div class="parent red"></div>
<div class="parent blue"></div>
<div class="parent green"></div>

scss:

.parent{
  width: 50px;
  height: 50px;
  background-color: black;
  &.red{
    background-color: red;
  }
  &.blue{
    background-color: blue;
  }
  &.green{
    background-color: green;
  }
  &:hover{
    background-color: yellow;
  }
}

[我做了一支笔你怎么能做到这一点][1]

[1]: https://codepen.io/anon/pen/RmdzWE

是的,您可以对所有元素应用相同的悬停效果

【讨论】:

  • 如果你想在不同的元素上应用其他悬停效果,你需要进一步嵌套它们
  • 请在答案中包含代码。否则,当 CodePen 出现故障或此笔被删除时,此答案将失去所有价值。
猜你喜欢
  • 2016-03-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 1970-01-01
相关资源
最近更新 更多