【发布时间】:2016-05-12 10:41:48
【问题描述】:
我正在尝试使用 LESS 动态生成一组可以帮助我编写更清晰的媒体查询代码的 mixin。到目前为止,在我对语言的有限了解中,我整理了如下代码:
@sizes: xxs, xs, sm, md, lg;
.mediaQueries(@iterator:1) when(@iterator <= length(@sizes)) {
//Extract name
@sizeName: extract(@sizes, @iterator);
//Attempt to build min-width query
.MQ-min-@{sizeName} (@content) {
@media (min-width: @screen-@{sizeName}) {
@content();
}
}
//Attempt to build max-width query
.MQ-max-@{sizeName} (@content) {
@media (max-width: @screen-@{sizeName}) {
@content();
}
}
.mediaQueries((@iterator + 1));
}
.mediaQueries();
我们的目标是拥有一组 mixin,让我可以轻松干净地为特定断点定义一些 CSS 属性,如下所示:
.generic-class {
background: black;
//Sizes @screen-sm and up
.MQ-min-sm({
background: transparent;
})
}
它不起作用。需要注意的是,我正在尝试将大小名称插入到变量名称中,然后将该变量的 px 值输出到 @media 查询中。这样的事情甚至可能吗?
否则我的编译器当前会在嵌套 mixin (.MQ-min-@{sizeName} (@content) {) 的开始处中断,并出现错误:
Potentially unhandled rejection [2] Missing closing ')' in file ../mixins.less line no. 43
我想要实现的目标是否可能?
【问题讨论】:
-
第43行的代码是什么?
-
第一个嵌套 mixin 的开始 -
.MQ-min-@{sizeName} (@content) { -
你有自动前缀吗?在谷歌搜索似乎是个问题。但是没有足够的信息。
-
不,您不能动态设置 mixin 的名称(这就是为什么
@content会出错)。您打算使用为 selectors 而不是 mixin 名称设计的选择器插值。 -
@Harry 为什么错误是
missing closing ')'?这不是很解释:(
标签: css less less-mixins