scss: npm i -d sass-loader node-sass
less: npm i -d less-loader less
stylus: npm i -d stylus-loader stylus
scss:https://www.sass.hk/
less:http://lesscss.cn/ http://www.bootcss.com/p/lesscss/
stylus:http://stylus-lang.com/ https://www.zhangxinxu.com/jq/stylus/
scss和sass的区别请详见:http://sass.bootcss.com/docs/scss-for-sass-users/
- 引入外部样式文件:@import ‘path’ //注:在vue-cli框架内使用时,如果想使用相对src下的路径则,在路径前添加@/(不适用于less和stylus下引用.css后缀文件),例:‘@/path’
- 都有选择器嵌套功能
- 单行注释: //都不会被输出到编译后的文件中
- 都提供了父选择器标识符&
- 都有混合器,混合器都可以传参和设置默认值, 混合器内都可以使用&选择器
- 都提供了各自的内置函数
- 都可以使用一些常用的运算符: ±*/
- Sass 和 Less 都使用的是标准的 CSS 语法, Sass 同时也支持不包含 { } 和 ; 的方式
- Stylus 支持的语法要更多样性,花括号和分号写不写都可以
font: {
family: fantasy;
size: 30em;
weight: bold;
}
//编译结果:
//font-family: fantasy;
//font-size: 30em;
//font-weight: bold
scss:$variable-name:value
less: @variable-name:value
stylus: variable-name = value
scss
声明:@mixin mixin-name($param:defaultValue) {...}
引入: @include mixin-name($param:value)
// 注:声明和引用不需传参时()可省略
less
声明:.mixin-name(@param:defaultValue){...}
引入: div{.mixin-name(param:value)}
// 注:声明时不用传参数时()可省略,但省略后无论是否被引用该样式都会被打包,所以无论是否需要参数都不能省略声明的(), 引入不用传参数时()可省略
stylus
声明:mixin-name(param=defaultValue){...}
引入: div{mixin-name(param:value)}
//注:声明时不用传参数时()可省略,但省略后无论是否被引用该样式都会被打包,所以无论是否需要参数都不能省略声明的(), 引入不用传参数时()不可省略
scss: #{}
less: @{}
stylus: {}
scss:
声明:@function funName($param:defaultValue){...}
调用: funName($param:value)
stylus:
声明:funName(param=defaultValue){...}
调用: funName(param:value)
less: 暂无
scss:+,-,*,/,%,>,>=,==,!=,<=,<,
less:+,-,*,/,>,>=,=,=<,<
stylus:[],!,~,+,-,**,*,/,%,...,..,>,>=,<,<=,==,!=,&&,||,?,:,=,:=,?=,+=,-=,*=,/=,%=
scss:
nth,join,append,map-get,map-merge
less:
round,ceil,floor,percentage,saturate,lighten,darken,fade,fadein,fadeout,spin,mix,
stylus:round,ceil,floor,saturate,desaturate,saturation,light,lighten,lightness,darken,red,green,blue,alpha,hue,push,keys,values,typeof,unit,match,abs,min,max,even,add,sum,avg,join,hsla,rgba,invert,unquote,s,operate,length,warn,error,last,p,oppsite-position,image-size,add-property
scss:and,or,not less:when,truth,
stylus:is defined,in,is,not,is
not,isnt,is a,and,or,if,unless,
总结:
CSS 预处理器用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者可以直接使用这种语言进行 CSS 的编码工作。
简单来说就是“用一种专门的编程语言,进行 Web 页面样式设计,再通过编译器转化为正常的 CSS 文件,以供项目使用”。