less和sass有什么区别?

1.背景介绍

预处理器:

CSS预处理器是一种语言,用来为CSS增加一些编程的的特性,无需考虑浏览器的兼容性问题,例如你可以在CSS中使用变量、简单的程序逻辑、函数等等在编程语言中的一些基本技巧,可以让你的CSS更见简洁,适应性更强,代码更直观等诸多好处。

我们最常用的预处理器有scss和less。


2.知识剖析

sass背景

Sass诞生于2007年,最早也是最成熟的一款CSS预处理器语言。

现在的Sass已经有了两套语法规则:一个依旧是用缩进作为分隔符来区分代码块的;另一套规则和CSS一样采用了大括号({})作为分隔符。后一种语法规则又名SCSS,在Sass3之后的版本都支持这种语法规则。目前我们所称的sass一般指语法更为严格和友好的scss。

less背景

2009年开源的一个项目,受Sass的影响较大,使用CSS的语法,在很多流行的框架和工具中已经能经常看到LESS的身影了(例如Twitter的Bootstrap框架就使用了LESS)。

当时SASS和现在的scss不同,采用了缩进作为分隔符来区分代码块,而不是CSS中广为使用的大括号({})。为了让CSS现有的用户使用起来更加方便,Alexis开发了LESS并提供了类似CSS的书写功能。


3.常见问题

scssless有什么不同

我们知道scss和less相似,它们都可以使用变量、常量、嵌套、混入、继承等功能,可以更有效有弹性的写出CSS,下面我们看看它们之间的差异。


4.解决方案

A安装

Sass:

sass基于Ruby语言开发而成,

因此安装sass前需要安装Ruby。

Less:

less直接link引入“.less”文件,再引入less.js文件即可。




B变量

sass是以$开头定义的变量,如:

$mainColor: #963;

less是以@开头定义的变量,如:

@mainColor: #963;


C作用域

sass没有局部变量,满足就近原则。

less中{}内定义的变量为局部变量。

作用域和其他程序语言中的作用域非常的相同,

他首先会查找局部定义的变量,如果没有找到,

会像冒泡一样,一级一级往下查找,直到根为止,


D混合(Mixins)

Sass的混合:

sass样式中声明Mixins时需要使用“@mixin”命令,

在选择器调用定义好的Mixins需要使用“@include”。

/*声明一个Mixin叫作“abc”*/

@mixin abc($bg-c:red){

width: 100px;

height:100px;

background-color: $bg-c;

}

/*调用abc Mixins*/

.a{

@include abc();

}

.b{

/*将参数$bg-c的值重定义为blue*/

@include abc(blue);

}

less的混合:

在less中,混合是指将定义好的“ClassA”中引入另一个已经定义的“Class”,就像在当前的“Class”中增加一个属性一样。

/*声明一个Mixin叫作“abc”*/

.abc($bg-c:red){

width: 100px;

height:100px;

background-color: $bg-c;

}

/*调用abc Mixins*/

.a{

.abc();

}

.b{

/*将参数$bg-c的值重定义为blue*/

.abc(blue);

}

两者编译出的值相同:

.a{

width: 100px;

height:100px;

background-color: red;

}

.b{

width: 100px;

height: 100px;

background-color: blue;

}


E嵌套

两则写法相同:

section {

margin:10px;

nav {

height:25px;

a {

color:#0982c1;

&:hover {

text-decoration:underline;

}

}

}

}


F继承

/*sass的继承:@extend*/

.block {

margin: 10px 5px;

padding: 2px;

}

p {

@extend .block;/*继承.block选择器下所有样式*/

border: 1px solid #eee;

}

ul,ol {

@extend .block; /*继承.block选择器下所有样式*/

color: #333;

text-transform: uppercase;

}

/*less的继承:类似于mixins*/

.block {

margin: 10px 5px;

padding: 2px;

}

p {

.block;/*继承.block选择器下所有样式*/

border: 1px solid #eee;

}

ul,ol {

.block; /*继承.block选择器下所有样式*/

color: #333;

text-transform: uppercase;

}

编译后:

//sass

.block,p,ul,ol {

margin: 10px 5px;

padding:2px;

}

p {

border: 1px solid #eee

}

ul,ol {

color:#333;

text-transform:uppercase;

}

//less

.block {

margin: 10px 5px;

padding:2px;

}

p {

margin: 10px 5px;

padding:2px;

border: 1px solid #eee

}

ul,ol {

margin: 10px 5px;

padding:2px;

color:#333;

text-transform:uppercase;

}


G高级语言

sass对条件语句和循环语句的处理要比less语言强大。具有真正的语言处理能力。


6.扩展思考

A还有什么好的预处理器语言?

stylus,2010年产生于Node.js社区,可同时使用缩进和括号写法,写法非常灵活,扩展性与scss相当,高于less,但由于规定过少,可能容易让人混乱。

B我该如何选择css预处理器?

1,Sass诞生是最早也是最成熟的CSS预处理器,有Ruby社区和Compass支持;Stylus早期服务于Node JS项目,在该社区得到一定支持者;LESS出现于2009年,支持者远超于Ruby和Node JS社区;

2,sass和stylus扩展性更强,sass广泛使用于国外,less在国内受众最多。stylus是后起之秀。

3,Sass和LESS语法较为严谨、严密,而Stylus语法相对散漫,其中LESS学习起来更快一些,因为他更像CSS的标准;

4,sass和LESS相互影响较大,其中Sass受LESS影响,已经进化到了全面兼容CSS的SCSS;

5,Sass和LESS都有第三方工具提供转译,特别是Sass和Compass是绝配;


7.参考文献

参考一:CSS预处理器——Sass、LESS和Stylus实践

参考二:SASS用法指南

参考三:为您详细比较三个CSS预处理器(框架):Sass、LESS和Stylus

参考四:Less中文网

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容