HTML 标签是什么
HTML 标签是写在尖括号里的名称,用来标记一段内容。大多数标签成对出现:一个像 <p> 这样的开始标签,和一个带斜杠的、像 </p> 这样的结束标签。两者之间的一切都是内容,整个组合就是一个元素。
把 <h1> 改成 <h2>(开始标签和结束标签都要改),标题就会变小。正是标签名告诉了浏览器这段内容是什么。
结构解析:标签、属性与元素
<a href="/docs/html/links" class="nav">Links</a>
| 部分 | 在示例中 |
|---|---|
| 开始标签 | <a href="/docs/html/links" class="nav"> |
| 标签名 | a |
| 属性 | href="/docs/html/links" 和 class="nav" |
| 内容 | Links |
| 结束标签 | </a> |
| 元素 | 以上所有部分的整体 |
属性总是写在开始标签里,绝不写在结束标签里。属性页面有详细介绍。
标签名不区分大小写:<P> 和 <p> 是一样的。请用小写书写。
空元素:没有结束标签
有些元素不能包含任何内容,所以只有开始标签。它们被称为空元素(也有人叫自闭合标签):
完整列表:area、base、br、col、embed、hr、img、input、link、meta、source、track、wbr。
你可以把它们写成带斜杠的 <br />。这个斜杠在 HTML 中不起任何作用;允许它存在,是为了让 XHTML 风格的代码继续可用。普通标签上的斜杠,比如 <div />,同样会被忽略,也就是说这个 div 仍然处于打开状态。
标签嵌套
元素可以放在其他元素里面。规则是:按照与打开相反的顺序关闭标签。最后打开的,最先关闭。
<p>This is <strong>very <em>important</em></strong>.</p> <!-- correct -->
<p>This is <strong>very <em>important</strong></em>.</p> <!-- wrong -->
浏览器不会拒绝错误的嵌套,而是会修复它,但修复的结果不一定是你想要的。下面这个例子把两段嵌套错误的代码交给浏览器的解析器,并打印出它实际构建的结构:
这里发生了两处修复。相互交叉的 <b> 和 <i> 被拆成了多余的元素。另外,<p> 不能包含 <div>,所以浏览器在 div 之前就关闭了段落,并把多出来的 </p> 变成了一个新的空段落。当 CSS 或 JavaScript 表现异常时,错误的嵌套是最先要检查的地方之一。
块级元素与行内元素
大多数标签可以分为两种显示类型。块级元素(div、p、h1 到 h6、ul、section)从新的一行开始,占满整个宽度。行内元素(span、a、strong、em、code)位于一行文字之中,宽度只和内容一样。
蓝色的框横跨整个页面,琥珀色的框只包住自己的文字。CSS 可以用 display 属性改变这一点,但每个标签都有自己的默认值。两个通用容器请参见 div 和 span。
最常用的 HTML 标签
| 标签 | 用途 |
|---|---|
<html>、<head>、<body> | 文档的骨架 |
<title>、<meta>、<link> | head 中的页面信息 |
<h1> 到 <h6> | 标题 |
<p> | 段落 |
<a> | 链接 |
<img> | 图片 |
<ul>、<ol>、<li> | 列表 |
<strong>、<em> | 重要的文字和强调的文字 |
<br>、<hr> | 换行、主题分隔线 |
<div>、<span> | 通用的块级容器和行内容器 |
<table>、<tr>、<th>、<td> | 表格 |
<form>、<input>、<label>、<button> | 表单 |
<header>、<nav>、<main>、<footer>、<section>、<article> | 带有含义的页面结构 |
想要一份可以打印的单页列表,请查看 HTML 速查表。
不存在的标签
如果你输入了一个浏览器不认识的标签,它并不会出错。浏览器会创建一个未知元素,显示它的内容,并把它当作行内元素:
未知标签对搜索引擎和屏幕阅读器没有任何含义,所以请优先使用真正的标签。如果你在用 JavaScript 构建自己的组件,就给它起一个带连字符的名字(user-badge):带连字符的名称是专门留给自定义元素的,永远不会和未来的 HTML 标签冲突。
常见错误
- 忘记写结束标签。少了
</a>或</strong>,页面的其余部分都会变成链接或粗体。浏览器会帮你关闭某些标签(</p>、</li>),但不包括这些。 - 给空元素写结束标签。
</br>和</img>都是无效的。浏览器甚至会把</br>当作开始标签<br>来读,所以<br></br>会产生两个换行。 - 标签相互交叉。按相反的顺序关闭:
<b><i>x</i></b>,绝不能写成<b><i>x</b></i>。 - 在段落中放块级元素。
<p>中的<div>、列表或标题会让段落提前结束。请用<div>作为外层容器。 - 因为外观而选择标签。用
<h2>是因为它是标题,而不是因为它字大。大小和粗细属于 CSS 的工作。
常见问题
HTML 标签和 HTML 元素有什么区别?
标签是你输入的标记,比如 <p> 或 </p>。元素是浏览器据此构建出的整体:开始标签、它的属性、内容和结束标签。<p>Hi</p> 是两个标签,组成一个 p 元素。
哪些 HTML 标签不需要结束标签?
空元素(void element)不能有内容,所以没有结束标签:<br>、<hr>、<img>、<input>、<meta>、<link>、<source>、<track>、<wbr>、<area>、<base>、<col> 和 <embed>。
应该写 <br> 还是 <br />?
两种都是有效的 HTML。空元素末尾允许加斜杠,浏览器会忽略它。在 <div /> 这样的非空元素标签上,斜杠同样会被忽略,所以这个 div 会一直保持打开,直到遇到 </div>。
HTML 标签区分大小写吗?
不区分。<P> 和 <p> 生成同一个元素,大小写任意混合也一样。小写是标准写法,大多数格式化工具输出的也是小写。
HTML 一共有多少个标签?
当前的 HTML 标准定义了 100 多个元素,但日常网页只用到其中大约 20 到 30 个:标题、段落、链接、图片、列表、div、span、表单,以及语义化布局标签。
如果使用一个不存在的标签会怎样?
浏览器仍然会为它创建一个元素,显示它的内容,并把它当作没有特殊含义的行内元素。如果名称中包含连字符,比如 <user-card>,就可以作为自定义元素使用。