主题
HTML
1. src 和 href 的区别
src 用于替换当前元素,href 用于在当前文档和引用资源之间确立联系。
src
src(source)指向外部资源的位置,指向的内容会嵌入文档中当前标签所在的位置;请求 src 资源时,浏览器会将资源下载并应用到文档内,例如 JS 脚本、图片等。
html
<script src="js.js"></script>当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕。图片和框架等元素也类似于将所指向资源嵌入当前标签内。这也是为什么通常将 JS 脚本放在文档底部而不是头部。
href
href 是 Hypertext Reference (超文本引用) 的缩写,用于指定链接的目标地址,指向网络资源所在位置。它建立当前元素或当前文档与目标资源之间的引用关系:用在 <a> 标签上时,指向跳转目标(可以是外部页面、当前文档内的锚点、邮件或电话等协议链接);用在 <link> 标签上时,则把当前文档与外部资源(如 CSS 文件)关联起来。
html
<link href="common.css" rel="stylesheet">浏览器会将该资源识别为 CSS 文件,并行下载资源且不会停止对当前文档的处理。这也是为什么建议使用 <link> 加载 CSS,而不是使用 @import。
2. 对 HTML 语义化的理解
语义化是指根据内容的结构化(内容语义化),选择合适的标签(代码语义化)。
语义化的优点:
- 对机器友好,更适合搜索引擎的爬虫爬取有效信息,有利于 SEO。此外,语义化标签还支持读屏软件根据文章自动生成目录;
- 对开发者友好,使用语义化标签增强了可读性,结构更加清晰,便于团队开发与维护。
常见的语义化标签:
html
<header></header> 头部
<nav></nav> 导航栏
<section></section> 区块(有语义化的 div)
<main></main> 主要区域
<article></article> 主要内容
<aside></aside> 侧边栏
<footer></footer> 底部示例:
html
<body>
<header>
<h1>网站标题</h1>
<nav>
<a href="/">首页</a>
<a href="/about">关于</a>
</nav>
</header>
<main>
<section>
<h2>最新文章</h2>
<article>
<h3>文章标题</h3>
<p>作者:<strong>张三</strong>,发布于 <time datetime="2026-09-29">2026年9月29日</time></p>
<p>正文段落……</p>
</article>
<article>
<h3>另一篇文章</h3>
<p>正文……</p>
</article>
</section>
<aside>
<h2>相关推荐</h2>
<ul>
<li><a href="/post/1">推荐文章一</a></li>
</ul>
</aside>
</main>
<footer>
<p>© 2026 示例网站</p>
</footer>
</body>3. <script> 标签中 defer 和 async 的区别
如果没有 defer 或 async 属性,浏览器遇到 <script> 就会暂停解析 HTML,先下载并执行该脚本,执行完才继续解析后面的内容。因此,普通 <script> 会阻塞后续 HTML 的解析。
下图可以直观地看出三者之间的区别:

