
1.scss是什么
scss是css的一种预处理语言
scss是一门很好用的类css,在现实中的工作当中几乎都是不采用css的,而是使用类css语言。
例如:scss、less、stylus等,所以学习一门css语言是必须得,由于我用的比较多的就是scss了,所以我在这里就简要介绍一下我理解的scss用法
首先它是一款强化css的辅助工具,在css的基础上怎加了:
-
变量(variables)
-
嵌套(nested nutes)
-
混合(mixin)
-
导入(inline imports)等等一些功能
scss是sass3.0后的一个版本,后缀名为.scss
2.为什么要使用scss
scss的优势也是很多的,主要分为一下几点:
-
scss完全兼容所有版本的css。
-
特性丰富,scss拥有比其他的任何css扩展语言更丰富的功能和特性。
-
行业认可,社区庞大,大多数科技企业和成百上千名开发者为技术提供支持。
-
有无数的框架使用scss,如:bootstrap等。
-
让css更加简洁,适应性更强,阅读性更佳,更易于代码的维护等诸多好处。
3.scss的使用
一、注释分为三种:
/* */css中显示, //css中不显示, /*重要注释!*/压缩不会被删掉
复制
二、命令导入外部的css,less,scss文件:
@import "../assets/scss/home.scss";
复制
三、声明变量:
$+变量名+:+变量值;如下: $color : red; //声明颜色变量 $color $width: 100px; //声明宽度变量 $width $left: left;
复制
四、区分默认变量:
默认变量只需要在变量值后加上 !default , 用来设置默认值 ,对默认变量进行重新声明可以实现覆盖默认值;如:
$color : yellow !default; //声明默认变量 $color $color : purple; //根据需求覆盖默认变量
复制
五、区分全局变量和局部变量:
全局变量是元素外声明的变量,局部变量是在元素里声明的变量,重复声明时局部变量会覆盖全局变量;
局部变量值后加上 !global 关键词可以使得局部变量变成全局变量;
$color : red; //声明颜色变量 $color $width: 100px; //声明宽度变量 $width $left: left; .div { $border-color: rgba(28, 46, 208, 0.8); //局部变量 $bd-color: rgb(223, 15, 195) !global; //加!global变为全局变量 width: $const; height: $const; color: $color; border: 5px solid $border-color; .spans { font-size: 30px; color: $color; } } .div2 { width: $const; height: $const; border: 5px solid $bd-color; //使用加了!global得全局变量 border-#{$left}: 10px solid red; //变量嵌套引用:即字符串插值,需要使用 #{} 来进行包裹 }
复制
六、 继承
.class 使用 @extend
.div2 { width: 100px; height: 50px; border: 5px solid #f00; } .div3 { @extend .div2; //继承.div2中得所有样式 }
复制
七、占位符 %
使用% 声明的代码块,如果不被@extend调用的话就不会被编译。编译出来的代码会将相同的代码合并在一起,代码变得十分简洁。
%m5 { background-color: rgb(12, 174, 228); } .div3 { @extend %m5; }
复制
八、混合@mixin
·重复代码块,使用混合@mixin命令定义,以及使用@include调用该mixin
// 在使用@mixin和@include时,传入参数和默认值 @mixin normalStyle ($width , $height , $color , $defaultValue : orange) { width: $width ; height: $height ; color: $color ; background-color: $defaultValue ; } .div4 { //在此处使用并传参 @include normalStyle (300px, 100px, green, rgb(188, 40, 40)); }
复制
九、SCSS使用编程式方法
// ·条件语句 .div4 { p { @if 1+1>3 { border: 1px solid blue; } @else { border: 2px dashed palevioletred; } } }
复制
十、SCSS中的三种循环
-
for循环
在sass中的@for循环有两种方式:
① @for $i from <start> through <end>
② @for $i from <start> to <end>
其中$i表示变量,start表示开始值,end表示结束值;
through表示包括end这个数值;to表示不包括end这个数值;
@for $i from 1 to 3 { .item-#{$i} { width: 100px; height: 100px; border : #{$i}px solid #f00; } } //最终编译为: .item-1 { width: 100px; height: 100px; border : 1px solid #f00; } .item-2 { width: 100px; height: 100px; border : 2px solid #f00; }
复制
@for $i from 1 through 3 { .item-#{$i} { width: 100px; height: 100px; border : #{$i}px solid #f00; } } //最终编译为: .item-1 { width: 100px; height: 100px; border : 1px solid #f00; } .item-2 { width: 100px; height: 100px; border : 2px solid #f00; } .item-3 { width: 100px; height: 100px; border : 3px solid #f00; }
复制
2.while循环
只要@while后面的条件为true就会执行,直到表达式值为false时停止循环;
$m : 2; @while $m >0 { .item-#{$m} { width: 100px * $m ; height: 100px; background-color: aquamarine; } $m : $m - 1; } //最终编译为: .item-#2 { width: 100px * 2 ; height: 100px; background-color: aquamarine; } .item-#1 { width: 100px * 1 ; height: 100px; background-color: aquamarine; }
复制
3.each 语法
@each $item in item-1, item-2 { //$item就是遍历了in关键词后面的类名列 .#{$item} { background-color: purple; } } //会编译成 .item-1, .item-2 {background-color:purple;}
复制
十一、自定义函数及使用
使用@function 自定义函数及使用
@function double($sn ) { //SCSS允许自定义函数 @return $sn * 2; } .function { width: double(200px); //使用在SCSS中自定义的函数 height: 100px; border: 1px solid red; }
复制
以上就是本人总结的一些常用的方法功能,有不足之处还请多多指教。