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

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吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据你的问题,以下是 Sass、node-sasssass-loader 和 Node.js 版本之间的对照关系: - SassSass 是一种 CSS 预处理器,用于编写更灵活、可维护的 CSS 代码。它可以通过命令行工具或者集成到构建工具中使用。 - node-sass:node-sass 是一个将 Sass 编译为 CSS 的 Node.js 模块。它使用 LibSass 库来进行编译,提供了更快的编译速度。你可以在项目中使用 npm 或者 yarn 安装它。 - sass-loader:sass-loader 是一个 Webpack 的加载器,用于将 Sass 文件编译为 CSS,并将其应用于你的项目中。它依赖于 node-sass 来进行编译。 - Node.js 版本:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它允许你在服务器端运行 JavaScript 代码。你可以通过运行 `node -v` 命令来查看当前安装的 Node.js 版本。 注意:以下是一些常见的版本对照关系,但具体的版本要求还需根据实际情况来确定: - Sass 版本与 node-sass 版本没有直接的对照关系,但一般来说,node-sass 应该支持较新版本的 Sass。 - sass-loader 的版本通常与 webpack 版本关联较密切,你需要根据你正在使用的 webpack 版本来选择合适的 sass-loader 版本。 - Node.js 版本要求可能会因为不同的库和工具而有所不同。你可以查阅它们的官方文档或者 GitHub 页面来获取更详细的信息。 希望这些信息能对你有所帮助!如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值