sass学习--sass的控制命令(进阶篇)

本文详细介绍了Sass中的四个控制指令:@if、@for、@while和@each,并提供了相应的示例代码。通过这些指令,你可以实现更复杂的样式逻辑,提高CSS的编写效率。

1.@if

@if 指令可以根据条件来处理样式块,如果条件为 true 返回一个样式块,反之 false 返回另一个样式块。在 Sass 中除了 @if 之,还可以配合 @else if 和 @else 一起使用。

可以定义一个混合宏,来控制一个元素隐藏或显示,通过 @if…@else… 来判断传进参数的值来控制 display 的值。

//SCSS
@mixin blockOrHidden($boolean:true) {
  @if $boolean {
    @debug "$boolean is #{$boolean}";//debug输出信息
      display: block;
    }
    @else {
      @debug "$boolean is #{$boolean}";
      display: none;
    }
}

.block {
  @include blockOrHidden;
}

.hidden{
  @include blockOrHidden(false);
}

2.@for

在 Sass 的 @for 循环中有两种方式:

@for $i from start through end

@for $i from start to end

区别: through 表示包括 end 这个数,而 to不包括 end 这个数。

//for循环测试:@for $i from start through end

@for $i from 1 through 3{
  .item-#{$i}{
    width:2em*$i;
  }
}
//for循环测试@for $i from start to end

@for $i from 1 to 3{
  .item-#{$i}{
    width:2em*$i;
  }
}
//@for应用在网格系统生成各个格子 class 的代码:
//SCSS 
$grid-prefix: span !default;
$grid-width: 60px !default;
$grid-gutter: 20px !default;

%grid {
  float: left;
  margin-left: $grid-gutter / 2;
  margin-right: $grid-gutter / 2;
}
@for $i from 1 through 12 {
  .#{$grid-prefix}#{$i}{
    width: $grid-width * $i + $grid-gutter * ($i - 1);
    @extend %grid;
  }  
}

3.@while

@while 指令也需要 SassScript 表达式,并且会生成不同的样式块,直到表达式值为 false 时停止循环。和 @for 指令很相似,只要 @while 后面的条件为 true 就会执行。

//SCSS
$types: 4;
$type-width: 20px;

@while $types > 0 {
    .while-#{$types} {
        width: $type-width + $types;
    }
    $types: $types - 1;
}

4.@each

循环指令的形式:@each $var in list

$var 就是一个变量名,<list> 是一个 SassScript 表达式,他将返回一个列表值。变量 $var 会在列表中做遍历,并且遍历出与 $var 对应的样式块。
/*@each实例*/

$list: aaa john tom mason kola;//$list 就是一个列表

@mixin author-images {
    @each $author in $list {
        .photo-#{$author} {
            background: url("/images/avatars/#{$author}.png") no-repeat;
        }
    }
}

.author-bio {
    @include author-images;
}
//css
.author-bio .photo-adam {
  background: url("/images/avatars/adam.png") no-repeat; }
.author-bio .photo-john {
  background: url("/images/avatars/john.png") no-repeat; }
.author-bio .photo-wynn {
  background: url("/images/avatars/wynn.png") no-repeat; }
.author-bio .photo-mason {
  background: url("/images/avatars/mason.png") no-repeat; }
.author-bio .photo-kuroir {
  background: url("/images/avatars/kuroir.png") no-repeat; }

总结:主要是整理了下sass的控制命令:@if、@for、@while、@each四个!以及简单的实例演示!相信根据实战情况,这些命令都能很好地帮你一把吧!快!以面向对象是思想去高效创造精彩的css吧!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值