人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CSSがHTMLに反映されません。

当方、web制作をはじめたばかりの初心者です。
CSSがHTMLに反映されないのですが、以下のどちらかに原因があるのではと考えております。
・相対パスの設定がおかしい
・フォルダ分けがおかしい

相対パスの設定については以下のとおり書きました。
<link href="css/style.css" rel="stylesheet" type="text/css" media="all">

フォルダ分けは「/」というフォルダの中に「index」「css」「image」のフォルダをつくり「css」フォルダの中に「style.css」というファイルが入っております。

ご回答お待ちしております。なお、ご回答頂く場合には、お手数ですがソースとなるURLをご呈示くださいますようお願いします。

1339720394
●拡大する

●質問者: halappa
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3
●100ポイント

スタイルが反映されない HTML というのは、どこに置いてありますか?
もしかしたら、index フォルダの中に置いてたりします?

<link href="../css/style.css" rel="stylesheet" type="text/css" media="all">


halappaさんのコメント
回答ありがとうございます。スタイルが反映されない HTML(index.html)はindexフォルダの中にいれておりました...! しかし、ご回答いただいた内容のとおり、書き換えたのですが、CSSがあたりませんでした。a-kuma3さんにご回答いただいた内容や他の回答者さまにご説明していただいた内容に納得し、わたしも上記の書き換えでうまくいくのでは、と思ったのですがうまくいきませんでした....。せっかくご回答頂いたのにすみません....。(index.htmlをindexフォルダから出したら解決(cssがあたった)したのですが、できたら、indexフォルダにいれたい気持ちです....)

a-kuma3さんのコメント
相対パスじゃないんですけど、link タグの href にホスト名を書きたくない、ということであれば、 >> <link href="/css/style.css" rel="stylesheet" type="text/css" media="all"> << と、書くのでも良いかな。 index.html だと、入口のページなので、HTTP で公開しているフォルダの直下に置くのが普通だと思いますけど、それ以外の HTML だったら、普通に階層を作って下に置きますから、何か納得いかないですね。 >|txt| /index.html /diary/ …… 日記の HTML /memo/ …… メモの HTML /css/ …… スタイルシートを置くディレクトリ /scripts/ …… javascript を置くディレクトリ ||< というのは、普通の構成だと思います。

2 ● うぃんど
●100ポイント

css/style.css は絶対パスになってるかもしれません。

index/hogehoge.htmlからcss/style.css を相対パスで参照したいならば、下記になります。

../css/style.css

軽く説明しますと、
相対パスは呼び出す側から順に辿るので下記のような具合です。
hogehoge.html → index → ルート → css → style.css

hogehoge.html から index を相対パスで示すと . になります。
(. は所属しているディレクトリを意味します。これは通常省く事が出来ます)
hogehoge.html から ルートを相対パスで示すと .. になります。
(親ということです)
hogehoge.html から css までを相対パスで示すと ../css になります。
(兄弟/姉妹/兄妹/姉弟・・・)
hogehoge.html から style.css までを相対パスで示すと ../css/style.css になります。
(これが求めていたもので、上に書いた答えとなります)

下記は、URL必須ということで、一応有名どころを書いておきます。
http://www.tohoho-web.com/wwwunix.htm#RelativePathName


うぃんどさんのコメント
1つずれてたので回答を訂正しました。

halappaさんのコメント
ご回答ありがとうございます。ご丁寧な説明、とてもありがたいです。 ところが、上記の通り書き換えたところうまくできず、レンタルサーバーの会社にお問い合わせをしたところ、以下のようにご回答をいただきました。 「フォルダ「index」の中に「index.html」というファイルが設置されている場合、正しくCSSを参照できません。HTMLファイルよりも上の階層にCSSのデータが保存されたフォルダがあるからです。つきましては、フォルダ「index」は削除、 WEBサーバー上のにトップ「index.html」を設置ください。」 その通りにやったら、たしかにCSSは当たったのですが、なぜ、windofjulyさんにご連絡いただいた方法でできなかったのか分からずじまいでした。 通常「index.html」はフォルダに入れないものなのでしょうか...

うぃんどさんのコメント
トラブルを未然に防ぐために、 上の層を経由した相対指定は出来ないようにしているのかもしれません。 index/hogehoge.html の上の層は / ですが、 間違って /hogehoge.html に設置してしまうと、 最上位の / を超えてしまうということです。 それがWEBサーバーの仕様ならば仕方ありませんので、 下記のいずれかにするしかないですね。 (a) >|| /hogehoge.html /css/style.css /image/画像ファイル ||< (b) >|| /index/hogehoge.html /index/css/style.css /index/image/画像ファイル ||< >通常「index.html」はフォルダに入れないものなのでしょうか cssファイルや画像ファイルは html に従うものなので、 htmlよりは下の階層、すなわち(b)のような構成にしますね。

うぃんどさんのコメント
>すなわち(b)のような構成にします すなわち(a)や(b)のような構成にします
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