LESS vs SASS?选择哪种CSS样式编程语言?

你可能已经被关于应该用Sass还是用LESS的争论折磨死了。在这篇文章中,我会解释为什么你应该使用Sass。如果你感兴趣,我会介绍如何开始使用Sass以及在预处理时会遇到的一些问题。
 
在我的长篇大论之前,让我稍微提一下,你应该先学一下LESS。LESS对于初学者来说是极好的:它非常容易使用和设置,它跟CSS非常像,写起来非常直观,简单还有友好,我曾经非常喜欢LESS。
 
直到最近我发现了Sass和Compass的。往回看,我还是倾向于LESS是针对初学者的,是对预处理CSS很好的入门。Sass是下一代的,对有经验的前端工程师来说是很有用的工具。
 

为什么Sass比LESS要好

 
Sass有很多可用的方法和逻辑。例如:条件和循环语句。LESS也可以做到,但不是很高效且不直观。像LESS一样,Sass也内置了一些非常友好的函数,像颜色,数字,还有变量列表。
Sass用户可以使用功能强大的Compass库。这些库LESS用户也可以用,但并不完全一样,因为这是由一个庞大的社区来共同维护的。Compass有非常强大的特性,像自动生成图片切片(CSS Sprites),传统浏览器支持,还有对CSS3的跨浏览器支持等。
 
Compass同样允许你使用外部框架像Blueprint, Foundation 或 Bootstrap。这也意味着你可以非常容易的使用你喜欢的框架而不需要掌握各种不同的工具。
 

LESS的问题

 
LESS的目标是尽量跟CSS在风格上保持一致,包括语义和结构。这对于用户的书写习惯来说是一个很好的想法,这样也让它的工作方式和SASS有很大的不同。
 

逻辑语句

在LESS中你可以使用"guarded mixin"来表达基本的逻辑:

