这篇文章主要解答以下几个问题,供前端开发者的新手参考。

1、什么是Sass和Less?

2、为什么要使用CSS预处理器?

3、Sass和Less的比较

4、为什么选择使用Sass而不是Less?


什么是Sass和Less?

      Sass和Less都属于CSS预处理器,那什么是 CSS 预处理器呢?

       CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行CSS的编码工作。

       转化成通俗易懂的话来说就是“用一种专门的编程语言,进行 Web 页面样式设计,再通过编译器转化为正常的 CSS 文件,以供项目使用”。


为什么要使用CSS预处理器?

作为前端开发人员,大家都知道,Js中可以自定义变量,而CSS仅仅是一个标记语言,不是编程语言,因此不可以自定义变量,不可以引用等等。

 CSS有具体以下几个缺点:

  • 语法不够强大,比如无法嵌套书写,导致模块化开发中需要书写很多重复的选择器;
  • 没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量的形式重复输出,导致难以维护。

这就导致了我们在工作中无端增加了许多工作量。而使用CSS预处理器,提供 CSS 缺失的样式层复用机制、减少冗余代码,提高样式代码的可维护性。大大提高了我们的开发效率。

但是,CSS预处理器也不是万金油,CSS的好处在于简便、随时随地被使用和调试。预编译CSS步骤的加入,让我们开发工作流中多了一个环节,调试也变得更麻烦了。更大的问题在于,预编译很容易造成后代选择器的滥用。

所以我们在实际项目中衡量预编译方案时,还是得想想,比起带来的额外维护开销,CSS预处理器有没有解决更大的麻烦。


Sass和Less的比较

不同之处

1、Less环境较Sass简单

Cass的安装需要安装Ruby环境,Less基于JavaScript,是需要引入Less.js来处理代码输出css到浏览器,也可以在开发环节使用Less,然后编译成css文件,直接放在项目中,有less.app、SimpleLess、CodeKit.app这样的工具,也有在线编辑地址。

2、Less使用较Sass简单

LESS 并没有裁剪 CSS 原有的特性,而是在现有 CSS 语法的基础上,为 CSS 加入程序式语言的特性。只要你了解 CSS 基础就可以很容易上手。

3、从功能出发,Sass较Less略强大一些

①sass有变量和作用域。
- $variable,like php;
- #{$variable}like ruby;
- 变量有全局和局部之分,并且有优先级。

②sass有函数的概念;
- @function和@return以及函数参数(还有不定参)可以让你像js开发那样封装你想要的逻辑。
-@mixin类似function但缺少像function的编程逻辑,更多的是提高css代码段的复用性和模块化,这个用的人也是最多的。
-ruby提供了非常丰富的内置原生api。

③进程控制:
-条件:@if @else;
-循环遍历:@for @each @while
-继承:@extend
-引用:@import

④数据结构:
-$list类型=数组;
-$map类型=object;
其余的也有string、number、function等类型

4、Less与Sass处理机制不一样

前者是通过客户端处理的,后者是通过服务端处理,相比较之下前者解析会比后者慢一点

5、关于变量在Less和Sass中的唯一区别就是Less用@,Sass用$。

  相同之处

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

1、混入(Mixins)——class中的class;
2、参数混入——可以传递参数的class,就像函数一样;
3、嵌套规则——Class中嵌套class,从而减少重复的代码;
4、运算——CSS中用上数学;
5、颜色功能——可以编辑颜色;
6、名字空间(namespace)——分组样式,从而可以被调用;
7、作用域——局部修改样式;
8、JavaScript 赋值——在CSS中使用JavaScript表达式赋值。


为什么选择使用Sass而不是Less?

1、Sass在市面上有一些成熟的框架,比如说Compass,而且有很多框架也在使用Sass,比如说Foundation。

2、就国外讨论的热度来说,Sass绝对优于LESS。
3、就学习教程来说,Sass的教程要优于LESS。在国内LESS集中的教程是LESS中文官网,而Sass的中文教程,慢慢在国内也较为普遍。

4、Sass也是成熟的CSS预处理器之一,而且有一个稳定,强大的团队在维护。

5、同时还有Scss对sass语法进行了改良,Sass 3就变成了Scss(sassy css)。与原来的语法兼容,只是用{}取代了原来的缩进。

6、bootstrap(Web框架)最新推出的版本4,使用的就是Sass。

