相关疑难解决方法(0)

Stylus CSS媒体查询中的变量

我已经尝试了一切,但我无法让Stylus CSS预处理器在媒体查询中使用变量.

例如,这不起作用:

t = 1000px

@media screen and (max-width: t)
    html
        background blue
Run Code Online (Sandbox Code Playgroud)

有人知道怎么做吗?

css stylus

26
推荐指数
4
解决办法
9469
查看次数

CSS预处理器,可以在@media查询中定义变量

目前,我使用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;
}
Run Code Online (Sandbox Code Playgroud)

这在LESS中不起作用,因为编译性质(@myVar仅在每个特定范围内定义@media,但不是全局定义).即使我@myVar在媒体查询之前全局定义,它也不会根据媒体查询进行更新,.myElement无论如何都会获得初始值.

所以,问题是,是否有可能在任何其他CSS预处理器中实现这一点,或者我们注定要覆盖.myElement每个媒体查询中的内容?这个最简单的例子不是问题,但在实际项目中,这可以节省大量时间和复制/粘贴.

编辑: 不是解决方案,而是我的特定项目的解决方法:

  1. 将font-size设置<html>为基本字体大小
  2. myVar定义LESS变量rem而不是px基本字体大小的衍生
  3. 使用@media查询调整不同媒体的基本字体大小.
  4. 可选使用REM单元polyfill用于浏览器,但尚不支持rem(http://caniuse.com/#search=rem).这在IE 8及更低版本中不起作用,但不是因为缺乏支持rem- 它不支持媒体查询.所以IE8及以下版本无论如何都可以获得全尺寸无媒体查询样式表.

代码段: …

css sass less media-queries

11
推荐指数
3
解决办法
3197
查看次数

超出范围

理想情况下,我想这样做:

@w: 4px;

@media (max-width:900px) {
    @r: 3px; 
}
@media (min-width:900px) {
    @r: 5px; 
}

.myclass {
    border-radius: @w + @r;
}
Run Code Online (Sandbox Code Playgroud)

这不会编译,因为@r没有在我定义的范围中定义.myclass.显而易见的解决方案是.myclass@mediablocs 内定义或者在定义中复制@media查询.myclass.

但是,一旦你@r在许多课程中使用,这两个解决方案都很混乱,并涉及许多重复.

有干净的干燥溶液吗?

css dry less media-queries

2
推荐指数
1
解决办法
955
查看次数

标签 统计

css ×3

less ×2

media-queries ×2

dry ×1

sass ×1

stylus ×1