文章目录
- 1. 前言与准备工作
- 1.1 前言
- 1.2 准备工作
- 1.2.1 工具选用
- 1.2.2 VSCode下载与配置
- 2. 基本概念
- 2.1 通过HelloWorld理解HTML基本概念
- 2.1.1 HTML是什么
- 2.1.2 如何理解"超文本"?
- 2.1.3 HTML基础结构
- 2.1.3 学习第一组标签:段落p与标题h1~h6
- 2.2 CSS基础概念与引入方式
- 2.2.1 CSS基础概念
- 2.2.2 CSS语法
- 2.2.3 CSS引入方式
- 2.2.3 CSS选择器
- 3. HTML+CSS选择器实践中学习
- 3.1 粗体、斜体标签以及元素选择器
- 3.1.1 粗体与斜体标签
- 3.1.2 元素选择器
- 3.2 删除线、下划线标签以及id选择器
- 3.2.1 删除线与下划线标签
- 3.2.2 id选择器
- 3.3 图像、超链接标签与类选择器
- 3.3.1 图像与超链接标签
- 3.3.2 类选择器
- 3.4 列表、表格标签与伪类选择器
- 3.4.1 列表与表格
- 3.4.2 伪类选择器
- 4. 总结
- 参考资料
通过实操练懂HTML与CSS选择器
1. 前言与准备工作
1.1 前言
我们学习前端基础的时候,通常会发现:HTML 、 CSS、 JavaScript 的学习是有非常强的基础依赖关系的,没有HTML基础,CSS与JavaScript很难学懂,因此一般情况下我们是顺着 HTML -> CSS -> JavaScript 的顺序学习。
在一些参考资料与教程中,通常将这三者分别放在不同的栏目或文档教学,若是学习时间间隔比较长,很容易忘记前面的部分,再翻阅对应的资料就会略显操作复杂。
JavaScript 负责页面的逻辑,基本上是在实际工作中写得最多的部分,其知识内容也非常多,一篇文章讲不完。但 HTML 与 CSS 就不一样了,初学过后回过头来看就会发现,只需要掌握常用的标签、样式,以及记住一些重点即可。因此本文咱们先学习并记录HTML+CSS选择器,通过实操,一文学懂这两者,希望对读者有帮助。
学习目标
- 学习 HTML 基础概念、常用标签
- 学习 CSS 基础概念、以及选择器
- 会用常用标签+常用CSS,做一些基础页面
学习建议
跟着本文的demo代码敲一敲,看一看代码
说明
由于咱们这属于一口气学完HTML与CSS选择器的基础,属于长文,需要花点时间阅读。
1.2 准备工作
初学的读者推荐参考如下包括参考文章在内的准备工作,若是回顾的读者,可忽略此小节。
1.2.1 工具选用
浏览器
若后端的舞台是服务器,那么前端的舞台则是浏览器。我们日常常用的浏览器基本都带了开发者工具,方便我们查看页面元素、传参、入参、接口返回值等信息,以Chrome为例,按F12即可召唤开发者工具。当前阶段我们可以用浏览器查看页面元素。
开发工具
前端的常用集成工具有:VSCode、Hbuilder、IDEA、WebStorm等,无论是否初学,上述均可选用。
当前 VSCode 深受前端开发者的喜爱,本文的示例选择采用VSCode作为开发工具。
1.2.2 VSCode下载与配置
- 下载地址:VSCode官方下载地址
- 参考文章:CSDN-VSCode配置前端插件优秀参考博文
2. 基本概念
这一小节介绍 HTML 与 CSS 的基本概念
2.1 通过HelloWorld理解HTML基本概念
2.1.1 HTML是什么
HTML (Hypertext Markup Language) 是用于创建网页的标记语言,称为超文本标记语言。
2.1.2 如何理解"超文本"?
-
“超文本”(HyperText)指的是文本中包含的链接,可以通过点击链接跳转到其他页面或文档。
-
“标记语言”(Markup Language)指的是用标记(标签)来定义文本的结构和样式。因此,HTML被称为超文本标记语言,是因为它可以创建包含链接的文本,并使用标记来定义文本的结构和样式。
上述解释来自 ——IT干货网
2.1.3 HTML基础结构
以下,我们用一个 HelloWorld 的例子来说明 HTML 的基础结构:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Hello World</title>
</head>
<body><!-- This is a comment --><p>Hello World!</p>
</body>
</html>
写写试一试吧!
内容解析
我们先来解释一下上述例子的内容:
<!DOCTYPE html>
标签告诉浏览器该文档是 HTML 文档。<html>
标签是 HTML 文档的根元素。它包含文档中的所有其他元素。<head>
标签包含有关文档的信息,例如标题、字符编码和元标签。<meta charset="UTF-8">
标签指定文档的字符编码。<meta name="viewport" content="width=device-width, initial-scale=1.0">
标签告诉浏览器将文档缩放到适合设备屏幕宽度的大小。<title>
标签指定文档的标题。<body>
标签包含文档的主要内容。<p>
标签定义一个段落。接下来的学习中,我们会接触到更多不同功能的标签。<p>Hello World!</p>
标签包含文本“Hello World!”。
一般情况下,我们学习与开发的过程中,主要关注<body>
里的内容,及以后将要学习到的<style>
、<script>
等标签内容即可。关于上面解释的标签、属性等概念是什么,在下面的相关概念介绍:
相关概念
- 标签:HTML由一套标记标签组成,通常就叫标签。一个标签通常由开始标签和结束标签组成。例如,这个示例的
<body>
是开始标签,</body>
是结束标签,区别在于结束标签在标签名描述之前加了/
。在接下来的学习中,我们会接触到自闭标签,意思是省略了结束标签的标签,例如,一个单独的<br>
标签表示一个换行,省略了结束标签。有点混淆了?不用慌,常见的自闭标签只有几个,用到再查或者多练即可掌握。 - 注释:HTML 的注释由
<!-- [注释内容] -->
表示,和XML的注释格式是一致的,通常我们使用IDE工具快捷键生成即可。 - 元素:元素是指一个标签开始和结束之间的所有代码。例如,上述例子中的
<p>Hello World!</p>
,"Hello World!"就是<p>
标签的元素。 - 属性:标签内的看似赋值的操作,称为属性。如上述例子的:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
," name=“viewport” " 就是一个属性。“name” 是属性名,“viewport” 是属性值,属性值应该用双引号括起来。
2.1.3 学习第一组标签:段落p与标题h1~h6
段落标签p
在上文的 HelloWorld 示例中,我们的“Hello World!”文本是被p标签包裹的。p代表一个段落。段落会自动换行。
标题标签h1~h6
标题会自动粗体,大写其中的内容,并且带有换行效果。
一般会使用<h1>
到 <h6>
分别表示不同大小的标题,其中,数字越小,标题越大。
基础示例
<body><!-- normal text -->This is a normal text.This is a normal text.<!-- bold text --><p>This is a p paragraph.</p><p>This is a p paragraph.</p><!-- h1 tag --><h1>This is a h1 tag.</h1><!-- h2 tag --><h2>This is a h2 tag.</h2><!-- h3 tag --><h3>This is a h3 tag.</h3><!-- h4 tag --><h4>This is a h4 tag.</h4><!-- h5 tag --><h5>This is a h5 tag.</h5><!-- h6 tag --><h6>This is a h6 tag.</h6>
</body>
在html文件中编辑以上示例,并 View In Browser 或 Open with Live Server 试一试吧!
其中,p 和 h 都有一个较为常用的 align 属性,例如align="center"
为居中,align="right"
为最右:
<body><h1 align="center">Center Header</h1><h2 align="right">Right Header</h2><p align="center">Center paragraph</p><p align="right">Right paragraph</p>
</body>
2.2 CSS基础概念与引入方式
2.2.1 CSS基础概念
CSS是什么
CSS是层叠样式表。从功能上简单理解,HTML可看作是网页的骨架,CSS则对网页进行布局和美化。
为什么要用CSS
如果不用CSS,通过标签的属性,我们也可以设置一些效果和样式。可是这样会有两个缺点:一是每个标签都单独设置属性,当标签较多时,会非常繁杂,不利于管理和复用;二是一些特殊的样式很难甚至无法通过标签的属性来实现。
举个小例子,上一小节我们提到的p
和 h
标签例子,若要将这么多标签都设置align="center"
属性,则需要每个标签都更改。而CSS则可以通过在head
标签内,通过style
标签统一设置:
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>h & p</title><style>/* normal text */p,h1,h2,h3,h4,h5,h6 {text-align: center;}</style>
</head>
即可实现上述标签均居中的效果。
2.2.2 CSS语法
CSS 的语法为:
selector {/* 注释 */propery: value;
}
也即选择器 { 属性:值 }
2.2.3 CSS引入方式
CSS 主要由三种方式实现:
- 内联样式
内联样式是在具体HTML标签内,通过style属性设置,如:
<div style="color: red">红色段落</div>
- 内部样式
内部样式的位置在html的head标签里,在style标签内设置。
<head><meta charset="UTF-8"><title>三种引入方式</title><style>#d1{color: green;}</style></head><body><h1 id = "d1">内部样式,绿色标题</h1></body>
- 外部样式
外部样式即将各种样式写在一个以.css
后缀的CSS文件中,在head中引入,该文件中直接写CSS样式即可。这个外部样式让CSS代码可与HTML文件分离,便于管理。
<link rel="stylesheet" href="myCSS.css">
在当前的学习与实际开发中,内联样式用得较少,内部和外部样式用得较多。为了便于管理,接下来的演示基于外部样式。
2.2.3 CSS选择器
CSS 选择器是 CSS 语法的重要组成部分,目的是以什么样的规则选择什么样的元素。
选择器也有分类,例如 id选择器、元素选择器、类选择器、伪类选择器等等非常多种类的选择器。不同的选择器有不同的作用范围与代码复用结果,选择器手册可参考:
菜鸟教程-选择器手册
我们会在下面的学习中介绍常见的选择器,并以demo代码为例学习。
3. HTML+CSS选择器实践中学习
3.1 粗体、斜体标签以及元素选择器
这一小节我们学习粗体标签、斜体标签,以及元素选择器,并用这些写个标签与样式实操写一个demo
3.1.1 粗体与斜体标签
粗体标签
粗体标签可由 b 标签 或者 strong 标签表示。由于 strong 标签在语义上更具强调的意思,约定俗成,目前 strong 的使用更广泛。因此我们对strong标签的印象更深一些即可。
斜体标签
斜体也主要由两个标签实现,i与em标签。
i是italic的缩写,仅仅表示该文本是斜体的,并不暗示这段文字的重要性。
em 是 Emphasized的缩写,虽然也是斜体,但是更多的是强调语义上的加重,提醒用户该文本的重要性。 常常用于引入新的术语的时候使用。
斜体标签实际用得相对比其它标签要少一些。与strong类似,em具有更强的语义加重,我们对em的印象深一些即可。
标签代码示例
<body><!-- b --><p><strong>This is a strong tag with strong text</strong></p><p><b>This is a b tag with b text</b></p><!-- i --><p><em>This is an em tag</em></p><p><i>This is an i tag</i></p><!-- strong and em --><p><strong><em>This is a strong and em tag</em></strong></p>
</body>
3.1.2 元素选择器
元素选择器的选择器名就是标签名。元素选择器的作用域是整个html中对应的所有标签。
元素选择器示例
此处我们用元素选择器将strong标签以及em标签的元素颜色变换一下:
strong {color: red;
}em {color: blue;
}
执行效果
3.2 删除线、下划线标签以及id选择器
3.2.1 删除线与下划线标签
删除线
删除线也有两种标签实现,del和s,但一般情况下,由于一些浏览器不支持s标签,因此建议使用del标签。
下划线
下划线也有两种标签实现,ins和u,一般情况下,也是语义侧重的原因,不建议使用u,因此我们掌握ins即可。特别地,由于超链接的形式和下划线也很像,实际开发中,非特殊需求,不建议使用下划线。
示例
<body><!-- del --><del>This text has been deleted.</del><br/><!-- s --><s>This text has been struck through.Not suggest to use this tag.</s><br/><!-- ins --><ins>This text has been inserted.</ins><br><!-- u --><u>This text has been underlined. Not suggest to use this tag.</u><br>
</body>
小补充:此处的示例,我用了br自闭标签来换行。是的,br是一个换行,且自闭标签既可以省略/
,也可以将/
放到标签名之后,如上述例子所示。
3.2.2 id选择器
元素选择器的选择范围是全部对应标签。实际开发中,我们会想让某个元素有特定的样式。此时我们可以选用id选择器。
示例
我们改写一下删除线的html,多加两条删除线,并让删除线的元素里的文本有不同的大小:
<body><!-- del --><del id="d1">This text has been deleted.</del><br/><!-- del --><del id="d2">This text has been deleted.</del><br/><!-- del --><del id="d1">This text has been deleted.</del><br/><!-- del --><del id="d3">This text has been deleted.</del><br/>
</body>
#d1{font-size: 30px;
}#d2{font-size: 50%;
}#d3{font-size: 3em;
}
3.3 图像、超链接标签与类选择器
3.3.1 图像与超链接标签
图像
图像的标签是img。具体显示什么图像,图像的大小、布局,替换文字等,均用图像的属性来指定。一般若要显示不同目录的图像,使用相对路径或绝对路径。
超链接
超链接的标签是a。跳转的链接也由属性指定。
示例
<body><!-- img --><img src="../images/title.png" alt="Image"/><p>This is a test image is a test image </p><img width="200px" height="200" src="../images/title.png" alt="Image"><p>This is an image with alt attribute and width and height</p><img src="image.png" alt="Image"/><p>This is an image ,didn't find, display alt</p><!-- a --><a href="https://www.baidu.com/">百度一下,你就知道</a>
</body>
3.3.2 类选择器
当需要多个元素,都使用同样的css的时候,就会使用类选择器。
示例
我们将上述p标签的字体改成按既定大小
<body><p class="font-size-16">This is an image ,didn't find, display alt</p>
</body>
.font-size-16{font-size: 20px;
}
3.4 列表、表格标签与伪类选择器
3.4.1 列表与表格
列表
列表分为有序列表和无序列表,用ol和ul标签分别表示。列表标签内用li标签表示每一行。
表格
表格标签为table,由border属性设置边框。表格里th为表头,每一行为td标签,每一列为tr标签。
举例
<body><!-- ul --><ul><li>Java</li><li>Python</li></ul><!-- ol --><ol><li>Java</li><li>Python</li></ol><!-- table --><table><tr><th>Name</th><th>Age</th><th>Gender</th></tr><tr><td>John</td><td>25</td><td>Male</td></tr><tr><td>Mary</td><td>30</td><td>Female</td></tr></table><!-- table with border --><table border="1"><tr><th>Name</th><th>Age</th><th>Gender</th></tr><tr><td>John</td><td>25</td><td>Male</td></tr><tr><td>Mary</td><td>30</td><td>Female</td></tr></table>
</body>
除了可以使用CSS对 table 内的元素进行样式指定,table本身的属性可提供合并单元格、自定义大小等。
<!-- table with attributes --><table border="1" width="100%" height="100%"><tr><th colspan="3">Table Title</th></tr><tr><th bgcolor="#FF0000">First Name</th><th>Last Name</th><th>Age</th></tr><tr><td>John</td><td>Doe</td><td>25</td></tr><tr><td rowspan="2">Jane</td><td>30</td></tr><tr><td width="50%">Mike</td><td>Johnson</td><td>40</td></tr></table>
3.4.2 伪类选择器
伪类选择器是指当选择的元素状态不一样时,有不一样的样式。
示例
/*整个表格的样式*/table{width: 300px;height: 200px;border: 1px solid blue;/*border-collapse属性:对表格的线进行折叠*/border-collapse: collapse;}/*鼠标悬停时,让当前行显示#868686这种灰色*/table tr:hover{background: #868686;}/*每个单元格的样式*/table td{border:1px solid red;}
4. 总结
本文我们学习了HTML 与 CSS 的基础。特别是结合第三章节,我们一边对HTML常用标签进行学习,另一边马上用CSS进行样式学习,重点学习选择器。
但是,篇幅有限,HTML 还有很多常用标签,如表单等;CSS 还有很多重点概念,如布局相关盒子模型、布局方式、浮动等尚需学习。但相信通过本文的学习与练习,我们已经掌握了HTML的基本特点与CSS选择器的基本使用方式,相当于有了一点基础,日后的学习就将会顺畅一些。
参考资料
- IT干货网
- CSDN-VSCode配置前端插件优秀参考博文
- 菜鸟教程-选择器手册
- bilibili-吴悠讲编程