CSS/SCSS 媒体查询或类

Posted

技术标签:

【中文标题】CSS/SCSS 媒体查询或类【英文标题】:CSS/SCSS media query or class 【发布时间】:2017-03-13 08:11:21 【问题描述】:

我需要使用媒体查询和类运行相同的样式。 例如,当屏幕小于 500 像素或具有 .active 类时,我需要设置 200 像素。 如何以聪明的方式做到这一点?没有复制/粘贴代码?

不工作:

@media(max-width: 500px), .active 
      width: 200px;
    

【问题讨论】:

【参考方案1】:

在 css 中,, 用于分组,当相同的规则适用于多个选择器时。

但是,media queries 不是选择器。它们由一个媒体类型和零个或多个表达式组成,用于检查particular media features 的条件。因此,, 在这种情况下将不起作用。

如果你想保持干燥,你可以试试他们的 mixin 功能。

例如

@mixin smallWidth() 
    width: 200px;


.elem 
    &.active 
        @include smallWidth;
    

    @media only screen and (max-width : 500px) 
        @include smallWidth;
    

【讨论】:

那是,问题是【参考方案2】:

混合是一个简单的解决方案,但它们在最终输出中复制了 CSS。更好的解决方案可能是完全反转逻辑。

在布尔代数中,德摩根定理指出A || B!(A && B) 相同。就您而言,这意味着以移动优先的方式考虑您的问题:

.elem 
  width: 200px;

  @media (min-width: 501px) 
    &:not(.active) 
      width: auto; // or whatever
    
  

【讨论】:

这就是我的想法。谢谢。【参考方案3】:

CSS 没有提供“当应用媒体查询或给定类时”的方式。

使用纯 CSS 你只能:

.active 
    width: 200px;


@media(max-width: 500px) 
      * 
          width: 200px;
      

使用 SASS,您可以使用 mixin,但对于这样的单个规则来说,它并不是很有效:

@mixin my-width 
    width: 200px;


.active 
    @include my-width;


@media(max-width: 500px) 
      * 
          @include my-width;
      

【讨论】:

【参考方案4】:

试试这个。

@media only screen and (max-width: 500px) 
    .active 
          width: 200px;
        
    

【讨论】:

您能解释一下“仅屏幕”的作用吗? :) 那是,问题是 @Nelson Tan,谢谢,但这不适用于我。我需要 OR 查询。现在只有在有 .active 类时才添加宽度。 @jogoe 检查此链接***.com/questions/8549529/…【参考方案5】:

你必须声明媒体和你的班级分开:

@media(max-width: 500px)  .active 
        width: 200px;
    

【讨论】:

那是,问题是

以上是关于CSS/SCSS 媒体查询或类的主要内容,如果未能解决你的问题,请参考以下文章

媒体查询适用于引导类,但不适用于我的 id 或类

媒体查询分组而不是匹配的多个分散的媒体查询

有多个媒体查询还是单个媒体查询更好

CSS媒体查询及其使用

媒体查询用法及常见媒体尺寸

CSS3媒体查询总结