sass
安装
在安装之前建议先卸载旧版本
1
| npm uninstall sass-loader node-sass
|
然后进行安装
切记!!!
如果你的node版本不是最新版,请指定版本安装
可前往这里查询node-sass - npm (npmjs.com)
至于node-sass和sass-loader的对应版本可自行查询百度
如果你的node是最新版可直接用以下命令行安装
1
| npm install node-sass sass-loader -D
|
重点!!!
如无法正常卸载node-sass和sass-loader,请在package.json文件和package-lock.json文件修改两个包的版本号再执行命令
如我的node版本是v18.15.0
对应包版本是
比如我们有一个.sass文件,我们现在要把他编译成.css文件
文件名为test.sass
执行
也可以直接能保存到css文件
1
| sass test.scss runoob-test.css
|
sass变量
使用$符号表示变量
值的变量
如下代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $myFont: Helvetica, sans-serif; $myColor: red; $myFontSize: 18px; $myWidth: 680px;
body { font-family: $myFont; font-size: $myFontSize; color: $myColor; }
#container { width: $myWidth; }
|
换成css代码是
1 2 3 4 5 6 7 8 9
| body { font-family: Helvetica, sans-serif; font-size: 18px; color: red; }
#container { width: 680px; }
|
作用域
你在标签里定义的话,作用域就只在定义的标签里
1 2 3 4 5 6 7 8 9 10
| $myColor: red;
h1 { $myColor: green; color: $myColor; }
p { color: $myColor; }
|
利用!global就能够让变量变成全局
如
1 2 3 4 5 6 7 8 9 10
| $myColor: red;
h1 { $myColor: green !global; color: $myColor; }
p { color: $myColor; }
|
转换成css代码就是
1 2 3 4 5 6 7
| h1 { color: green; }
p { color: green; }
|
sass的嵌套规则和属性
嵌套规则
类似于html
如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| nav { ul { margin: 0; padding: 0; list-style: none; } li { display: inline-block; } a { display: block; padding: 6px 12px; text-decoration: none; } }
|
转换成css为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| nav { ul { margin: 0; padding: 0; list-style: none; } li { display: inline-block; } a { display: block; padding: 6px 12px; text-decoration: none; } }
|
嵌套属性
说白了就是有相同前缀的属性可以写的更简洁
比如现在关于字的样式写法
1 2 3 4 5
| font: { family: Helvetica, sans-serif; size: 18px; weight: bold; }
|
编译成
1 2 3 4 5 6 7
| font-family: Helvetica, sans-serif; font-size: 18px; font-weight: bold;
text-align: center; text-transform: lowercase; text-overflow: hidden;
|
@import
对于sass也可以导入css文件
如导入sass文件
1 2 3
| @import "variables"; @import "colors"; @import "reset";
|
其中 “colors”是文件名
@mixin 与 @include
@mixin 指令允许我们定义一个可以在整个样式表中重复使用的样式。
@include 指令可以将混入(mixin)引入到文档中。
定义一个mixin
对于mixin公式
1
| @mixin name { property: value; property: value; ... }
|
注意:对于 - 和 _ 在sass中是一样的 如 @mixin important-text { } 与 @mixin important_text { } 这两个是一样的mixin
定义示例
1 2 3 4 5 6
| @mixin important-text { color: red; font-size: 25px; font-weight: bold; border: 1px solid blue; }
|
使用mixin
使用@include包含mixin
如以下sass代码
1 2 3 4 5
| .danger { @include important-text; background-color: green; }
|
转换成css
1 2 3 4 5 6 7
| .danger { color: red; font-size: 25px; font-weight: bold; border: 1px solid blue; background-color: green; }
|
当然mixin也可以引入mixin
1 2 3 4 5
| @mixin special-text { @include important-text; @include link; @include special-border; }
|
向mixin传入变量
如以下:
1 2 3 4 5 6 7 8 9 10 11 12
| @mixin bordered($color, $width) { border: $width solid $color; }
.myArticle { @include bordered(blue, 1px); }
.myNotes { @include bordered(red, 2px); }
|
转换成css代码
1 2 3 4 5 6 7
| .myArticle { border: 1px solid blue; }
.myNotes { border: 2px solid red; }
|
定义传入默认值则是
1 2 3
| @mixin bordered($color: blue, $width: 1px) { border: $width solid $color; }
|
当我们对于一个有默认值的mixin我们只需要传入想要的值,如
1 2 3 4 5 6 7 8 9
| @mixin sexy-border($color, $width: 1in) { border: { color: $color; width: $width; style: dashed; } } p { @include sexy-border(blue); } h1 { @include sexy-border(blue, 2in); }
|
转换成css为
1 2 3 4 5 6 7 8 9 10
| p { border-color: blue; border-width: 1in; border-style: dashed; }
h1 { border-color: blue; border-width: 2in; border-style: dashed; }
|
当我们不确定需要多少个参数的时候,我们可以使用可变参数,如
1 2 3 4 5 6 7 8 9
| @mixin box-shadow($shadows...) { -moz-box-shadow: $shadows; -webkit-box-shadow: $shadows; box-shadow: $shadows; }
.shadows { @include box-shadow(0px 4px 5px #666, 2px 6px 10px #999); }
|
转换成css为
1 2 3 4 5 6
| .shadows { -moz-box-shadow: 0px 4px 5px #666, 2px 6px 10px #999; -webkit-box-shadow: 0px 4px 5px #666, 2px 6px 10px #999; box-shadow: 0px 4px 5px #666, 2px 6px 10px #999; }
|
sass的继承 @extend
如果两个样式几乎相同时,则@extend就显得很有用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| .button-basic { border: none; padding: 15px 30px; text-align: center; font-size: 16px; cursor: pointer; }
.button-report { @extend .button-basic; background-color: red; }
.button-submit { @extend .button-basic; background-color: green; color: white; }
|
转换成css
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| .button-basic, .button-report, .button-submit { border: none; padding: 15px 30px; text-align: center; font-size: 16px; cursor: pointer; }
.button-report { background-color: red; }
.button-submit { background-color: green; color: white; }
|
sass函数
Sass 函数 | 菜鸟教程 (runoob.com)
太多了可自行到这里查找