2011-03-08 7 views
0

前のディレクトリとCSSの相対URLを起動すると問題が生じていますこれは時々ではなく、他の仕事だろうと私には、なぜ私がこのようなURLで背景画像をロードしています

background-image: url(/../../images/folder/imageName.png); 

その奇妙な:私はこのような前面にスラッシュを置けば、それだけで動作します。また、私の直感は、これらのURLをスラッシュで始めることは間違っていると言います。

これについての洞察はありますか?

+0

これは外部スタイルシートにありますか?ディレクトリ構造の異なるレベルから参照していますか? –

+0

これは外部スタイルシートですが、ディレクトリ構造内のすべてが同じレベルにあります。構造体にはstatic/css/<ページ固有のフォルダ> /someCss.cssとstatic/images/<ページ固有のフォルダ> /pngImageOrSomething.pngがあります。 –

答えて

0

私はそれを理解したと思います。

http://localhost/rootDirectory//pageName/stylesheet.css 

はRootDirectoryはとページ名の間に2つのスラッシュに注意してください。私のスタイルシートは、このようなアドレスです。私のイメージがディレクトリを元に戻すために..を使用したとき、スラッシュの間の空白をディレクトリ自体として扱っていたようです(スタイルシートをロードすると、それ自身のディレクトリとして扱われず、ロードされたパスに影響しませんでした)。

これは、スタイルシートでは../../ seemdが動作する理由とそうではない(実際には../../../の代わりに働いた)理由です。

2

プロトコル(http://など)がないURLを開始すると、現在のドキュメントとの相対的な意味になります。異なるページが異なるフォルダにある場合、相対URLが指すファイルが変更されますが、これはおそらく問題です。

スラッシュでURLを開始すると、そのページが存在するドメイン/サブドメイン全体に相対的になります。私はこれを良い習慣とみなし、あなたがそれを使うことを奨励します。

あなたの例では、しかし、それはあなたがすでにドメインのベースにあるため無視される "ディレクトリ上の"ヒントである../../で続行しています。

+0

興味深いことに、私はスラッシュアイディア。 –

関連する問題