刚刚开始接触网页设计的朋友是不是经常发生这样的问题呢?做好的网页在自己机器上可以正常浏览,而把页面传到服务器上就总是出现看不到图片,css样式表失效等错误。这种情况下多半是由于你使用了错误的路径,在应该使用相对路径的地方使用了绝对路径,导致浏览器无法在指定的位置打开指定的文件。
什么是绝对路径:
平时使用计算机时要找到需要的文件就要知道文件的位置,而表示文件位置的方式就是路径,例如这个路径:c:/website/img/photo.jpg我们就知道photo.jpg文件是在c盘的website目录下的img子目录中。类似于这样完整地描述文件位置的路径就是绝对路径。而在网站中类似
等地址来确定文件位置的方式也是绝对路径。
另外,在网站的应用中,通常使用"/"来表示根目录,/img/photo.jpg就表示photo.jpg文件在这个网站的根目录上的img目录里。但是这样使用对于初学者来说是具有风险性的,因为这里所指的根目录
并不是你的网站的根目录
,而是你网站所在的
服务器的根目录
,因此当网站的根目录与服务器根目录不同时,就会发生错误。
什么是相对路径:
先来分析一下不能正常显示的情况。举个例子,现在有一个页面index.htm,在这个页面中链接有一张图片photo.jpg 他们的绝对路径如下:
c:/website/index.htm c:/website/img/photo.jpg
如果你使用绝对路径c:/website/img/photo.jpg,或者file:///c:/website/img/photo.jpg那么在自己的计算机上将一切正常,因为photo.jpg文件确实在指定的位置c:/website/img/文件夹内,但当你将页面上传到网站的时候就很可能会出错了,因为你的网站可能在服务器的c盘,可能在d盘,也可能在aa目录下,更可能在bb目录下,总之不太有理由会有c:/website/img/photo.jpg这样一个路径。那么,链接站内元素采用相对路径就是首选。所谓相对路径,顾名思义就是主体与目标的相对位置。在上例中index.htm中链接的photo.jpg可以用img/photo.jpg来定位,于是不论将这些文件放到哪里,只要他们的相对关系没有变,就不太会出错。 另外我们使用“../”来表示上一级目录,“../../”表示上上级的目录,以此类推。(学习过dos的朋友可能更容易理解) 再看几个例子,所有例子中都是index.htm文件中插入一张图片photo.jpg。
c:/website/web/index.htm c:/website/img/photo.jpg
在此例中index.htm链接的photo.jpg应该怎样表示呢?
错误写法:img/photo.jpg
这样写对于index.htm文件来说是在链接c:/website/web/img/photo.jpg
正确写法:使用../img/photo.jpg的相对路径来定位文件
c:/website/web/ab/index.htm c:/website/img/images/photo.jpg
在此例中index.htm接的photo.jpg应该怎样表示呢?
错误写法:../img/images/photo.jpg
这样写对于index.htm文件来说是在链接c:/website/web/img/images/photo.jpg
正确写法:使用../../img/images/photo.jpg的相对路径来定位文件
总结:通过以上的例子可以发现,在把绝对路径转化为相对路径的时候,两个文件绝对路径中相同的部分都可以忽略,不做考虑。只要考虑他们不同之处就可以了。也就是从同级目录开始。 若文件在同一个文件夹内,直接打文件名即可
c:/website/web/ab/index.htm c:/website/img/images/photo.jpg
<IMG SRC="photo.jpg">
用SRC 或 HREF调用文件都可采用上述路径知识例:<SCRIPT src="../nav.js"></SCRIPT> <link rel="stylesheet" href="mycss.css" type="text/css"> 最后要说的是,并非相对路径就一定比绝对路径好,只是用相对路径链接站内文件是很科学的方法。为了避免在制作网页时出现路径错误,我们可以使用DREAMWAVER FRONTPAGE等专门软件的站点管理功能来管理站点。只要定义站点目录之后,它们将能动地把绝对路径转化为相对路径,并且当你在站点中移动文件的时候,与这些文件关联的连接路径都会自动更改,很实用^_^ 但这些软件并非真正的“所见即所得”希望不要完全依赖软件。能掌握基本的知识,修改起来也会很自由~
![](http://www.123.com/img/photo.jpg)