我创建了一个Javascript表达式,根据我希望网格系统具有的一些所需折叠特性来评估列的宽度,但我的LESS代码给了我一个"语法错误"。这是我的代码:
.setColumnWidths(@maxcolumns, @num_cols, @min_resolution){
@media screen and(min-width: @min_resolution) {
.row {
.onecol {
width: ~ `Math.min(100%, (100% / {@num_cols}*Math.ceiling({@num_cols}*1/{@maxcolumns})))`;
}
.twocol {
~ ` Math.min(100%, (100% / {@num_cols}*Math.ceiling({@num_cols}*2/{@maxcolumns}))) `;
}
.threecol {
width: ~ `Math.min(100%, (100% / {@num_cols}*Math.ceiling({@num_cols}*3/{@maxcolumns})))`;
}
.fourcol {
width: ~ `Math.min(100%, (100% / {@num_cols}*Math.ceiling({@num_cols}*3/{@maxcolumns})))`;
}
.fivecol {
width: ~ `Math.min(100%, (100% / {@num_cols}*Math.ceiling({@num_cols}*5/{@maxcolumns})))`;
}
.sixcol {
width: ~ `Math.min(100%, (100% / {@num_cols}*Math.ceiling({@num_cols}*6/{@maxcolumns})))`;
}
.sevencol {
width: ~ `Math.min(100%, (100% / {@num_cols}*Math.ceiling({@num_cols}*7/{@maxcolumns})))`;
}
.eightcol {
width: ~ `Math.min(100%, (100% / {@num_cols}*Math.ceiling({@num_cols}*8/{@maxcolumns})))`;
}
.ninecol {
width: ~ `Math.min(100%, (100% / {@num_cols}*Math.ceiling({@num_cols}*9/{@maxcolumns})))`;
}
.tencol {
width: ~ `Math.min(100%, (100% / {@num_cols}*Math.ceiling({@num_cols}*10/{@maxcolumns})))`;
}
.elevencol {
width: ~ `Math.min(100%, (100% / {@num_cols}*Math.ceiling({@num_cols}*11/{@maxcolumns})))`;
}
.twelvecol {
width: ~ `Math.min(100%, (100% / {@num_cols}*Math.ceiling({@num_cols}*12/{@maxcolumns})))`;
}
}
}
}
上面的代码将允许"折叠",在调用mixin:时
.setColumnWidths(12, 4, 420px);
在这里,我们声明列的数量应该是4,最大列的数量是12,并且当屏幕宽度是420px时应该发生这种情况。
为什么会失败,否则我如何使用javascript评估这些值?
这是一个语法错误。在JavaScript表达式中引用变量的正确语法是@{var_name}
。您发布的代码中有{@var_name}
。