• ベストアンサー

外部CSSを切り替えながらデザインを変化させるセレクトフォーム

同一ページについて外部スタイルシートを切り替えてデザインを変更できるhtmlページを作っています。このたびデザインをそのhtml上から変更できるようにしたく、ページ内にselect形式のフォームを設け、そこで外部CSSを選択すると選んだCSSが適用され、画面のデザインがそのたびに替わるという機能を付けたいと思いますが、そういったことは可能でしょうか?ご存じの方がいらっしゃいましたら是非お教えいただきたく、宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

外部スタイルシートを読み込む時に <link rel="stylesheet" type="text/css" href="normal.css" /> とか、書いていると思いますが、 <link>にidを付けてやって <link id="changeStyle" rel="stylesheet" type="text/css" href="normal.css" /> などとしてやれば document.getElementById("changeStyle").href="change1.css"; とかしてやることで動的にスタイルシートを切り換えることが可能です。 selectのonchangeイベントで、選ばれた値によってこのようにして切り換えてやれば良いです。

tommy-t
質問者

お礼

詳しく対処法を教えていただき、有り難うございます。 おかげさまで、思いどおりの処理を実現することができました。 ただ、IEではOKですが、ネットスケープでテストするとスタイルシートが切り替わりません。いろいろ試してみましたが、同じ結果です。これは仕様で仕方がないのかなとも思いましたが、もし何か判ることがありましたら恐れ入りますが教えていただけましたら幸いです。ちなみにネットスケープはバージョン7.1で、JavaScriptはもちろん有効にしてテストいたしました。 ご参考までに試した内容は下記の通りです。 (ヘッダー部) <link id="changeStyle" REL="stylesheet" type="text/css" href="css1.css"> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">  (プログラム) <script type="text/javascript"> function cgcss(){ document.getElementById("changestyle").href=cssfo.csssel.value ; } </script>  (フォーム部) <form name="cssfo"> <select name="csssel" onChange= "cgcss()"> <option value="css1.css" selected>スタイルシート1 <option value="css2.css">スタイルシート2 </select> </form> まずは取り急ぎ御礼かたがたご報告とさせていただきます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

document.getElementById("changestyle").href=cssfo.csssel.value ; の changestyle を changeStyle にしてみるとどうでしょう?

tommy-t
質問者

お礼

プログラムまで詳しく見ていただき有り難うございます。このたびはご面倒をおかけし恐縮です。 さて、いろいろ試すなかで、cssfo.csssel.value ;の頭にdocument.をつけてみたらネットスケープでも動作しましたのでまずはご報告いたします。 せっかくバグを見つけていただいたのに、私の知識不足のため、ご面倒をおかけしてしまい、まことに申し訳ありません。 おかげさまで所期の目的を達成することができました。本当に有り難うございました。

全文を見る
すると、全ての回答が全文表示されます。
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

Javascriptを使用してやれば可能。 クッキーを使えば選択デザインの保存もできて、次回きたときでも設定を維持できます。

tommy-t
質問者

お礼