为什么选择使用Sass而不是Less?相关推荐

  1. 软件测试的魅力何在?您为什么选择测试一行而不做开发?

    声明:术有专攻,开发和测试都有自己的技术栈领域,谁也代替不了谁. 接下来我就首先说说本人为什么不做开发,而是选择了测试:其次再谈谈测试的魅力. 问题1:为什么选择测试一行而不做开发? 个人工作12年, ...

  2. 软件测试的魅力何在?您为什么选择测试一行而不做开发?----来自知乎

    虽然我现在换到开发去了,不过毕竟也在这一行做了六年,貌似还是有机会在这里发言的吧.最初我接触测试纯粹是出于偶然,微软到我们学校的面试只有做测试的肯要我啊.不过后来做了一阵子之后慢慢就喜欢上这个位置了. ...

  3. 为什么选择做硬件而不是吃香的软件?

    做了9年硬件电路设计,5年智能手机,4年医疗器械,每次面对别人问起为啥不做软件这样的问题,心情很复杂,自己喜爱的工作居然无奈的发展到了这个窘境. 当初选择硬件是因为不想日复一日的坐在屏幕前面敲代码到天 ...

  4. 为什么选择做硬件而不是吃香的软件

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 做了9年 ...

  5. sass、scss、css、less

    less.scss.sass都是CSS预处理器语言 为什么要使用CSS预处理器? css缺点: (语法不够强大,比如无法嵌套书写,导致模块化开发中需要书写很多重复的选择器: 没有变量和合理的样式复用机 ...

  6. Sass/Scss、Less 是什么?

    Sass (Syntactically Awesome Stylesheets) 是一种动态样式语言,Sass 语法属于缩排语法,比 css 比多出好些功能 (如变量.嵌套.运算,混入 (Mixin) ...

  7. WEB前端面试题整理

    WEB前端面试题 文章目录 WEB前端面试题 一.html部分 1.Doctype有什么作用?标准模式与兼容模式有什么区别 2.标准模式与兼容模式(怪异模式)各有什么区别? div1和div2之间的距 ...

  8. 下载 Bootstrap3 的 Sass 版本

    如果你习惯于使用Sass而不是Less,可以点击"Download sass",下载Sass版本的源码.从该链接下载的是一个名称为bootstrap-sass-3.3.7.tar. ...

  9. qml延迟代码_选择C而不是QML将您的代码减少80

    qml延迟代码 Many tools rely on web technologies like JavaScript and HTML for mobile app development. But ...

  10. .tcl文件_为什么选择Python(Perl、Tcl、Python比较)

    有个后端朋友问我,在芯片设计领域为什么选择Python,而不是Perl或Tcl?我才突然意识到,写了这么多天的<Python在ASIC中的应用>系列文章,居然忘了对比介绍Python.Pe ...

最新文章

  1. 草根seo站长利用网站赚钱的方法
  2. contentProvider的使用总结
  3. php redis安装使用
  4. sliverlight--无法启动调试。
  5. springboot加载外部xml_Springboot引用外部配置文件的方法步骤
  6. boost::log::expressions::has_attr用法的测试程序
  7. QT的QWaitCondition类的使用
  8. DB2连接不上mysql数据库_一次DB2数据库连接失败(SQLSTATE=08001)的解决方法
  9. Control-Flow Enforcement Technology (CET)
  10. Python学习 资料[转]
  11. 高级恶意软件技术新挑战——突破主动防御
  12. [译]git fetch
  13. [转载] numpy的属性和函数
  14. 深入浅出node.js游戏服务器开发1——基础架构与框架介绍
  15. Virtuabox 虚拟机克隆方法
  16. ghost 通过docker安装
  17. JVM垃圾回收机制,万字详解
  18. V$LOGMNR_CONTENTS字段含义
  19. Excel - VBA的隔行拷贝功能
  20. 【记录】python3 tkinterUI编辑器应用之索尼walkmanA35播放列表编辑工具

热门文章

  1. 面向对象【林老师版】:绑定方法与非绑定方法(十七)
  2. 【概率论与数理统计】小结7 - 统计学中的基本概念
  3. CentOS 7中将Tomcat设置为系统服务
  4. 【限时免费】真实数据操练,经典算法分析,实战NLP领域,只等你来!
  5. 时间序列分析工具箱——sweep
  6. [19/04/29-星期一] GOF23_行为型模式(责任链模式、迭代器模式)
  7. 《机器学习实战》代码实现学习一 使用K-近邻算法改进约会网站的配对效果(数据准备)...
  8. kotlin之高阶函数
  9. CSS(九)元素隐藏和利弊
  10. tornadod的异步代码