你可能已经被关于应该用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样式编程语言?

LESS vs SASS?选择哪种CSS样式编程语言?相关推荐

  1. 设置图片元素上下垂直居中的7种css样式_赵一鸣博客

    设置图片元素上下垂直居中的7种css样式 阅读(9548) @2018-07-15 14:13:34 图片.文字左右居中很简单,只需要以下代码: 1 text-align:center; 文字上下居中 ...

  2. Sass:一种CSS预处理器语言

    http://sass-lang.com/ Sass是一种CSS预处理器语言,通过编程方式生成CSS代码.因为可编程,所以操控灵活性自由度高,方便实现一些直接编写CSS代码较困难的代码. 同时,因为S ...

  3. 三种CSS样式的引用方式

    CSS样式 3种引用样式的好处及区别: 外部引入样式 优点:代码易于管理和维护,一个CSS能控制多个页面.提高加载速度. 缺点:当外部CSS过多时会造成服务器的请求压力. 头部引入样式: .  优点: ...

  4. 三种css样式表及其优先级

    1.行内样式 body内: <p style="text-indent: 2em;color: red"> 我是行内样式 </p> 2.内部样式表 body ...

  5. 常用的四种CSS样式表格

    1. 单像素边框CSS表格 这是一个很常用的表格样式. [html] <style type="text/css"> table.gridtable { font-fa ...

  6. 如何在AngularJS中有条件地应用CSS样式?

    本文翻译自:How do I conditionally apply CSS styles in AngularJS? Q1. Q1. Suppose I want to alter the look ...

  7. html中样式里面有符号,css样式 + 特殊符号

    color控制字体颜色 十六进制值 #cc0066: font-size控制字体大小 单位 px / % / em / rem:像素 / 相对于父级元素 / 取决自己使用字体大小 / 取决于根元素ht ...

  8. html+引导,html – 引导点的CSS样式

    我正在研究一种CSS样式,它为目录页面生成点.该代码基于 https://code.google.com/p/wkhtmltopdf/issues/detail?id=1073. 我们的想法是创建一个 ...

  9. 关于jquery动态改变css样式后,对象获取不到的解决办法

    2019独角兽企业重金招聘Python工程师标准>>> 情况如下: <!DOCTYPE html> <html><head><meta ch ...

最新文章

  1. ie与firefox 关于js 的差别(转载)
  2. 一款强大而实用的图片去水印神器
  3. C# 中对COOKIES的操作
  4. php如何删除数据库中的数据库文件夹,学习猿地-php数据库如何删除数据
  5. ImageLoader实现图片异步加载
  6. Matlab中用到的bsxfun函数
  7. VS2010 没有C#或者其他模板怎么办,不用重装
  8. linux svn服务器同步,Linux服务器实现SVN与WEB同步解决方案
  9. NOI / 2.5基本算法之搜索7834:分成互质组(详细讲解)
  10. Android使用VAD检测是否说话
  11. 怎样写好Git的commit信息
  12. 【大数据离线开发】1、大数据准备环境之Linux配置
  13. 编译实验 lr c语言代码,编译原理-实验5-LR(1)分析法
  14. 浅谈——业务逻辑漏洞
  15. Docker从入门到上瘾,万字终极指南!
  16. 盘古开源:技术为基创新驱动数据存储体系完善
  17. 你一定要这么多功能么?——献给希望创业的兄弟们
  18. Anaconda4.5.1+tensorflow2.1.0+keras2.3.1+theano+Mingw+python3.6安装总结
  19. 百度地图、高德地图和腾讯地图定位不准确的解决方案
  20. git 进阶系列教程-------git使用流程

热门文章

  1. Product of Three Numbers(CF-1294C)
  2. Cow Line(洛谷-P3014)
  3. 信息学奥赛一本通C++语言——1080:余数相同问题
  4. python图像库_Python常用图像处理库整理
  5. C语言 strlcpy函数实现
  6. noip复赛批量移动文件夹下的文件
  7. layui多文件上传讲解_layui d多文件上传(示例代码)
  8. jsencrypt加密结果false(网罗答案) - 分析篇
  9. 一款简单微信小程序个人博客
  10. WordPress主题Ashade2.0摄影展示 图片展示主题