.lightswitch(@colour) when (lightness(@colour) > 40%) {
  color: @colour;
  background-color: #000;
  .box-shadow(0 3px 4px #ddd);
}

.lightswitch(@colour) when (lightness(@colour) < 41%) {
  color: @colour;
  background-color: #fff;
  .box-shadow(0 1px 1px rgba(0,0,0,0.3));
}

 

等价于SASS中的:

@mixin lightswitch($colour) {
  color: $colour;
  @if(lightness($colour) > 40%) {
    background-color: #000;
    @include box-shadow(0 3px 4px #ddd);
  }
  @if(lightness($colour) <= 40%) {
    background-color: #fff;
    @include box-shadow(0 1px 1px rgba(#000,0.3));
  }
}

 

循环

在LESS中你可以使用数字实现循环

.looper (@i) when (@i > 0) {
  .image-class-@{i} {
    background: url("../img/@{i}.png") no-repeat;
  }
  .looper(@i - 1);
}
.looper(0);
.looper(3);

 

输出:

.image-class-3 {
  background: url("../img/10.png") no-repeat;
}
.image-class-2 {
  background: url("../img/9.png") no-repeat;
}
.image-class-1 {
  background: url("../img/8.png") no-repeat;
}

 

在Sass中你可以枚举任何类型的数据,这个可能更有用

@each $beer in stout, pilsner, lager {
  .#{$beer}-background {
    background: url("../img/beers/#{$beer}.png") no-repeat;
  }
}

 

输出

.stout-background {
  background: url("../img/beers/stout.png") no-repeat;
}
.pilsner-background {
  background: url("../img/beers/pilsner.png") no-repeat;
}
.lager-background {
  background: url("../img/beers/porter.png") no-repeat;
}

 

自定义函数

在Sass中,你可以创建你顺手的字定义函数,像这样:

$em-base: 16px !default;
@function emCalc($pxWidth) {
  @return $pxWidth / $em-base * 1em;
}

 

LESS中:

@em-base: 16px;
.emCalc(@pxWidth) {
  //Ah. 没办法了...
}

 

呵呵…  你更喜欢哪一个呢?
 

用Sass和Compass时的问题

 
这些似乎是人们在使用Sass时遇到的最大问题:
 
你需要搭建Ruby的运行环境;
你对命令行有点恐惧;

切换到另一个工具所产生的不便和额外的时间消耗;

安装SASS请参考SASS官方网站:  http://sass-lang.com/install

原文地址 flippinawesome.org
 

本文转自: LESS vs SASS?选择哪种CSS样式编程语言?

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Sass 和 Less 是两种 CSS 预处理器。 Sass 是一种功能强大的 CSS 预处理器,它为 CSS 增加了变量、嵌套、混合等功能,使得 CSS 的编写更加方便和灵活。 Less 是一种轻量级的 CSS 预处理器,它为 CSS 增加了变量、嵌套、混合、函数等功能,使得 CSS 的编写更加方便和灵活。 Sass 和 Less 都是为了提高 CSS 的编写效率而设计的,但是 Sass 比 Less 功能更为强大,并且 Sass 的语法也更加丰富。 ### 回答2: Sass和Less是两种流行的CSS预处理器,它们的关系可以从以下几个方面来描述。 首先,它们的共同点在于都是为了解决CSS编写过程中的一些不便之处而产生的,例如,样式复用、变量和函数的使用以及嵌套等。它们都提供了一种更具可维护性和可扩展性的方式来编写CSS。 其次,它们的语法有所不同。Sass使用类似于Ruby的语法,使用缩进和冒号来表示层级嵌套和属性赋值。而Less则更接近于常规的CSS写法,使用大括号来表示层级嵌套和属性赋值。因此,对于熟悉CSS语法的开发者来说,可能更容易上手Less。 此外,在功能和特性上,Sass和Less也存在一些差异。Sass提供了更丰富的功能,例如,混合(Mixins)、继承(Inheritance)、扩展(Extension)等,使得样式的重用和扩展更加方便。而Less的功能相对较少,但其学习曲线较平缓,对于一些简单的项目可能会更适合。 最后,在使用上,Sass和Less都需要通过编译器将其转换为常规的CSS文件才能被浏览器所解析和渲染。这意味着,在项目中使用它们时需要安装相应的编译工具,并通过命令行或构建工具来进行编译。 总结来说,Sass和Less都是流行的CSS预处理器,它们都提供了一种更便捷和可维护的方式来编写CSS。它们之间的主要区别在于语法和特性上的差异,以及在一些复杂项目中的选择和适用性。 ### 回答3: Sass与Less是两种流行的CSS预处理器,它们都提供了许多便捷的方式来编写和组织CSS代码。 首先,Sass和Less都允许使用变量、嵌套规则、混合、继承等高级功能,这些特性可以大大简化CSS代码的编写,并提高代码的可维护性。 Sass与Less的主要区别在于它们的语法不同。Sass使用的是缩排式语法,即通过缩进来表示层级关系,而Less则使用的是类似于CSS的语法。对于熟悉CSS的开发者来说,学习和使用Less可能更容易上手,而对于通过其他编程语言学习的开发者来说,Sass的缩排式语法可能更容易理解和使用。 另一个不同点是编译器的选择SassSass和SCSS两种语法,而Less只有一种语法。在选择编译器方面,Sass可以使用Dart Sass和Node Sass两个主要的编译器,而Less则使用Less.js作为其主要的编译器。 值得注意的是,Sass和Less之间存在相互转换的工具,可以将Sass语法转换为Less语法,或将Less语法转换为Sass语法。这进一步增加了它们的相互关系。 总的来说,Sass和Less都是强大的CSS预处理器,它们在功能和特性上有所不同,但都可以极大地提高CSS代码的开发效率和可维护性。根据个人的喜好和项目需求,选择使用其中之一或两者结合,都可以帮助开发者更好地管理和组织CSS代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值