- ベストアンサー
外部CSSが反映されるHTMLとされないHTML
- レンタルサーバのファイルマネージャを使ってサイトを作っています。外部CSSで文字のフォントをMS Pゴシックに統一したいのですが、反映されるページとされないページができました。
- HTML、CSS共に文字コードはShift_JISで統一していて、それぞれ<head></head>間の同じ位置に記述してあります。反映されたHTML内にはボックスの幅指定でCSSを使っていますが、その他のページにはCSSを使っていません。
- HTML、CSS共に初心者です。この質問が初歩的なことなのか難しいことなのかもわかりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
いわゆるframestの子供HTMLのうち、ひとつのページのみスタイルシートが利いているということですね。 一番考えられるのは、適用されないページに書かれているスタイルシートへのパスが通っていないことです。 たとえば frameset.html frame1.html frame2.html のframe2.htmlからのスタイルシートへのパス指定が誤っている。これは、frame1.htmlと異なる階層にframe2.htmlがある場合におきます。 全体(framest)を表示して該当するフレーム内で右クリックして「このフレームだけを表示する」を選択すると、そのページだけが表示されるはずです。そこでソースを見てそのパスを元にURLを表示させようとするとNot Faundになるのでは? なお、frameは使うべきではない手法です。『HTML文書を作る場合には、この仕様における、他のDTDセットではなく strict DTD に適合する文書を作るよう推奨する。 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/conform.html#h-4.1 )』 スタイルシートを使うのでしたら、スタイルシートでフレームのように実装することを強く勧めます。フレームは過去の技術です。 HTML4.01strict(XHTML1.0strict)では非推奨、それ以降のXHTML1.1では廃止、HTML5ではiframeの形で使えますが、かっての使用方法とは変わります。
その他の回答 (1)
- naokita
- ベストアンサー率57% (1008/1745)
キャッシュが効いてしまい、新CSSが反映される場合もあるし、 フレームか・・・ フレームからのCSSパスが違う。 つまり、ファイルの階層が違うので同じパスではCSSが読めないのでは? 試に、 http://www~~~/style.css などのフルパスで指定してみたらどうなる? まあ href="./style.css" このパスを正しいルートパスにするだけですが。
お礼
無事解決できました!解答ありがとうございます!
お礼
解答ありがとうございます。 教えていただいたことを順番に試していこうと思ったのですが、ソースからパスを元にURLを表示させる方法がわからず、Not Faundになるかどうかは確認できませんでした。 HTMLやCSSについては解説サイトで聞きかじった程度の知識でしたので、非推奨の手法を使っていたとは全く知りませんでした。勉強不足ですみません…。 文字フォントの統一はいったん置いておき、まずは教えていただいたようにスタイルシートで同じデザインになるようやり直します。 質問しなければ気付かないところでした、ありがとうございました!
補足
ご指摘通り、まずフレームをやめてCSSによる疑似フレームに変更しました。 自分では難しかったのでテンプレートをダウンロードし、最初作っていたレイアウトとは変わりましたが疑似フレームが出来上がりました。 テンプレートの中で外部CSSが使われていたので、自分で用意していたページとの違いを見なおすと、私の方はどのページにも <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <meta http-equiv="Content-Style-Type" content="text/css"> の記述をしていませんでした。 読み込みたいページにはCSSを使いませんが、この部分を付け足して実行すると直ぐに反映できました。 外部CSSを読み込むにはHTMLの<head>~</head>間に<link href="./style.css" rel="stylesheet" type="text/css">を入れるだけだと説明を読んでいたのですが、思わぬところで解決してホッとしています。 ありがとうございました!