【发布时间】:2015-05-06 10:53:49
【问题描述】:
如果不是在媒体查询中定义 css 选择器(示例 1),而是在 css 选择器中定义媒体查询(示例 2),是否会出现任何问题(性能是我的主要关注点)。
示例 1 - 媒体查询中的 css 选择器
@media (min-width: 600px) {
.foo { ... }
.bar { ... }
.hello { ... }
.world{ ... }
}
@media (min-width: 1000px) {
.foo { ... }
.bar { ... }
.hello { ... }
.world{ ... }
}
@media (min-width: 1500px) {
.foo { ... }
.bar { ... }
.hello { ... }
.world{ ... }
}
示例 2 - css 选择器中的媒体查询
.foo {
@media (min-width: 600px) { ... }
@media (min-width: 1000px) { ... }
@media (min-width: 1500px) { ... }
}
.bar {
@media (min-width: 600px) { ... }
@media (min-width: 1000px) { ... }
@media (min-width: 1500px) { ... }
}
.hello {
@media (min-width: 600px) { ... }
@media (min-width: 1000px) { ... }
@media (min-width: 1500px) { ... }
}
.world{
@media (min-width: 600px) { ... }
@media (min-width: 1000px) { ... }
@media (min-width: 1500px) { ... }
}
您可能想知道“为什么要这样做?”。 LESS 在跨内部媒体查询扩展类以及范围变量方面存在一些限制。
【问题讨论】:
-
在 LESS 编译或浏览器渲染方面的性能差异?后者取决于 CSS 的生成方式,因为样式规则可能出现在
@media规则中,但不会反过来。 -
第二个示例如何工作? “选择器”是指mixins 吗?在任何规则之外调用,这些混入应该可以工作,但你的问题中写的出现并没有 afaik。您应该添加像
.foo() { @media {} @media{} @media{} }这样的括号,这样这种情况就不会输出为(无效的)CSS,而只是定义为一个mixin,然后您可以调用这个mixin,它会输出3个媒体规则,每个规则都有规则跨度> -
在我的测试中,似乎不支持这种定义媒体查询的方式。
-
在 Firefox 中使用 ID 选择器时,使用这种传统支持似乎不起作用:@media (min-width: 1500px) { #foo { ... } }
标签: css less media-queries