目录
前言:CSS预处理语言
基本差别
基本语法
变量与作用域
混合(Mixins)
嵌套实现后代选择器
继承
条件语句
循环语句
综合对比
首页 web前端 html教程 表析LESS、Sass和Stylus的异同_html/css_WEB-ITnose

表析LESS、Sass和Stylus的异同_html/css_WEB-ITnose

Jun 24, 2016 am 11:59 AM
sass stylus 异同

前言:CSS预处理语言

CSS预处理语言可为CSS增加更多编程特性,以CSS作为目标生成文件。

这些语言可有效提高编程效率,使CSS更加简洁、适应性更强、可读性更加,并使项目更易于维护。

本文将在开发者角度使用表格横向对比的方式客观分析目前主流的CSS预处理语言LESS、Sass、Stylus的异同之处。

不介绍这些语言的安装、编译等内容。默认读者已熟悉CSS并可能已用过以上至少一种CSS预处理语言。

鉴于目前Sass语言有分别以“.sass”和“.scss”为文件名后缀的两套语法规则,本文只介绍Sass3之后的版本,即以Scss表示。

基本差别

  LESS Scss Stylus/sta?l?s/ 后缀名 编译方法 特别项
*.less *.scss *.styl

均可以通过各自方式在本地编译成*.css文件

有很多第三方编译工具可以将这些格式的文件编译为*.css文件

可以在HTML文件中引入less.js文件与像引入*.css文件一样的方式引入*.less文件,通过浏览器进行编译(可能损耗一点点性能)。 需要先安装Ruby  

基本语法

