ホームページ作成/装飾・レイアウトの動的変更 (HTML,CSS,JavaScript)

閲覧者がスタイルシートを切り替えられる機能を作る(3ページ目)

複数のCSS(スタイルシート)ファイルを用意しておき、閲覧者がプルダウンメニューを使って自由にスタイルを切り替えられる機能を作ってみましょう。読み込むCSSファイルそのものを変更できるので、装飾やレイアウトを大きく変えられます。好みのデザインを選択できるようにしたり、様々な配色で表示がどう変わるかを確認できるようにしたい場面などで便利です。

西村 文宏

執筆者:西村 文宏

ホームページ作成ガイド

読み込むCSSファイルを切り替えるためのプルダウンメニューを作る

次に、CSSファイルの切り替え候補を選択させるプルダウンメニューを作りましょう。例えば、以下のようにHTMLを記述しておきます。
スタイルの変更:
<select onchange="changesytle('mystyle',value);">
   <option value="style.css">標準スタイル</option>
   <option value="red.css">赤系スタイル</option>
   <option value="blue.css">青系スタイル</option>
   <option value="sea.css">海スタイル</option>
   <option value="">スタイルなし</option>
</select>
上記では、「標準スタイル」・「赤系スタイル」・「青系スタイル」・「海スタイル」・「スタイルなし」の5項目を用意しています。 それぞれの項目は、以下のようにoption要素を使って作ります。
<option value="CSSファイル名">表示する文字列</option>
この記述を、必要なだけ(=CSSファイルの数だけ)列挙しておきます。

value属性値「CSSファイル名」の部分について
value属性値には、切り替えたいCSSファイルの名称を記述します。HTMLと同じディレクトリ内にあるならファイル名を書くだけで構いません。もし異なるディレクトリにあるなら、相対パスや絶対パスを使って記述します。「http://」から記述しても構いません。

なお、最後のoption要素のように、value属性値にファイル名を記述せず「空っぽ」にしておけば、「スタイルシートを適用しない」項目を作れます。

option要素の内容「表示する文字列」の部分について
プルダウンメニューの項目として表示する文字列には、何でも好きな文字列を記述して構いません。どんなデザインなのかを示す短い名称でも書いておけばよいでしょう。

プルダウンメニューが変更されたらスクリプトを実行するonchange属性について
select要素内に記述した「onchange="changesytle('mystyle',value);"」の部分は、後述するスクリプトを呼び出している箇所です。onchange属性を使っているので、閲覧者がプルダウンメニューの項目を変化させたときに実行されます。ここでは、後で作成する「changestyle」という関数を呼び出しています。この関数には、「変更対象のid名」と「選択された値(=CSSファイル名)」の2つを渡しています。これによって、CSSファイルを切り替えられます。

なお、「mystyle」の部分は、CSSファイルを読み込むlink要素に付加したid属性の値と同じにして下さい。本記事に掲載したサンプルソースをそのまま使っている場合は「mystyle」のままで構いません。ここでは、id名を示す「mystyle」には引用符が必要ですが、value属性値を示す「value」には引用符を付けてはいけません。間違えないよう注意して下さい。

プルダウンメニューの表示例

上記のHTMLを表示すると、以下のようなプルダウンメニューが表示されます。
スタイルの変更:
ここではまだJavaScriptを用意していないので、プルダウンメニューの項目を変化させても何も起きません。

それでは次に、CSSファイルを変更するためのJavaScriptソースを記述しましょう。それを書けば完成です。
  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます