目录

  1. Url
    1. 定义
    2. Url格式
      1. Url语法规则
      2. URL Schemes
      3. URL的类型
  2. Href
    1. 定义
    2. 通俗理解
  3. Src
  4. Href和Src的区别
  5. Link和@import的区别
  6. 为什么尽量不要使用@import加载css

转载:
  url、href、src 详解

Url

定义

  URL(Uniform Resource Locator)统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

Url格式

标准格式
  协议类型:[//服务器地址[:端口号]][/资源层级UNIX文件路径]文件名?查询
完整格式
  协议类型:[//[访问资源需要的凭证信息@]服务器地址[:端口号]][/资源层级UNIX文件路径]文件名?查询

Url语法规则

  比如网址http://segmentfault.com/html/index.asp必须遵守以下的语法规则:
scheme://host.domain:port/path/filename
说明
  scheme - 定义因特网服务的类型。最常见的类型是 http
  host - 定义域主机(http 的默认主机是 www)
  domain - 定义因特网域名,比如 w3school.com.cn
  :port - 定义主机上的端口号(http 的默认端口号是 80)
  path - 定义服务器上的路径(如果省略,则文档必须位于网站的根目录中)。
  filename - 定义文档/资源的名称

URL Schemes
Scheme 访问 用于
http 超文本传输协议 以 http:// 开头的普通网页。不加密。
https 安全超文本传输协议 安全网页。加密所有信息交换。
ftp 文件传输协议 用于将文件下载或上传至网站。
file 您计算机上的文件。
URL的类型

绝对URL
  绝对URLabsolute URL)显示文件的完整路径,这意味着绝对URL本身所在的位置与被引用的实际文件的位置无关。
相对URL
  相对URLrelative URL)以包含URL本身的文件夹的位置为参考点,描述目标文件夹的位置。
  一般来说,对于同一服务器上的文件,应该总是使用相对URL,它们更容易输入,而且在将页面从本地系统转移到服务器上时更方便,只要每个文件的相对位置保持不变,链接就仍然是有效地。
.:代表目前所在的目录,相对路径。
例: <a href="./abc">文本</a><img src="./abc" />
..:代表上一层目录,相对路径。
例: <a href="../abc">文本</a><img src="../abc" />
../../:代表的是上一层目录的上一层目录,相对路径。
例: <img src="../../abc" />
/:代表根目录,绝对路径。
例: <a href="/abc">文本</a><img src="/abc" />

Href

定义

  href (Hypertext Reference)指定网络资源的位置,从而在当前元素或者当前文档和由当前属性定义的需要的锚点或资源之间定义一个链接或者关系。

通俗理解

  href: 目的不是为了引用资源,而是为了建立这个标签与外部资源之间的关系,让当前标签能够链接到目标地址。
<link href="style.css" rel="stylesheet" />浏览器加载到这里的时候,html的渲染和解析不会暂停,css文件的加载是同时进行的

Src

  src用于替代这个元素: <script src="script.js"></script>当浏览器解析到这句代码时,页面的加载和解析都会暂停直到浏览器拿到并执行完这个js文件

Href和Src的区别

请求资源类型不同
  href 指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的联系。
  在请求 src 资源时会将其指向的资源下载并应用到文档中,比如 JavaScript 脚本,img 图片;
作用结果不同
  href 用于在当前文档和引用资源之间确立联系;
  src 用于替换当前内容;
浏览器解析方式不同
  若在文档中添加 <link href="style.css" rel="stylesheet"/>,浏览器会识别该文档为 CSS 文件,就会并行下载资源并且不会停止对当前文档的处理。这也是为什么建议使用 link 方式加载 CSS,而不是使用@import 方式。
  当浏览器解析到 <script src="script.js"></script>,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等也如此,类似于将所指向资源应用到当前内容。这也是为什么建议把 js 脚本放在底部而不是头部的原因。

Link和@import的区别

两者都是外部引用 CSS 的方式,但是存在一定的区别:
(1)linkXHTML标签,除了能够加载CSS,还可以定义RSS等其他事务;而@import属于CSS范畴,只可以加载CSS
(2)link引用CSS时,在页面载入时同时加载;@import需要页面完全载入以后再加载。
(3)linkXHTML标签,无兼容问题;@import则是在CSS2.1提出的,低版本的浏览器不支持。
(4)link支持使用Javascript控制DOM改变样式;而@import不支持。

为什么尽量不要使用@import加载css

使用@import会导致和预期不一致的下载顺 序。
我们确实要避免使用css @import,但原因却不是什么相当于放在了页面底部,而是这样做会导致css无法并行下载,因为使用@import引用的文件只有在引用它的那个css文件被下载、解析之后,浏览器才会知道还有另外一个css需要下载,这时才去下载,然后下载后开始解析、构建render tree等一系列操作。 浏览器在页面所有css下载并解析完成后才会开始渲染页面(Before a browser can begin to render a web page, it mustdownload and parse any stylesheets that are required to lay out thepage. Even if a stylesheet is in an external file that is cached,rendering is blocked until the browser loads the stylesheet from disk.),因此css @import引起的css解析延迟会加长页面留白期。 所以,要尽量避免使用css @import而尽量采用link标签的方式引入。