A15. HTML结构 基础语法
5.1 HTML文档具有基本结构
如果你打开另一个网页编写网站:https://jsbin.com/,你会发现默认的HTML文档已经有了基本结构:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
</body>
</html>
在https://bi.cool中,我们其实只写了<head>
和<body>
内部的内容。
<!DOCTYPE html>
:文档类型声明,表明此文件遵循HTML5规范。<html>
:元素,表示整个HTML文档。具有lang属性标识界面语言,简体中文为zh-CN
。<head>
:头部元素,包含文档的。<body>
:主体元素,包含文档的显示内容,也是HTML文档的核心部分。
认识完了整体结构,我们再认识一下<head>
中的元素:
首先,<title>
(非空元素)定义文章的标题,它会显示在浏览器的标题栏。
<meta>
(空元素)则复杂一些:
<meta charset="UTF-8"> <!-- 定义文档的字符编码,因为对解析至关重要,故直接使用charset属性,一般为UTF-8 -->
<!-- 其余含有name和content属性 -->
<meta name="viewport" content="width=device-width"> <!-- 定义视口,使页面在不同设备上显示时,宽度自适应 -->
<meta name="description" content="This is a sample page"> <!-- 定义页面的描述信息,通常显示在搜索引擎结果中 -->
<meta name="keywords" content="HTML, CSS, JavaScript"> <!-- 定义页面的关键字,通常显示在搜索引擎结果中 -->
<meta name="author" content="John Doe"> <!-- 定义页面的作者 -->
这些对界面显示没有很大影响,但对于搜索引擎有着重要的作用。
此外,我们还可以给网站添加:
<link rel="icon" type="image/png" href="/favicon.png">
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
5.1 代码阅读:HTML文档具有基本结构
Github Homepage: https://github.com/
<head>
<meta charset="utf-8">
<title>GitHub</title>
<meta name="viewport" content="width=device-width">
<meta name="description" content="GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects.">
<link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg">
<meta name="theme-color" content="#1e2327">
</head>
Bilibili AV2 Homepage: https://www.bilibili.com/video/av2
<meta name="keywords" content="字幕君交流场所,,音乐,音乐综合,哔哩哔哩,bilibili,B站,弹幕">
<meta name="author" content="碧诗">
5.2 六种标题元素标识文章层级
在网页界面,尤其是文章排版中,我们会用到标题、二级标题、三级标题等等,HTML提供了六种标题元素来标识文章层级:
<h1>1 一级标题</h1>
<h2>1.1 二级标题</h2>
<h3>1.1.1 三级标题</h3>
<h4>1.1.1.1 四级标题</h4>
<h5>1.1.1.1.1 五级标题</h5>
<h6>1.1.1.1.1.1 六级标题</h6>
即:<h1>
~<h6>
,分别表示一到六级标题,均为非空元素。
但是注意,标题下的内容不能嵌套在标题元素之下,而应另起一个元素。
例如:
<h1>我的作品集</h1>
<div>
<h2>作品一</h2>
<p>作品一的描述</p>
</div>
5.3 语义化HTML元素利于搜索引擎优化
HTML5引入语义化元素,防止<div>
等无语义元素对搜索引擎的分类和索引造成影响。
元素 | 说明 |
---|---|
<header> | 页眉,通常包含导航、logo、搜索框等 |
<nav> | 网页导航,通常在<header> 中使用 |
<main> | 主要内容,文章内容的主体 |
<article> | 文章 |
<section> | 章节,可以包裹标题和内容 |
<aside> | 侧边栏 |
<footer> | 页脚,通常包含版权信息、备案信息、联系方式等 |
5.3 代码阅读:语义化HTML元素利于搜索引擎优化
作为一个网页开发者,当然希望自己的网页能被搜索引擎索引,当搜索时被排在前列,这就体现的重要性。
https://developer.mozilla.org/zh-CN/docs/Learn/Getting_started_with_the_web/HTML_basics
尝试使用开发者工具查看上述网站的HTML代码,可以看到语义化元素的使用。
5.4 HTML注释提供不显示在界面上的备注信息
在HTML代码中,如果我们想为某些代码添加解释或分割作用,而不想被用户看到,可以使用注释。
其语法为:<!-- 注释内容 -->
,其中注释内容可以换行,可以是任何内容。
例如:
<!-- This is a comment -->
<!-- This is a
comment with
multiple lines -->
5.5 HTML将连续的换行符和空格等效为一个空格
在HTML代码中,我们会发现,只要出现了一个空格之后,无论多少个连续的换行和空格,渲染的效果都不变。
Three continuous spaces doesn't matter.
这是因为HTML将连续的换行符和空格等效为一个空格,因此使我们可以为了源代码的美观自由地添加缩进和换行。
但也可以使用标签,它会保留换行符和空格,并在渲染时保留原样。
例如:
<pre>
___________________________
I'm an expert in my field.
---------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
</pre>
5.6 HTML实体引用实现语言的完备性
但是,如果我们真的想要在界面上显示连续多个空格,怎么办呢?
又或者,如果我们要在界面上显示<p>
文本本身,而不是一个段落,又该怎么办呢?
HTML提供了,可以实现这些功能。
实体 | 全称 | 说明 |
---|---|---|
| 显示一个空格,换行一定不会在此处发生 | |
< | 显示小于号 < ,防止与标签混淆 | |
> | 显示大于号 > ,防止与标签混淆 | |
& | 显示与符号 & ,防止与实体引用语法本身混淆 |
5.6 代码阅读:HTML实体引用实现语言的完备性
例如,我们可以用HTML记录HTML笔记:
<h1>A1. HTML入门</h1>
<h2>5. HTML结构 基础语法</h2>
<h3>5.6 HTML实体引用实现语言的完备性</h3>
<p>HTML提供了字符实体引用,可以实现连续多个空格、显示<p>文本本身、防止与标签混淆等功能。</p>
<p>例如这段代码:<code><p>This is a &lt;p&gt; text</p></code>会被渲染成:This is a <p> text。</p>
<p>使用&nbsp;可以显示连续多个空格,例如这段代码:<code>Continuos &nbsp;&nbsp;&nbsp; spaces</code>会被渲染成:Continuos spaces。</p>
效果:
HTML提供了字符实体引用,可以实现连续多个空格、显示<p>文本本身、防止与标签混淆等功能。
例如这段代码:<p>This is a <p> text</p>
会被渲染成:This is a <p> text。
使用 可以显示连续多个空格,例如这段代码:Continuos spaces
会被渲染成:Continuos spaces。
实体引用
实体引用在其他语言中又称为转义字符,它是一种特殊的字符,它告诉解析器用一定的规则解释它。
例如在Python中:
print("Hello, \"world\"!")
\"
是转义字符,它告诉Python解释器,"
只是字符串的一部分,而不是结束符。
除了前面所述的四种HTML实体引用,还有很多其他的实体引用,这里不多赘述,可参见:https://developer.mozilla.org/zh-CN/docs/Glossary/Entity。
除此之外,也可以使用Unicode字符编码来表示特殊字符,例如:
 
