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

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

Jun 24, 2016 am 11:59 AM
sass stylus Persamaan dan Perbezaan

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

变量与作用域

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

混合(Mixins)

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

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

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

嵌套实现后代选择器

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

继承

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

条件语句

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;}
Salin selepas log masuk
$type: link;p {  @if $type == link {    color: blue;  } @else {    color: black;  }}
Salin selepas log masuk
type: link;p{  if type==linkcolor:blue;  else    color:black;}
Salin selepas log masuk
/*编译后的CSS*/p {color:blue;}
Salin selepas log masuk

循环语句

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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah maksud perisian sass? Apakah maksud perisian sass? Aug 15, 2022 am 11:39 AM

Nama penuh SASS ialah "Perisian sebagai perkhidmatan", yang bermaksud "perisian sebagai perkhidmatan" ia ialah model penggunaan perisian di mana pembekal pihak ketiga membina aplikasi pada infrastruktur awan dan menyediakannya kepada pelanggan melalui Internet dalam bentuk; langganan aplikasi yang tidak memerlukan pelanggan membina infrastruktur asas di hadapan. Ini bermakna perisian itu boleh diakses pada mana-mana peranti dengan sambungan internet dan pelayar web, tidak seperti perisian tradisional yang hanya boleh dipasang pada mesin tempatan anda.

Penjelasan terperinci tentang persamaan dan perbezaan antara bahasa C dan Python dalam pengaturcaraan Penjelasan terperinci tentang persamaan dan perbezaan antara bahasa C dan Python dalam pengaturcaraan Mar 18, 2024 pm 12:09 PM

Bahasa C dan Python adalah dua bahasa pengaturcaraan yang biasa digunakan, dan mereka mempunyai persamaan dan perbezaan yang jelas dalam banyak aspek. Artikel ini akan membuat perbandingan terperinci antara bahasa C dan Python dari segi sintaks, prestasi, kemudahan penggunaan, dsb., dan memberikan contoh kod khusus untuk menunjukkan perbezaan antara mereka. Persamaan dan perbezaan dalam sintaks: Bahasa C ialah bahasa pengaturcaraan berorientasikan proses Sintaksnya agak ketat dan menyusahkan, memerlukan pembangun mengurus memori dan jenis data sendiri. Python ialah bahasa peringkat tinggi dengan sintaks yang ringkas dan mudah dibaca, dan tidak perlu mengisytiharkan jenis pembolehubah secara eksplisit. Kod contoh

Analisis mendalam tentang perbezaan dan persamaan antara Golang dan Go Analisis mendalam tentang perbezaan dan persamaan antara Golang dan Go Jan 23, 2024 am 08:05 AM

Persamaan dan Perbezaan antara Golang dan Go: Baca dalam satu artikel Sebagai bahasa pengaturcaraan sumber terbuka, Go telah dibangunkan oleh Google pada tahun 2007 dan digunakan secara meluas untuk membina perisian yang cekap, boleh dipercayai dan ringkas. Bahasa Go ialah bahasa pengaturcaraan berdasarkan bahasa C, tetapi ia mempunyai sintaks yang lebih mudah dan sokongan serentak yang lebih berkuasa. Walau bagaimanapun, bahasa Go juga mempunyai alias, Golang, yang menyebabkan ramai orang berfikir bahawa mereka adalah dua bahasa yang berbeza. Jadi adakah Golang dan Go sama?

Pemahaman mendalam tentang persamaan dan perbezaan antara bahasa C++ dan C Pemahaman mendalam tentang persamaan dan perbezaan antara bahasa C++ dan C Mar 26, 2024 am 09:36 AM

C++ dan C ialah dua bahasa pengaturcaraan popular yang serupa dalam banyak cara, tetapi juga mempunyai banyak perbezaan yang ketara. Artikel ini akan menyelidiki persamaan dan perbezaan antara bahasa C++ dan C, dan menggambarkan perbezaannya melalui contoh kod tertentu. 1. Sintaks asas dan perbezaan struktur 1.1 Definisi jenis data Dalam bahasa C, anda perlu mengisytiharkan jenis data terlebih dahulu semasa mentakrifkan pembolehubah, contohnya: intnum dalam C++, anda boleh memulakannya semasa mentakrifkan pembolehubah, contohnya: intnum= 10; 1.2 definisi fungsi

Apakah maksud sass apabila vue mencipta projek? Apakah maksud sass apabila vue mencipta projek? Jun 21, 2022 am 10:33 AM

Sass yang digunakan oleh Vue semasa membuat projek adalah untuk mengukuhkan alat bantu css dan merupakan lanjutan daripada css sass ialah bahasa prapemprosesan css yang ditulis dalam bahasa buby Ia mempunyai gaya lekukan ketat yang sama seperti html dan konsisten dengan penulisan css spesifikasi. Pendakap kerinting dan koma bertitik tidak digunakan.

Perbincangan mendalam tentang persamaan dan perbezaan antara bahasa C dan Python Perbincangan mendalam tentang persamaan dan perbezaan antara bahasa C dan Python Mar 22, 2024 am 08:57 AM

Bahasa C dan Python adalah dua bahasa pengaturcaraan yang sangat popular yang mempunyai kelebihan unik dalam bidang masing-masing. Artikel ini akan melihat secara mendalam persamaan dan perbezaan antara bahasa C dan Python, dan membandingkannya dengan contoh kod tertentu. 1. Perbezaan Sintaks dan Struktur Pertama, mari kita lihat perbezaan antara sintaks dan struktur bahasa C dan Python. Contoh bahasa C: #includeintmain(){inta=10;

Lihat persamaan dan perbezaan antara bahasa C dan Python Lihat persamaan dan perbezaan antara bahasa C dan Python Mar 19, 2024 am 08:39 AM

Bahasa C dan Python adalah dua bahasa pengaturcaraan yang digunakan secara meluas yang memainkan peranan penting dalam bidang pembangunan perisian. Artikel ini akan membincangkan persamaan dan perbezaan antara bahasa C dan Python dari segi struktur sintaks, jenis data, berorientasikan objek, fungsi, dsb., dan menunjukkan perbezaan dan hubungan antara mereka melalui contoh kod tertentu. Pertama, kita mulakan dengan struktur tatabahasa untuk membandingkan bahasa C dan Python. Bahasa C ialah bahasa berstruktur dengan struktur kod yang jelas dan kurungan kerinting digunakan untuk membezakan blok kod yang berbeza. Python ialah bahasa skrip

Apa yang perlu dilakukan jika terdapat ralat semasa menyusun SASS dalam projek vue Apa yang perlu dilakukan jika terdapat ralat semasa menyusun SASS dalam projek vue Jan 05, 2023 pm 04:20 PM

Penyelesaian kepada ralat sass kompilasi projek Vue: 1. Gunakan sumber imej "cnpm install node-sass sass-loader --save-dev" untuk memasang sass; 2. Tukar versi "sass-loader" dalam "package.json" kepada " "sass-loader": "^7.3.1",";

See all articles