Less & Sass Advent calendar 2011 の10日目です。
CSSメタ言語ではSass(SCSS)やLESSが流行っているしLess & Sass Advent calendarですが、あえて別の選択肢として「Stylus」というものを紹介しようと思います。
StylusもSassやLESSと同じようにCSSに変換するCSSメタ言語の一つです。 開発者はnode.jsでの超有名ライブラリ「express」を作ったTJ Holowaychuk。 彼はもともとSass(SCSS対応前のバージョン)をnode.jsに移植したSass.jsをつくっていましたが、現在はそちらのプロジェクトをやめて独自のStylusに専念しているようです。Sass.jsのページには「Stylusをチェックすることを強くすすめる」とコメントが残してあります。
Stylusの設計がどのように考えられているか、その特徴はどうなのかというのは 公式のドキュメントのトップページが分かりやすいので簡単に翻訳してみます。 (原文でなにを指してるか分かりにくかった部分は勝手に補完してる部分があります)
原文: Stylus
Stylus
Expressive, dynamic, robust CSS:表現豊かでダイナミックかつ強固なCSS
body {
font: 12px Helvetica, Arial, sans-serif;
}
a.button {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
もし波括弧{}を省略できるとしたら?
body
font: 12px Helvetica, Arial, sans-serif;
a.button
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
セミコロンはどうでしょう?
body
font: 12px Helvetica, Arial, sans-serif
a.button
-webkit-border-radius: 5px
-moz-border-radius: 5px
border-radius: 5px
コロンもはずしましょう
body
font 12px Helvetica, Arial, sans-serif
a.button
-webkit-border-radius 5px
-moz-border-radius 5px
border-radius 5px
同じことを繰り返し書かないようにしよう
border-radius()
-webkit-border-radius arguments
-moz-border-radius arguments
border-radius arguments
body
font 12px Helvetica, Arial, sans-serif
a.button
border-radius(5px)
透過的なmixinはどう?
border-radius()
-webkit-border-radius arguments
-moz-border-radius arguments
border-radius arguments
body
font 12px Helvetica, Arial, sans-serif
a.button
border-radius 5px
作ったらシェアしょう
@import 'vendor'
body
font 12px Helvetica, Arial, sans-serif
a.button
border-radius 5px
独自で定義するfunctionも同じ
sum(nums...)
sum = 0
sum += n for n in nums
sum(1 2 3 4)
// => 10
もしそれがすべてオプションだったらどうですか?
fonts = helvetica, arial, sans-serif
body {
padding: 50px;
font: 14px/1.4 fonts;
}
Stylusを始めよう
$ npm install stylus
もし下記のリストにあげてるような機能と特徴をもったnodejs用の表現力豊かな CSS言語が必要であれば、Githubに多くの情報があります。
Features
Stylusは波括弧やセミコロン、コロンの省略などにより昔のSassに近いCSSとはかけ離れた文法で書けるようになっていますが、これらはオプションであり、最近のCSSメタ言語の傾向であるCSS文法をそのまま生かした書き方もできるようになっています。
新しいCSSメタ言語であるため情報が多いとはいえませんが、nodejsを使うのであれば選択肢の一つとして候補にいれてもよいのではないでしょうか。
ちなみにsaucer.jpさんが7日目で紹介されたFireSassと同じような拡張でFireStylus for Firebugというものもあります。僕はFirefox全然使わなくなってしまったので試していませんが、Firefoxを使っている方は導入してみても良いかもしれません。
Less & Sass Advent calendar 2011 の10日目です。 CSSメタ言語ではSass(SCSS)やLESSが流行っているしLess & Sass Advent...
Less & Sass Advent calendar 2011 の10日目です。 CSSメタ言語ではSass(SCSS)やLESSが流行っているしLess & Sass Advent...