1.使用变量
sass可以像声明变量那样进行使用,这样同样的样式,就可以使用相同的变量来提高复用。
语法为:$ 变量名
在界面中也可以正常的显示
当然了,变量之间也可以相互引用,比如下面
div{$_color: #d45387;$BgColor: $_color;background-color: $BgColor;
}
在sass中,变量名使用中划线和下划线是一样的
2.嵌套CSS规则
这也是sass最常用的用法之一,就是不用像以前那样逐级书写css样式了,如果存在层级关系,直接嵌套就可以。
div{$Pink_color: pink;$BgColor: $Pink-color;background-color: $BgColor;h1{color:$color;}
}
以上的嵌套写法等价于
div{$Pink_color: pink;$BgColor: $Pink-color;background-color: $BgColor;}
div h1{color:$color;}
3.使用父选择器标识符&
多用于伪类选择器,比如:hover,这样需要将制定的元素再写一遍,我们就可以直接使用&替代即可
div{$Pink_color: pink;$BgColor: $Pink-color;background-color: $BgColor;height: 200px;width: 200px;h1{color:$color;}&:hover{h1{color:blue;}}
}
这里的&:hover就是div:hover
4.群组选择器的嵌套
<ul><li class="liOne">1</li><li class="liTwo">2</li><li>3</li><li class="liThree">4</li><li>5</li></ul><style scoped lang="scss">
div{$Pink_color: pink;$BgColor: $Pink-color;background-color: $BgColor;height: 200px;width: 200px;h1{color:$color;}&:hover{h1{color:blue;}}
}
ul{.liOne,.liTwo,.liThree{color: aqua;}
}</style>
这样ul下,指定的三个类名下的设置为统一样式
4.子组合选择器和同层组合选择器:>,+,~
<div class="outBox"><div class="divOne">1</div><div class="divTwo">2</div><div><div class="divOne">3</div></div><div class="divThree"><div class="divOne">4</div></div><div>5</div></div>.outBox .divOne{color: red;
}
如果直接这样设置样式的话,.outBox下的所有.divOne都会变成红色
如果使用子组合选择器>
.outBox > .divOne{color: red;
}
只会在直系后代中设置对应的样式
同层相邻组合选择器+
<template><div><h1>我是首页</h1></div><div class="outBox"><div class="divOne">1</div><div class="divTwo">2</div><div><div class="divOne">3</div></div><div class="divTwo"><div class="divOne">4</div></div><div>5</div></div>
</template><script setup lang="ts">
import {ref,reactive} from 'vue'</script><style scoped lang="scss">
div{$Pink_color: pink;$BgColor: $Pink-color;background-color: $BgColor;// height: 200px;// width: 200px;h1{color:$color;}&:hover{h1{color:blue;}}
}
// ul{
// .liOne,.liTwo,.liThree{
// color: aqua;
// }
// }
.outBox{.divOne + .divTwo{color: purple;font-size: 26px;font-weight: 800;}}
</style>
指divOne后面紧跟的兄弟节点divTwo才会进行样式设置,而同样类名的divTwo的4并没有进行样式设置。
如果想要4也设置同样的样式,我们可以使用全体组合选择器~
.outBox{.divOne ~ .divTwo{color: purple;font-size: 26px;font-weight: 800;}}
5.注释
sass的注释和普通css的注释也是不一样的,类似于js的注释,我们直接在vscode中使用快捷键ctrl+/就可以自定生成sass的注释
// ul{
// .liOne,.liTwo,.liThree{
// color: aqua;
// }
// }
而普通的css的注释和HTML的注释类似:
/* 这是一个CSS注释 *//*
这是一个
多行的
CSS注释*/
6.嵌套属性
在sass中,属性同样也可以嵌套,比如border系列的样式,我们就可以简写成border:然后书写嵌套属性即可。
.outBox{height: 100vh;.divOne ~ .divTwo{width: 50px;height: 50px;text-align: center;line-height:50px;background-color: bisque;border:{radius:50%;color: #ccc;width:2px}// color: purple;// font-size: 26px;// font-weight: 800;}}
7.导入sass文件
使用@import导入规则,它在生成css文件是就把相关文件导入进来,在导入sass时,不需要指定导入文件的全名,就是可以省略后缀。
8.默认变量值
在sass中,类似与函数的默认参数,而sass样式也可以通过使用!default来设置默认的样式。比如:
#BGcolor:red !default;
意思就是如果你自己定义了一个局部变量BGcolor,就是你可以使用自己定义的样式,如果没有改局部变量,那么当你使用这个样式时,默认就是红色。【通俗的将,你自己有,就用你自己的,你若是没有,就用我的】
9.嵌套导入
<template><div><h1>我是首页</h1></div><div class="outBox"><div class="divOne">1</div><div class="divTwo">2</div><div><div class="divOne">3</div></div><div class="divTwo"><div >4</div></div><div class="bgc">5</div></div>
</template><script setup lang="ts">
import {ref,reactive} from 'vue'</script><style scoped lang="scss">
div{$Pink_color: pink;$BgColor: $Pink-color;background-color: $BgColor;// height: 200px;// width: 200px;h1{color:$color;}&:hover{h1{color:blue;}}
}
// ul{
// .liOne,.liTwo,.liThree{
// color: aqua;
// }
// }
.outBox{@import '../../styles/local-style';height: 100vh;.divOne ~ .divTwo{width: 50px;height: 50px;text-align: center;line-height:50px;background-color: bisque;border:{radius:50%;color: #ccc;width:2px}// color: purple;// font-size: 26px;// font-weight: 800;}}
</style>
定义的_local_style.scss
可以看到,对应5的样式已经设置上去了。