如何将表达式传递给使用 Sass 变量的 calc() mixin

Posted

技术标签:

【中文标题】如何将表达式传递给使用 Sass 变量的 calc() mixin【英文标题】:How can I pass an expression to a calc() mixin that uses Sass variables 【发布时间】:2013-05-15 16:30:31 【问题描述】:

我设置了一个 mixin 来进行跨浏览器计算,

@mixin calc($property, $expression...)  
  #$property: -moz-calc(#$expression); 
  #$property: -o-calc(#$expression); 
  #$property: -webkit-calc(#$expression); 
  #$property: calc(#$expression); 
 

我也有一个变量。

$line: 12px;

我希望能够在其中使用一个变量。

@include calc(width, "30% - ( $line * 2) ) ");

但我不确定这是否是最好的方法。

【问题讨论】:

没有理由为 Opera 添加前缀,因为 Opera 根本不支持 calc()。当他们最终支持它时,完全没有理由期望它被添加前缀。 可能重复访问***.com/questions/40739695/… 这能回答你的问题吗? Sass Variable in CSS calc() function 【参考方案1】:

您需要对传递给 mixin 的值使用字符串插值:

.foo 
  @include calc(width, #"30% -  #$line * 2");

输出:

.foo 
  width: -moz-calc(30% - 24px);
  width: -o-calc(30% - 24px);
  width: -webkit-calc(30% - 24px);
  width: calc(30% - 24px);

【讨论】:

以上是关于如何将表达式传递给使用 Sass 变量的 calc() mixin的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个 calc mixin 作为表达式传递来生成标签?

使用 Grunt 将变量传递给 SASS

解决在sass中使用calc不能包含变量的问题。

将字符串传递给 sass mixin 中的变量

如何在 calc() 中使用多个变量 Stylus?

scss calc函数中的Sass变量