你的问题是一个常见的误解。LESS 不处理@media
查询,浏览器在LESS 完成工作后才处理。LESS 只能创建浏览器要读取的 CSS 代码。因此,@media
对于 LESS 来说,它是“无意义的”,它就像任何其他选择器(.someClass div table
等)一样,它只处理@media
将要提供给浏览器的内容。
这意味着您需要将所有更改的代码放入@media
块中@media
。但是你也不想要一堆重复的代码。因此,请创建一个主 mixin 来设置您的@media
代码,然后从媒体查询中调用该 mixin:
.makeFooGroup(@w1, @w2) {
.foo {width: @w1}
.foo-2{width: @w2}
.bar{.foo}
.bar-2{.foo}
.bar-3{.foo-2}
}
@media (min-width: 1000px) {
.makeFooGroup(120px, 150px);
}
@media (max-width: 999px) {
.makeFooGroup(110px, 120px);
}
产生这个CSS:
@media (min-width: 1000px) {
.foo {width: 120px;}
.foo-2 {width: 150px;}
.bar {width: 120px;}
.bar-2 {width: 120px;}
.bar-3 {width: 150px;}
}
@media (max-width: 999px) {
.foo {width: 110px;}
.foo-2 {width: 120px;}
.bar {width: 110px;}
.bar-2 {width: 110px;}
.bar-3 {width: 120px;}
}
有关我在 LESS 上提供的@media
与此相关的更多信息,请参阅:
- CSS 预处理器,可以在 @media 查询中定义变量
- 媒体查询分组而不是匹配的多个分散的媒体查询