其中32是Unicode编码,表示一个空格。
知识回顾
- HTML文档具有特定的结构,开头
<!DOCTYPE html>
声明文档类型,<html>
元素是根元素,<head>
元素包含文档的元数据,<body>
元素包含文档的显示内容。 <head>
元素中,<title>
元素定义文章的标题,<meta>
元素定义文档的元数据:<meta charset="UTF-8">
定义文档的字符编码,唯一直接使用的属性,一般为UTF-8。- 其余的
<meta>
元素<meta name="..." content="...">
用于定义页面的描述信息(description
)、关键字(keywords
)、作者(author
)、视口(viewport
)等。
- 六种标题元素标识文章层级,
<h1>
~<h6>
,分别表示一到六级标题,均为非空元素。 - HTML注释提供不显示在界面上的备注信息,
<!-- 注释内容 -->
,可换行。 - HTML将连续的换行符和空格等效为一个空格。
- HTML提供了字符实体引用,可以实现连续多个空格、显示标签本身以防止与标签混淆等功能。
显示一个空格。<
、>
、&
分别显示小于号、大于号、与符号。
课堂练习
- HTML文档的标准结构中,
<!DOCTYPE html>
是什么?根元素是什么元素? - HTML注释的语法是什么?
- 为作品集完善
<head>
元素,添加作者、关键字、描述、图标(可选)等信息。 - 使用语义化元素完善作品集的HTML结构。
- 尝试使用HTML注释添加注释信息。
- 如果要添加连续三个空格,应该怎么做?
- 尝试复现HTML实体引用的效果。