JavaScriptを使わずにページのCSSを切り替える
2006年08月28日-
ページのデザインを利用者好みにカスタマイズできるように、javascript を使い、CSSを切り替えることでデザイン変更できるサイトがありますが、
JavaScriptオフでも同様のことを実装したい場合のサンプル。
JavaScriptを使わずに、PHP+クッキーを使ってページのCSSを切り替えてみましょう。
PHPの知識がなくても、次のサンプルを使えば簡単に誰でもCSSを切り替えることが出来ます。
次のサンプルは、main.css , blue.css , red.css , pink.css というCSSを切り替えたい場合のサンプルです。
(1) まずは、レイアウトを保存するクッキー設定用のPHPスクリプト( index.phpとして保存 )
<?php
$valids = array(
"main", "blue", "red", "pink"
);
$layout = (isset($_REQUEST["layout"])) ? $_REQUEST["layout"] : "main";
if (in_array($layout, $valids)) {
setcookie("layout", $layout, time()+24*3600*30, '/');
}
$ref = (isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : "/";
header("Location: $ref");
?>
このスクリプトを、サーバ上の /switch/index.php というパスに設置しておきます。
そして、 http:// ? /switch/?layout=blue のようにアクセスすることで、レイアウト用のクッキーを30日間保存できます。
クッキーを保存した後は、リファラを見て、元来たページに戻ります。単なるクッキー設定用のURLです。
※上記サンプル例では、main, blue, red, pink が有効なcss名として定義されていますが、追加/編集することで自由に切り替えが可能です。
(2) 次に、CSSを動的に読み込むHTML画面 ( php ファイル )
<?php
$layout = (isset($_COOKIE["layout"])) ? $_COOKIE["layout"] : "main";
?>
<html>
<link rel="stylesheet" type="text/css" href="/css/<?php echo $layout; ?>.css">
<body>
<a href="/switch/?layout=blue">青のレイアウトに変更</a><br>
<a href="/switch/?layout=pink">ピンクのレイアウトに変更</a><br>
<a href="/switch/?layout=red">赤のレイアウトに変更</a><br>
</body>
</html>
クッキーからレイアウト用の値を読み、クッキーの値によってCSSを読み込むようなHTMLを出力するPHPファイルになっています。
CSSが動的に変わることで、レイアウトも動的に変更できるというわけですね。
特に難しいスクリプトではないので実装は容易でしょう。
PHPが分かる人にとっては当たり前のようなサンプルになってしまいましたが、デザイナーの方などが使う分には便利かも。
参照
Build your own PHP style sheet switcher | 456 Berea Street
関連エントリ
MovableTypeのPHP化をhtaccessで行う
最新のブログ記事(新着順)
- 15000以上のいい感じの線形アイコン「Lineicons」
- CSSやTailwindでのCSSスニペットライブラリ「CSS Snippets Library」
- AIを使ってサイトマップが作れる「Octopus.do」
- ライブラリ依存のないモーダルオープンライブラリ「Blendy」
- 個性的な明朝フリーフォント「築豊初号明朝OFL」
- CSSで太陽が差し込むようなアニメーション実装
- 可愛くアニメーションする「beautifully crafted animated icons」
- アイソメトリックなアイコンがアイコンがPNG,SVGでゲットできる「Isoicons」
- ユニークなカタカナフォントtorisippo
- 美しいメッシュグラデーションをCSSで簡単に取得できる「MSHR」
- 過去のエントリ