css - 将@media 查询作为与 LESS 的混合

标签 css twitter-bootstrap less

使用 LESS 的混合非常简单:

.some-rules() {
  /* some rules */
}
.some-class {
  .some-rules;
}

但是,假设我在媒体查询中有一个规则集,例如:

@media (min-width: 800px) {
  .my_ruleset {
    /* more rules */
  }
}

如何将这样的规则集包含在混合中?

我的动机是我正在使用 Bootstrap .我试图避免用它的选择器在语义上污染我的标记,而是宁愿将它的规则集合并为 mixins。对于上面的第一个示例,这很简单,但我不确定如何合并 @media 选择器。


编辑

具体来说,here is a summary of the code我正在尝试使用作为混合:

.container {
  .container-fixed();
}

// ...

@media (min-width: @screen-sm) {
  .container {
    max-width: @container-sm;
  }

  // ...
}

@media (min-width: @screen-md) {
  .container {
    max-width: @container-md;
  }

  // ...
}


@media (min-width: @screen-lg-min) {
  .container {
    max-width: @container-lg;
  }

  // ...
}

最佳答案

只需添加:-

.my_ruleset {
    /* more rules */
  }

@media (min-width: 800px) {
  .my_ruleset;
}

例如,如果您想为此添加参数,那么:-

.my_ruleset(@myMargin:5px;) {
    margin:@myMargin;
  }

@media (min-width: 800px) {
  .my_ruleset(10px);
  /* New Rules*/
}
.
.
/* And so On */

更新:-

如果你想以动态形式调整它,将整个媒体查询放入 mixin 中并使用它......

.container(
    @minSize:768px; 
    @maxSize:979px; 
    @myColor:green;
        /* So on */
) {
    @media (min-width: @minSize) and (max-width: @maxSize) {
      .my_ruleset {
            background-color:@myColor;
      }
      /* New Rules*/
    }
}

.container(0px,480px,black);
.container(481px,767px,blue);
.container(768px,979px,pink);
.container(980px,1200px,white);
.container(1700px,2200px,red);

关于css - 将@media 查询作为与 LESS 的混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18563604/

相关文章:

css - 响应文本的计算是无效属性

css - 相对于彼此放置多个嵌套div

html - 需要在点击移动设备几秒钟后隐藏工具提示

html - 带有过渡和缩放的 Internet Explorer 中的图像闪烁

html - 在正确的位置减少 CSS 注释

css - 基于 variables.less 变量值覆盖 bootstrap css

css - 为什么具有z-index值的元素不能覆盖其子级?

css - Bootstrap 在输入文本框旁边放置星号

asp.net-mvc-4 - ASP.NET MVC4 应用程序无法在生产环境中编译 Bootstrap.LESS 而在开发环境中工作

css - Grails 中的 Twitter Bootstrap 插件有错误