Sass和less的区别是什么?⽤哪个好
什么是Sass和Less?
Sass和Less都属于CSS预处理器,那什么是 CSS 预处理器呢?
CSS 预处理器定义了⼀种新的语⾔,其基本思想是,⽤⼀种专门的编程语⾔,为 CSS 增加了⼀些编程的特性,将 CSS 作为⽬标⽣成⽂件,然后开发者就只要使⽤这种语⾔进⾏CSS的编码⼯作。
转化成通俗易懂的话来说就是“⽤⼀种专门的编程语⾔,进⾏ Web 页⾯样式设计,再通过编译器转化为正常的 CSS ⽂件,以供项⽬使⽤”。
为什么要使⽤CSS预处理器?
作为前端开发⼈员,⼤家都知道,Js中可以⾃定义变量,⽽CSS仅仅是⼀个标记语⾔,不是编程语⾔,因此不可以⾃定义变量,不可以引⽤等等。
CSS有具体以下⼏个缺点:
语法不够强⼤,⽐如⽆法嵌套书写,导致模块化开发中需要书写很多重复的选择器;
没有变量和合理的样式复⽤机制,使得逻辑上相关的属性值必须以字⾯量的形式重复输出,导致难以维护。
这就导致了我们在⼯作中⽆端增加了许多⼯作量。⽽使⽤CSS预处理器,提供 CSS 缺失的样式层复⽤机制、减少冗余代码,提⾼样式代码的可维护性。⼤⼤提⾼了我们的开发效率。
但是,CSS预处理器也不是万⾦油,CSS的好处在于简便、随时随地被使⽤和调试。预编译CSS步骤的加⼊,让我们开发⼯作流中多了⼀个环节,调试也变得更⿇烦了。更⼤的问题在于,预编译很容易造成后代选择器的滥⽤。
所以我们在实际项⽬中衡量预编译⽅案时,还是得想想,⽐起带来的额外维护开销,CSS预处理器有没有解决更⼤的⿇烦。
Sass和Less的⽐较
不同之处
1、Less环境较Sass简单
Cass的安装需要安装Ruby环境,Less基于JavaScript,是需要引⼊Less.js来处理代码输出css到浏览
器,也可以在开发环节使⽤Less,然后编译成css⽂件,直接放在项⽬中,有less.app、SimpleLess、CodeKit.app这样的⼯具,也有在线编辑地址。
2、Less使⽤较Sass简单
LESS 并没有裁剪 CSS 原有的特性,⽽是在现有 CSS 语法的基础上,为 CSS 加⼊程序式语⾔的特性。只要你了解 CSS 基础就可以很容易上⼿。
3、从功能出发,Sass较Less略强⼤⼀些
①sass有变量和作⽤域。
- $variable,like php;
- #{$variable}like ruby;
- 变量有全局和局部之分,并且有优先级。
②sass有函数的概念;
- @function和@return以及函数参数(还有不定参)可以让你像js开发那样封装你想要的逻辑。
-@mixin类似function但缺少像function的编程逻辑,更多的是提⾼css代码段的复⽤性和模块化,这个⽤的⼈也是最多的。
-ruby提供了⾮常丰富的内置原⽣api。
③进程控制:
-条件:@if @else;
-循环遍历:@for @each @while
-继承:@extend
-引⽤:@import
④数据结构:
-$list类型=数组;
-$map类型=object;
其余的也有string、number、function等类型
4、Less与Sass处理机制不⼀样
前者是通过客户端处理的,后者是通过服务端处理,相⽐较之下前者解析会⽐后者慢⼀点
5、关于变量在Less和Sass中的唯⼀区别就是Less⽤@,Sass⽤$。
相同之处
Less和Sass在语法上有些共性,⽐如下⾯这些:
1、混⼊(Mixins)——class中的class;
2、参数混⼊——可以传递参数的class,就像函数⼀样;
3、嵌套规则——Class中嵌套class,从⽽减少重复的代码;
4、运算——CSS中⽤上数学;
5、颜⾊功能——可以编辑颜⾊;
6、名字空间(namespace)——分组样式,从⽽可以被调⽤;
原生js和js的区别
7、作⽤域——局部修改样式;
8、JavaScript 赋值——在CSS中使⽤JavaScript表达式赋值。
为什么选择使⽤Sass⽽不是Less?
1、Sass在市⾯上有⼀些成熟的框架,⽐如说Compass,⽽且有很多框架也在使⽤Sass,⽐如说Foundation。
2、就国外讨论的热度来说,Sass绝对优于LESS。
3、就学习教程来说,Sass的教程要优于LESS。在国内LESS集中的教程是LESS中⽂官⽹,⽽Sass的中⽂教程,慢慢在国内也较为普遍。
4、Sass也是成熟的CSS预处理器之⼀,⽽且有⼀个稳定,强⼤的团队在维护。
5、同时还有Scss对sass语法进⾏了改良,Sass 3就变成了Scss(sassy css)。与原来的语法兼容,只是⽤{}取代了原来的缩进。
6、bootstrap(Web框架)最新推出的版本4,使⽤的就是Sass。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。