CSS 前処理言語は、CSS にさらにプログラミング機能を追加し、CSS をターゲットとしてファイルを生成できます。
これらの言語は、プログラミング効率を効果的に向上させ、CSS をより簡潔で、適応性があり、読みやすくし、プロジェクトの保守を容易にすることができます。
この記事では、現在主流の CSS 前処理言語である LESS、Sass、Stylus の類似点と相違点を、開発者の視点から表の水平比較を用いて客観的に分析します。
これらの言語のインストールやコンパイルなどは紹介しません。デフォルトでは、読者はすでに CSS に精通しており、上記の CSS 前処理言語の少なくとも 1 つを使用したことがある可能性があります。
Sass 言語には現在、ファイル名接尾辞として「.sass」と「.scss」を含む 2 つの文法規則セットがあるという事実を考慮して、この記事では、Scss で表される Sass3 以降のバージョンのみを紹介します。
*.less | *.scss | *.styl |
は、そのメソッドを介して渡すことができますそれぞれ *.css ファイルにローカルでコンパイルする方法 これらの形式のファイルを *.css ファイルにコンパイルできるサードパーティのコンパイル ツールが多数あります | ||
以下を使用して、HTML ファイルにless.js ファイルを導入できます。 imports like * .css ファイルと同じ方法で *.less ファイルを導入し、ブラウザを通じてコンパイルします (パフォーマンスが少し消費される可能性があります)。 | 最初にRubyをインストールする必要があります |
/*均支持CSS风格语法*/h1{ color:#000;} ログイン後にコピー | ||
変数とスコープ
で区切ります"= 変数名と変数値 | ||
グローバル変数の概念はなく、後で定義された同じ名前の変数は変数を完全に上書きします最初に定義 | LESS と同じ |
Mixins
ミックスインは、再利用する必要があるいくつかのスタイルを抽出できます。それらは一度定義するだけでよく、多くのセレクターで再利用できます。
ミックスの定義は「@mixin」で始める必要があります。リファレンスミックスは「@include」で始まる必要があります | プレフィックスは必要ありません | |
子孫セレクターのネストされた実装
継承
明示的なプレフィックスは必要ありません | 「@extend」で始まり、その後に継承されたセレクターが続きます | |
div{ margin:10px 5px;}div a{ color:red;}div a:hover{ color:blue;} ログイン後にコピー | れー | |
れー | れー |
使用关键字“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;} ログイン後にコピー |
通过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循环语句 |