如何在 Less 中使用字符串插入映射值
How to interpolate a map value with string in Less
我的 LESS 映射逻辑似乎无法正常工作。我已经关注了 documentation 的映射。
@screen-size-min: {
mobile-small: 320px;
mobile-large: 480px;
tablet-small: 600px;
tablet-large: 768px;
desktop-small: 992px;
desktop-large: 1280px;
}
@min: min-width;
@desktop-small-min: ~"only screen and (@{min}: @screen-size-min[desktop-small])";
p {
color: blue;
@media @desktop-small-min {
color: red;
}
}
我希望此代码可以编译为 css,但媒体查询似乎无法编译。
p {
color: blue;
}
@media only screen and (min-width: 992px) {
p {
color: red;
}
}
我尝试在 lesstester 上测试它,但它目前只支持 LESS 2.7。地图是 LESS 3.5 中的新功能
没有编译错误。我哪里错了?
这似乎有效:
@screen-size-min: {
mobile-small: 320px;
mobile-large: 480px;
tablet-small: 600px;
tablet-large: 768px;
desktop-small: 992px;
desktop-large: 1280px;
}
@min: min-width;
@mysize: @screen-size-min[desktop-small];
@desktop-small-min: ~"only screen and (@{min}: @{mysize})";
p {
color: blue;
@media @desktop-small-min {
color: red;
}
}
它产生了预期的结果。试一试here
发生这种情况是因为 key[value]
实际上不是一个变量,变量是映射 @screen-size-min
,因此您不能利用变量插值。一种解决方案是简单地将 KVP 与字符串的其余部分连接起来:
@desktop-small-min: ~"only screen and (@{min}:" @screen-size-min[desktop-small] ~ ")";
这消除了对创建另一个变量的任何依赖,只是为了对其进行插值
此外,根据他们的文档,引入了地图:
Released v3.5.0
而您测试的在线测试仪只支持2.7
Codepen 通常支持他们的最新版本。这是一个匿名笔演示:
https://codepen.io/anon/pen/zeXmev
如果你点击 'CSS (Less)' header 旁边的小向下箭头,你可以 select 'View Compiled CSS' 它会显示 LESS ->
CSS输出
我的 LESS 映射逻辑似乎无法正常工作。我已经关注了 documentation 的映射。
@screen-size-min: {
mobile-small: 320px;
mobile-large: 480px;
tablet-small: 600px;
tablet-large: 768px;
desktop-small: 992px;
desktop-large: 1280px;
}
@min: min-width;
@desktop-small-min: ~"only screen and (@{min}: @screen-size-min[desktop-small])";
p {
color: blue;
@media @desktop-small-min {
color: red;
}
}
我希望此代码可以编译为 css,但媒体查询似乎无法编译。
p {
color: blue;
}
@media only screen and (min-width: 992px) {
p {
color: red;
}
}
我尝试在 lesstester 上测试它,但它目前只支持 LESS 2.7。地图是 LESS 3.5 中的新功能
没有编译错误。我哪里错了?
这似乎有效:
@screen-size-min: {
mobile-small: 320px;
mobile-large: 480px;
tablet-small: 600px;
tablet-large: 768px;
desktop-small: 992px;
desktop-large: 1280px;
}
@min: min-width;
@mysize: @screen-size-min[desktop-small];
@desktop-small-min: ~"only screen and (@{min}: @{mysize})";
p {
color: blue;
@media @desktop-small-min {
color: red;
}
}
它产生了预期的结果。试一试here
发生这种情况是因为 key[value]
实际上不是一个变量,变量是映射 @screen-size-min
,因此您不能利用变量插值。一种解决方案是简单地将 KVP 与字符串的其余部分连接起来:
@desktop-small-min: ~"only screen and (@{min}:" @screen-size-min[desktop-small] ~ ")";
这消除了对创建另一个变量的任何依赖,只是为了对其进行插值
此外,根据他们的文档,引入了地图:
Released v3.5.0
而您测试的在线测试仪只支持2.7
Codepen 通常支持他们的最新版本。这是一个匿名笔演示:
https://codepen.io/anon/pen/zeXmev
如果你点击 'CSS (Less)' header 旁边的小向下箭头,你可以 select 'View Compiled CSS' 它会显示 LESS ->
CSS输出