什么是CSS预编译?

CSS 预编译,就是预先编译处理CSS。它扩展了 CSS 语言,增加了变量、Mixin、函数等编程的特性,使 CSS 更易维护和扩展。CSS预编译的工作原理是提供便捷的语法和特性供开发者编写源代码,随后经过专门的编译工具将源码转化为CSS语法。

它从这几个方面提升了CSS开发的效率:增强编程能力;增强可复用性;增强可维护性;更便于解决浏览器兼容性。

CSS预编译的核心功能

不同的预编译器特性虽然有所差异,但核心功能均围绕这些目标打造,比如:

  • 嵌套(所有预编译器都支持的语法特性,也是原生CSS最让开发者头疼的问题之一)
  • 变量(增强了源码的可编程能力)
  • 运算(增强了源码的可编程能力)
  • mixin/继承(为了解决hack和代码复用)
  • 模块化(不仅更利于代码复用,同时也提高了源码的可维护性)

为什么要用CSS预编译?

1.CSS的缺点:

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

2.CSS预编译的优点:

  • 可以提供 CSS 缺失的样式层复用机制、减少冗余代码,提高样式代码的可维护性。大大提高了开发效率。

CSS预编译的缺点

CSS的好处在于简便、随时随地被使用和调试。预编译CSS步骤的加入,让我们开发工作流中多了一个环节,调试也变得更麻烦了。更大的问题在于,预编译很容易造成后代选择器的滥用。所以我们在实际项目中衡量预编译方案时,还是得想想,比起带来的额外维护开销,CSS预处理器有没有解决更大的麻烦。

CSS和CSS预编译的比较

  优点 缺点
CSS 简便、可随时随地被使用和调试

语法不够强大,模块化开发中需要书写很多重复的选择器;

没有变量和合理的样式复用机制,难以维护。

CSS预编译

提供 CSS 缺失的样式层复用机制、减少冗余代码,提高样式代码的可维护性

调试更麻烦;

容易造成后代选择器的滥用

主流CSS预编译器的介绍

目前css主流预处理器是Sass、Less和Stylus,最早的CSS预编译器是2007年起源于Ruby on Rails社区的SASS,目前比较流行的其他CSS预编译器如Less、Stylus的诞生都一定程度上受到了SASS的影响和启发。

1.Sass

2007年诞生,最早也是最成熟的CSS预处理器,拥有ruby社区的支持和compass这一最强大的CSS框架,目前受LESS影响,已经进化到了全面兼容CSS的SCSS。
其实现在的Sass已经有了两套语法规则:一个依旧是用缩进作为分隔符来区分代码块的;另一套规则和CSS一样采用了大括号({})作为分隔符。后一种语法规则又名SCSS,在Sass3之后的版本都支持这种语法规则。

Sass中文文档:http://sass.bootcss.com/

2.Less

2009年出现,受SASS的影响较大,但又使用CSS的语法,让大部分开发者和设计师更容易上手,在ruby社区之外支持者远超过SASS,其缺点是比起SASS来,可编程功能不够,不过优点是简单和兼容CSS,反过来也影响了SASS演变到了SCSS的时代,著名的Twitter Bootstrap就是采用LESS做底层语言的。

Less中文文档:https://less.bootcss.com/

3.Stylus

2010年产生,来自Node.js社区,主要用来给Node项目进行CSS预处理支持,在此社区之内有一定支持者,在广泛的意义上人气还完全不如SASS和LESS
Stylus被称为是一种革命性的新语言,提供一个高效、动态、和使用表达方式来生成CSS,以供浏览器使用。Stylus同时支持缩进和CSS常规样式书写规则。

Stylus官方文档:http://stylus-lang.com/
Stylus 中文文档:https://www.zhangxinxu.com/jq/stylus/

比较

  优点 缺点
sass 用户多,更容易找到会用scss的开发,更容易找到scss的学习资源;
可编程能力比较强,支持函数,列表,对象,判断,循环等;
相比less有更多的功能;
Bootstrap/Foundation等使用scss;
丰富的sass库:Compass/Bourbon;
安装node-sass会经常失败或者报错,需要使用cnpm或者手工安装
less 可以在浏览器中运行,实现主题定制功能; 编程能力弱,不直接支持对象,循环,判断等;
@variable 变量命名和css的@import/media/keyframes等含义容易混淆;
mixin/extend的语法比较奇怪;
mixin的参数如果遇到多参数和列表参数值的时候容易混淆;
stylus 来自NodeJS社区,所以和NodeJS走得很近,与JavaScript联系非常紧密。还有专门JavaScript API:
http://learnboost.github.io/stylus/docs/js.html
支持Ruby之类等等框架3.更多更强大的支持和功能
人气不高,教程较少

