【问题标题】:Is it possible with SCSS (or SASS) add same class to several elements, but with different styles for each? [duplicate]SCSS(或SASS)是否可以为多个元素添加相同的类,但每个元素的样式不同? [复制]
【发布时间】:2014-04-27 11:15:40
【问题描述】:

这就是我想要的:

来自这样的事情(这段代码不起作用,它会抛出一个错误):

.ia-loading {
  select.& {
    border: 2px solid blue;
  }
  input.& {
    border: 2px solid orange;
  }
}

得到这个:

select.ia-loading { border: 2px solid blue; }
input.ia-loading { border: 2px solid orange; }

我尝试了几种组合,但都没有奏效:

这个:

.ia-loading {
  select & {
    border: 2px solid blue;
  }
  input & {
    border: 2px solid orange;
  }
}

生成这个 css,这不是我想要的:

select .ia-loading { border: 2px solid blue; }
input .ia-loading { border: 2px solid orange; }

这个:

.ia-loading {
  select& {
    border: 2px solid blue;
  }
  input&  {
    border: 2px solid orange;
  }
}

抛出此错误:

"&" may only be used at the beginning of a compound selector.

非常感谢。

【问题讨论】:

  • 你有什么问题?此代码不正确?
  • 是的@Parhum,是的,控制台显示此错误:error styles.scss (Line 11 of _forms.scss: Invalid CSS after " select.": expected class name, was "& {")

标签: sass


【解决方案1】:

您可以像这样为此制作小型 mixin:

@mixin test($elem) {
  #{$elem}.test {
    @content;
  }
}

如果你真的想在你的类中使用它,你可以从 Sass 3.3 开始使用 @at-root 指令(否则你只是把它放在你的主类之外)

.test {
  margin: 20px;
  @at-root {
    @include test(select) {
      border: 1px solid red;
    }
    @include test(input) {
      border: 1px solid blue;
    }
  }
}

DEMO

【讨论】:

    【解决方案2】:

    您在输入和选择后面使用“&”的原因是什么? 它仅在您想要进行特定“操作”时使用,例如悬停、活动等。

    例子

    .ia-loading
       &:hover
          color: #FFF
    

    同样在 Sass 中你不能使用括号,它在 scss 中使用

    我也不认为你可以按照你想要的方式去做。应该这样做:

    .ia-loading
        border: 2px solid
    select
       .ia-loading
          border-color: blue
    input
       .ia-loading
          border-color: orange
    

    【讨论】:

    • 抱歉@Sharpless512,我从未使用过 SASS 旧语法,所以 SASS 对我来说代表 SCSS。我已经编辑了问题以明确提及 SCSS。关于你的其余答案,“这不可能”对我来说是一个正确的答案。你确定不可能吗?非常感谢。
    • 如果你的代码是 Sass,它会理解有一个 .ia-loading 类的 div 并且他们有一个子选择或输入。这不是你想要的。该类应该“附加”到输入和选择,而不是相反。所以不,为了你的目的,这是不可能的。理解 sass 和 scss 的一个好工具是:css2sass.heroku.com
    猜你喜欢
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 2018-09-29
    相关资源
    最近更新 更多