Table des matières
前言:CSS预处理语言
基本差别
基本语法
变量与作用域
混合(Mixins)
嵌套实现后代选择器
继承
条件语句
循环语句
综合对比
Maison interface Web tutoriel HTML 表析LESS、Sass和Stylus的异同_html/css_WEB-ITnose

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

Jun 24, 2016 am 11:59 AM
sass stylus Similitudes et différences

前言: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;}
Copier après la connexion
不支持
/*支持不包含花括号与分号的编写风格,仅通过缩进表示嵌套*/h1  color: #000
Copier après la connexion
不支持
/*支持省略冒号*/h1  color #000
Copier après la connexion

变量与作用域

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

混合(Mixins)

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

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

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

嵌套实现后代选择器

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

继承

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

条件语句

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;}
Copier après la connexion
$type: link;p {  @if $type == link {    color: blue;  } @else {    color: black;  }}
Copier après la connexion
type: link;p{  if type==linkcolor:blue;  else    color:black;}
Copier après la connexion
/*编译后的CSS*/p {color:blue;}
Copier après la connexion

循环语句

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);
Copier après la connexion
@for &i from 1 through 3{  .item-#{$i} {    width:2em*$i;  }}
Copier après la connexion
for i in 1 2 3  .item-{i}    width 2em*i
Copier après la connexion
/*编译后的CSS*/.item-1{  width:2em;}.item-2{  width:4em;}.item-3{  width:6em;}
Copier après la connexion
  还支持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”文件,就可以通过浏览器进行解析。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication détaillée des similitudes et des différences entre le langage C et Python en programmation Explication détaillée des similitudes et des différences entre le langage C et Python en programmation Mar 18, 2024 pm 12:09 PM

Le langage C et Python sont deux langages de programmation couramment utilisés et ils présentent des similitudes et des différences évidentes à bien des égards. Cet article fera une comparaison détaillée entre le langage C et Python en termes de syntaxe, de performances, de facilité d'utilisation, etc., et fournira des exemples de code spécifiques pour démontrer les différences entre eux. Similitudes et différences de syntaxe : Le langage C est un langage de programmation orienté processus. La syntaxe est relativement rigoureuse et lourde, obligeant les développeurs à gérer eux-mêmes la mémoire et les types de données. Python est un langage de haut niveau avec une syntaxe concise et facile à lire, et il n'est pas nécessaire de déclarer explicitement les types de variables. Exemple de code

Que signifie le logiciel Sass ? Que signifie le logiciel Sass ? Aug 15, 2022 am 11:39 AM

Le nom complet de SASS est « Software as a service », ce qui signifie « logiciel en tant que service ». Il s'agit d'un modèle de déploiement de logiciels dans lequel des fournisseurs tiers créent des applications sur une infrastructure cloud et les fournissent aux clients via Internet sous la forme d'applications d'abonnement qui ne nécessitent pas que les clients construisent l'infrastructure sous-jacente à l'avance. Cela signifie que le logiciel est accessible sur n'importe quel appareil doté d'une connexion Internet et d'un navigateur Web, contrairement aux logiciels traditionnels qui ne peuvent être installés que sur votre ordinateur local.

Compréhension approfondie des similitudes et des différences entre les langages C++ et C Compréhension approfondie des similitudes et des différences entre les langages C++ et C Mar 26, 2024 am 09:36 AM

C++ et C sont deux langages de programmation populaires qui sont similaires à bien des égards, mais présentent également de nombreuses différences significatives. Cet article approfondira les similitudes et les différences entre les langages C++ et C, et illustrera leurs différences à travers des exemples de code spécifiques. 1. Syntaxe de base et différences structurelles 1.1 Définition du type de données En langage C, vous devez d'abord déclarer le type de données lors de la définition d'une variable, par exemple : intnum en C++, vous pouvez l'initialiser lors de la définition de la variable, par exemple : intnum=; 10 ; 1.2 définition des fonctions

Analyse approfondie des différences et des similitudes entre Golang et Go Analyse approfondie des différences et des similitudes entre Golang et Go Jan 23, 2024 am 08:05 AM

Similitudes et différences entre Golang et Go : lisez-le dans un article. En tant que langage de programmation open source, Go a été développé par Google en 2007 et est largement utilisé pour créer des logiciels efficaces, fiables et concis. Le langage Go est un langage de programmation basé sur le langage C, mais il possède une syntaxe plus simple et une prise en charge de la concurrence plus puissante. Cependant, la langue Go a également un alias, Golang, ce qui amène de nombreuses personnes à penser qu'il s'agit de deux langues différentes. Alors Golang et Go sont-ils identiques ?

Que signifie Sass lorsque Vue crée un projet ? Que signifie Sass lorsque Vue crée un projet ? Jun 21, 2022 am 10:33 AM

Le sass utilisé par Vue lors de la création d'un projet vise à renforcer l'outil auxiliaire CSS et est une extension de CSS ; sass est un langage de prétraitement CSS écrit dans le langage buby. Il a le même style d'indentation strict que le HTML et est cohérent avec l'écriture CSS. Les accolades et les points-virgules ne sont pas utilisés.

Une discussion approfondie sur les similitudes et les différences entre le langage C et Python Une discussion approfondie sur les similitudes et les différences entre le langage C et Python Mar 22, 2024 am 08:57 AM

Le langage C et Python sont deux langages de programmation très populaires qui présentent des avantages uniques dans leurs domaines respectifs. Cet article examinera en profondeur les similitudes et les différences entre C et Python et les comparera avec des exemples de code spécifiques. 1. Syntaxe et différences structurelles Examinons d’abord les différences entre la syntaxe et la structure du langage C et de Python. Exemple en langage C : #includeintmain(){inta=10;

Un regard sur les similitudes et les différences entre le langage C et Python Un regard sur les similitudes et les différences entre le langage C et Python Mar 19, 2024 am 08:39 AM

Le langage C et Python sont deux langages de programmation largement utilisés et jouent un rôle important dans le domaine du développement logiciel. Cet article discutera des similitudes et des différences entre le langage C et Python en termes de structure syntaxique, de types de données, d'orientation objet, de fonctions, etc., et démontrera les différences et les connexions entre eux à travers des exemples de code spécifiques. Commençons par comparer le langage C et Python en partant de la structure grammaticale. Le langage C est un langage structuré avec une structure de code claire et des accolades sont utilisées pour distinguer différents blocs de code. Python est un langage de script

Que faire s'il y a une erreur lors de la compilation de SASS dans le projet vue Que faire s'il y a une erreur lors de la compilation de SASS dans le projet vue Jan 05, 2023 pm 04:20 PM

Solution à l'erreur sass de compilation du projet Vue : 1. Utilisez la source de l'image "cnpm install node-sass sass-loader --save-dev" pour installer sass ; 2. Modifiez la version "sass-loader" dans "package.json" to " "sass-loader": "^7.3.1","; 3. Utilisez-le directement dans la page ou utilisez @ au lieu de src.

See all articles