Sass看起来在提供的特性上占有优势,但是LESS能够让开发者平滑地从现存CSS文件过渡到LESS,而不需要像Sass那样需要将CSS文件转换成Sass格式。Stylus功能上更为强壮,和js联系更加紧密。

css预编译的优缺点相关推荐

  1. css 预编译处理器 - Stylus

    stylus 是三大css预编译处理器之一! 一.基础语法 1.语法特性 stylus是一个提倡简洁写法的语言,代码可省略花括号 {},冒号 :,引号 :,当没有使用花括号,需使用缩进进行编写,成为' ...

  2. css预编译其器,CSS预处理器之——Less

    Less,顾名思义,少,在我看来,它有着与jQuery一样的思想--Write Less,Do More,尽管实际上这两者是完全不同的两个东西. Less是一个CSS预处理器,先不管人们为何这样命名, ...

  3. 大话css预编译处理(二)安装使用篇

    一.Sass.LESS和Stylus的安装 1.Sass的安装 Sass是Ruby语言写的,但是两者的语法没有关系.不懂Ruby,照样可以正常使用Sass.只是必须先安装Ruby,然后再安装Sass. ...

  4. css预编译工具less使用心得

    1.使用less 结合 html 的zend语法可以快速提高前段编码速度和效率 2.less可以使用程序思维来书写css 代码 使用方法 1.使用js编译 1.下载http://www.lesscss ...

  5. css预处理器:less和sass认知

    一.什么是Less/Sass? LESS是一个CSS预处理器,可以为网站启用可自定义,可管理和可重用的样式表. LESS是一种动态样式表语言,扩展了CSS的功能. LESS也是跨浏览器友好. SASS ...

  6. 再谈 CSS 预处理器

    CSS 预处理器是什么?一般来说,它们基于 CSS 扩展了一套属于自己的 DSL,来解决我们书写 CSS 时难以解决的问题: 语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器: ...

  7. 告别预编译,CSS 直接写嵌套的日子就要来临~

    点击上方"IT平头哥联盟",选择"置顶或者星标" 与你一起成长- 公众号回复[ 资源 ] 获取666G前端.Spring Boot 学习资源 作者:安佳 嗨,我 ...

  8. 前端CSS预处理器Sass

    前面的话   "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...

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

    2019独角兽企业重金招聘Python工程师标准>>> CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS ...

  10. 初识css预处理器:Sass、LESS

    这篇文章是初步介绍css预处理的,详细学习请移步官网~ sass中文文档:https://www.sass.hk/docs less中文文档:http://lesscss.cn/ 什么是css预处理器 ...

最新文章

  1. java文件锁定_如何使用java锁定文件(如果可能的话)
  2. LSTM之父再度炮轰Hinton:“本田奖”不该授予他,颁奖词有六大谬误
  3. Errors occurred during the build. Errors running builder 'JavaScript Validator' on project 'XXX'.
  4. 理解javascript中的函数模式
  5. PLSQL developer 连接不上64位Oracle 的解决方法
  6. 对Emlog 6.0 Beta的完整代码审计过程
  7. Pascal 语言中的关键字及保留字
  8. Farthest Point Sampling on 2d image
  9. snmp的安装与配置
  10. 父与子一起学python3_父与子的编程之旅(与小卡特一起学Python第3版全彩印刷)/图灵程序设计丛书...
  11. 2020年净利润腰斩,麦格纳要转型“造车”?
  12. oracle12c备份与恢复,Oracle Database12c Oracle RMAN备份与恢复(第4版)
  13. js根据经纬度计算距离
  14. bootstrap4和bootstrap3的区别
  15. 25【中介者设计模式】
  16. unity3D赛车游戏项目源代码
  17. Matlab中不为人知的强大命令
  18. Thymeleaf全解
  19. dev sda2 linux lvm,记录linux LVM 扩容硬盘空间的记录
  20. 用DXP 软件快速画简单特定形状的PCB版

热门文章

  1. 二进制数的加法步骤解析
  2. 玉米社:百度竞价关键词“否定”与“精确否定”的区别
  3. linux防火墙_专业的linux web应用防火墙国内排名推荐
  4. ireport导出pdf记录
  5. 智齿科技携手无忧我房 VR+AI新品亮相GTC
  6. 降低管理成本、增强团队协作
  7. 使用LIME解释CNN
  8. Adobe Reader 卸载不干净处理方法
  9. Vue使用百度分享,组件切换、销毁分享失效的解决办法
  10. 现代黑科技版“指鹿为马:使用CycleGAN实现男女“无痛变性”