Photo by Aaron Landry
CSSで、式とかマクロが使えたらなーと思うことがよくあるので、この際だからプリプロセッサを作ろうと思っています。
文法としては、CSSの構造を大きく変えないで行きます。あくまでプリプロセッサ的な役割で。Sassの様に構文を変えてしまうと、デザイナーの人が取っつき難くなりそうで。
今のところ、考えている文法の例を下に置きました。誰でも考えそうな所で、includeによる読み込み、ネストをサポート、式と制御構造のサポートを行います。
このプリプロセッサはサーバサイドで動的に生成するのではなく、一度静的にCSSに変換して使うことを考えています。その為、User agentなど外部からの変数はサポートしません。
使い方としては、コマンドラインツールによる変換と、Javascriptによる動的な読み込みをサポートする予定です。
開発中は、HTML内に<script src=”ecss_loader.js?test.ecss”></script>と書くことで、サーバに何も導入することなく、動的に拡張されたCSSを読み込むことが出来るようにします。
文法や機能のアイディア、同じようなプロダクトを知っている!と言う方がいましたら、ぜひコメントお願いします。
例)
%include "common.ecss"; %focus_color = "#4444ff"; %w = 32; %property x-opacity $value opacity: $(value); filter: alpha(opacity=$(value*100)); %end #mailbox { width: $(w+2+"px"); border: 1px solid gray; .item { width: $(w+"px"); } .focus { background-color: $(focus_color); } .disable { x-opacity: 0.5; } %for x in ['red', 'green', 'blue'] $(".item-"+x): background-color: $(x); %end %if debug==1 .item { background: red !important; } %end }
ursm
LESS はいかがでしょう。
http://lesscss.org/
Sass も「デザイナー層取り込まんといかんねー」と言い出した段階で、将来的には CSS-compatible な文法の導入が予定されています。
masuidrive
おおお!LESSばっちりですね。
やりたいことほぼ実装されてるっぽい。
これのJS実装を作れば、やりたいことは全部できそう。
自分で作るよりそっちの方がよさそうだなぁ
kotarok
PHPによる実装でCSS-SSPというのがありますね。
http://bit.ly/5cB5bS
作者本人もハイレベルCSS使いなので拡張言語仕様としては、この手の中では最も小慣れてるものの一つ、という印象があります。
できることはLESSと非常に近いです。LESSの方が後発ですが。
個人的にはCSSに欠けていて最も望まれるのは抽象化とDRYな再利用の仕組みだと思うので、LESSのようなクラスの再利用のアプローチはCSSerに受け入れやすくかつ喜ばれるものだと思います。
Takazudo
Nicole Sullivan という方が、Object Oriented CSS っていうスライドの中で、
http://wiki.github.com/stubbornella/oocss/
こんな風にかけたらいいのに
http://dl.dropbox.com/u/268240/static/somethingToTellPeople/css.txt
言ったようなことを書かれていました。
ひとまとまりのCSSの組み合わせ
を継承できるようになればいいのにといったような内容です。
masuidrive
CSS-SSPはプラグインで拡張できるのがいいですね。
この手を物をつくるなら、Javascriptで組めば良いと思うんですが、なかなか無いなぁ。
JSで書いて、コマンドラインツールはRhinoで実行する感じで。