做一个案例,需要这个效果
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/