LESS Scss Stylus
/*均支持CSS风格语法*/h1{  color:#000;}
登录后复制
不支持
/*支持不包含花括号与分号的编写风格,仅通过缩进表示嵌套*/h1  color: #000
登录后复制
不支持
/*支持省略冒号*/h1  color #000
登录后复制

变量与作用域

LESS Scss Stylus
/*以“@”开头*/@maxWidth:1024px;
登录后复制
/*以“$”开头*/$maxWidth:1024px;
登录后复制
/*可以以“$”开头,也可无前缀符号直接声明变量*/maxWidth=1024px;
登录后复制
定义变量时,以冒号“:”分隔变量名与变量值 以“=”分隔变量名与变量值
与其它语言作用域概念雷同,向上冒泡查找变量 无全局变量的概念,后定义的同名变量会完全覆盖先定义的变量 同LESS

混合(Mixins)

Mixins是CSS预处理器中语言中最强大的特性。

Mixins可以将一部分需重用的样式抽出,只需定义一次,就可被很多选择器重复使用。

LESS Scss Stylus
可以无需特别声明,直接调用某一class或id选择器名即可重用该选择器内属性 定义混合需要以“@mixin”开头。引用混合需要以“@include” 开头 无需前缀
均可定义参数与设置参数默认值
/*声明混合*/.setColor(@mainC:#000){  color:@mainC;}/*直接以默认值调用混合*/.sBox{  .setColor();}/*调用混合且传入自定义参数值*/.bBox{  .setColor(#fff);}
登录后复制
/*声明混合*/@mixin setColor($mainC:#000){  color:$mainC;}/*直接以默认值调用混合*/.sBox{  @include setColor();}/*调用混合且传入自定义参数值*/.bBox{  @include setColor(#fff);}
登录后复制
/*声明混合*/setColor(mainC=#000){  color:mainC;}/*直接以默认值调用混合*/.sBox{  setColor();}/*调用混合且传入自定义参数值*/.bBox{  setColor(#fff);}
登录后复制
/*编译成CSS后*/.sBox{  color:#000;}.box{  color:#fff;}
登录后复制

嵌套实现后代选择器

LESS Scss Stylus
嵌套语法是相同的,可以通过大括号“{}”之间的层次关系实现嵌套。也可以使用“&”符号来引用父选择器。
div{  margin:10px 5px;  a{    color:red;    &:hover{      color:blue;    }  }}
登录后复制
div{  margin:10px 5px;}div a{  color:red;}div a:hover{  color:blue;}
登录后复制

继承

LESS Scss Stylus
无需明确的前缀 使用“@extend”开始,后面紧跟被继承的选择器
/*继承示例*/.block{  display:block;  margin:10px;}p{  .block;  padding:5px;}
登录后复制
/*继承示例*/.block{  display:block;  margin:10px;}p{  @extend .block;  padding:5px;}
登录后复制
/*编译成CSS,相同样式依旧会在每个选择器中重复出现*/.block{  display:block;  margin:10px;}p{  display:block;  margin:10px;  padding:5px;}
登录后复制
/*编译成CSS,相同样式会被合并*/.block,p{  display:block;  margin:10px;}p{  padding:5px;}
登录后复制

条件语句

LESS Scss Stylus
使用关键字“when”实现条件语句 可以使用@if、@else、@else if语句实现判断 与其它编程语言类似,不过可以省略大括号
@type: link;.mixin(@type) when ( @type == link ){  color:blue;} .mixin(@type) when not ( @type == link ){  color:black;}
登录后复制
$type: link;p {  @if $type == link {    color: blue;  } @else {    color: black;  }}
登录后复制
type: link;p{  if type==linkcolor:blue;  else    color:black;}
登录后复制
/*编译后的CSS*/p {color:blue;}
登录后复制

循环语句

LESS Scss Stylus
通过when模拟循环功能 使用@for关键字,配合“from”和“through” 使用for/in对表达式进行循环
.funClass (@i) when (@i>0){  .item-@{i}{    width:2em*@i;}/*递归*/.funClass(@i-1);}/*停止循环*/.funClass (0) {}/*输出*/.funClass (3);
登录后复制
@for &i from 1 through 3{  .item-#{$i} {    width:2em*$i;  }}
登录后复制
for i in 1 2 3  .item-{i}    width 2em*i
登录后复制
/*编译后的CSS*/.item-1{  width:2em;}.item-2{  width:4em;}.item-3{  width:6em;}
登录后复制
  还支持each循环语句、while循环语句  

综合对比

  1. 均具有“变量”、“混合”、“嵌套”、“继承”、“颜色混合”五大基本特性;
  2. Scss和LESS语法较为严谨,LESS要求一定要使用大括号“{}”,Scss和Stylus可以通过缩进表示层次与嵌套关系;
  3. Scss无全局变量的概念,LESS和Stylus有类似于其它语言的作用域概念;
  4. Scss和Stylus就具有类似其它语言的条件语句、循环语句等,而LESS需要通过When等关键词模拟这些功能;
  5. Sass是基于Ruby语言的,而LESS和Stylus可以基于NodeJS NPM下载相应库后进行编译;
  6. 使用LESS时,还可以在引用它的HTML文件中引入从官网下载的“less.js”文件,就可以通过浏览器进行解析。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

sass软件是什么意思 sass软件是什么意思 Aug 15, 2022 am 11:39 AM

sass全称“Software as a service”,意思为“软件即服务”;它是一种软件部署模式,第三方供应商在云基础设施上构建应用程序,并以订阅的形式,通过互联网向客户提供这些应用程序,不要求客户预先建设底层基础设施。这意味着软件可以在任何有互联网连接和网络浏览器的设备上访问,而不像传统软件那样只能在本地机器上安装。

详解C语言和Python在编程方面的异同 详解C语言和Python在编程方面的异同 Mar 18, 2024 pm 12:09 PM

C语言和Python是两种常用的编程语言,它们在许多方面有着明显的异同。本文将从语法、性能、易用性等方面对C语言和Python进行详细比较,并提供具体的代码示例来展示它们之间的差异。语法方面的异同:C语言是一种面向过程的编程语言,语法相对严谨和繁琐,需要开发者自行管理内存和数据类型。而Python是一种高级语言,语法简洁易读,无需显式的声明变量类型。示例代码

深入解析Golang和Go的区别与共通 深入解析Golang和Go的区别与共通 Jan 23, 2024 am 08:05 AM

Golang和Go的异同:一文读懂作为一种开源的编程语言,Go于2007年由Google公司开发出来,被广泛用于构建高效、可靠、简洁的软件。Go语言是基于C语言的编程语言,但它具有更加简洁的语法和更强大的并发支持。然而,Go语言也有一个别名,即Golang,这导致很多人认为它们是两种不同的语言。那么Golang和Go到底是同

深入了解C++和C语言的异同 深入了解C++和C语言的异同 Mar 26, 2024 am 09:36 AM

C++和C语言是两种流行的编程语言,它们在很多方面都相似,但也有许多显着的差异。本文将深入探讨C++和C语言的异同点,并通过具体的代码示例来说明它们之间的差异。一、基本语法和结构差异1.1数据类型定义在C语言中,定义变量时需要先声明数据类型,例如:intnum;而在C++中,可以在定义变量的同时进行初始化,例如:intnum=10;1.2函数定义

vue创建项目时sass是什么意思 vue创建项目时sass是什么意思 Jun 21, 2022 am 10:33 AM

vue创建项目时使用的sass是强化css辅助工具的意思,是对css的扩展;sass是由buby语言编写的一款css预处理语言,和html有一样严格的缩进风格,和css编写规范相比是不使用花括号和分号的。

深入探讨C语言和Python的异同 深入探讨C语言和Python的异同 Mar 22, 2024 am 08:57 AM

C语言和Python是两种非常流行的编程语言,它们在各自的领域具有独特的优势。本文将深入探讨C语言和Python之间的异同,并通过具体的代码示例进行比较。1.语法和结构差异首先,让我们看一下C语言和Python的语法和结构之间的差异。C语言示例:#includeintmain(){inta=10;

透视C语言与Python的异同点 透视C语言与Python的异同点 Mar 19, 2024 am 08:39 AM

C语言与Python是两种广泛使用的编程语言,在软件开发领域具有重要地位。本文将从语法结构、数据类型、面向对象、函数等方面探讨C语言和Python之间的异同点,并通过具体的代码示例来展示它们之间的差异和联系。首先,我们从语法结构入手来比较C语言和Python。C语言是一种结构化的语言,代码结构清晰,使用大括号来区分不同的代码块。而Python则是一种脚本语言

vue工程编译sass错误怎么办 vue工程编译sass错误怎么办 Jan 05, 2023 pm 04:20 PM

vue工程编译sass错误的解决办法:1、使用镜像源“cnpm install node-sass sass-loader --save-dev”安装sass;2、在“package.json”中更改“sass-loader”版本为“"sass-loader": "^7.3.1",”;3、在页面中直接使用或者用@代替src即可。

See all articles