【问题标题】:sass mixins and css custom propertiessass mixins 和 css 自定义属性
【发布时间】:2017-08-01 21:58:12
【问题描述】:

大家好!

我尝试为 css 自定义属性构建一个 sass mixin,以使工作更容易一些。

我的尝试看起来像这样:

@mixin mixin($value) {
  background: unquote('$')#{$value};
  background: var(--#{$value}, unquote('$')#{$value});
}

输出如下所示:

.example {
  background: $value;
  background: var(--colour, $value);
}

但是 sass 不会将我的 $value 转换为实际的东西。 $value 部分最终出现在我的最终 css 文件中,而这不起作用。

我试图在网上找到一个解决方案,但我要么愚蠢地找到它,要么没有。这里有人知道我做错了什么吗?

【问题讨论】:

  • 你期望的 CSS 输出是什么?
  • 类似 background: $abcdef; 但我得到的是 background: $value; 因为 sass 似乎没有将变量转换为它的给定值。
  • 对不起,我不明白,如果你在$value变量中传递#abcdef,你的代码会得到#abcdef,你为什么要使用插值?
  • 这正是没有发生的事情。我没有得到#abcdef。它只是在我的 css 中吐出像 $value 这样的变量。我正在使用插值,否则我也会在 css 中得到空格。 (如background: var(-- value, $ value);

标签: css sass


【解决方案1】:

我用这个例子试试你的代码:

@mixin mixin($value) {
  background: unquote('$')#{$value};
  background: var(--#{$value}, unquote('$')#{$value});
}

.example {
  @include mixin(colour)
}

它有效。 输出是:

.example {
  background: $colour;
  background: var(--colour, $colour);
}

是你想要的吗?抱歉,我没有添加评论的授权,所以我创建了这个答案。

编辑:您可以像这样创建不同的 mixin:

@mixin mixin($value, $color) {
      background: $color;
      background: var(--#{$value}, $color);
    }

这可以帮助您解决问题吗?

【讨论】:

  • 问题在于它不会用我的 css 输出中的实际颜色替换变量。我只是得到background: $colour; 而不是background: #abcdef;
  • 对不起,我的误解。几天前我遇到了同样的问题,但我发现 Sass 不允许动态创建或访问变量。
  • 这意味着,如果我做对了,就没有办法构建这样的 mixin?嗯。。好吧。不管怎么说,多谢拉! (:
  • 我使用 mixin 是为了不要在 scss 文件中重复相同的代码块,或者如果代码块取决于某些输入字段。我希望我对你有用:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 2019-05-30
  • 1970-01-01
相关资源
最近更新 更多