最近一直在更新优化一些前端的小项目,这其中包括CSS样式表的代码重构。我选择将CSS代码转向SCSS,使得CSS代码更为简洁,结构更加清晰,方便后期的维护与开发。这里对CSS与SCSS基础的用法做一个简单的记录。
CSS
.class
: class=”class” 的元素#id
: id=”id”的元素tag
:的元素 element1,element2
: element1 和 element2element1 element2
: element1 下所有层级的 element2element1>element2
: element1 下直接子级的 element2element1~element2
: element1 平级所有后面的 element2element1+element2
: element1 平级紧跟的 element2
还有很多伪类(如:鼠标放在元素上、第一个字母、元素之前的内容等等),可以参考 CSS 选择器 | 菜鸟教程。
SCSS
嵌套规则
通过嵌套规则,使得CSS代码有了层次结构,大大提升了代码的简洁程度与可读性。
|
|
在上面的例子中,.redbox
会被渲染成 #main p .redbox
父选择器 &
使用 &
指代父级元素。
|
|
在上面的例子中,&:hover
会被渲染成 a:hover
属性嵌套 (Nested Properties)
花括号前面加入冒号,进行属性嵌套。
|
|
在上面的例子中,font: { … }
会被渲染成 font-family:
注释
SCSS语法支持单行注释
|
|
变量
SCSS 支持多种类型的变量,如带单位的数值、字符串、颜色、列表等。
|
|
运算
SCSS 支持常规加减乘除四则运算,但除法运算要特别小心,因为“/ 在CSS中通常起到分隔数字的用途”,/ 在不同情形下作用如下(摘自SASS中文网)
|
|
另外,像其它语言一样,可以使用圆括号改变运算顺序。
其它
- SASS还支持函数调用。SASS自带的函数,可以参考这个链接 Sass 函数
- SASS 字符串可以直接用加运算
+
连接,最终是否输出引号,取决于左端的值。 - 颜色变量也可以进行运算,运算定义是在3个通道分别运算基础上。
- 使用
#{$var}
插值语句,可以在选择器或属性名中使用变量;同时,在字符串内,也支持使用插值语句。 - SASS 还支持 @if @for 控制语句
- 可以在内层使用@media,编译时会自动解析到最外层,包含父选择器。