`
天梯梦
  • 浏览: 13733296 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

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样式编程语言?

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    CSS高效开发实战—CSS 3、LESS、SASS、Bootstrap、Foundation源代码

    3. **SASS**:SASS是另一种流行的CSS预处理器,它提供了更强大的编程特性,如函数、嵌套规则、选择器继承、条件语句和循环。SASS的SCSS语法(Sassy CSS)与CSS3兼容,可以直接编译为CSS,让开发者可以写出更加结构化...

    InspiniaAdmin 2.6.1 PDF_LESS_SASS_SCSS

    InspiniaAdmin同时提供了SASS和SCSS版本,这意味着无论开发者习惯哪种语法,都可以方便地进行开发。SASS/SCSS的使用大大提高了样式管理的效率,减少了代码重复,并且方便团队协作。 在PSD_Files目录中,通常包含了...

    学习CSS预处理器:Sass和less进行对比

    由于原始CSS语言本身并不支持这些特性,预处理器如Sass和Less就显得尤为重要。它们将开发者使用的特殊语法编译成标准的CSS,从而解决了CSS代码组织和浏览器兼容性问题。 【Sass和Less对比】 1. **语法差异** - ...

    css 时尚编程百例

    9. **CSS预处理器**:如Sass、Less和Stylus,它们扩展了CSS的功能,允许变量、嵌套规则、函数和混合(mixins)等,提高代码的可维护性和可复用性。 10. **CSS模块化与打包工具**:如CSS Modules、PostCSS和Webpack...

    Web-前端html+css从入门到精通 220. Sass与Less介绍和环境搭建.zip

    Sass和Less是CSS的预处理器,它们允许开发者使用变量、嵌套规则、混合(mixins)、函数等编程特性来编写更易于管理和维护的样式表。相较于传统的CSS,这些预处理器提供了更高层次的抽象,使代码更易于重用,减少了...

    CSS时尚编程百例(PDF)

    此外,CSS预处理器如Sass和Less也可能是讨论的主题。它们允许使用变量、嵌套规则、函数等高级特性,提高CSS代码的可维护性和可读性。预处理器编译后的CSS代码兼容所有浏览器,同时简化了大型项目中的样式管理。 总...

    详解Angular-cli生成组件修改css成less或sass的实例

    本文将详细介绍如何通过修改Angular CLI配置,使得在生成组件时直接使用Less或Sass作为样式语言。 首先,我们通过Angular CLI生成一个新的组件。在终端中输入以下命令: ```bash ng generate component ...

    java控制css样式的读写

    在Java编程中,控制CSS样式的读写是一项重要的任务,特别是在构建动态网页或者服务器端渲染时。CSS(层叠样式表)是用于定义HTML或XML(包括如SVG、MathML等各种XML方言)文档呈现的样式语言,而Java作为后端语言,...

    CSS 时尚编程百例

    8. **CSS预处理器**:介绍Sass、Less等CSS预处理器,通过变量、嵌套规则和混合等特性简化CSS编写。 9. **CSS模块化**:学习使用BEM命名方法,模块化CSS代码,提高可复用性和可维护性。 10. **性能优化**:学习如何...

    css样式表中文手册

    7. **CSS预处理器**:如Sass、Less等预处理器的介绍,它们可以增强CSS的功能,使其支持变量、嵌套规则、函数等编程特性。 8. **浏览器兼容性**:讲解CSS特性的浏览器支持情况,以及如何处理浏览器之间的兼容性问题...

    lesscss中文文档_编译工具koala

    LESSCSS是一种CSS预处理器,它扩展了CSS语言,引入了变量、嵌套规则、运算符、函数等编程特性,使得CSS编写更简洁、更易于维护。LessCSS通过将CSS代码写入扩展名为`.less`的文件中,然后使用编译工具将其转换为标准...

    300道HTML、CSS习题及面试题(含答案)

    这300道HTML、CSS习题及面试题的集合,旨在帮助学习者深入理解这两种语言的核心概念,提高实际应用能力,以及应对可能遇到的技术面试。 1. HTML基础知识: - 什么是HTML?HTML(超文本标记语言)是用于创建网页的...

    java css样式

    Java,作为一种通用编程语言,常常用于后端服务器端逻辑处理,而CSS(层叠样式表)则是前端设计的核心,用于定义网页的布局、颜色、字体等视觉样式。 Java 在网页开发中的应用主要体现在两个方面:一是通过Java ...

    java Script 样式 CSS

    JavaScript,全称ECMAScript,是一种解释型的、跨平台的脚本语言,主要用于网页和应用程序的客户端编程。它赋予了网页动态功能,如用户交互、动画效果、数据验证等。JavaScript的核心概念包括变量、数据类型、控制...

    css学习大全(包括css生成器,各种经典样式,css学习文档)

    这个压缩包文件看起来是一个全面的CSS学习资源集合,包含了CSS生成器、各种经典的CSS样式示例以及CSS的学习文档。接下来,我们将深入探讨这些知识点。 首先,CSS生成器是一个在线工具,它允许用户通过图形用户界面...

    前端大厂最新面试题-sass_less_stylus.docx

    理器中最核心的功能之一,它允许我们将一组CSS样式定义为一个模块,然后在需要的地方导入使用,大大提高了代码的复用性和可维护性。 在Sass中,定义一个混入使用`@mixin`关键字,导入使用`@include`: ```scss @...

    koala less

    LESS是一种CSS的扩展语言,它引入了变量、嵌套规则、运算符等编程特性,让CSS编写更加简洁和易于维护。而"koala"是这个过程中的关键工具,它是一个开源的图形界面应用,专门用于编译LESS到CSS。 在前端开发中,LESS...

    CSS后处理器_CSS_JavaScript_下载.zip

    5. 条件语句(Conditionals)与循环(Loops):类似编程语言的条件判断和循环,让CSS可以根据不同条件执行不同的样式,如Sass的`@if`、`@for`。 三、Sass、Less和Stylus的特点 1. Sass:Sass是最受欢迎的CSS后...

    网页设计之css样式表手册

    最后,CSS预处理器如Sass和Less,可以提升编写和维护大型样式表的效率,它们允许变量、嵌套规则、混合和函数等编程概念,使得CSS代码更加模块化和可维护。 总的来说,“网页设计之css样式表手册”应该是一本全面的...

Global site tag (gtag.js) - Google Analytics