Day_14 less,scss,stylus

less,scss,stylus 的特点
  1. npm安装方式:

scss: npm i -d sass-loader node-sass
less: npm i -d less-loader less
stylus: npm i -d stylus-loader stylus

  1. 相关资料网站:

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/

  1. 共同点:
  • 引入外部样式文件:@import ‘path’ //注:在vue-cli框架内使用时,如果想使用相对src下的路径则,在路径前添加@/(不适用于less和stylus下引用.css后缀文件),例:‘@/path’
  • 都有选择器嵌套功能
  • 单行注释: //都不会被输出到编译后的文件中
  • 都提供了父选择器标识符&
  • 都有混合器,混合器都可以传参和设置默认值, 混合器内都可以使用&选择器
  • 都提供了各自的内置函数
  • 都可以使用一些常用的运算符: ±*/
  1. 基本语法:
  • Sass 和 Less 都使用的是标准的 CSS 语法, Sass 同时也支持不包含 { } 和 ; 的方式
  • Stylus 支持的语法要更多样性,花括号和分号写不写都可以
  1. scss有属性嵌套功能
font: {
      family: fantasy;
      size: 30em;
      weight: bold;
  }
  //编译结果:
  //font-family: fantasy;
  //font-size: 30em;
  //font-weight: bold
  1. 变量的申明方式:

scss:$variable-name:value
less: @variable-name:value
stylus: variable-name = value

  1. 混合器的使用方式
 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)} 
//注:声明时不用传参数时()可省略,但省略后无论是否被引用该样式都会被打包,所以无论是否需要参数都不能省略声明的(), 引入不用传参数时()不可省略
  1. 插值:

scss: #{}
less: @{}
stylus: {}

  1. 自定义函数:
scss: 
声明:@function funName($param:defaultValue){...}  
调用: funName($param:value)

stylus: 
声明:funName(param=defaultValue){...}  
调用: funName(param:value)

less: 暂无
  1. 可用预算符:
scss:+,-,*,/,%,>,>=,==,!=,<=,<,
less:+,-,*,/,>,>=,=,=<,<
stylus:[],!,~,+,-,**,*,/,%,...,..,>,>=,<,<=,==,!=,&&,||,?,:,=,:=,?=,+=,-=,*=,/=,%=
  1. 内置函数:

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

  1. 关键字:

scss:and,or,not less:when,truth,
stylus:is defined,in,is,not,is
not,isnt,is a,and,or,if,unless,

  1. 避免编译:
    less:~’…’
    stylus:@css{…}
  2. 避免编译拓展,可用于解决有些样式经过编译拓展后被丢失的问题
    less、scss:
    /! autoprefixer: off/
    不要扩展的样式:
    -webkit-box-orient:vertical;
    /! autoprefixer: on/
  3. 避免编译引入文件
    scss: 被引入文件名前加_,引入时不用加_,例:引入_colors.scss:@import ‘colors’
  4. 指令:
    scss:@if,@else if,@else,@for,@each,@while,@-root,@debug,@warn,@extend-Only
  5. 继承
    scss、stylus:@extend selector
    注:不要在scss的css规则中使用后代选择器(比如.foo .bar)去继承css规则,这样生成css中的选择器的数量很快就会失控

总结:

  1. scss提供了属性嵌套功能,可以更进一步减少重复的样式代码,但其继承规则有限制是个缺点
  2. less和stylus提供了更丰富的运算方法和内置函数
  3. stylus的语法相对要更简洁些,也免去了重复的写{}和;
  4. Sass和less有中文版官网,更便于学习
postcss
css 预处理原理

CSS 预处理器用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者可以直接使用这种语言进行 CSS 的编码工作。
简单来说就是“用一种专门的编程语言,进行 Web 页面样式设计,再通过编译器转化为正常的 CSS 文件,以供项目使用”。

实战:项目中需要100个类名,作用于pading:1px 至 padding : 100px区间,用任意CSS预处理器实现。
番外: vue 中的style 中的scoped 属性是左什么的?原理?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百事可爱-后悔下凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值