【发布时间】:2014-02-21 11:19:51
【问题描述】:
这是我第一次使用 LESS 构建网站,遇到了以下代码最能描述的问题:
@section-row-padding-size-xs: 30px;
@section-row-padding-size-sm: 50px;
@section-row-padding-size-md: 100px;
@section-row-padding-size-lg: 140px;
.section-row-padding( @size ) {
@padding-size: ~"@{section-row-padding-size-@{size}}";
.section-row {
padding: @padding-size 0;
&.quarter-padding-top {
padding-top: @padding-size * 0.25;
}
&.quarter-padding-bottom {
padding-bottom: @padding-size * 0.25;
}
&.half-padding-top {
padding-top: @padding-size * 0.5;
}
&.half-padding-bottom {
padding-bottom: @padding-size * 0.5;
}
&.three-quarters-padding-top {
padding-top: @padding-size * 0.75;
}
&.three-quarters-padding-bottom {
padding-bottom: @padding-size * 0.75;
}
}
}
此代码所做的只是输出正确的填充大小以用于媒体查询。
使用 lg、md、sm 和 xs 参数对 .section-row-padding() 的任何调用都应输出适当的填充大小。
问题是由@padding-size 不解释为像素单位而是字符串引起的。我尝试了几种插值方法,但没有一个有效。
isnumber( @padding-size ) 输出假,istring( @padding-size ) 输出真。
@padding-size + 0px 也不起作用,它显示 Operation on an invalid type。
我有什么遗漏的吗?
感谢您的宝贵时间和回答!
【问题讨论】:
-
padding: @padding-size 0;确实有效,但任何数学运算都失败了。 -
为什么不直接把变量传给mixin呢? .section-row-padding(@section-row-padding-size-xs);
-
这是真的!愚蠢的我,我正在使用另一个 mixins 来定义从 h1 到 h3 的标题大小,这种方法更方便,但我没有想到更简单的方法。但是,我仍然想知道如何解决上面的问题:)
标签: variables less interpolation units-of-measurement