scss(sass)和less 的相关整理
1.什么 是scss(sass)/less ?
Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量、嵌套、运算,混入(Mixin)、继承、颜色处理,函数等),更容易阅读。
Sass的缩排语法,对于写惯css前端的web开发者来说很不直观,也不能将css代码加入到Sass里面,因此sass语法进行了改良,Sass 3就变成了Scss(sassy css)。与原来的语法兼容,只是用{}取代了原来的缩进。所以sass包含scss。scss只是为了更像css 而推行的语法标准。
而 Less也是一种动态样式语言.对CSS赋予了动态语言的特性,如变量,继承,运算, 函数. Less 既可以在客户端上运行 (支持IE 6+, Webkit, Firefox),也可在服务端运行 (借助 Node.js)。
2.Sass/Scss与Less区别
1.编译的环境不一样。scss的安装环境需要是Ruby。而less 需要通过less.js来编译less代码输出到浏览器。编译出来的css文件可以直接引入到项目中
2.变量符不一样 Less是@,而Scss是$,而且变量的作用域也不一样。
Less-作用域
@color: #00c; /* 蓝色 */
#header {
@color: #c00; /* red */
border: 1px solid @color; /* 红色边框 */
}
#footer {
border: 1px solid @color; /* 蓝色边框 */
}
Less-作用域编译后
#header{border:1px solid #cc0000;}
#footer{border:1px solid #0000cc;}
scss-作用域
$color: #00c; /* 蓝色 全局变量*/
#header {
$color: #c00; /* red 局部变量 全局变量的影子*/
border: 1px solid $color; /* 红色边框 */
}
#footer {
border: 1px solid $color; /* 蓝色边框 */
}
Sass-作用域编译后
#header{border:1px solid #c00}
#footer{border:1px solid #c00}
我们可以看出来,less和scss中的变量会随着作用域的变化而不一样。sass的变量作用域有两种,局部变量和全局变量 。
tips: 和全局变量名字相同的局部变量叫全局变量的影子
3.输出设置,Less没有输出设置,Sass提供4中输出选项:nested, compact, compressed 和 expanded。
nested:嵌套缩进的css代码
expanded:展开的多行css代码
compact:简洁格式的css代码
compressed:压缩后的css代码
4.Sass支持条件语句,可以使用if{}else{},for{}循环等等。而Less不支持。
5. 引用外部CSS文件
scss引用的外部文件命名必须以_开头, 如下例所示:其中_test1.scss、_test2.scss、_test3.scss文件分别设置的h1 h2 h3。文件名如果以下划线_开头的话,Sass会认为该文件是一个引用文件,不会将其编译为css文件. 你不能用sass
的@import
直接导入一个原始的css
文件,因为sass
会认为你想用css
原生的@import
。但是,因为sass
的语法完全兼容css
,所以你可以把原始的css
文件改名为.scss
后缀,即可直接导入了。
总结: less和sass都是css的预编译处理。sass基本上可以称之为是一门编程语言了。Less则相对清晰明了,易于上手,对编译环境要求比较宽松。
下一篇: Golng并发遍历目录