sass里@if判断语法有什么用?

发布于 2022-09-04 12:48:13 字数 466 浏览 13 评论 0

嵌套循环我都觉得很有用,可是判断有什么用?
判断的使用场景在哪里?为什么会有判断这个语法,为了解决什么问题?

$type: monster;
p {
  @if $type == ocean {
    color: blue;
  } @else if $type == matador {
    color: red;
  } @else if $type == monster {
    color: green;
  } @else {
    color: black;
  }
}

这是官网给个实例,这样不是很没有意义吗?

直接定义

p {
color: green;
}

不是更加直接吗?
浏览器里没有脚本可以控制sass的type,一切全在sass编译前的环境里运行,编译成css后就只能依靠javascript更改,那么为什么还要@if呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寄与心 2022-09-11 12:48:13

@小明 说得很对,@if一般是配合@mixin使用的。
@mixin可以用来定义一个样式模板函数。
@if的话,可以在这个函数中作为条件判断。
然后,可以通过@include来调用@mixin

例子的话,可以看这里


补充:

上面的例子已经解释了@if的用法。另外@mixin也可以进行嵌套来减少重复代码。
例如上面的例子的每一个@if里的代码有所重复,可以另外建一个@mixin来处理@if里面的样式。类似这样:

@mixin layout ($color, $unit){
        color: $color;
        font-size: 20px + $unit * 5px;
        height: 20px + $unit * 10px;
        line-height: 20px + $unit * 10px;
        border-radius: $unit * 5px;
}

@mixin title($number, $deg: 90deg, $color1: #69b7eb, $color2: #b3dbd3, $color3: #f4d6db) {
    text-indent: 130px;
    width: 50%;
    background: linear-gradient($deg, $color1, $color2, $color3);
    @if $number == 1 {
        @include layout (#000, $number);
    } @else if $number == 2 {
        @include layout (#444, $number);
    } @else if $number == 3 {
        @include layout (#888, $number);
    } @else if $number == 4 {
        @include layout (#bbb, $number);
    }
}
娇妻 2022-09-11 12:48:13

看了一点文档,@if语法主要活跃在浏览器兼容上,可以少些很多js代码


$lte7:true !default;
//是否兼容ie6,7 
//inline-block 
//ie6-7 *display: inline;*zoom:1; 
@mixin inline-block {
    display: inline-block; 
    @if $lte7 { *display: inline;*zoom:1; } 
}

如果变量$lte7为真,就输出display: inline;zoom:1;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文