scss错误应为媒体查询

scss错误应为媒体查询,css,sass,Css,Sass,我在做媒体查询的scss混音 @mixin breakpoints($min-width, $max-width, $media-type: false) { @if $media-type == true { @media $media-type and (min-width: $min-width) and (max-width: $max-width) { @content; } } @else { @media all and (min-wid

我在做媒体查询的scss混音

@mixin breakpoints($min-width, $max-width, $media-type: false) {
  @if $media-type == true {
    @media $media-type and (min-width: $min-width) and (max-width: $max-width) {
      @content;
    }
  } @else {
    @media all and (min-width: $min-width) and (max-width: $max-width) {
      @content;
    }
  }
}
如果调用mixin时不想指定,
$media type
默认为false。如果在mixin中传递了
$media type
,那么我希望在@media之后打印该变量。因此,如果我包含mixin
@包含断点(400600,仅屏幕)
,结果我需要
@仅媒体屏幕和..

当我尝试在sassmeister上测试我的mixin时,出现以下错误:

Invalid CSS after "    @media ": expected media query (e.g. print, screen, print and screen), was "$media-type and..."

我做错了什么?

当您传回$media type变量时,Sass不理解您试图做什么。您需要为每种“媒体类型”设置if语句,如:

@mixin breakpoints($min-width, $max-width, $media-type: false) {
  @if $media-type == print {
    @media print and (min-width: $min-width) and (max-width: $max-width) {
      @content;
    }
  } @else {
    @media all and (min-width: $min-width) and (max-width: $max-width) {
      @content;
    }
  }
}

当您传入$media type变量时,Sass无法理解您试图执行的操作。您需要为每种“媒体类型”设置if语句,如:

@mixin breakpoints($min-width, $max-width, $media-type: false) {
  @if $media-type == print {
    @media print and (min-width: $min-width) and (max-width: $max-width) {
      @content;
    }
  } @else {
    @media all and (min-width: $min-width) and (max-width: $max-width) {
      @content;
    }
  }
}

我找到了一种方法,无需为每种媒体类型指定if语句,就可以正常工作

@mixin breakpoints($min-width, $max-width, $media-type: false) {
  @if $media-type {
    @media #{$media-type} and (min-width: $min-width) and (max-width: $max-width) {
      @content;
    }
  } @else {
    @media all and (min-width: $min-width) and (max-width: $max-width) {
      @content;
    }
  }
}
密钥在#{$media type}中。现在一切都正常了,但我不知道我的解决方案有多正确

现在,我可以用

@include breakpoints(400, 600, only screen)


这将返回all关键字

我找到了一种方法,可以在不必为每种媒体类型指定if语句的情况下工作

@mixin breakpoints($min-width, $max-width, $media-type: false) {
  @if $media-type {
    @media #{$media-type} and (min-width: $min-width) and (max-width: $max-width) {
      @content;
    }
  } @else {
    @media all and (min-width: $min-width) and (max-width: $max-width) {
      @content;
    }
  }
}
密钥在#{$media type}中。现在一切都正常了,但我不知道我的解决方案有多正确

现在,我可以用

@include breakpoints(400, 600, only screen)


这将返回所有关键字

事实上,我找到了一种方法,你能检查一下这是否是正确的方法吗,我会在一分钟内回答我自己的问题嘿,谢谢你的帮助,我给出了一个答案,你能验证它吗?事实上,我找到了一种方法,你能检查一下这是否是正确的方法吗,我会在一分钟内回答我自己的问题嘿,谢谢你的帮助,我给出了一个答案,你能验证它吗?是的,这是你试图实现的正确scss实现。你必须将你自己的答案标记为正确,虽然:)是的,这是您试图实现的正确的scss实现。但是,您必须将自己的答案标记为正确:)