目前,我使用LESS作为我的主要CSS预处理器。 我有(我相信很多人都有这样的需要)在定义变量@media
查询,如:
@media screen and (max-width: 479px) {
myVar: 10px;
}
@media screen and (min-width: 480px) and (max-width: 767px) {
myVar: 20px;
}
@media screen and (min-width: 768px) {
myVar: 30px;
}
.myElement {
padding: @myVar;
}
这不会减少工作的,因为编译性质( @myVar
是每一个特定的范围内定义的@media
而已,但不是全球)。 即使我定义@myVar
媒体查询之前在全球,它不更新,根据媒体查询和.myElement
获取初始值,不管是什么。
所以,问题是,是否有可能在任何其他CSS预处理器来实现这一点,否则我们注定要重写.myElement
每个媒体查询中? 不是一个问题在这个最简单的例子,但在实际的项目,这可能节省大量的时间和复制/粘贴。
编辑:不是一个解决办法,但我的特别项目的解决方法 :
- 上设置的字体大小
<html>
到基字体大小 -
myVar
LESS变量定义在rem
代替px
作为碱字体大小的衍生物 - 使用
@media
查询调整基本字体,大小不同的媒体。 - 可选择使用REM单元填充工具的浏览器,那还不支持
rem
( http://caniuse.com/#search=rem )。 这不会在IE 8及以下的工作,但不是因为缺乏支持rem
- 它不支持媒体查询 。 所以IE8及以下获得全尺寸媒体查询,免费样式表反正。
代码片段:
@myVar: .77rem; // roughly 10px, 20px and 30px respectively
html { font-size: 13px }
@media screen and (min-width: 480px) and (max-width: 767px) {
html { font-size: 26px }
}
@media screen and (min-width: 768px) {
html { font-size: 39px }
}
.myElement {
padding: @myVar;
}
这里是一个JSBin与混合不同的字体大小的元素具有不同测量块更广泛的例子。
方便灵活的满足我的需要。 希望能对别人有帮助的。