其中蓝色代表 JS 脚本网络加载时间,红色代表 JS 脚本执行时间,绿色代表 HTML 解析。
defer 和 async 都是异步(不在同一时间节奏,互不等待)加载外部 JS 脚本的方式,下载阶段都不会阻塞 HTML 解析。 区别如下:
执行顺序
- 多个
async脚本:不保证执行顺序,谁先下载完谁先执行。 - 多个
defer脚本:按在 HTML 中出现的顺序执行。
下载与执行的行为
async:脚本的下载与后续 HTML 的解析并行进行;下载完成后立刻执行,执行时会短暂阻塞 HTML 解析。defer:脚本的下载与后续 HTML 的解析并行进行;但脚本不会立刻执行,而是等 HTML 全部解析完成后、DOMContentLoaded事件触发之前,按顺序执行。
4. 常用的 meta 标签有哪些
meta 标签用来描述网页文档的元数据,常见形式有三种:
name+content:描述文档属性,如作者、描述等http-equiv+content:模拟 HTTP 响应头,如刷新、缓存控制charset:声明文档编码
常用的 meta 标签:
(1)charset:用来描述 HTML 文档的编码类型。
html
<meta charset="UTF-8" >(2)description,页面描述:
html
<meta name="description" content="页面描述内容" />用于搜索结果摘要展示
(3)refresh,页面重定向和刷新:
html
<meta http-equiv="refresh" content="0;url=" />content 格式为 秒数;url=目标地址。计时从页面完全加载后开始,而不是从解析到该标签时开始。
(4)viewport:适配移动端,可以控制视口的大小和比例。
html
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">其中,content 参数有以下几种:
width:宽度(数值或device-width)。height:高度(数值或device-height)。initial-scale:初始缩放比例。maximum-scale:最大缩放比例。minimum-scale:最小缩放比例。user-scalable:是否允许用户缩放(yes/no)。
(5)搜索引擎索引方式:
html
<meta name="robots" content="index,follow" />content 常用取值:
all:文件将被检索,且页面上的链接可以被查询;none:文件将不被检索,且页面上的链接不可以被查询;index:文件将被检索;follow:页面上的链接可以被查询;noindex:文件将不被检索;nofollow:页面上的链接不可以被查询。
index, follow 是默认行为,无需显式声明;多个指令冲突时,最严格的规则优先。
5. HTML5 有哪些更新
1. 语义化标签
主要有:header、nav、main、section、article、aside、footer。
2. 媒体标签
(1)audio:音频
html
<audio src='' controls autoplay loop='true'></audio>controls:控制面板;autoplay:自动播放;loop="true":循环播放。
(2)video:视频
html
<video src='' poster='imgs/aa.jpg' controls></video>poster:封面。默认显示当前视频的第一帧画面,也可以指定。
(3)source 标签
因为浏览器对视频格式的支持程度不同,为了兼容不同的浏览器,可以通过 <source> 指定视频源。浏览器会从上到下查找,并使用第一个可用的视频源。
html
<video>
<source src='aa.flv' type='video/x-flv'>
<source src='aa.mp4' type='video/mp4'>
</video>3. 表单
表单类型:
email:校验邮箱地址格式url:校验 URL 格式number:只能输入数字,可设置max、min、value和stepsearch:搜索框,会提供一个小叉以删除输入内容range:滑动条选择范围,可设置max、min、value和stepcolor:颜色拾取器time:选择时分秒date:选择年月日datetime-local:日期时间控件week:选择周month:选择月
表单属性:
placeholder:提示信息autofocus:自动获取焦点autocomplete="on"或autocomplete="off":使用这个属性需要满足两个前提:- 表单必须提交过;
- 必须有
name属性。
required:要求输入框不能为空,必须有值才能提交。pattern="...":填写正则模式,例如手机号pattern="^(\+86)?\d{10}$"。multiple:可以选择多个文件或多个邮箱。form="form 表单的 ID":关联表单。
表单事件:
oninput:每当输入框内容发生变化时触发。oninvalid:验证不通过时触发。
4. 进度条、度量器
<progress>标签:用来表示任务的进度,max表示总工作量,value表示已完成量。<meter>元素:用来显示剩余容量或剩余库存(磁盘容量、考试分数等)。high/low:规定被视作高/低的范围(影响显示颜色)。max/min:规定最大/最小值(整个总范围)。value:规定当前度量值。
设置规则:min < low < high < max。
5. Web存储
HTML5 提供了两种在客户端存储数据的新方法:
localStorage:没有时间限制的数据存储。sessionStorage:针对一个 session 的数据存储,关闭标签页即删除。
6. 其他
- 拖放:拖放是一种常见的特性,即抓取对象以后拖到另一个位置。设置元素可拖放:
html
<img draggable="true" />- 画布(
canvas):canvas元素使用 JavaScript 在网页上绘制图像。画布是一个矩形区域,可以控制每一个像素。
html
<canvas id="myCanvas" width="200" height="100"></canvas>- SVG:可伸缩矢量图形,用于定义网络中的矢量图形。它使用 XML 格式定义图形,放大或改变尺寸时图形质量不会损失,是万维网联盟的标准。
- 地理定位:
Geolocation用于定位用户的位置。
6. 行内元素、块级元素和空(void)元素
行内元素
不会独占一行,直到这一行的宽度排满才会自动换行。 不能设置宽度和高度,宽高完全由其中的文本或内容撑开。
行内元素里面只能嵌套其他行内元素或纯文本,一般不能嵌套块级元素。(特例:<a> 标签里面可以嵌套块级元素实现整块点击,但前提是不要在 <a> 里再嵌套另一个 <a>)
- 行内元素有:
a、b、span、strong、label、em、i、code等。
块级元素
独占一行。不管内容有多少,默认情况下它都会把所在容器的整行宽度占满,后面的元素必须另起一行排版。 可以随意设置宽度(width)、高度(height)、内边距(padding)和外边距(margin)。
- 块级元素有:
div、ul、ol、li、dl(Definition List)、dt(Definition Term)、dd(Definition Description)、h1~h6、p。
html<dl> <dt>HTML</dt> <dd>超文本标记语言,用于描述网页结构。</dd> <dt>CSS</dt> <dd>层叠样式表,用于控制网页外观。</dd> </dl>
还有一类特殊的元素:
行内块级元素 inline-block
特殊的行内元素。既能同行显示,又能设置宽高和内外边距。
常见:img、input、select、textarea、button
空元素
即没有内容的 HTML 元素。空元素在开始标签中关闭,也就是自闭合元素:
常见:br、hr、img、input、link、meta、source
转换
通过设置 display 为 inline、block 或 inline-block 来改变。
7. title 与 h1、b 与 strong、i 与 em 的区别
strong标签有语义,起到加重语气的效果;b标签没有语义,只是一个简单的加粗标签。搜索引擎更侧重strong标签。title属性没有明确的层级意义,只表示提示性标题;h1则表示层次明确的标题,对页面信息的抓取有较大影响。i用于展示斜体内容,em表示强调的文本。

