HTML语法规则定义了如何正确编写HTML文档。遵循这些规则可以确保代码的可读性、可维护性和兼容性。
东巴文(db-w.cn) 认为:良好的语法习惯是高质量代码的基础,就像建筑的地基一样重要。
<!-- ✅ 正确:正确嵌套 -->
<div>
<p>
<strong>粗体文本</strong>
</p>
</div>
<!-- ❌ 错误:错误嵌套 -->
<div>
<p>
<strong>粗体文本
</p>
</strong>
</div>
东巴文说明:
<!-- ✅ 推荐:小写标签名 -->
<div class="container">
<p>段落文本</p>
</div>
<!-- ❌ 不推荐:大写标签名 -->
<DIV CLASS="container">
<P>段落文本</P>
</DIV>
东巴文说明:
<!-- ✅ 推荐:小写属性名 -->
<div class="container" id="main"></div>
<!-- ❌ 不推荐:大写属性名 -->
<div CLASS="container" ID="main"></div>
<!-- ✅ 推荐:属性值加引号 -->
<div class="container" id="main"></div>
<a href="https://db-w.cn">东巴文</a>
<!-- ❌ 不推荐:属性值不加引号 -->
<div class=container id=main></div>
<a href=https://db-w.cn>东巴文</a>
东巴文说明:
<!-- ✅ 推荐:布尔属性简写 -->
<input type="text" disabled>
<input type="checkbox" checked>
<option selected>选中项</option>
<!-- ✅ 也可以:完整写法 -->
<input type="text" disabled="disabled">
<input type="checkbox" checked="checked">
<option selected="selected">选中项</option>
东巴文说明:
<!-- ✅ HTML5写法:不需要斜杠 -->
<img src="image.jpg" alt="图片">
<br>
<hr>
<input type="text">
<!-- ✅ XHTML写法:需要斜杠 -->
<img src="image.jpg" alt="图片" />
<br />
<hr />
<input type="text" />
东巴文说明:
<!-- ✅ 正确:特殊字符转义 -->
<p>价格:100 < 200</p>
<p>版权所有 © 2024 东巴文</p>
<p>使用 <div> 标签</p>
<!-- ❌ 错误:特殊字符未转义 -->
<p>价格:100 < 200</p>
<p>使用 <div> 标签</p>
东巴文常见转义字符:
| 字符 | 转义代码 | 说明 |
|---|---|---|
| < | < |
小于号 |
| > | > |
大于号 |
| & | & |
和号 |
| " | " |
双引号 |
| ' | ' |
单引号 |
| © | © |
版权符号 |
| ® | ® |
注册商标 |
| ™ | ™ |
商标符号 |
| 空格 | |
不换行空格 |
| ¥ | ¥ |
人民币符号 |
<!-- ✅ 正确:HTML注释 -->
<!-- 这是单行注释 -->
<!--
这是多行注释
可以跨越多行
-->
<!-- ❌ 错误:注释中包含双横线 -->
<!-- 这是--错误的注释 -->
<!-- ❌ 错误:注释嵌套 -->
<!-- 外层注释 <!-- 内层注释 --> -->
东巴文说明:
<!--开始,以-->结束--<!-- ✅ HTML5文档类型声明 -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>页面标题</title>
</head>
<body>
页面内容
</body>
</html>
东巴文说明:
<!-- ✅ 推荐:UTF-8编码 -->
<head>
<meta charset="UTF-8">
<title>页面标题</title>
</head>
<!-- ✅ 也可以:完整写法 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>页面标题</title>
</head>
东巴文说明:
<head>标签内的最前面<!-- ✅ 推荐:设置语言属性 -->
<html lang="zh-CN">
<!-- ✅ 英文页面 -->
<html lang="en">
<!-- ✅ 日文页面 -->
<html lang="ja">
东巴文说明:
<!-- ✅ 移动端适配 -->
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>响应式页面</title>
</head>
东巴文说明:
<!-- ✅ 推荐:语义化标签 -->
<header>
<nav>
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">关于</a></li>
</ul>
</nav>
</header>
<main>
<article>
<h1>文章标题</h1>
<p>文章内容</p>
</article>
</main>
<footer>
<p>版权所有 © 2024 东巴文</p>
</footer>
<!-- ❌ 不推荐:非语义化标签 -->
<div class="header">
<div class="nav">
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">关于</a></li>
</ul>
</div>
</div>
<div class="main">
<div class="article">
<h1>文章标题</h1>
<p>文章内容</p>
</div>
</div>
<div class="footer">
<p>版权所有 © 2024 东巴文</p>
</div>
东巴文说明:
<!-- ✅ 推荐:标题层级正确 -->
<h1>一级标题</h1>
<h2>二级标题</h2>
<h3>三级标题</h3>
<h4>四级标题</h4>
<h5>五级标题</h5>
<h6>六级标题</h6>
<!-- ❌ 不推荐:跳过层级 -->
<h1>一级标题</h1>
<h3>三级标题</h3> <!-- 跳过了h2 -->
<!-- ❌ 不推荐:标题用于样式 -->
<h1 style="font-size: 14px;">小号文本</h1>
东巴文说明:
<h1><!-- ✅ 推荐:有序列表 -->
<ol>
<li>第一项</li>
<li>第二项</li>
<li>第三项</li>
</ol>
<!-- ✅ 推荐:无序列表 -->
<ul>
<li>项目一</li>
<li>项目二</li>
<li>项目三</li>
</ul>
<!-- ✅ 推荐:定义列表 -->
<dl>
<dt>HTML</dt>
<dd>超文本标记语言</dd>
<dt>CSS</dt>
<dd>层叠样式表</dd>
</dl>
<!-- ❌ 不推荐:使用div模拟列表 -->
<div class="list">
<div class="item">项目一</div>
<div class="item">项目二</div>
<div class="item">项目三</div>
</div>
<!-- ✅ 推荐:有alt属性 -->
<img src="image.jpg" alt="示例图片">
<!-- ✅ 装饰性图片:空alt -->
<img src="decorative.jpg" alt="">
<!-- ❌ 不推荐:缺少alt属性 -->
<img src="image.jpg">
东巴文说明:
<!-- ✅ 推荐:使用label标签 -->
<label for="username">用户名:</label>
<input type="text" id="username" name="username">
<!-- ✅ 推荐:label包裹控件 -->
<label>
用户名:
<input type="text" name="username">
</label>
<!-- ❌ 不推荐:缺少label -->
用户名:<input type="text" name="username">
东巴文说明:
<!-- ✅ 推荐:描述性文本 -->
<a href="https://db-w.cn">访问东巴文官网</a>
<a href="/about">关于我们</a>
<!-- ❌ 不推荐:无意义文本 -->
<a href="https://db-w.cn">点击这里</a>
<a href="/about">更多</a>
<!-- ❌ 不推荐:URL作为文本 -->
<a href="https://db-w.cn">https://db-w.cn</a>
东巴文说明:
<!-- ✅ 推荐:CSS放在head中 -->
<head>
<meta charset="UTF-8">
<title>页面标题</title>
<link rel="stylesheet" href="styles.css">
<style>
/* 内部样式 */
</style>
</head>
<!-- ❌ 不推荐:CSS放在body中 -->
<body>
<link rel="stylesheet" href="styles.css">
<style>
/* 内部样式 */
</style>
</body>
东巴文说明:
<!-- ✅ 推荐:JavaScript放在body末尾 -->
<body>
<!-- 页面内容 -->
<script src="script.js"></script>
<script>
// 内部脚本
</script>
</body>
<!-- ❌ 不推荐:JavaScript放在head中 -->
<head>
<script src="script.js"></script>
</head>
东巴文说明:
<!-- ✅ 推荐:图片懒加载 -->
<img src="image.jpg" alt="图片" loading="lazy">
<!-- ✅ 推荐:iframe懒加载 -->
<iframe src="page.html" loading="lazy"></iframe>
东巴文说明:
<!-- ✅ 推荐:使用缩进 -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>页面标题</title>
</head>
<body>
<div class="container">
<header>
<nav>
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">关于</a></li>
</ul>
</nav>
</header>
</div>
</body>
</html>
<!-- ❌ 不推荐:没有缩进 -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>页面标题</title>
</head>
<body>
<div class="container">
<header>
<nav>
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">关于</a></li>
</ul>
</nav>
</header>
</div>
</body>
</html>
东巴文说明:
<!-- ✅ 推荐:块级元素换行 -->
<div>
<p>段落一</p>
<p>段落二</p>
</div>
<!-- ✅ 推荐:行内元素不换行 -->
<p>这是<strong>粗体</strong>和<em>斜体</em>文本</p>
<!-- ❌ 不推荐:过度换行 -->
<div>
<p>段落一</p>
<p>段落二</p>
</div>
<!-- ✅ 推荐:无多余空格 -->
<div class="container">
<p>段落文本</p>
</div>
<!-- ❌ 不推荐:多余空格 -->
<div class="container" >
<p>段落文本</p>
</div>
东巴文推荐工具:
W3C Markup Validation Service
HTML5 Outliner
Nu Html Checker
东巴文说明:
<!-- ❌ 错误:标签未关闭 -->
<div>
<p>段落文本
<!-- ✅ 正确:标签已关闭 -->
<div>
<p>段落文本</p>
</div>
<!-- ❌ 错误:属性值未加引号 -->
<div class=container id=main></div>
<!-- ✅ 正确:属性值加引号 -->
<div class="container" id="main"></div>
<!-- ❌ 错误:特殊字符未转义 -->
<p>价格:100 < 200</p>
<!-- ✅ 正确:特殊字符转义 -->
<p>价格:100 < 200</p>
<!-- ❌ 错误:标签嵌套错误 -->
<p>
<div>块级元素</div>
</p>
<!-- ✅ 正确:标签嵌套正确 -->
<div>
<p>段落文本</p>
</div>
<!-- ❌ 错误:缺少alt属性 -->
<img src="image.jpg">
<!-- ✅ 正确:有alt属性 -->
<img src="image.jpg" alt="图片描述">
问题1:以下哪个是正确的HTML注释?
A. <!-- 注释 -->
B. // 注释
C. /* 注释 */
D. # 注释
答案:A
东巴文解释:HTML注释使用<!-- -->语法。B是JavaScript单行注释,C是CSS/JavaScript多行注释,D是Python/Shell注释。
问题2:以下哪个属性值写法是推荐的?
A. <div class=container>
B. <div class="container">
C. <div CLASS="container">
D. <div Class='container'>
答案:B
东巴文解释:推荐使用小写属性名和双引号属性值。A缺少引号,C使用大写属性名,D属性名大小写不一致。
</details>任务:找出以下HTML代码中的所有错误并修正。
<!DOCTYPE html>
<HTML lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>页面标题
</head>
<body>
<div class=container>
<h1>欢迎来到东巴文
<img src="logo.jpg">
<p>价格:100 < 200元</p>
<a href="#">点击这里</a>
<!-- 注释--内容 -->
</div>
</body>
</html>
<details>
<summary>点击查看参考答案</summary>
修正后的代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>页面标题</title>
</head>
<body>
<div class="container">
<h1>欢迎来到东巴文</h1>
<img src="logo.jpg" alt="东巴文Logo">
<p>价格:100 < 200元</p>
<a href="#">访问东巴文官网</a>
<!-- 注释内容 -->
</div>
</body>
</html>
东巴文错误列表:
<HTML>应改为<html>(小写)<title>标签未关闭class=container应改为class="container"(加引号)<h1>标签未关闭<img>缺少alt属性<应转义为<--东巴文(db-w.cn) - 让编程学习更有趣、更高效!