为什么我在使用以前的目录启动css相对url时遇到问题

时间:2011-03-08 22:08:31

标签: css url directory

我正在使用这样的网址加载背景图片:

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

对于某些页面,这样可以正常工作,但在其他页面上,它只有在我在前面放斜线时才有效:

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

我很奇怪,这有时会起作用,而不是其他人。此外,我的直觉是告诉我,用斜线开始这些网址是完全错误的。

有没有人对此有任何见解?

2 个答案:

答案 0 :(得分:2)

启动没有协议的URL(http://等)意味着它相对于当前文档。如果不同的页面位于不同的文件夹中,则相对URL指向的文件将发生变化,这可能是您的问题。

使用斜杠启动URL会使其相对于页面所在的整个域/子域。我认为这是一个很好的做法,所以鼓励你使用它。

在您的示例中,您使用../../跟随它,这是“上面的目录”提示,由于您已经位于域的基础,因此会被忽略。

答案 1 :(得分:0)

我想我明白了。我的样式表位于以下地址:

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

请注意rootDirectory和pageName之间的两个斜杠。似乎当我的图像使用..返回目录时,它将这些斜杠之间的空白区域视为目录本身(加载样式表时不会将其视为自己的目录,并且对加载的路径没有影响)。

所以这就是为什么对于某些样式表,.. / .. /似乎工作,而对于其他它没有(事实上,../../../工作)