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で実行する感じで。