ほんっとにはじめてのHTML5とCSS3
Sample42-1

link要素でCSSを読み込む場合の「title属性」によるCSSグループ化

一部のブラウザで、ユーザーがスタイルシートを切り替えられます

このページは、一部のブラウザ(IE, Firefox)でユーザがスタイルシートを選択する事ができます。

ブラウザの「メニューバー」の「表示」→「スタイルシート(スタイル)」で、「test1」「test2」を切り替えてみてください。

セレクタでの切り替え

ブラウザの「メニューバー」でスタイルを切り替えられないかたのために。
JavaScriptによるスタイルシートの切り替え:

link要素で、外部CSS読み込み時に「title属性」を付ける

このページの外部CSSは、下記のように書いています。

<head>
  <link rel="stylesheet" href="css/default.css">
  <link rel="stylesheet" href="css/style-a.css" title="test1">
  <link rel="stylesheet" href="css/style-b.css" title="test2">
  <link rel="stylesheet" href="css/style-c.css" title="test2">
</head>

「default.css」は、全体のレイアウトを整え、<body>要素の背景を none(なし)にしています。
「style-a.css」は、<body>要素の背景のみブルーに。そして「title属性」で、「test1」としています。

「title属性」で「test2」としたファイルが2つあります。

後で記述した、異なるtitle名のグループは、初回には適用されない

ページを読み込んだときは、「default.css」(title属性がない)と「style-a.css」(最初の title「test1」)のみが適用されます。
この後に記述した異なる title名のグループの CSSファイル2つは、初回には適用されません。(これはどのブラウザでも同じ現象です)

ユーザーがメニューバーで「test2」を選択すると、このタイトルが付いた「style-b.css」と「style-c.css」が使われます。
このとき最初に読み込んだ「default.css」「style-a.css」は無効(適用されない)になります。

「style-b.css」は「default.css」と同じ内容、「style-c.css」は <body>の背景色をピンクにし、<section>要素にグレーの border を付けました。

このページのCSSを見る

default.css
style-a.css
style-b.css
style-c.css

CSS切り替えのセレクトメニューのソースコード

おまけです。
このページの CSS切り替えセレクトメニューのソースコードです。
<head>部分で、CSSの2番目(背景色をブルーにしたCSS)の読み込みの <link>要素に id を付けています。
同じく <head>部分に Javascript を下記のように書いています。

<head>
<link rel="stylesheet" href="css/default.css">
<link rel="stylesheet" href="css/style-a.css" title="test1" id="switch">
<link rel="stylesheet" href="css/style-b.css" title="test2">
<link rel="stylesheet" href="css/style-c.css" title="test2">
<script>
function changesytle(cssid,cssfile) {
   document.getElementById(cssid).href = cssfile;
}
</script>
</head>

本文中のセレクトメニューのソースは下記のとおりです。

<select onchange="changesytle('switch',value);">
  <option value="css/style-a.css"> test1 </option>
  <option value="css/style-c.css"> test2 </option>
  <option value=""> 背景色なし </option>
</select>

このサンプルの場合は、背景色をブルーにした「style-a.css」と、ピンクにした「style-c.css」を切り替えればいいので、こうしました。

「文字サイズ」を切り替える場合は、そのCSSだけ独立させて、文字サイズを変えたCSSを何種類か用意し、そのCSSの読み込み用の <link>要素だけに id を付けて特定するといいかんじ。