sass作用域和循环指令

作用域:

声明变量:

全局变量:

在页面的最外边声明的变量是全局变量。拥有全局作用域

局部变量:

在某个选择器内或函数内声明的变量就是局部变量 , 拥有局部作用域

变量的作用域:

全局作用域: 在任何地方都可以访问使用

局部作用域: 只能在变量声明的地方使用

html结构:

HTML
<ul class="wrap">
    <li>
        <div class="list">
            <div>变量作用域</div>
        </div>
    </li>
    <li>
      <p>段落</p>
   </li>
</ul>

scss代码:

SCSS
//全局变量(全局作用域)
$len:200px;
$col:green;
$bc:pink;
.wrap{
    width: $len;
    font-size:50px;
    p{
        height: $len;
        color:$col;
    }
    .list{
        // 局部变量 仅在list里面生效
        // $col:red;
        width: $len;
        height: $len;
        div{
            // 局部变量 仅在list下的div里面生效
            // $col:skyblue;
            padding:$len;
            color:$col;
        }
    }
}

循环指令:

html结构:

HTML
<p class="text1 head1">1</p>
<p class="text2 head2">2</p>
<p class="text3 head3">3</p>
<p class="text4 head4">4</p>

for循环:

① for-to 形式

@for $i from start to end{ }
$i: 声明的变量
start: 循环变量的起点值
end: 循环变量的终点值
to: 关键字, 包含起点start 不包含终点end

scss代码:

SCSS
@for $i from 1 to 4{
    .text#{$i}{
        color: green;
        font-size: 20px * $i;
    }
}

转换后css代码:

CSS
.text1 {
  color: green;
  font-size: 20px;
}
.text2 {
  color: green;
  font-size: 40px;
}
.text3 {
  color: green;
  font-size: 60px;
}
/*# sourceMappingURL=07-sassLoop.css.map */

② from-through 形式

@for $i from start through end{ }
$i: 声明的变量
start: 循环变量的起点值
end: 循环变量的终点值
through: 关键字, 包含起点start 和 终点end

scss代码:

SCSS
@for $i from 1 through 4{
    .text#{$i}{
        color: green;
        font-size: 20px * $i;
    }
}

转换后css代码:

CSS
.text1 {
  color: green;
  font-size: 20px;
}
.text2 {
  color: green;
  font-size: 40px;
}
.text3 {
  color: green;
  font-size: 60px;
}
.text4 {
  color: green;
  font-size: 80px;
}
/*# sourceMappingURL=07-sassLoop.css.map */

while循环:

@while 表达式 {
// 样式
// 控制循环终止的语句 : 改变表达式的结果为假才能终止循环
}

scss代码:

SCSS
$a:4;
@while $a > 0 {
    //循环条件不满足时会自动之终止循环
    .text#{$a}{
        width:200px * $a;
    }
    //循环控制语句: 实现终止循环的操作
    $a:$a - 1;
}

css代码:

CSS
.text4 {
  width: 800px;
}
.text3 {
  width: 600px;
}
.text2 {
  width: 400px;
}
.text1 {
  width: 200px;
}
/*# sourceMappingURL=07-sassLoop.css.map */

each循环:

sass 可以定义数组:可以通过 空格 或者 逗号 定义数组
$mt: 20px 50px ;
$cname : 's1.jpg', 's2.jpg'

scss代码:

SCSS
// 可以遍历数组
@each $mt in 20px 50px {
    p{
        margin: $mt;
    }
}
@each $pic in 'head1','head2','head3','head4' {
    .#{$pic}{
        width: 200px;
        height: 200px;
        background: url(../img/#{$pic}.webp) no-repeat 0 0/cover;
    }
    
}

css代码:

CSS
p {
  margin: 20px;
}

p {
  margin: 50px;
}

.head1 {
  width: 200px;
  height: 200px;
  background: url(../img/head1.webp) no-repeat 0 0/cover;
}

.head2 {
  width: 200px;
  height: 200px;
  background: url(../img/head2.webp) no-repeat 0 0/cover;
}

.head3 {
  width: 200px;
  height: 200px;
  background: url(../img/head3.webp) no-repeat 0 0/cover;
}

.head4 {
  width: 200px;
  height: 200px;
  background: url(../img/head4.webp) no-repeat 0 0/cover;
}
/*# sourceMappingURL=07-sassLoop.css.map */
posted @ 2022-04-21 10:49  请善待容嬷嬷  阅读(116)  评论(0编辑  收藏  举报