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で行う
最新のブログ記事(新着順)
- 小説表紙などに使えそうな商用可なフォント「になロマン」
- 筆で書いたようなカナ書体「筆竹仮名B」
- 無料・商用利用可な丸文字ピクセルフォント「マルミーニャM」
- スペースコブラ風フォント
- Next.jsのVercelから商用利用可能なフリー汎用フォント「Geist Font 」
- 無料で使えるいい感じの日本語フォント「しっぽり太ゴシック」
- CSSのみで実装された500種類のローディングアニメーション「CSS Loaders」
- 画像ホバーで様々なエフェクトをかけられる「Izmir」
- CSSのbox-shadowをGUIで生成できる「CSS Box Shadows Generator」
- 好きな画像や文字を埋め込んだQRコードをリアルタイムで作れるWEBツール
- 過去のエントリ