プロが教えるわが家の防犯対策術!

kari.htmlにある内容のボックスがあるとして、
それはCSSでデザインされ、画像も入っています。

この下の階層の
menu.htmlの中にkari.htmlで使ったある内容ボックスの同じものがまるまる入ります。

なので、kari.htmlの内容を更新してコピーしてmenu.htmlにもはります。

この場合、画像やCSSを相対パスではなく、絶対パスにしておくと、階層が異なっても
きれいに入ります。

../からではなく、/から始まるパスです。

このやり方は間違っているのでしょうか?
同じようにページ、階層を渡って共通部分には絶対パスをしています。
こういうふうに使い分けしていくものでしょうか?

phpでインクルードしてもいいんですが、他にもインクルードが多々あるので、
ページ内でそんなにインクルードあってもいいものかと思いまして。。(勝手な勘違いでしょうか?)


宜しくお願い致します。

A 回答 (2件)

間違いではないですし、使い分けもいいでしょう。


フレームワークのように全体をシステム化すれば絶対パスになるのも普通です。
全体の階層が変わることはあまりないでしょうが、例えば
css_path('/path/to/style.css') など関数を挟めば階層ダウンにも対応可能です。
ただ、なるべく仕様は統一した方がよいです。
CSSの中なんかは相対の方がいいかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
全体の階層は変わることはないです。
そのために、”今”きっちりと階層とパスの関係を構築しています。

CSSの中は相対パスです。
(背景画像の指定とかですよね?)

一応相対パスと使い分けしています。

ポータルサイトなので、
同じ作りのページが数十ページならびます。
またお店ごとにディレクトリを設けます。
なので、画像の名前、imgフォルダなどの各フォルダ名を一緒にしておくと、
相対パスで作った時にお店のデータのファルダをコピーし名前を
変えるだけで、中の情報が全て、変わるので便利です。

絶対パスはコピペとかで移動する場合があるところ、
階層が違うけど、共通で入っているリンクなどに使っています。

これが正しかったのか、どうなのか不安でして。。


今まで絶対パスは外部リンクにしか使ってこなかったので、
新しい試みで疑問でした。

お礼日時:2011/04/11 16:29

>画像やCSSを相対パスではなく、絶対パスにしておくと、階層が異なってもきれいに入ります。


この文の意味がいまいちわかりかねますが、

絶対パスと相対パスの考え方の基本は、
絶対パスは環境に依存しやすいのに対し、相対パスは環境に依存しにくいと言う事です。
すなわち、絶対パスで指定する場合はその環境固有の設定であるとか、恐らくどの環境を用いても共通であろうと思われる環境に対して指定します。

それに対して、相対パスと言うのは環境に依存しにくいですから、例えばWeb環境をごっそり他の環境に移行しても相対パスで指定してあれば、そのままWeb環境が再現できる事になります。

今回は、たまたまWeb環境ですが、例えば、自作のプログラムがありヘッダーファイルをインクルードする記述を絶対パスで書いていては、環境が変わる毎にその絶対パスを書き直さないといけません。ソースコードのバージョン管理をしていても、バックアップをしていても同じような事が言えます。
Linuxであればマウントされるフォルダーが変わってしまえば絶対パスで書いていたらその都度書き直さないといけない事になります。

すなわち、ApacheやPHP本体に関しては固定パスにインストールされるので、環境を変えた際違うパスにインストールした場合は、本体を参照している部分については書き直しが必要ですが、それ以外の自作のPHPやCSS、HTMLなどに関しては相対パスで記述した方が無難です。

相対パスで問題が出るようであれば、相対パスで問題が出ないようなフォルダー階層に構成しなおした方がより柔軟性が出ると思います。

一人、かつ、Web環境で作業するだけですとなかなか、この相対パスの重要さが見えてこないですが、複数人でいろいろな作業をしてくるとだんだん見えてくる事かと思います。

ご参考までに。
    • good
    • 0
この回答へのお礼

ありがとうございます。

>画像やCSSを相対パスではなく、絶対パスにしておくと、階層が異なってもきれいに入ります。

すいません、階層が違ったところにボックスごとコピペしても
パスを変えることなく、きちんと表示できるということです。

お礼日時:2011/04/11 16:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!