01 - HTML 基础
HTML 简介
- HTML(HyperText Markup Language)是用来创建网页结构和内容的标记语言。它使用标签(tag)来描述文档中的各个元素,并通过这些标签来定义网页的结构和语义。
- HTML 是一种层级结构的标记语言,包含了 html、head 和 body 等元素,每个元素都有特定的功能和语义。html 元素是整个 HTML 文档的根元素,head 元素用于定义文档的头部信息,body 元素包含了文档的主要内容。
- HTML 是前端开发的基础,掌握好 HTML 的基本语法和常用标签是学习前端开发的必要步骤。
- HTML 标签有很多种类和属性,通过不同的标签和属性组合,可以实现丰富的网页效果和交互功能。
- 合理使用语义化的 HTML 标签可以提升网页的可访问性和搜索引擎优化。
- HTML5 引入了许多新的标签和 API,如语义化标签(
<header>,<footer>,<nav>等)、多媒体标签(<video>,<audio>等)、表单增强等,使得网页开发更加灵活和功能丰富。 - 重要概念:
- 元素(Element):HTML 文档的基本构建单位,由开始标签、结束标签和内容组成,例如
<p>Hello</p>中的<p>和</p>是开始和结束标签,Hello是内容。 - 标签(Tag):HTML 元素由标签所定义,标签一般成对出现,也有一些是单标签,例如
<p>就是一个标签。 - 属性(Attribute):通过属性可以为元素添加附加信息,属性位于开始标签中,例如
<img src="image.jpg" alt="Image">中的src和alt就是属性。 - 文档类型定义(Document Type Declaration,DTD):用于声明文档所使用的 HTML 版本,例如
<!DOCTYPE html>声明使用的是 HTML5。
- 元素(Element):HTML 文档的基本构建单位,由开始标签、结束标签和内容组成,例如
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>My First Webpage</title>
</head>
<body>
<h1>Welcome to My Website!</h1>
<p>This is the first paragraph of my webpage.</p>
<img src="image.jpg" alt="Image description" />
<a href="https://www.example.com">Click here</a> to visit an example website.
</body>
</html>
<!DOCTYPE html>声明告诉浏览器我们使用的是 HTML5。<html>元素是 HTML 文档的根元素。<head>元素包含了关于文档的元数据和链接到外部样式表和 JavaScript 文件的标签。<meta>标签来指定字符编码和标题。<title>标签定义了网页的标题,将显示在浏览器的标题栏中。
<body>标签中包含了网页的实际内容,<h1>和<p>标签来创建标题和段落。<img>标签用于嵌入一张图片,<a>标签用于创建一个链接。
标签语法
- HTML 标签是 HTML 语言中的基本单元,用于定义和描述网页中的各种元素和内容。
- 每个标签都由尖括号
< >包围,并且通常开标签和闭标签成对出现。- 开标签和闭标签通常成对出现,用于定义元素的开始和结束。
- 开标签用于定义元素的开始,闭标签用于定义元素的结束,其中闭标签的名称前面加上
/,表示结束元素。 - 标签之间的内容是元素的内容。
- 标签可以包含属性,属性提供有关元素的更多信息。
- 除了常规的标签外,还有一些标签是没有闭合标签的,称为空标签。这类标签通常用于插入一些不需要包含内容的元素,如图像、换行符等。
<img src="image.jpg" alt="图片"><br><hr><input type="text" name="username">
HTML 基本骨架
-
HTML 基本骨架是一个 HTML 文档的基础结构,它包含了一些必需的标签元素,用于定义页面的结构和布局。基本骨架提供了一个框架,使得我们可以在其中填充具体的内容和样式。
-
HTML 基本骨架的示例:
<!DOCTYPE html> <html> <head> <title>页面标题</title> </head> <body> 页面内容 </body> </html> -
<!DOCTYPE html>:这是一个文档类型声明,用于指定 HTML 文档的版本。<!DOCTYPE>声明必须在 HTML 文档的第一行,并且是非常重要的,它有助于浏览器正确解析文档。 -
<html>:这是 HTML 文档的根元素,它包含了整个 HTML 文档的内容。 -
<head>:这是文档的头部元素,用于包含文档的元数据信息,如标题、样式表和脚本等。 -
<title>:这是文档的标题元素,显示在浏览器的标题栏或标签页上。 -
<body>:这是文档的主体元素,用于包含页面的实际内容,如文本、图像和链接等。
<!DOCTYPE html>
<html>
<head>
<title>欢迎来到我的网站</title>
</head>
<body>
<h1>欢迎!</h1>
<p>这是一个示例网页。</p>
<img src="image.jpg" alt="示例图片" />
<a href="https://example.com">点击这里</a>访问示例链接。
</body>
</html>
标签的关系
-
在 HTML 中,标签之间可以存在不同的关系,如父子关系、兄弟关系和祖先后代关系等。这些关系描述了标签在文档中的层次结构和组织方式。理解不同标签之间的关系非常重要,因为它们可以影响文档的渲染和行为。
-
标签的父子关系:标签的父子关系用于描述一个标签是否是另一个标签的直接子元素。父元素是包含子元素的标签,而子元素是被包含在父元素内的标签。
<div> <h1>这是一个标题</h1> <p>这是一个段落。</p> </div><div>标签是父标签,它包含了<h1>和<p>标签,所以<h1>和<p>标签是<div>标签的子标签。
-
标签的兄弟关系:标签的兄弟关系用于描述同一个父元素下的标签之间的关系。兄弟元素是具有相同父元素的标签。
<div> <h2>标题 1</h2> <p>这是第一个段落。</p> <p>这是第二个段落。</p> <h2>标题 2</h2> <p>这是第三个段落。</p> </div><h2>标签是<div>标签的子标签,所以它们是兄弟元素。同样地,两个<p>标签也是兄弟元素。
-
标签的祖先后代关系:标签的祖先后代关系描述了一个标签和包含它的父级标签之间的层次结构关系。祖先元素是包含当前元素的标签,而后代元素是被当前元素包含的标签。
<section> <h3>标题 1</h3> <div> <h4>标题 2</h4> <p>这是一个段落。</p> </div> </section><article>是所有子元素的父元素,<h2>和<p>是<article>的直接子元素,而<section>是<article>的后代元素。
注释
-
注释在 HTML 中用于向代码中添加注解或解释。语法:
<!-- 这是一个注释 --> -
注释不会在网页上显示,而是作为开发者的便签,可以提供代码的相关说明和备注。
-
注释对于调试代码和与其他开发者分享代码时非常有用。
-
使用场景:
-
注释掉代码块:可以使用注释来临时禁用一段代码,以进行调试或测试其他代码,而无需将其完全删除。只需将代码块用注释包围起来即可。
<!-- <p>我是一段注释掉的代码</p> <p>我不会在网页上显示</p> --> -
添加文档说明:注释可以用于添加对 HTML 文档整体或特定部分的说明和备注信息。这对于阅读和理解代码非常有用,特别是与其他开发者共享代码时。
<!-- 这个部分是用于展示产品信息 --> <div class="product-info">...</div> -
调试和问题排查:在代码中插入注释,可以帮助记住和标记代码的特定部分,以便在调试和问题排查时更容易定位和修改。
<div class="product-info"> <h2>产品名称</h2> <!-- 该段落的内容不正确,请检查数据源 --> <p>产品描述</p> ... </div>
-
<!DOCTYPE html>
<html>
<head>
<title>注释示例</title>
</head>
<body>
<!-- 页面主体内容 -->
<h1>欢迎来到我们的网站!</h1>
<p>这是一个示例页面,用于演示注释的使用。</p>
<!--
<p>这个段落被注释掉了,不会在网页上显示。</p>
-->
<p>感谢您的访问!</p>
</body>
</html>
- 第一个注释用于标记页面的主体内容。
- 第二个注释注释掉了一个不需要显示的段落。
标题 Heading 和段落 Paragraph 标签
-
标题标签用于定义文档的标题和副标题。标题标签从
<h1>到<h6>共有 6 个级别,从最高级别的标题(<h1>)到最低级别的标题(<h6>)。-
标题标签的语法:
<h1>这是标题 1</h1> <h2>这是标题 2</h2> <h3>这是标题 3</h3> <h4>这是标题 4</h4> <h5>这是标题 5</h5> <h6>这是标题 6</h6> -
用途:
- 标题标签是用于定义页面的主要标题和子标题的语义化元素。
- 标题标签可以提供给搜索引擎和浏览器对页面内容进行结构化和分类。
- 标题标签对于提高页面的可访问性也非常重要,能够帮助屏幕阅读器用户正确地导航和理解页面内容。
-
默认样式:不同级别的标题标签有不同的默认样式,也可以通过 CSS 样式来自定义标题的外观。
-
-
段落标签
<p>用于定义段落文本。段落标签用于将内容分组为段落,并在段落之间添加一定的空白。-
段落标签的语法如下所示:
<p>这是一个段落。</p> -
用途:
- 段落标签用于将文本内容组织成段落,使文本更易读、更易理解。
- 段落标签也是语义化的元素,能够帮助搜索引擎和浏览器正确解析和渲染内容。
- 段落标签还可以与 CSS 样式一起使用,为段落添加样式和布局。
-
<!DOCTYPE html>
<html>
<head>
<title>标题和段落示例</title>
</head>
<body>
<h1>欢迎来到我们的网站!</h1>
<h2>关于我们</h2>
<p>我们是一家专注于前端开发的公司,致力于提供高质量的网站和应用程序。</p>
<h2>联系方式</h2>
<p>如果您有任何问题或合作机会,请联系我们:info@example.com</p>
</body>
</html>
<h1>标签用于定义页面的主标题,<h2>标签用于定义页面的子标题。<p>标签用于定义段落文本。
换行 br 和水平线标签 hr
-
换行标签(Line Break):换行标签
<br>用于在文本中插入一个换行符,将文本分隔为不同的行。换行标签是一个单标签,不需要闭合标签。-
换行标签的语法:
这是文本内容。<br /> 这是新的一行文本。 -
用途:
- 换行标签通常用于在不需要使用段落标签的情况下,将文本分隔为不同的行。
- 换行标签可以在表格、列表和其他内容中使用,以创建更清晰和易读的布局。
-
-
水平线标签(Horizontal Rule):水平线标签
<hr>用于插入一条水平线,用于分隔文本或其他内容。水平线标签是一个单标签,不需要闭合标签。-
水平线标签的语法:
这是上面的文本内容。 <hr /> 这是下面的文本内容。 -
用途:
- 水平线标签通常用于在文档中创建水平分隔线,以分隔不同的内容部分。
- 水平线标签在表格、列表和其他内容中使用,以提供更清晰的布局和可读性。
-
<!DOCTYPE html>
<html>
<head>
<title>换行和水平线示例</title>
</head>
<body>
<h1>欢迎来到我们的网站!</h1>
<h2>关于我们</h2>
<p>
我们是一家专注于前端开发的公司,<br />
致力于提供高质量的网站和应用程序。
</p>
<hr />
<h2>联系方式</h2>
<p>
如果您有任何问题或合作机会,请联系我们:<br />
info@example.com
</p>
</body>
</html>
文本格式化标签
| 标签名 | 效果 |
|---|---|
<b> 或 <strong> |
加粗文本显示(Bold) |
<i> 或 <em> |
斜体文本显示(Italic) |
<u> 或 <ins> |
下划线文本显示(Underline) |
<s> 或 <del> |
|
<sup> 和 <sub> |
上标、下标文本显示(Superscript and Subscript) |
<big> 和 <small> |
放大、缩小文本字号 |
<font> |
定义文本的字体、颜色和大小 |
<pre> |
保留空格和换行,以保持文本的原始格式 |
<code> |
显示计算机代码块 |
<mark> |
高亮文本显示 |
<blockquote> |
缩进文本显示为块引用 |
<cite> |
引用文本显示 |
<q> |
短引用文本显示(Quote) |
为了遵循最佳实践,应将这些标签用于其本意和语义,而不仅仅是为了视觉效果。
图像标签 img
- 图像标签
<img>用于插入图像到网页中。图像标签是一个单标签,不需要闭合标签。 - 语法:
<img src="图像URL" alt="替代文本"> - 图像标签常用的属性:
src属性用于指定图像的 URL 或路径。alt属性用于指定图像的描述,当图像无法加载时,可以用作替代文字。替代文本对于视觉障碍用户、无法加载图像的设备和搜索引擎优化非常重要。width和height属性用于指定图像的宽度和高度,可以以像素(px)或百分比(%)为单位。title属性用于指定鼠标悬停在图像上时显示的提示文本。style属性用于应用 CSS 样式到图像。class属性用于指定一个 CSS 类来应用样式,以进一步自定义图像样式。
<!DOCTYPE html>
<html>
<head>
<title>图像标签示例</title>
<style>
.img-style {
width: 300px;
height: 200px;
border: 1px solid black;
}
</style>
</head>
<body>
<img src="example.jpg" alt="示例图像" class="img-style" />
</body>
</html>
相对路径和绝对路径
-
在 HTML 中,我们可以使用相对路径和绝对路径来引用或链接到其他文件或资源。相对路径和绝对路径是用来标识文件或资源在文件系统中位置的表示方法。
-
相对路径(Relative Paths):相对路径是相对于当前文件所在的位置来确定目标文件或资源的位置。它们是相对于当前工作目录的路径。
<img src="images/logo.png" alt="公司标志" /> <a href="about.html">关于我们</a> <link rel="stylesheet" href="styles/main.css" />- 假设我们的当前工作目录是
/root/website。<img>标签使用相对路径来引用名为logo.png的图像,该图像位于/root/website/images目录下。<a>标签使用相对路径来链接到名为about.html的页面,该页面位于/root/website目录下。<link>标签使用相对路径来引用名为main.css的样式表,该样式表位于/root/website/styles目录下。
- 相对路径的特点
- 相对路径可以简化文件和资源的引用,并且在文件移动或嵌套在其他目录中时更加灵活。
- 相对路径不需要完整的 URL 或文件系统路径,只需要相对于当前工作目录的路径。
- 相对路径可以使用特殊的符号来表示上一级目录 (
..) 或当前目录 (.)。
- 假设我们的当前工作目录是
-
绝对路径 (Absolute Paths):绝对路径是基于文件系统根目录的完整路径来确定目标文件或资源的位置。
<img src="/images/logo.png" alt="公司标志" /> <a href="/about.html">关于我们</a> <link rel="stylesheet" href="/styles/main.css" />-
假设我们的网站位于服务器的
/var/www/html目录。<img>标签使用绝对路径来引用名为logo.png的图像,该图像位于服务器根目录下的/images目录。<a>标签使用绝对路径来链接到名为about.html的页面,该页面位于服务器根目录下的/目录。<link>标签使用绝对路径来引用名为main.css的样式表,该样式表位于服务器根目录下的/styles目录。
-
绝对路径的特点
- 绝对路径提供了完整的路径信息,独立于当前文件所在的位置。
- 绝对路径可以确保资源的引用始终正确,无论文件所在的位置如何。
- 绝对路径使用完整的 URL 或文件系统路径。
-
-
相对路径和绝对路径的选择:根据不同的需求和场景,选择合适的路径形式。使用相对路径可以让文件位置更加灵活,而使用绝对路径可以确保文件目标的准确性。
- 相对路径更适合在文件系统中组织良好的项目中使用,可以更容易地移动文件和资源的位置。
- 绝对路径更适合在具有固定结构和确定文件位置的网站或应用程序中使用。
超链接标签 a
-
超链接标签
<a>用于在网页上创建链接的 HTML 元素。它可以通过点击链接文本或图像来跳转到其他页面、文件或页面内的锚点。 -
语法:
<a href="目标URL或路径" target="_blank">链接文本</a>href属性指定了链接目标,可以是一个 URL、文件路径或页面锚点;而链接文本则是用户点击时看到的可点击文本。target属性用于指定链接在何处打开。常用取值有:_blank:在新标签页中打开链接。_self:在当前标签页中打开链接(默认选项)。_parent:在父级框架中打开链接(如果页面有框架结构)。_top:在整个窗口中打开链接,忽略任何框架(如果页面有框架结构)。- 自定义框架名称:在指定的框架中打开链接(如果页面有框架结构)。
rel属性用于指定链接与当前页面的关系,常用取值有:nofollow:要求搜索引擎不要跟随链接。noopener:防止目标页面访问 opener 的引用。这样可以提高安全性,防止目标页面使用 JavaScript 访问打开链接页面的对象。
title属性用于提供链接的提示信息,在鼠标悬停在链接上时显示。style属性用于应用 CSS 样式到链接。class属性用于指定一个 CSS 类来应用样式。
-
锚点链接:在
href属性中使用目标元素的id。<a href="#section1">跳转到第一节</a> ... <h2 id="section1">第一节内容</h2>
<!DOCTYPE html>
<html>
<head>
<title>超链接标签示例</title>
<style>
.external-link {
color: blue;
text-decoration: underline;
}
</style>
</head>
<body>
<h1>欢迎来到我们的网站!</h1>
<h2>导航菜单</h2>
<ul>
<li><a href="index.html">首页</a></li>
<li><a href="about.html">关于我们</a></li>
<li><a href="contact.html">联系我们</a></li>
</ul>
<h2>更多资源</h2>
<p>请查看我们的<a href="https://www.example.com" target="_blank">官方网站</a>获取更多信息。</p>
<h2>外部链接样式</h2>
<p>这是一个外部链接:<a href="https://www.example.com" class="external-link">点击访问</a></p>
</body>
</html>
- 我们创建了一个简单的网站,包含导航菜单和外部链接。
- 导航菜单使用超链接标签指向不同的网页。
- 外部链接使用
target="_blank"属性将链接在新窗口中打开,并且应用了自定义的样式。
音频标签 audio 和视频标签 video
- 音频标签
<audio>和视频标签<video>用于将音频和视频内容嵌入到网页中。 - 音频标签使用
src属性指定音频文件的 URL,视频标签使用src属性指定视频文件的 URL。 controls属性可用于添加一个播放器控件,允许用户控制音频或视频的播放、暂停、音量等功能。可以在音频标签和视频标签之间插入嵌套内容,以便在浏览器不支持播放音频或视频时显示替代文本。- 此外,还可以使用其他属性如
loop、autoplay和preload来控制音频和视频的播放特性(循环播放、自动播放、预加载等)。 - 在浏览器中,想要自动播放视频,必须有 muted 属性。
<video src="./media/vue.mp4" controls loop muted autoplay></video>
<audio src="audio.mp3" controls autoplay loop>
<p>您的浏览器不支持 audio 标签</p>
</audio>
<video src="video.mp4" controls autoplay loop>
<p>您的浏览器不支持 video 标签</p>
</video>
综合案例 1
个人简介
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>个人简介</title>
</head>
<body>
<h1>尤雨溪</h1>
<hr />
<p>
尤雨溪,前端框架 <a href="#">Vue.js</a> 的作者,<a href="#"> HTML5 </a>版 Clear 的打造人,独立开源开发者。曾就职于
Google Creative Labs 和 Meteor Development Group。由于工作中大量接触开源的项目
<a href="#">JavaScript</a>,最后自己也走上了开源之路,现全职开发和维护 <a href="#">Vue.js</a>。
</p>
<img src="./photo.jpg" alt="尤雨溪的照片" title="尤雨溪" />
<h2>学习经历</h2>
<p>
尤雨溪毕业于上海复旦附中,在美国完成大学学业,本科毕业于 Colgate University,后在 Parsons 设计学院获得 Design &
Technology 艺术硕士学位,任职于纽约 Google Creative Lab。
</p>
<h2>主要成就</h2>
<p>
尤雨溪<strong>大学专业并非是计算机专业</strong>,在大学期间他学习专业是室内艺术和艺术史,后来读了美术设计和技术的硕士,
<ins>正是在读硕士期间,他偶然接触到了 JavaScript,从此被这门编程语言深深吸引,开启了自己的前端生涯</ins> 。
</p>
<p>
2014 年 2 月,开发了一个前端开发库 Vue.js。Vue.js 是构建 Web 界面的 JavaScript 框架,是一个通过简洁的 API
提供高效的数据绑定和灵活的组件系统。
</p>
<h2>社会任职</h2>
<p>
2016 年 9 月 3 日,在南京的 JSConf 上,Vue 作者尤雨溪正式宣布加盟阿里巴巴 Weex
团队,尤雨溪称他将以技术顾问的身份加入 Weex 团队来做 Vue 和 Weex 的 JavaScript runtime 整合,目标是让大家能用 Vue
的语法跨三端。
</p>
</body>
</html>
Vue 简介
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vue 简介</title>
</head>
<body>
<h1>Vue.js</h1>
<p>
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式 JavaScript 框架。 [5] 与其它大型框架不同的是,Vue
被设计为可以自底向上逐层应用。Vue
的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue
也完全能够为复杂的单页应用(SPA)提供驱动。
</p>
<p>其作者为<a href="#" target="_blank">尤雨溪</a></p>
<h2>主要功能</h2>
<p>
Vue.js 是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue
的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue
完全有能力驱动采用单文件组件和 Vue 生态系统支持的库开发的复杂单页应用。
</p>
<p>Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。</p>
<p>
Vue.js
自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时
[2] ,Vue.js 也能驱动复杂的单页应用。
</p>
<video src="../media/vue.mp4" controls muted autoplay loop></video>
</body>
</html>