sass跟scss基本相同,区别在于sass去掉了分号和大括号,用缩进来区分样式表,而scss保留了大括号和分号
为了便于阅读,本篇使用scss形式
1 变量
1-1 声明变量&引用变量
使用$
来声明变量,引用时直接填入声明的变量名,如
$titlefont-size: 20px; .title{ font-size: $titlefont-size } // 编译后 .title { font-size: 20px; }
2 嵌套规则
按照html文档内容的层级关系来编写样式表,与less语法一致,比如有如下的html文档
<div class="article"> <div class="title"> <h2></h2> </div> <div class="content"> <p></p> </div> </div>
如果直接对h2或p的样式直接修改,会影响到全部的h2和p标签样式,如果按照层级去编写就会嵌套很长的选择器,在sass中
.article { .title { h2 { color: red; } } .content { p { font-size: 17px; } } }
就可以自动编译出嵌套的选择器
2-1 父元素选择器
使用&
选择父元素,跟less也是一样的,主要用于伪类选择器
.father { p { color: red; } &:hover { cursor: pointer; } } // 可以将伪类选择器直接追加到父类选择器后面 .father p { color: red; } .father:hover { cursor: pointer; }
2-2 群组选择器
使用,
进行群组嵌套,如
.container { h1, h2, h3 { color: red; } } // 会把内容展开分别嵌套 .container h1, .container h2, .container h3 { color: red; }
2-3 子组合,同层组合选择器
使用>
选择元素的直接子元素,使用+
选择紧跟在对照选择器后面的目标选择器,使用~
选择同层全体
.father { > .son { color: red; } + father2 { color: yellow; } ~ fathers { color: black; } }
2-4 属性嵌套
可以使用-
来组合属性,如
section { border: { style: solid; width: 1px; color: red; } } // 编译后如下 section { border-style: solid; border-width: 1px; border-color: red; }
你可能会觉得这没有什么,直接使用border属性可以组合三种属性,别急,继续看,他还能这么组合
section { border: solid 1px red { left: 0; right: 0; } } // 编译后 section { border: solid 1px red; border-left: 0; border-right: 0; }
3 导入文件
使用@import
导入导入外部样式,sass和scss后缀名可省略
3-1 默认变量
重复声明一个变量后边的赋值会覆盖前面的变量,在导入文件时可能会被定义的样式覆盖,可以使用默认变量值!default
声明变量
3-2 嵌套导入
.blue-theme {@import "blue-theme"} //生成的结果跟scss文件的内容完全一样 .blue-theme { aside { background: blue; color: #fff; } }
4 注释
有两种注释方式,一种会编译到css文件,一种不会被编译
body { color: #333; // 这种注释内容不会出现在生成的css文件中 padding: 0; /* 这种注释内容会出现在生成的css文件中 */ }
5 混合
使用@mixin
声明一段代码,然后使用@include
来提取这段代码
6 继承
使用@extend
继承一段已经写好的css样式