CSSをPHPで効率良く書く方法
とあるIEのバグを調べていたら、Lessに近い形でCSSをPHPで書けることを知ったのでメモ。
まずHTMLのlink要素のファイル名を修正することから始めます。ここでのCSSファイル名は仮にdummy.phpとします。
<link rel="stylesheet" type="text/css" href="dummy.php" />
外部PHPを外部CSSとして認識させる。
拡張子がPHPの場合、UAに対しContent-Typeのメディアタイプにtext/htmlとして返してしまいます。
これを正常にメディアタイプをtext/cssとして返してやれば、拡張子がPHPでもCSSとして認識してくれます。
<?php header('Content-Type: text/css; charset=utf-8'); ?>
@charset "UTF-8";
この記述のみでCSS設定完了です。
実際にPHPでCSSを記述してみる。
<?php header('Content-Type: text/css; charaset=utf-8'); ?>
charset "UTF-8";
<?php
$color = '#00a';
$transition = 'transition:opacity 1s 0s';
?>
a {
outline:none;
color:<?php echo $color; ?>;
-o-<?php echo $transition; ?>;
-webkit-<?php echo $transition; ?>;
-moz-<?php echo $transition; ?>;
-ms-<?php echo $transition; ?>;
<?php echo $transition; ?>;
}
PHPですので、プロパティや数値を変数として格納することができます。
Progressive Enhancementを行う場合、ベンダープレフィックスを何度もつけなければならない場合などで、効果を期待できます。
また変数を変換させることにより、padding, margin, widthの値を効率よく管理することもできそうです。
かなりトリッキーな使い方なので、実際に使うかは別として面白い手法でしたので、記事にしてみました。
参考サイト