SCSS 里的数组及其遍历

做一个案例,需要这个效果

HTML 结构很简单,就是一个 ul ,下面 6 个li,每个 li 的背景色不一样。HTML 结构如下:

<h2 class="titles2">
     考生须知
</h2>
<ul class="ksxz_ul">
     <li><a href="#">报考条件</a></li>
     <li><a href="#">考试时间</a></li>
     <li><a href="#">考试科目</a></li>
     <li><a href="#">考试教材</a></li>
     <li><a href="#">考试费用</a></li>
     <li><a href="#">合格标准</a></li>
</ul>

用传统CSS来写:

.ksxz_ul  li:nth-child(1){
   background:#f5ad1b;
}
.ksxz_ul  li:nth-child(1):hover{
   background:#f7bf4c;
}

其他依次类推,相似的样式一共写 6 次。。。。好啰嗦。

用 SCSS 来搞定一切~

以下代码是在 SCSS 中完成:

// 定义数组,数组元素用逗号隔开
$liColor:#f5ad1b,#5f89ce,#94bf45,#da8ec5,#78bfc2,#bec278;

// 开始 @each 循环遍历数组
// $c 作为循环变量,代表了数组的元素,不是索引~!!!
@each $c in $liColor{
     $i:index($liColor,$c);        // 获取 $c 在数组中的索引,并赋值给 $i 赋值用冒号,不是等号~!
     li:nth-child( #{$i} ){      // 经典的地方来了,SCSS 循环是从 1 开始,不是 0 哦~
       background: $c;           // 背景色
       &:hover{
         background: lighten($c,10%);    // hover 后的颜色
       }
     }
}

简单多了。所以,写前端的同学们,还是用 SCSS 来写 CSS 代码吧。

-----------2020.4.7 补充-----------------

SCSS 里获取数组元素的方式:

nth( 数组名,索引 )

比如:索取索引为1 的元素,SCSS 的数组索引是从1 开始的。

.x{
   background:  nth($liColor,1);
}

-----------2020.4.7 补充 end------------------

关于 SCSS 的安装和在 webstorm 里的配置,可以看我的这篇文章  SASS/SCSS环境的安装,以及webstorm配置SASS/SCSS

关于 SCSS 的更新,可以看这里  更新sass、scss

更多信息,可以查看官网  https://www.sass.hk/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章