こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

base hrefとlink rel

テキストエディタでhtmlを書いています。
外部cssを使うので、

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

をヘッダ部に入れていますが、これより上に

<base href="~">

で基準URIを指定しようとすると、cssが反映されなくなってしまいます。
先に

<link rel="~

を入れてしまうと、文法チェックで引っ掛かるのですが、どうしたら良いのでしょうか?
ソースは、

<Head>

<base href="絶対パス">

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

で、この後にmeta属性を入れています。
よろしくお願い致します。

投稿日時 - 2009-10-26 00:23:12

QNo.5396879

すぐに回答ほしいです

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

base hrefからの相対パスで<link>を指定するか、
絶対パスか絶対URLで<link>を指定してください。

投稿日時 - 2009-10-28 04:47:57

お礼

ありがとうございます。

投稿日時 - 2009-10-28 16:26:46

ANo.4

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(4)

そもそも何の為に「base」を記述するのでしょうか?
他に代替処置が不可能な状態なのですか?

文法上baseの前にlinkを入れてもエラーには成らない事を言明して置きます。

投稿日時 - 2009-10-26 23:02:49

補足

ありがとうございます。
テキストに書いてあったので、入れた方が良いのかと思って書いたのですが。
そもそも不要なタグなのでしょうか?
素人ですので、

> 他に代替処置

が、よく分かりません。
申し訳ございません。

投稿日時 - 2009-10-27 10:51:51

よくわからないならbaseは書かないでおくのがいいんですがねぇ。

<base href="http://www.somewhere.com/~nobody/index.html">
と書いてあるHTMLファイルがあるとして、そのHTMLファイルの中に
<link rel="stylesheet" href="style.css" type="text/css">と書
いてあったら、HTMLファイルが世界中のどこにあっても参照される
スタイルシートはhttp://www.somewhere.com/~nobody/style.css
なります。HTMLファイルと同じディレクトリを指すとは限りません
ね。

というわけで、あなたのパソコン上で動作確認をしたくても、base
要素にサーバのアドレスを書いちゃったからにはサーバ上のファイ
ルを探しにいきます。不毛なのでbase要素を書くのはヤメましょ
う。何も書かなければ、閲覧しているHTMLファイルの場所が基準に
なります。

投稿日時 - 2009-10-26 20:51:42

お礼

再度、ありがとうございます。
そうですよね。初めは、それまで見えていたものが突然見えなくなってしまったので、「!?」だったのですが、落ち着いて良く考えたら、サイトアドレスを基準にしているのだから、サーバに上げない限り見られないのかな、と思いました。
当たっていたようで良かったです。
何も書かない方向でも検討してみます。
ありがとうございました。

投稿日時 - 2009-10-27 10:51:38

念のため確認ですが、linkで指定するスタイルシートのURIは、
baseで指定した基準URIを考慮したものになってますよね?
htmlファイルとcssファイルと基準URIの位置関係を図示して
もらえますか。

投稿日時 - 2009-10-26 07:53:59

補足

ありがとうございます。
素人ですので、

> linkで指定するスタイルシートのURIは、baseで指定した基準URIを考慮したもの

が、よく分かりません。
申し訳ございません。
ファイル名を間違っていないか、と言うことでしょうか?
htmlファイルとcssファイルは、同じフォルダの中に存在します。
現在は編集中で、サーバにアップせず、動作確認をしている最中なのですが、サーバにアップする時も、ファイルをそのまま一緒に放り込む予定です。
ちなみに、基準URIとなるページのファイル名が、

index.html

cssのファイル名が、

style.css

で、本やサイトで調べたところ、基準ULIは(この場合)、

"絶対パス/index.html"

とするようなのですが、試運転用にアップしてあるダミーのindex.htmlファイルに対して、絶対パス(サーバ提供のサイトアドレス)でブラウザからアクセスすると、アドレスバーには/index.htmlの部分が表示されませんので、<base href="絶対パス">の"絶対パス"の中身は、サーバ提供のサイトアドレスのみで、/index.htmlを挿入していません。
これは入れるのが正しいのでしょうか?
もしそうであれば初めから的外れなことをしているようで申し訳ないのですが、よろしければ教えて下さい。
どうぞよろしくお願い致します。

投稿日時 - 2009-10-26 09:27:12