href 和src 的区别

本文详细解释了HTML中href和src属性的区别,href用于定义文档之间的链接关系,如引入CSS;src则用于嵌入资源,如JavaScript文件。文章还介绍了如何优化资源加载方式,包括使用async和defer属性。

转载地址:http://www.58maisui.com/2016/08/03/30/?utm_source=tuicool&utm_medium=referral

 

href和src的区别:

我们在可替换的元素上使用src,然而把href用于在涉及的文档和外部资源之间建立一个关系。

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

<link href=”app.css” rel=”stylesheet” />

浏览器明白当前资源是一个样式表,页面解析不会暂停(由于浏览器需要样式规则去画或者渲染页面,渲染过程可能会被被暂停)。这与把css文件内容写在<style>标签里不相同,因此建议使用link标签而不是@import来吧样式表导入到html文档里。

src (Source)属性仅仅 嵌入当前资源到当前文档元素定义的位置。当浏览器找到:

<script src=”app.js”></script>

在浏览器下载,编译,执行这个文件之前页面的加载和处理会被暂停。这个过程与把js文件放到<script>标签里类似。这也是建议把JS文件放到底部加载的原因。当然,img标签页与此类似。浏览器暂停加载直到提取和加载图像。

 

PS:

HTML5实现了script的async属性,这个新的属性可以让js在浏览器中以非阻塞的模式加载,另外script还有一个defer属性,这个属性目前所有浏览器都已实现(除了firefox和chrome的早期版本),IE这方面做得好,从一开始就支持些属性。

async和defer的区别: 
带有async或者defer的script都会立刻下载并不阻塞页面解析,而且都提供一个可选的onload事件处理, 在script下载完成后调用,用于做一些和此script相关的初始化工作。它的不同之处在于async一旦下载完成就立即执行(在window.onload事件之前),不确保执行的顺序,而defer能确保js是在按照其在页面中的顺序执行(在DOMContentLoaded事件之前)。 

 

转载于:https://www.cnblogs.com/mjbin/p/6592334.html

<think>好的,用户想了解HTML中hrefsrc属性的区别用法。我需要先回顾一下之前学习过的相关知识,并结合提供的引用内容来组织答案。 首先,根据引用[1][3],srchref都是用来引入外部资源的属性,但它们的作用不同。src用于替换当前元素,比如img或script标签,而href用于建立当前文档与外部资源之间的联系,比如link或a标签。这里需要强调src是嵌入资源,而href是引用资源。 接下来,引用[2]提到href是非阻塞加载,而src是阻塞加载。比如link标签使用href加载CSS,不会阻塞页面渲染,而script标签使用src加载JS会阻塞。这一点对性能有影响,需要说明清楚。 然后,引用[4]详细解释了href的三种URL值:绝对、相对锚点。这部分可以作为用法示例,比如a标签中的href="#top"回到顶部。而src的用法示例可以是img的src属性指向图片地址。 还要注意语法结构的不同,比如link标签同时使用hrefrel属性,而script标签使用src。需要指出常见的标签搭配,帮助用户记忆。 可能用户混淆这两个属性的使用场景,比如在link标签中用src是错误的,应该用href。需要举例说明正确的用法,避免常见错误。 最后,根据用户提供的示例结构,我需要先分点解释区别,再给出用法示例,最后生成相关问题。确保使用中文,并且数学公式正确,但这个问题可能不涉及数学内容,所以主要注意代码块格式。 检查引用是否正确,每个要点后添加对应的引用标记。确保回答结构清晰,先区别再用法,帮助用户逐步理解。</think>### HTML中hrefsrc属性的区别及用法解析 #### 一、核心区别 1. **作用对象不同** - `src`(source)用于**替换当前元素**,将资源直接嵌入文档中,例如:$<script\>$标签引入JS代码、$<img\>$标签加载图片[^3]。 - `href`(Hypertext Reference)用于**建立关联关系**,定义当前文档与外部资源之间的链接,例如:$<a\>$标签跳转页面、$<link\>$标签引入CSS文件[^2][^3]。 2. **加载行为不同** - `src`会**阻塞页面渲染**,浏览器需等待资源下载并执行完毕(如JS文件)[^2]。 - `href`是**非阻塞加载**,浏览器会并行下载资源(如CSS文件),不影响页面渲染[^2][^4]。 3. **语法结构差异** - `src`常作为**独立属性**使用,例如: ```html <script src="app.js"></script> <img src="image.jpg"> ``` - `href`通常需搭配其他属性,例如: ```html <link href="style.css" rel="stylesheet"> <a href="https://example.com">链接</a> ``` #### 二、典型用法示例 | 属性 | 适用标签 | 示例代码 | 用途说明 | |-------|-------------------|-----------------------------------------------|------------------------------| | `src` | `<script>`, `<img>` | `<script src="lib.js"></script>` | 嵌入JS文件 | | | `<iframe>`, `<video>` | `<iframe src="page.html"></iframe>` | 内嵌其他页面 | | `href`| `<a>`, `<link>` | `<a href="#section1">跳转</a>` | 页面锚点跳转 | | | `<area>`, `<base>` | `<link href="print.css" media="print">` | 按条件加载CSS | #### 三、常见误区 1. **错误写法**: ```html <link rel="stylesheet" src="style.css"> <!-- 错误!应使用href --> ``` 2. **特殊场景**: - `href="javascript:void(0)"` 用于阻止默认跳转行为。 - `src="data:image/png;base64,..."` 直接嵌入Base64编码图片。 #### 四、性能影响对比 $$ \text{阻塞程度} = \begin{cases} \text{高(src)} & \text{如JS文件需立即执行} \\ \text{低(href)} & \text{如CSS文件异步加载} \end{cases} $$ 优化建议:将`<script>`标签放在页面底部,或添加`async/defer`属性[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值