网页设计技巧:相对路径与绝对路径的区别问题
作者:pcking 来源:电脑报 发布时间:2008-03-04 10:12:00
如果您刚刚开始接触网页设计,是不是经常发生这样的问题呢?做好的网页在自己机器上可以正常浏览,而把页面传到服务器上就总是出现看不到图片,css样式表失效等错误。这种情况下多半是由于你使用了错误的路径,在应该使用相对路径的地方使用了绝对路径,导致浏览器无法在指定的位置打开指定的文件。
下面我们就来谈一下最让初学者头疼的相对路径与绝对路径的区别问题。
什么是绝对路径:
大家都知道,在我们平时使用计算机时要找到需要的文件就必须知道文件的位置,而表示文件的位置的方式就是路径,例如只要看到这个路径:c:/website/img/photo.jpg我们就知道photo.jpg文件是在c盘的website目录下的img子目录中。类似于这样完整的描述文件位置的路径就是绝对路径。我们不需要知道其他任何信息就可以根据绝对路径判断出文件的位置。而在网站中类似以http://www.pckings.net/img/photo.jpg来确定文件位置的方式也是绝对路径。
另外,在网站的应用中,通常我们使用"/"来表示根目录,/img/photo.jpg就表示photo.jpg文件在这个网站的根目录上的img目录里。但是这样使用对于初学者来说是具有风险性的,因为要知道这里所指的根目录并不是你的网站的根目录,而是你的网站所在的服务器的根目录,因此当网站的根目录与服务器根目录不同时,就会发生错误。
什么是相对路径:
让我们先来分析一下为什么会发生图片不能正常显示的情况。举一个例子,现在有一个页面index.htm,在这个页面中联接有一张图片photo.jpg。他们的绝对路径如下:
c:/website/index.htm
c:/website/img/photo.jpg
如果你使用绝对路径c:/website/img/photo.jpg,那么在自己的计算机上将一切正常,因为确实可以在指定的位置即c:/website/img/photo.jpg上找到photo.jpg文件,但是当你将页面上传到网站的时候就很可能会出错了,因为你的网站可能在服务器的c盘,可能在d盘,也可能在aa目录下,更可能在bb目录下,总之没有理由会有c:/website/img/photo.jpg这样一个路径。那么,在index.htm文件中要使用什么样的路径来定位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文件来说img/photo.jpg所代表的绝对路径是:c:/website/web/img/photo.jpg,显然不符合要求。
正确写法:使用../img/photo.jpg的相对路径来定位文件
例:
c:/website/web/xz/index.htm
c:/website/img/images/photo.jpg
在此例中index.htm中联接的photo.jpg应该怎样表示呢?
错误写法:../img/images/photo.jpg
这种写法是不正确的,在此例中对于index.htm文件来说../img/images/photo.jpg所代表的绝对路径是:c:/website/web/img/images/photo.jpg。
正确写法:可以使用../../img/images/photo.jpg的相对路径来定位文件
例:
c:/website/web/xz/index.htm
c:/website/web/img/photo.jpg
在此例中index.htm中联接的photo.jpg应该怎样表示呢?
错误写法:../../img/photo.jpg
这种写法是不正确的,在此例中对于index.htm文件来说../../img/photo.jpg所代表的绝对路径是:c:/website/img/photo.jpg。
正确写法:可以使用../img/photo.jpg的相对路径来定位文件
总结:通过以上的例子可以发现,在把绝对路径转化为相对路径的时候,两个文件绝对路径中相同的部分都可以忽略,不做考虑。只要考虑他们不同之处就可以了。
如何修改样式表的路径:
使用文本编辑器打开htm文件,查看源代码,在源代码的开头部分<head>......</head>标记中间找到<link rel="stylesheet" href="test.css" type="text/css">。“Href=”后面的内容就是css的路径,我们可以根据以上的知识进行相对路径的转换。
例:
c:/website/web/xz/index.htm
c:/website/css/test.css
在此例中index.htm中联接test.css文件,可以使用../../css/test.css的相对路径来定位文件,完整的代码标记是:<link rel="stylesheet" href="../../css/test.css " type="text/css">
错误写法举例:../../../css/test.css
这种写法是不正确的,在此例中对于index.htm文件来说../../../css/test.css所代表的绝对路径是:c:/css/test.css
最后,为了避免在制作网页时出现路径错误,我们可以使用dreamweaver的站点管理功能来管理站点。只要使用菜单命令site-new site新建站点并定义站点目录之后,它将自动的把绝对路径转化为相对路径,并且当你在站点中移动文件的时候,与这些文件关联的连接路径都会自动更改,实在是非常的方便。


猜你喜欢
- 在for循环中是否需要缓存length值,相信很多程序猿们都纠结过此问题,下面就这一问题的分析请看下文:在JS性能优化中,有一个常见的小优化
- 数据库缓存为了使用数据库表作为缓存后端,首先在数据库中运行这个命令以创建缓存表:python manage.py createcacheta
- 在vue中已经不像jq那样直接操作dom了,如果要指向当前选中项时,就不能再用jq的思路来做了,方法如下:当指向一个状态的时候,只让指向的状
- 源代码: 传送门Vue会对我们在data中传入的数据进行拦截:对象:递归的为对象的每个属性都设置get/set方法数组:修改数组的原型方法,
- java匹配字符串表达式在我们数据处理方面是及其重要的,现在就把我这几天数据处理比较常用的向大家介绍一下,常规的一些匹配方式就不介绍了,我们
- 直接上图,图文并茂,相信你很快就知道要干什么。A文件:B文件:可以发现,A文件中“汉字井号”这一列和B文件中“WELL”这一列的属性相同,以
- 脚本架构:domain_test.py:批量解析运行主程序DomainResult.txt:域名解析结果文件domains.txt:解析的域
- 目录前言map 并发操作出现问题sync.Map 解决并发操作问题计算 map 长度计算 sync.Map 长度前言在 Golang 中 m
- 1.什么是面向对象面向对象(oop)是一种抽象的方法来理解这个世界,世间万物都可以抽象成一个对象,一切事物都是由对象构成的。应用在编程中,是
- 上一篇博客写到用javascript生成多组文本,可以让数据的输入不受显示,现在我们需要把这些输入写入数据库,这里就用到json传入。 首先
- Timer: 隔一定时间调用一个函数,如果想实现每隔一段时间就调用一个函数的话,就要在Timer调用的函数中,再次设置Timer。Timer
- 今天为大家介绍使用 mitmproxy 这个抓包工具如何监控手机上网,并且通过抓包,把我们想要的数据下载下来。启动 mitmproxy首先我
- 方法一: 在asp.net的aspx里面的源代码中 <input type="button onclick="ja
- 我们在用Firefox上一些网站会看到这样的显示:现在时间是:108年1月26日而IE浏览器的话就显示正常的:现在时间是:2008年1月26
- 相信互联网的从业者都有同一个顾虑,那就是怎样将自己网站的用户牢牢抓住。如果以用户的角度来讲,任何网站其实都是一样的,都是我获取东西、获取服务
- 这篇文章主要介绍了Python os模块常用方法和属性总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 这篇文章主要介绍了python自动化unittest yaml使用过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- MySQL ALTER语法如下:ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec
- 介绍获取协程返回值的四种方式:1、通过ensure_future获取,本质是future对象中的result方2、使用loop自带的crea
- 當我們有很多筆的條件要對資料庫進行搜尋時,常常會用到下列的語法 SELECT * FROM Member WHERE accun