Stylus:当一个元素有一个额外的类时,我怎样才能改变它的颜色?

Posted

技术标签:

【中文标题】Stylus:当一个元素有一个额外的类时,我怎样才能改变它的颜色?【英文标题】:Stylus: How can I change the color on an element when it has an additional class? 【发布时间】:2014-10-11 18:34:24 【问题描述】:

我们正在使用 icomoon,以便我们的图标是字体,我们可以轻松更改它们的颜色。但是,我在设置图标样式时遇到问题,因此默认颜色为lightgrey,并且当它具有primary 类时,其颜色为yelloworange。现在,我的样式表如下所示:

i
  &.icon-star.primary
    color yelloworange
  &.icon-star
    color lightgrey

这些样式中的每一个都可以独立工作。

但是,当我同时拥有它们时,所有图标都是lightgrey,而带有primary 类的图标不是yelloworange。 (我检查了元素,它们确实有正确的类名)。

任何帮助将不胜感激。谢谢!

【问题讨论】:

嗯,显而易见的答案是反转级联,如果有的话添加!重要 @Fabio: .icon-star.primary.icon-star 更具体,所以顺序无关紧要。 (而!important 并不是真正的解决方案。) @Fabio,我也有同样的想法,但扭转它们没有任何效果。我有一个使用 lightgrey 样式的另一个类的快速而肮脏的解决方案,但我很想知道是否有任何方法可以仅使用 primary 标记。 这感觉不对劲……那是 sass 语法吗?你能在css中发布sass编译成的内容吗?我认为这可能就是答案所在 【参考方案1】:

这些样式中的每一种都可以单独使用。

我对此表示怀疑,因为yelloworange isn’t a CSS colour。如果您查看 Stylus 的渲染 CSS,您会发现它也无法识别颜色(Stylus 会将其转换为十六进制表示)。

如果您确实将 yelloworange 定义为自定义值,请确保您仍然这样做!

【讨论】:

他正在通过 CSS 预处理器定义颜色名称 @Fabio:问题中是否提到过? 不,但很明显。无论如何,只是提到为什么他可以正确使用该代码,我并没有那么紧张。现在我看到了你的另一条评论,所以我可以看到你很开心,玩得开心,我出去了。 @Fabio 仍然应该在问题中添加或者至少应该添加一个标签。 “我出局”的补充也无助于您的陈述。但是让我们远离元数据。 @spinlock:我正在回答这个问题。如果它不适合你,你可以这么说(你仍然没有)。如果您定义了yelloworange,请注意问题中的内容,并提供我们可以用来重现该问题的最少代码量。我不确定从哪里得到了我在争论的印象。 Fabio 似乎被我赶走了,他指出他评论中建议的修复不应该产生影响(你已经确认),这几乎不是我的错。如果你对寻求帮助不感兴趣,我也可以随时离开。【参考方案2】:

我想出的解决方法是对lightgrey 星使用standard 类,对yelloworange 星使用primary 类。它看起来不像只向主要星星添加一个类那么优雅,但它确实有效。

    i
      &.icon-star.primary
        color yelloworange
      &.icon-star.standard
        color lightgrey

【讨论】:

以上是关于Stylus:当一个元素有一个额外的类时,我怎样才能改变它的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

为啥当我没有为我的 openGLWidget 创建额外的类时 glRotate 只工作一次?

仅当元素具有两个类时才应用 CSS 规则[重复]

当元素具有多个类时如何在 switch 语句中检查 className

仅当有两个类并共享相同的第一个类时才选择元素

当(当前)只有一个实现它的类时,您是不是应该创建一个接口?

Maven在模块中定义了额外的范围