カテゴリー: PHP・PERL
ドコモのCSSをインラインに埋め込んでくれるPHPライブラリ「toInlineCSSDoCoMo」
HTML::DoCoMoCSS (こっちは元になったPERL版)
http://ke-tai.org/blog/2008/07/09/toinline/ (記事はこちら:KE-TAI.ORGさん参照)
インストールは簡単。
# pear install HTML_CSS
で、必要なPEARライブラリをインストールして、ダウンロードしたファイルを展開するだけ。
中に入っている「sample.php」にアクセスすれば、サンプルが表示されるらしい。
require_once ‘../lib/toInlineCSSDoCoMo.php’;
$document = file_get_contents(‘sample.html’);
try {
echo toInlineCSSDoCoMo::getInstance()->setBaseDir(‘./’)->apply($document);
} catch (RuntimeException $e) {
var_dump($e);
} catch (Exception $e) {
var_dump($e->getMessage());
}
?>
以下、仕様の説明。(ゆどうふブログさん(http://d.hatena.ne.jp/Yudoufu/20080709/1215626811)
toInlineCSSDoCoMoの仕様なんですが、はてブとかで「外部参照をインライン化」だと思ってる人とかがいるみたいなので言っとくと、外部参照だけじゃなくて内部参照のsytleタグもよしなにパースしてくれます。
外部参照やstyleタグ指定が複数あってもそれらを全てsytle要素に突っ込んでくれるので、定義が多段になってる状態でもきちんとできます。sytle要素が個別に定義してあるタグでも、ちゃんとマージします。
無論、class指定が複数記述してあっても、*1全部適用します。
また、パースし終わった外部参照・内部参照のlinkタグ・styleタグは除去されるので、通常ブラウザベースで開発を行っていても、ざっくりとしたデザインの確認に支障が出ることはありません*2。(除去されないと、専用エミュレータか実機での確認が必要)*3
あと子孫セレクタとかその辺は、結構ちゃんとやってくれます。ただ、ブログにも書いたとおり疑似クラスはa:link,・・・の4つしか対応してません。
一応、それらの疑似クラスは全部内部参照としてCDATAつけてstyleタグに突っ込むようになっています。*4
それ以外はDoCoMoではどのみち無効ということもあって無視しています。
このあたりは、携帯のCSSだし、元々あんまり使ってる人いないようなので、ひとまずざっくり仕様で。