Stylus 媒体(@media)

  • 定义和使用

    @media 工作原理和在常规 CSS 中一样,但是,要使用 Stylus 的块状符号。
    @media print
      #header
      #footer
        display none
    
    生成为:
    @media print {
      #header,
      #footer {
        display: none;
      }
    }
    
  • 媒体查询

    媒体查询也可以嵌套,并且将被扩展以包装使用它们的上下文。 例如:
    .widget
      padding 10px
    
      @media screen and (min-width: 600px)
        padding 20px
    
    生成为:
    .widget {
      padding: 10px;
    }
    
    @media screen and (min-width: 600px) {
      .widget {
        padding: 20px;
      }
    }
    
    您可以将 @medias 嵌套在一起,然后将它们组合成一个:
    @media (max-width: 500px)
      .foo
        color: #000
    
      @media (min-width: 100px), (min-height: 200px)
        .foo
          color: #100
    
    生成为:
    @media (max-width: 500px) {
      .foo {
        color: #000;
      }
    }
    @media (max-width: 500px) and (min-width: 100px), (max-width: 500px) and (min-height: 200px) {
      .foo {
        color: #100;
      }
    }
    
  • 插值和变量

    您可以在媒体查询中同时使用插值和变量,因此可以执行以下操作:
    foo = 'width'
      bar = 30em
      @media (max-{foo}: bar)
        body
          color #fff
    
    生成为:
    @media (max-width: 30em) {
      body {
        color: #fff;
      }
    }
    
    在MQ内部也可以使用表达式:
    .foo
      for i in 1..4
        @media (min-width: 2**(i+7)px)
          width: 100px*i
    
    生成为:
    @media (max-width: 30em) {
      body {
        color: #fff;
      }
    }
    @media (min-width: 256px) {
      .foo {
        width: 100px;
      }
    }
    @media (min-width: 512px) {
      .foo {
        width: 200px;
      }
    }
    @media (min-width: 1024px) {
      .foo {
        width: 300px;
      }
    }
    @media (min-width: 2048px) {
      .foo {
        width: 400px;
      }
    }