less 和sass的相同与区别

142 阅读3分钟

对于开发者来说css对于开发者来说都是最基础的,也是最简单的一门语言,无论你是WEB前端开发者还是后端开发者,都是一门必将掌握的语言。但它并不支持变量、函数、混合等功能,但是sass和less解决了这个问题。不管是sass还是less都可以视为一种基于css之上的高级语言,其目的是使得css开发更灵活和更强大,sass的功能比less强大,基本上可以说是一种真正的编程语言了,less则相对清晰明白了,易于上手,对编译环境要求比较宽松。Less与sass有着很多相同之处,也有着较大的差异,今天分享一下它们相同与区别,希望对你的学习与工作有帮助。

一.Less和Sass的定义

1. Less

Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量、混合(mixin)、函数等功能,让 CSS 更易维护、方便制作主题、扩充。Less 可以运行在 Node 或浏览器端。

2. Sass

Sass是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量、嵌套、运算,混入(Mixin)、继承、颜色处理,函数等),更容易阅读。基于ruby在服务端进行处理。

二.Less和Sass相同之处

Less和Sass在语法上有些共性,比如下面这些:

1、混入(Mixins)——class中的class;

2、参数混入——可以传递参数的class,就像函数一样;

3、嵌套规则——Class中嵌套class,从而减少重复的代码;

4、运算——CSS中用上数学;

5、颜色功能——可以编辑颜色;

6、名字空间(namespace)——分组样式,从而可以被调用;

7、作用域——局部修改样式;

8、JavaScript 赋值——在CSS中使用JavaScript表达式赋值。

三.Less和Sass区别

1. less是基于javascript在客户端进行处理;sass是基于ruby在服务端进行处理;

2. 变量的声明,less用@,sass用$


@color:#f00

.main {

  color:@color

}

/************SASS****************/

$color:#f00

.main {

  color:$color

}
复制代码

3. sass支持条件语句【if/else/for循环等】,less不支持

@if****

这个@if就不用解释吧,一看都知道是条件判断。这个东西对于浏览器兼容这块可以出不少力量;然后对于写一些基础的scss,控制样式的输出也是一大利器;当然还有很多很多了,反正是个必备的好东西就是了。先来个简单的例子吧:


*//inline-block***

*//ie6-7 *display: inline;*zoom:1;***

@mixin inline-block {

  display: inline-block;

  @if $lte7 {

    *display: inline;*zoom:1;

  }

}
复制代码

如果变量$lte7为真,就输出*display: inline;*zoom:1;。

既然有@if,那肯定有@else


*//背景色半透明***

@mixin bgcolor-alpha($bgcolor: rgba(0,0,0,.5)){

  color:#fff;

  @if $filter{

filter:progid:DXImageTransform.Microsoft.gradient(enabled='true',startColorstr='#{ie-hex-str($bgcolor)}', endColorstr='#{ie-hex-str($bgcolor)}');

  }@else{

    background-color: #333;

  }

  background-color:$bgcolor;

}
复制代码

这是半透明rgba背景的一段代码,高级浏览器用rgba,ie6-8如果开启滤镜用滤镜,不开启滤镜就用纯色,常用于图片下方浮现标题。


**@for******

*// class span1-$gridColumns***

*// span的class循环输出,通过变量$gridSpanSwitch来控制是否输出***

*//-----------------------------------------------------***

$gridColumns:      12 **!default**;

$gridcolumnWidth:  60px **!default**;

$gridGutter:       20px **!default**;

 

%span-base{

  float:left;

  margin-left:$gridGutter / 2;

  margin-right:$gridGutter / 2;

}

@for $i from 1 through $gridColumns {

  .span#{$i} {

    @extend %span-base;

    width:($gridcolumnWidth + $gridGutter) * $i - $gridGutter;

  }

}
复制代码

解析后的css:


  float: left;

  margin-left: 10px;

  margin-right: 10px;

}

.span1 {width: 60px;}

.span2 {width: 140px;}

.span3 {width: 220px;}

.span4 {width: 300px;}

.span5 {width: 380px;}

.span6 {width: 460px;}

.span7 {width: 540px;}

.span8 {width: 620px;}

.span9 {width: 700px;}

.span10 {width: 780px;}

.span11 {width: 860px;}

.span12 {width: 940px;}
复制代码

这样一循环,比一个个写爽多了吧,因为float和margin什么的都一样,所以我们使用占位选择器申明,然后@extend调用,那样就是组合申明了。

4. 变量插值【 less:@{}    sass:#{}】


@selector:info

@{selector}{

  color:#f00

}

/*************SASS***************/

#{selector}{ color:#f00 }
复制代码

5. 定义,参数的使用


.center(){

  text-align:center;

}

#main{

  .center

}

/*************SASS***************/

@mixin center{

  text-align:center;

}

#main{

  @include center

}
复制代码

总结:以上就是less与sass的相同之处与区别,总体来说各有优缺点,使用哪一个还要根据项目而定,不建议两个混合使用,这样的代码比较凌乱。 查看完整附件


作者:CRMEB技术团队
链接:juejin.cn/post/713350… 来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。