scss/sass
是动态样式语言,比css多出很多功能(如变量、嵌套、运算,混入(Mixin)、继承、颜色处理,函数等),更方便阅读和维护。
less
也是动态样式语言,一样也比css多处很多功能(如变量,继承,运算, 函数), Less 既可以在客户端上运行,也可在服务端运行 ( Node.js)。
Sass
是缩排语法,对于习惯css的web开发者来说很不直观,还是有点学习成本,也不能将css
代码加入到sass
里面,因此sass
语法进行了改良,Sass 3
就变成了Scss
(sassy css)。与原来的语法兼容,只是用{}
取代了原来的缩进,更容易阅读。
sass
的安装需要Ruby
环境,是在服务端处理的,而less
是需要引入less.js
来处理less
代码输出css到浏览器,也可以在开发环节使用less
,然后编译成css文件,直接放到项目中,也有 Less.app、SimpleLess、CodeKit.app这样的工具,也有在线编译地址。在一般前端项目里面使用 yarn add less
yarn add less-loader
添加到对应的项目里面。
less
、scss
的变量符不一样less
是@、scss
是$、css
变量是两根连词线(- -)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
/** 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中的变量会随着作用域的变化而不一样。 */ |
less
没有输出设置
scss
提供四种输出选项:nested
, compact
, compressed
和 expanded
。
有四种选择,默认为nested
nested
:嵌套缩进的css
代码expanded
:展开的多行css
代码compact
:简洁格式的css
代码compressed
:压缩后的css
代码less
不支持条件语句
scss
语句支持if{}else{}、for{}循环语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/** if else */ @if lightness($color) > 30% { /** do....*/ } @else { /** do....*/ } /** 循环*/ @for $i from 1 to 10 { .border-#{$i} { border: #{$i}px solid red; } } |
scss
引用的外部文件命名必须以_开头, 如下例所示:其中_test1.scss
、_test2.scss
、_test3.scss
文件分别设置的h1 h2 h3。文件名如果以下划线_
开头的话,sass
会认为该文件是一个引用文件,不会将其编译为css文件.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// 源代码: @import "_test1.scss"; @import "_test2.scss"; @import "_test3.scss"; // 编译后: h1 { font-size: 17px; } h2 { font-size: 17px; } h3 { font-size: 17px; } |
less
引用外部文件和css
中的@import
没什么差异。
sass/scss
或是less
,都可以看作为一种基于css之上的高级语言,其目的是使得css开发更灵活和更强大,sass
的功能比less
强大,基本可以说是一种真正的编程语言了,less
则相对清晰明了,易于上手,对编译环境要求比较宽松,在实际开发中更倾向于选择less
。但如果认真深入scss
之后还是建议切换到scss,因为更加强大,更好用。
from:https://blog.csdn.net/guoqiankunmiss/article/details/106113821