Can I update SASS variables in Media Queries?

前端 未结 3 2062
没有蜡笔的小新
没有蜡笔的小新 2020-12-19 17:40

Consider the following SASS code. I want to make sure that if the screen is above 1250px then the margin-top should be 750px and then

3条回答
  •  半阙折子戏
    2020-12-19 18:18

    I agree with the accepted answer that it's better to use maps in this case but I want to point out a couple of things.

    Variables can actually be updated inside of media queries. The problem is that a variable defined outside of a block is a global variable while one defined within a block is a local variable. You can let sass treat a variable within a block as a global variable using the !global keyword.

    $pageTemplateMargin:750px;
    
    @media screen and (max-width:1250px){
        $pageTemplateMargin: 550px !global;
    }
    
    .page-template {
      margin-top: $pageTemplateMargin //will use 550px instead of 750px
    }
    

    Just want to clarify that it is possible albeit it is not appropriate in this use case.

    I also suggest using a loop for your code which will prove helpful especially if you add more screen widths and margin properties so you don't need to further write more media queries.

    $breakpoints: (
      1200px: 10px,
      1000px: 15px,
      800px: 20px,
    );
    
    @each $width, $margin in $breakpoints {
      @media screen and (max-width: $width) {
        .element {
          margin-top: $margin;
        }
      }
    }
    

    Hope this helps.

提交回复
热议问题