【问题标题】:How does SASS know about a variable that is not defined?SASS 如何知道未定义的变量?
【发布时间】:2020-05-08 16:31:30
【问题描述】:

我有这个混音:

@mixin respond($breakpoint) {
    @if $breakpoint == phone {
        @media (max-width: 37.5em) { @content };
    }
}

这个mixin是这样使用的:

  @include respond(phone) {
    font-size: 50%;
  }

我不明白的是SASS怎么知道变量phone是什么?

当您调用@include respond(phone) 时传递了什么,同样,发生这种情况时正在比较什么? @if $breakpoint == phone

那么什么是电话?我在代码中没有看到将 phone 定义为变量的任何地方..

但是查看编译后的css,似乎可以工作..

【问题讨论】:

    标签: sass scss-mixins


    【解决方案1】:

    电话只是特定断点的参考,您也可以键入任何内容而不是phone,神奇的发生在if 语句中,您可以在其中定义phone 指的是什么:

    @media (max-width: 37.5em) { @content };
    

    分解: 你通过电话在这里回复:

    @include respond(phone) {…}
    

    然后在mixin 响应中检查$breakpoint 是否等于phone 或您在@include respond() 中写入的任何内容。如果为真,则进入 if 语句。

    例如,您可以这样做:

    @include respond(something) {}
    
    @mixin respond($breakpoint) {
        @if $breakpoint == something {
            …do what you want
        }
    }
    

    【讨论】:

    • 我还是不明白,当我说@include respond(phone) 时我在传递什么?看起来电话什么都没有? @mixin respond($breakpoint) 期望将参数传递给它,在本例中为 $breakpoint 但传入电话意味着什么?
    • 手机可以说只是一个代表断点的词,因此您可以更轻松地访问它。编写phone 然后在每次需要时编写@media 查询更容易。所以你把@include respond(phone)里面的东西传递给@content...现在更清楚了吗?
    • Here 是一篇很好的文章,介绍了通过 scss 使用媒体查询的不同方式。
    • 您更新的答案对我来说很清楚!嘿,谢谢哥们!
    猜你喜欢
    • 2014-02-04
    • 2021-04-29
    • 2012-10-30
    • 2020-11-11
    • 2012-04-12
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多