zoukankan      html  css  js  c++  java
  • scss/less/stylus的区别对比总结

      一、npm安装方式:

    scss: npm i -d sass-loader node-sass
    less: npm i -d less-loader less
    stylus: npm i -d stylus-loader stylus
    相关资料网站:
    less:http://lesscss.cn/  http://www.bootcss.com/p/lesscss/ 
    scss和sass的区别请详见:http://sass.bootcss.com/docs/scss-for-sass-users/
    二、常用功能对比
    1.共同点:
    (1)引入外部样式文件:@import 'path' //注:在vue-cli框架内使用时,如果想使用相对src下的路径则,在路径前添加~@/(不适用于less和stylus下引用.css后缀文件),例:‘~@/path’
    (2)都有选择器嵌套功能
    (3单行注释: //都不会被输出到编译后的文件中
    (4)都提供了父选择器标识符&
    (5)都有混合器,混合器都可以传参和设置默认值, 混合器内都可以使用&选择器
    (6)都提供了各自的内置函数
    (7)都可以使用一些常用的运算符: +-*/
    2.不同点
    (1)stylus不需要写;和{},其他两个要写
    (2)stylus的混合器样式可用空格代替:
    (3)scss有属性嵌套功能
    font: {
          family: fantasy;
          size: 30em;
          weight: bold;
      }
      //编译结果:
      //font-family: fantasy;
      //font-size: 30em;
      //font-weight: bold
    (4)变量的申明方式:
    scss:$variable-name:value
    less: @variable-name:value
    stylus: variable-name = value
    (5)混合器的使用方式
    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)} //注:声明时不用传参数时()可省略,但省略后无论是否被引用该样式都会被打包,所以无论是否需要参数都不能省略声明的(), 入不用传参数时()不可省略
    (6)插值:
    scss: #{}
    less: @{}
    stylus: {}
    (7)自定义函数:
    scss: 声明:@function funName($param:defaultValue){...}  调用: funName($param:value)
    stylus: 声明:funName(param=defaultValue){...}  调用: funName(param:value)
    less: 暂无
    (8)可用预算符:
    scss:+,-,*,/,%,>,>=,==,!=,<=,<,
    less:+,-,*,/,>,>=,=,=<,<
    stylus:[],!,~,+,-,**,*,/,%,...,..,>,>=,<,<=,==,!=,&&,||,?,:,=,:=,?=,+=,-=,*=,/=,%=
    (9)内置函数:
    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
    (10)关键字:
    scss:and,or,not
      less:when,truth,
    stylus:is defined,in,is,not,is not,isnt,is a,and,or,if,unless,
    (11)避免编译:
    less:~'...'
    stylus:@css{...}
    (12)避免编译拓展,可用于解决有些样式经过编译拓展后被丢失的问题
    less、scss:
    /*! autoprefixer: off*/
    不要扩展的样式:
    -webkit-box-orient:vertical;
    /*! autoprefixer: on*/
    (13)避免编译引入文件
    scss: 被引入文件名前加_,引入时不用加_,例:引入_colors.scss:@import 'colors'
    (14)指令:
    scss:@if,@else if,@else,@for,@each,@while,@-root,@debug,@warn,@extend-Only
    (15)继承
    scss、stylus:@extend selector
    注:不要在scss的css规则中使用后代选择器(比如.foo .bar)去继承css规则,这样生成css中的选择器的数量很快就会失控
    (16)后缀
    less: .less
    stylus: .styl
    scss: .scss
    (17)在vue-cli3中引入全局样式变量文件的方式
    scss:在vue.config.js中添加如下配置
    module.exports = {
        // ...
        css: {
          loaderOptions: {
            sass: {
              data: `@import "@/assets/styles/_variable.scss"; `
            }
          }
        }
      }
    

       less:在命令行运行:vue add style-resources-loader,然后在vue.config.js中添加如下配置

    module.exports = {
        pluginOptions: {
          'style-resources-loader': {
             preProcessor: 'less',
             patterns: [
                  path.resolve(__dirname,  './src/styles/_variable.less')//相对于vue.config.js文件的变量文件路径
              ],
          },
        },
      }    
    
    三、总结
    1.scss提供了属性嵌套功能,可以更进一步减少重复的样式代码,但其继承规则有限制是个缺点
    2.less和stylus提供了更丰富的运算方法和内置函数
    3.stylus的语法相对要更简洁些,也免去了重复的写{}和;
    4.Sass和less有中文版官网,更便于学习
     
  • 相关阅读:
    C#捕获摄像头进行拍照和录像资料总结
    MySQL:日期函数、时间函数总结(MySQL 5.X)
    apache 虚拟主机详细配置:http.conf配置详解
    [转载文章]6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
    GetType和typeof的区别
    [转]C#读写xml文件
    DateTime 格式化
    jquery sortable 插件参数详解
    [转]一个人脸检测器
    why SOA
  • 原文地址:https://www.cnblogs.com/chenxiangling/p/10518483.html
Copyright © 2011-2022 走看看