SCSS就是增强版的CSS,要讲SCSS那就必定要从SASS讲起前端
Sass(英文全称:Syntactically Awesome Stylesheets)是一个最初由Hampton Catlin设计并由Natalie Weizenbaum开发的层叠样式表语言。2007年发行,2016年版本稳定,设计和开发分开进行,让这个语言的功能至关完善。python
Sass是像CSS同样的层叠样式表语言,可是它并非由前端社区发明的,而是由Ruby社区发明创造,为何Ruby社区要为前端创造语言,这是由于Ruby社区中有一个全栈Web框架Rails,这个框架包含前端和后端的开发,因此当Ruby社区的人发现CSS并很差用,就发明了一套语言叫作Sass,下面是Sass语法的特色编程
#sidebar width: 30% background-color: #faa
Sass语法如上图所示,它写法极简,省略掉了大括号和分号,可是和python同样,缩进须要严格按照规定,这样子的语法让不少前端工程师很不适应,因此出现了了SCSS,SCSS将括号分号又给添加回来了,例如后端
#sidebar { width: 30%; background-color: #faa; }
你确定想说,这样又和CSS有什么区别,实际上SCSS保留了SASS的其余部分功能前端工程师
SCSS相较于CSS加入了编程元素,做为CSS的预处理器,它的基本思想是,用一种专门的编程语言,进行网页样式设计,而后再编译成正常的CSS文件。框架
SCSS容许使用变量,全部变量以$开头。编程语言
$blue : #1875e7; div { color : $blue; }
有了变量,当须要集体修改色型的时候就会方便不少ide
SCSS中容许嵌套,例如CSS中函数
div h1 { color : red; }
这样的语法能够改写成设计
div { h1 { color: red; } }
mixin能够声明重用一个代码块,例如
使用@mixin定义一个代码块
@mixin left { float: left; margin-left: 10px; }
使用@include引入这个代码块
div { @include left; }
编译成CSS是这样的
div { float: left; margin-left: 10px; }
另外,mixin支持参数,能够像写函数同样写CSS,例如
@mixin left($value: 10px) {//默认是10px float: left; margin-right: $value; }
引入时,能够本身添加参数
div { @include left(20px); }
一直引入代码块,编译成CSS的时候仍是会有不少的重复代码,
使用placeholder能够节省代码,用法是用%定义一个公用样式
%box { float: left; margin-left: 10px; }
而后用@extend来调用
.selector { @extend %box; } .nav>ol>li { @extend %box; }
编译成CSS时就是
.selector, .nav>ol>li { float: left; margin-left: 10px; }
不拷贝样式,把选择器提到了样式前面