早速ご回答をいただき、有り難うございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ホームページビルダーでの外部CSS

    ホームページ作成しています。 ど素人なりに頑張っていますが、内容が増えていくにつれ、だんだん動作が遅くなってきました。 そこで、最近「外部にスタイルシートを作る」ということを学びましたが、「div」あたりになると、さっぱり理解できず、結局「body」や「A」などのCSSを外部にするという段階にとどまっています。 もうすでに、レイアウトやデザインは決まっているので、今ある「manu」や「head」などを外部CSSに固定すれば、あとは記事を書くだけでページが作れると思うのですが…。 CSSのサイトはいろいろ拝見したのですが、レイアウトの段階になると、途中でわからなくなってしまいます。 ホームページビルダー付属のスタイルシートでは、デザインが合いません。そこで、素人にもわかりやすい、レイアウト枠としての外部CSS作成法をご指導ください。また、そのようなフリースタイルシートのソースなどがあればご紹介ください。 とにかく、外部CSSで、レイアウトを固定したいのです。 よろしくお願いいたします。

  • 外部CSS

    XHTML文章に外部スタイルシートを適用しているのですが、他のスタイルは適用されるのに何故か背景画像(background-image:)だけが適用されず画像が表示されません!記述も何度も確認したので間違ってはいないと思うのですが・・・*(imgフォルダ、cssファイル、htmlファイルは同じ場所にあります。)記述ミス以外にこの様なことが起こるのでしょうか?起こるとすればなにが原因なのでしょうか!困っています!わかる人がいたら教えて下さい。よろしくお願いします。

  • [Dreamweaver8]テンプレートに外部CSSを適用→HTMLドキュメントにCSSが適用されないのは何故?

    Dreamweaver8初心者で、現在勉強中の者です。 Dreamweaverのテンプレート機能を使った、外部CSSの設定方法についてお尋ねします。 ディレクトリは現在、以下のような状態です。 [サイト -SampleWebSiteFolder-]    |―[Templates]    |   |―[style.css]    |    L―[template.dwt]    |     L[index.html] ※拡張子の無いものはフォルダを表します。 index.htmlファイルへCSSを適用させたいのですが、適用されないで困っています。 cssは、外部スタイルシートファイルを用意(style.css)し、テンプレート(template.dwt)に対して、CSSスタイルパネルの[スタイルシートを添付]ボタンより設定しています。 結果、テンプレート(template.dwt)に対してはCSSが適用されるのですが、HTMLドキュメント(index.html)にはCSSが適用されていない状態です。 テンプレートを用いて外部スタイルシートにてサイトを管理する場合、上記のケースにおける問題の原因は何でしょうか。 ちなみに、テンプレート[template.dwt]及び、HTMLドキュメント[index.html]の<head></head>内には、以下のソースが記述されています。 <link href="style.css" rel="stylesheet" type="text/css" />

  • HPビルダーでCSSを使ってフレームごとにデザイン変更

    HPビルダー8でフレームを使って左、右下(メイン)、右上での3画面でHPを作成中です。 左・右上・右下でそれぞれ違う背景を違うデザインで使いたいと思っています。 スタイルシートを利用中なのですが調べてもよく理解できずわかりません。 今はビルダーのスタイルシートの細かい指定方法がわからないので直接 手打ちでCSSファイルにメインページのデザインを入れて、 左・右上のフレームページはheadタグ内に個別に入れています。 できれば作業が簡易化できるようにフレームごとに違うデザインのCSSを それぞれ適用させたいとおもうのですが具体的な方法を教えていただけますか? CSSファイルなどを直接いじる方法でもHPビルダーの機能を使う方法でもどちらでもかまいません。 CSS系のサイトは一通り見てみたのですがさっぱりわからないので 具体的に記述例を教えてくれると大変ありがたいです。よろしくおねがいします。 CSSファイルの記述(一部) body{background-image : url(../○○.jpg);} 左ページの記述 <head> <STYLE type="text/css"> <!--body{background-color:#ffffff}--> </style> </head> 右上ページの記述 <head> <STYLE Type="text/css"> <!--body{background-color:#808080}--> </style> </head>

  • ホームページに、ユーザがcssのスタイルシートを選択し、切り替えられる

    ホームページに、ユーザがcssのスタイルシートを選択し、切り替えられる機能をつけたいと思い、 http://allabout.co.jp/gm/gc/23930/5/ の通りに記述しました。 しかし、このように記述したページのみスタイルシートの変更ができたのですが、リンク先に飛ぶとスタイルが標準設定に戻ってしまい、再び選択をおこなわなければなりませんでした。 構成は、 index.html index2.html mystyle.css mystyle2.css となっており、index.htmlとindex2.htmlにそれぞれ、上のホームページの通り記述しました。 (何も選択していない状態では、mystyle.cssが適用され、mystyle.cssとmystyle2.cssを選択できます。) リンク先に飛んでも、選択したスタイルを維持することはできないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • dreamweaverでCSSを作成したい!

    MacromediaのDreamweaverでWebデザインをしています。 DWの機能を使ってCSSを作成したいのですが、 作ったCSSがCSSスタイルのウィンドウに反映されないのです。 カスタムスタイルを作成したいのですが、 適用したい文字を選択して、CSSウィンドウ上の適用したいスタイル名をクリックすれば適用できる、はずなのに、 CSSウィンドウ上にどうやっても反映されません! どうすればよいのでしょう…。

    • ベストアンサー
    • CSS
  • 要素にスタイルシートを外部CSSにて指定する方法

    外部運営で、間借りしているサイトを使用しています。(主の部分は、運営会社のみが変更可能) 自分でCSSを変更できないので、例えば、テキストリンクにスタイルを適用す場合、直接記述ができるようなのですが、 <a style="color: red; text-decoration: none;" target="_blank" href="url">ABCD</a> これを、直接スタイル記述ではなく、自分のサイトで作った外部CSSにリンクさせ、適用させたいと考えています。 ID name属性 Title属性 content type属性 スタイルシートクラス リンクcharset属性とスタイルシート欄が存在します。(上記の例は、最後のスタイルシートの欄に入れると上記のようなソースになりました。) 上記の中で、何か利用すれば外部CSSのリンクできるのでしょうか。

    • ベストアンサー
    • HTML
  • CSSを適用…させない!

    ちは! さてさて~スタイルシートで、たとえばページ内のtableすべてにスタイルシートを適用させるため書くのは TABLE{ うんぬん } ですが!この状態で、ページ内の数個のtableにはこの「うんぬん」を適用させたくない! だからって、適用させたいtableにclassを設定しテクノは面倒だ! そこで!、適用させたくない数個のtableに、「TABLE」に対してのstyleは適用させない!っていうclassを書く。 そんなCSSありますか?(わかりにく・・・い・・・) とりあえず、「ここは適用しなくていいよ」っていうCSSありませんかね?探してもないものはないんでしょうか・・・

    • ベストアンサー
    • CSS
  • 外部CSSをかくには。

    HPのページひとつひとつにいちいちスタイルシートをかいていくのが 面倒になったので外部CSSでまとめてしまおうと 思ったのですが、上手くいきません。 ちなみにこうかいております↓ <STYLE TYPE="text/css"> <!-- BODY {  letter-spacing:7px;  line-height:15pt; } --> </STYLE> <style type="text/css"> <!-- body { scrollbar-face-color: #FF9900; scrollbar-highlight-color: #ffffff; scrollbar-shadow-color: #000000; scrollbar-3dlight-color: #000000; scrollbar-arrow-color: #000000; scrollbar-track-color: #ff9900; scrollbar-darkshadow-color: #ffffff; } --> </STYLE> <STYLE TYPE="text/css"><!--A{text-decoration:none;}A:hover{text-decoration:underline overline;}--></STYLE> <style type=text/css><!--a{text-decoration:none;}--></style> <style><!--BODY{font-size:8pt;}--></STYLE> どこか悪い点がありましたら教えてください。

    • ベストアンサー
    • HTML
  • DreamweaverMX2004 外部CSSへの相対アドレスについて

    WindowsでDreamweaverMX2004 ver7.1を 使っているのですが、外部CSSへリンクを張って 読み込ませる際にいつも相対アドレスの先頭に スラッシュ(同フォルダ内にCSSとHTMLがある場合 /css)と なり、F12を押してできるプレビュー画面では問題無い ものの実際に見てみるとスタイルが適用されていません。先頭のスラッシュを手打ちで削除してやれば解決はするのですが・・・。 これはDreamweaverMX2004のバグなのでしょうか? もしくは、設定で変更できるのであれば教えてください。 よろしくお願いします。

    • ベストアンサー
    • HTML