一、HTML入门

1.1 HTML&CSS&JavaScript的作用

  • HTML :主要用于网页主体结构的搭建

  • CSS :主要用于页面元素美化

  • JavaScript :主要用于页面元素的动态处理

1.2 HTML概述

HTML(HyperText Markup Language,超文本标记语言)是构建网页的基础,它定义了网页的结构和内容。HTML 使用标记(标签)来告诉浏览器如何展示文本、图像、表格、链接等网页元素。

超文本:超文本是一种文本显示方式,它通过链接(通常称为“超链接”)将文本内容与其他文本或资源(如网页、图片、视频等)连接起来。与传统的线性文本不同,超文本允许用户跳转到其他相关的页面或资源,使得信息呈现方式更具互动性。

标记语言:是一种用于描述文档结构和数据格式的语言,通过在文本中插入特定的标记(标签)来标识和定义内容的结构、属性和功能。标记语言本身不会直接处理内容的显示,而是为内容提供结构化的信息,通常与样式表(如 CSS)和脚本(如 JavaScript)一起使用,以实现对内容的最终呈现和交互效果。

  • 双标签:是由一对标签组成,通常由 开始标签结束标签 两部分组成,中间包含实际的内容。开始标签标识元素的开始,而结束标签标识元素的结束。

    结构:

    • 开始标签:例如 <h1>,它告诉浏览器这个元素的开始。
    • 结束标签:例如 </h1>,它标识元素的结束。
  • 单标签:

  • 是没有结束标签的标签。它们是自闭合的,在开始标签中就包含了元素的完整定义。

    结构:

    • 单标签:例如:
    1
    <input type="text" name="username" />
  • 属性:

1
<a href="http://www.xxx.com">show detail</a>

href=”网址”就是属性,href是属性名,”网址”是属性值。

1.3 HTML文件基础结构

  • 根标签:
    • 每个html文件的内容都需要写在跟标签之中,所有的其它标签都要在这个标签之内。
1
2
3
<html>
文件内容
</html>
  • html根标签下有两个一级子标签:
  1. <head> </head>头标签:定义那些不直接展示在页面主体上,但是又很重要的内容。如:
  • 字符集 <meta charset="utf-8" />告诉浏览器使用什么字符集对文件进行解码。

乱码的产生:编写文件时使用的编码字符集和浏览器解析时使用的解码字符集不相同。

  • css引入
  • js引入
  • 其他
  1. <body> </body>体标签:定义要展示到页面主体的标签。

  2. <!-- 内容 -->注解标签:标签中间写上注解内容即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!-- 
这是一个注解
-->

<!DOCTYPE html> // 这个是一个文档声明,标准html5文件里开头都有这个,一般IDE会帮我们自动生成。
<html>
<head>
<title> 第一个页面 </title> // 这个标签是浏览器上标签页的名字
<meta charset="UTTF-8" />
</head>
<body>
<h1> 这是一级标题 </h1>
</body>
</html>

1.4 HTML概念词汇解释

  1. 标题tag:代码中一个<>叫做一个标签,有些标签成对出现,称之为双标签,有些标签单独出现称之为单标签
  2. 属性attribute:一般在开始标签中,用于定义标签的一些特征。对标签特征进行设置的一种方式,属性一般在开始标签中定义。
  3. 文本text:双标签中间的文件,包含空格换行等结构。
  4. 元素element:经过浏览器解析后,每一个完整的标签(标签+属性+文本)开源称之为一个元素

HTML更多的语法细节

  • 根标签有且只能有一个
  • 无论是双标签还是单标签都需要正确的关闭
  • 标签可以嵌套但不能交叉嵌套
1
2
<big><i>张三</i></big>  <!-- 标签嵌套,正确写法 -->
<big><i>张三</big></i> <!-- 标签交叉嵌套,错误写法 -->
  • 注释语法为<!-- -->,注意不能嵌套。
  • 属性必须有值,值必须加引号,H5中属性名和值相同时可以省略属性值
1
<input type="password" />  <!-- type属性名可以不加双引号,"password"属性值要加引号 -->
  • HTML中不严格区分字符串使用单双引号(特殊需要时,需要单双引号交替使用,如:"asdf'qew"aaaaa"er'asdf"
  • HTML标签不严格区分大小写,但是不能大小写混用
1
2
3
<html>
<!-- 标签大小写混用,错误写法 -->
</HTML>
  • HTML中不允许自定义标签名,强行自定义则无效

1.5 开发工具VsCode

  1. 安装VsCode
  2. 安装插件
  • Auto Rename Tag 自动修改标签对插件

  • HTML CSS Support HTML,CSS支持

  • Intellij IDEA Keybindings IDEA快捷键支持

  • Live Server 实时加载功能的小型服务器

  • open in browser 通过浏览器打开当前文件的插件

  • Prettier-Code formatter 代码美化格式化插件

  • Vetur VScode中的Vue工具插件

  • vscode-icons 文件显示图标插件

  • Vue 3 snipptes 生成VUE模板插件

  • Vue language Features(更名:Vue - Official) Vue3语言特征插件

VS Code使用小技巧

创建一个HTML文件之后,在文件中输入一个!,点回车可以快速生成一个模板。

Live Server使用技巧

写好HTML文件后,在vscode的右下角可以看到一个Go Live的按钮,点击之后Vscode就会自动开启一个虚拟的服务,并且把当前文件放到所虚拟的文件上,然后会自动打开浏览器。之后再修改HTML文件,不需要刷新浏览器也可以看到最新的内容。即实时加载功能。当不再需要该服务后,关闭浏览器,回到Vscode,点击右下角的按钮(Go Live变成了Port:5500),点击后就关闭了此虚拟服务(同时按钮变回Go Live)。鼠标右键(或者快捷键),在选项框中选择操作也能达到以上开关虚拟服务的效果。

二、HTML常见标签

2.1 标题标签

标题标签一般用于在页面上定义一些标题性的内容,如新闻标题、文章标题等,有h1到h6六级标题。属于双标签

  • 代码
1
2
3
4
5
6
7
8
<body>
<h1>一级标题</h1>
<h2>二级标题</h2>
<h3>三级标题</h3>
<h4>四级标题</h4>
<h5>五级标题</h5>
<h6>六级标题</h6>
</body>

2.2 段落标签

段落是通过

标签定义的。属于双标签

  • 代码
1
2
<p>这是一个段落</p>
<p>这是另一个段落</p>

2.3 换行标签

文本换行通过<br />来实现,属于单标签

  • 代码
1
<p>这是<br />一个<br />换行后的段落</p>

文本通过<hr />来实现水平线

  • 代码
1
2
3
<p>This is a paragraph</p>
<hr />
<p>This is a paragraph</p>

总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
标题 h1 - h6
段落 p
换行 br hr
-->
<h1>come on</h1>
<h2>come on</h2>
<h3>come on</h3>
<h4>come on</h4>
<h5>come on</h5>
<h6>come on</h6>
<p>这是一个段落</p>
<p>
这是一个段落 <br />
给一个换行
</p>
<p>
这是另一个段落,给一个水平线
<hr />
</p>
</body>
</html>

2.4 列表标签

有序列表,分条列项展示数据的标签,属于双标签其每一项前面的符号带有顺序特征。

  • 有序列表标签 ol

  • 无序列表标签 ul

  • 列表项标签 li

  • 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
有序列表 ol
无序列表 ul
列表项 li
-->
<!-- 有序列表 -->
<ol>
<li>数据类型</li>
<li>变量</li>
<li>流程控制</li>
<li>函数</li>
</ol>
<!-- 无序列表 -->
<ul>
<li>java</li>
<li>python</li>
<li>C</li>
<li>PHP</li>
</ul>
<!-- 列表的嵌套 -->
<ul>
<li>java
<ol>
<li>数据类型</li>
<li>变量</li>
<li>流程控制</li>
<li>函数</li>
</ol>
</li>
<li>python</li>
<li>C</li>
<li>PHP</li>
</ul>
</body>
</html>

2.5 超链接标签

点击后带有链接跳转的标签,也叫做a标签,属于单标签

  • href属性用于定义链接

    • href中可以使用绝对路径,以/开头,始终以固定路径作为基准路径作为出发点
    • href中也可以使用相对路径,不以/开头,以当前文件所在路径作为出发点
      • 相对路径可以以./或者../开头。./表示当前资源的所在目录,可以省略不写,../表示当前资源所在目录的上一级目录。
    • href中也可以定义完整的URL
  • target用于定义打开的方式

    • _blank在新窗口中打开目标资源
    • _self 在当前窗口中打开目标资源
  • 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
超链接标签
a
href
1. 完整的URL
2. 相对路径
3. 绝对路径
target
_self 当前窗口打开
_blank 新窗口打开
-->
<!-- URL写法 -->
<a href="https://ryanblog.us.kg/" target="_blank">ryan博客</a>
<br />

<!-- 相对路径写法 -->
<a href="./01firstPage.html" target="_blank">01firstPage.html</a>
<br />
<a href="a/test.html" target="_blank">a/test.html</a>
<br />

<!-- 绝对路径写法 -->
<a href="/demo01-html/03ol_ul_li.html" target="_blank">/demo01-html/03ol_ul_li.html</a>
</body>
</html>

2.6 多媒体标签

img(重点)图片标签(单标签),用于在页面上引入图片

1
2
3
4
5
6
<!--
src 用于定义图片的链接路径
title 用于定义鼠标悬停时显示的文字
alt 用于定义图片加载失败时显示的提示文字
-->
<img src="img/logo.png" title="ryan" alt="ryanlogo" />

src 的图片路径有URL,相对路径,绝对路径。

图片宽度控制可以用 width属性来配置,以像素px为单位横纵比是锁定的,改变宽度,长度也会改变。

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<img src="img/ryan.jpg" width="300px" title="ryan" alt="ryanimg" />
<br />
<img src="img/ryan.jpg" title="ryan" alt="ryanimg" />
</body>
</html>

2.7 表格标签(重点)

常规表格

  • table标签,代表表格
  • thead标签,代表表头,可以省略不写
  • tbody标签,代表表体,可以省略不写
  • tfoot标签,代表表尾,可以省略不写
  • tr标签,代表一行
  • td标签,代表行内一格
  • th标签,自带加粗和居中效果的td
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h3 style="text-align: center;"> 员工技能竞赛评分表</h3>
<table border="1px" style="margin: 0px auto; width: 300px;">
<tr>
<th>排名</th>
<th>姓名</th>
<th>分数</th>
</tr>
<tr>
<td>1</td>
<td>张三</td>
<td>100</td>
</tr>
<tr>
<td>2</td>
<td>李四</td>
<td>99</td>
</tr>
<tr>
<td>3</td>
<td>王五</td>
<td>98</td>
</tr>
</table>
</body>
</html>

单元格跨行

  • 通过tdcolspan属性实现左右的跨列
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h3 style="text-align: center;"> 员工技能竞赛评分表</h3>
<table border="1px" style="margin: 0px auto; width: 400px;">
<tr>
<th>排名</th>
<th>姓名</th>
<th>分数</th>
<th>备注</th>
</tr>
<tr>
<td>1</td>
<td>张三</td>
<td>100</td>
<td rowspan="6">前三名升职加薪</td>
</tr>
<tr>
<td>2</td>
<td>李四</td>
<td>99</td>
</tr>
<tr>
<td>3</td>
<td>王五</td>
<td>98</td>
</tr>
<tr>
<td>总人数</td>
<td colspan="2">200</td>

</tr>
<tr>
<td>平均分</td>
<td colspan="2">90</td>

</tr>
<tr>
<td>及格率</td>
<td colspan="2">80%</td>
</tr>
</table>
</body>
</html>
  • 通过tdrowspan属性实现上下跨行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h3 style="text-align: center;"> 员工技能竞赛评分表</h3>
<table border="1px" style="margin: 0px auto; width: 400px;">
<tr>
<th>排名</th>
<th>姓名</th>
<th>分数</th>
<th>备注</th>
</tr>
<tr>
<td>1</td>
<td>张三</td>
<td>100</td>
<td rowspan="3">前三名升职加薪</td>
</tr>
<tr>
<td>2</td>
<td>李四</td>
<td>99</td>
</tr>
<tr>
<td>3</td>
<td>王五</td>
<td>98</td>
</tr>
</table>
</body>
</html>

2.8 表单标签(重点)

表单标签可以实现让用户在界面上输入各种信息并提交的一种标签,是向服务端发送数据主要的方式之一。

  • form标签,表单标签,其内部用于定义可以让用户输入信息的表单项标签。

    • action,form标签的属性之一,用于定义信息提交的服务器地址
    • method,form标签的属性之一,用于定义信息的提交方式
      • get,get方式,数据会缀到URL后,以?作为参数开始的标识,多个参数用&隔开
      • post,post方式,数据会通过请求体发送,不会缀到URL后
  • input标签,主要的表单项标签,可以用于定义表单项

    • name,input标签的属性之一,用于定义提交的参数名
    • type,input标签的属性之一,用于定义表单项类型
      • text 文本框
      • password 密码框
      • submit 提交按钮
      • reset重置按钮
      • radio 单选框,多个选项选其一。多个单选框使用相同的name属性,则就会达到互斥效果
      • checkbox 复选框,多个选项可多选
      • hidden 隐藏域,不显示在页面上,但是提交时会携带
      • file 文件上传框
  • 代码

1
2
3
4
5
6
<form action="http://www.xxx.com" method="get">
用户名 <input type="text" name="username" /> <br />
&nbsp;&nbsp;&nbsp;<input type="password" name="password" /> <br />
<input type="submit" value="登录" />
<input type="reset" value="重置" />
</form>
  • 代码及其细节
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
form
action 定义数据的提交地址
1. URL
2. 相对路径
3. 绝对路径
method 定义数据的提交方式
GET
1. 参数会以键值对形式放在URL后提交 url?key=value&key=value&key=value (在浏览器地址栏中可以看到)
2. 数据直接暴露在地址栏上,相对不安全
3. 地址栏长度有限,所以提交的数据量不大
4. 地址栏上,只能是字符,不能提交文件
5. 相比于post效率高一点
POST
1. 参数默认不放到URL后
2. 数据不会直接暴露在地址栏上,相对安全
3. 数据是单独打包通过请求体发送,提交的数据量比较大
4. 请求体中可以是字符,也可以是字节数据,可以提交文件
5. 相比于get效率略低一点

表单项标签
表单项标签一定要定义name属性,该属性用于明确提交时的参数名.
name属性的作用
1. 提交数据到服务器:服务器会根据 name 识别表单字段,并处理数据。
2. 区分不同的输入框:多个输入框如果没有 name,提交时就无法区分它们的数据。
表单项还需要定义value属性,该属性用于明确提交时的实参。
input
type 输入信息的表单项类型
text 单行普通文本框
password 密码框
submit 提交按钮
reset 重置按钮
radio 单选框,多个选项选其一
多个单选框使用相同的name属性,则就会达到互斥效果
checkbox 复选框,多个选项可多选
hidden 隐藏域,不显示在页面上,但是提交时会携带
file 文件上传框
textarea 文本域,多行文本框

select 下拉框
option 选项
-->
<form action="08welcome.html" method="get">
<!-- 添加表单项标签,用户输入信息的标签 -->

<!--
希望用户提交一些特定的信息,但是考虑安全问题,或者是用户操作问题,不希望该数据发生改变,可以用hidden
hidden 是不会显示在页面上的,但是提交时会携带
readonly 是会显示在页面上的,但是只读不可修改,提交时会携带
disabled 是会显示在页面上的,但是只读不可修改,提交时不会携带
-->
<input type="hidden" name="id" value="123" />
<input type="text" name="id" value="456" readonly />
<input type="text" name="id" value="789" disabled />
<br/>
用户名: <input type="text" name="username" /> <br/>
密码: <input type="password" name="userPwd" /> <br/>
性别:
<!-- checked="checked" 该属性表示默认选择男,当属性名和属性值相同时,可以只写属性名 -->
<!-- 设置value值是为了区分男和女,在地址栏中可以看到提交的参数
http://127.0.0.1:5500/demo01-html/08welcome.html?username=Ryan&userPwd=123&gender=1 -->
<input type="radio" name="gender" value="1" checked />
<input type="radio" name="gender" value="0" />
<br/>
<input type="checkbox" name="hobby" value="1" /> 篮球
<input type="checkbox" name="hobby" value="2" /> 足球
<input type="checkbox" name="hobby" value="3" /> 健身
<input type="checkbox" name="hobby" value="4" /> 羽毛球
<br/>
个人简介:
<!-- textarea 不需要value属性,因为我们在文本域中输入的内容就是value -->
<textarea name="intro" style="width: 300px; height: 100px;" ></textarea>
<br/>

籍贯:
<select>
<!-- 当不设置value属性是,value值就是选项的内容 -->
<option value="1"></option>
<option value="2"></option>
<option value="3"></option>
<!-- selected 表示默认是该选项 -->
<option value="0" selected>-请选择-</option>
</select>
<br/>
头像:
<input type="file" name="img" />
<br/>

<input type="submit" value="登录" />
<input type="reset" value="清空" />
</form>
</body>
</html>

2.9 布局相关标签

div标签,俗称“块”,主要用于划分页面结构,做页面布局

span标签,俗称“层”,主要用于划分元素范围,配合CSS做页面元素样式的修饰

  • 代码及其细节
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body style="background-color: coral;">
<!--
CSS 设置样式的
通过元素的style属性进行设置
style="样式名: 样式值; 样式名: 样式值; ......"

块元素:自己独占一行的元素,块元素的CSS样式的宽、高等等 往往都是生效的
div h1-h6
行内元素:不会自己独占一行的元素,行内元素的CSS样式的宽、高等等 很多都是不生效的
span img a

-->

<div style="border: 1px solid red; width: 500px; height: 200px; margin: 10px auto; background-color: antiquewhite; ">123</div>
<div style="border: 1px solid red; width: 500px; height: 200px; margin: 10px auto; background-color: bisque;">456</div>
<div style="border: 1px solid red; width: 500px; height: 200px; margin: 10px auto; background-color: brown;">
<span style="font-size: 30px; color: aqua; font-weight: bold;">哈兰德</span>的伤情引发了外界的关注,曼城跟队记者Sam Lee在社交媒体上晒出哈兰德赛后谢场的视频,哈兰德能够正常走路,他向球迷鼓掌招手,并没有露出痛苦的表情。</div>
<span style="border: 1px solid greenyellow; width: 200px; height: 200px;">555</span>

</body>
</html>

2.10 特殊字符

对于有特殊含义的字符,需要通过转义字符来表示

HTML中有用的字符实体

注释:实体名称对大小写敏感!

img

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
有特殊含义的符号:字符实体
对于html来说,某些符号是有特殊含义的,如果想要显示这些特殊符号,需要进行转义
-->
&lt;h1&gt;一级标题&lt;/h1&gt;
</body>
</html>

三、CSS的使用

css层叠样式表(英文全称:(Cascading Style Sheets)能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,简单来说就是美化页面

3.1 CSS引入方式

行内式:通过元素开始标签的style属性引入,样式语法为:样式名:样式值;样式名:样式值;...

  • 代码及细节
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>

<style>
/* 元素选择器,通过标签名确定样式的作用元素 */
input{
width: 60px;
height: 40px;
background-color: rgb(133, 208, 21);
color: white;
font-size: 22px;
font-family: '隶书';
border: 2px solid green;
border-radius: 5px;
}
</style>

</head>
<body>
<!--
引入方式
方式1:行内式
通过元素的style属性引入样式
语法:style="样式名:样式值;样式名:样式值;... ..."
缺点:
1. 代码复用度低,不利于维护
2. css样式代码和html结构代码交织在一起,影响阅读,影响文件大小,影响性能

方式2:内嵌式
通过在head标签中的style标签定义本页面的公共样式
通过选择器确定样式的作用元素

方式3:外部样式表
将CSS代码单独放入一个.css文件中,哪个html需要这些代码就在head中通过link标签引入。
<link href="css/btn.css" rel="stylesheet">
-->
<!-- 方式1:行内式 -->

<input type="button" value="按钮" />
<input type="button" value="按钮" />
<input type="button" value="按钮" />
<input type="button" value="按钮" />

<!-- <input type="button" value="按钮"
style="
width: 60px;
height: 40px;
background-color: rgb(133, 208, 21);
color: white;
font-size: 22px;
font-family: '隶书';
border: 2px solid green;
border-radius: 5px;
"
/>
<input type="button" value="按钮"
style="
width: 60px;
height: 40px;
background-color: rgb(133, 208, 21);
color: white;
font-size: 22px;
font-family: '隶书';
border: 2px solid green;
border-radius: 5px;
"
/> -->
</body>
</html>

3.2 CSS选择器

元素选择器

id选择器

class选择器

  • 代码及细节
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>

<style>
/*
1. 元素选择器:根据标签的名字来确定样式的作用元素
语法:标签名{}
缺点:某些同名的元素不希望使用某些样式,某些不同名的元素也使用了该样式,都无法协调

2. id选择器:根据标签的id值确定样式的作用元素
一般每个元素都有id属性,但是在一个页面中,id值不应该相同,id具有唯一性。
语法:#id值{}
缺点:id具有唯一性,样式只能作用到一个元素上

3. class选择器:根据元素的class属性值来确定样式的作用元素
元素的class属性值可以重复,而且每个元素的class属性值可以有多个值
语法: .class属性值{}
*/
/* input {
width: 80px;
height: 40px;
background-color: chartreuse;
color: white;
border: 3px solid green;
font-size: 22px;
font-family: '隶书';
line-height: 30px;
border-radius: 5px;
} */

/* #btn4 {
width: 80px;
height: 40px;
background-color: chartreuse;
color: white;
border: 3px solid green;
font-size: 22px;
font-family: '隶书';
line-height: 30px;
border-radius: 5px;
} */

.shapeClass {
width: 80px;
height: 40px;
border-radius: 5px;
}

.colorClass {
background-color: rgb(29, 206, 29);
color: white;
border: 3px solid green;
}

.fontClass {
font-size: 20px;
font-family: '隶书';
line-height: 30px;
}
</style>

</head>
<body>
<input id="btn1" class="shapeClass colorClass"type="button" value="按钮" />
<input id="btn2" class="colorClass fontClass"type="button" value="按钮" />
<input id="btn3" type="button" value="按钮" />
<input id="btn4" type="button" value="按钮" />
</body>
</html>

3.3 CSS浮动

CSS的Float(浮动)使元素脱离文档流,按照指定的方向(左或右发生移动),直到它的外边缘碰到包含框或另一个浮动框的边框为止。

  • 浮动设计的初衷是为了解决文字环绕图片的问题,浮动后一定不会将文字挡住。
  • 文档流是文档中可显示对象在排列时所占用的位置/空间,而脱离文档流就是在页面中不占位置了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>

<style>
.outerDiv {
width: 500px;
height: 300px;
border: 1px solid rgb(34, 208, 34);
background-color: rgb(215, 215, 24);
/* display: block或者inline; block块 inline 行内*/
}

.innerDiv {
width: 100px;
height: 100px;
border: 1px solid blue;
}

.d1 {
background-color: greenyellow;
float: left; /* 向右/左边浮动 */
}
.d2 {
background-color: rgb(173, 77, 77);

}
.d3 {
background-color: aqua;
}
</style>

</head>
<body>
<div class="outerDiv">
<div class="innerDiv d1">diva</div>
<div class="innerDiv d2">divb</div>
<div class="innerDiv d3">divc</div>
</div>
</body>
</html>

3.4 CSS定位

position属性指定了元素的定位类型

  • 代码及细节
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>

<style>
.innerDiv {
width: 100px;
height: 100px;
border: 1px solid blue;
}
.d1 {
background-color: greenyellow;
position: fixed;
top: 100px;
left: 100px;
}
.d2 {
background-color: rgb(173, 77, 77);

}
.d3 {
background-color: aqua;
}

/*
position 定位
static 默认定位
absolute 绝对定位
relative 相对定位 相对于元素原本的位置
fixed 相对定位 相对于浏览器窗口
left
right
top
bottom

*/
</style>

</head>
<body>
<div class="innerDiv d1">diva</div>
<div class="innerDiv d2">divb</div>
<div class="innerDiv d3">divc</div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</body>
</html>

3.5 CSS盒子模型

所有HTML元素可以看作盒子,在CSS中,”box model”这一术语是用来设计和布局时使用的。

  • CSS盒子模型本质上是一个盒子,封装周围的HTML元素,它包括:边距(margin)、边框(border)、填充(padding),和实际内容(content)

  • 代码及细节

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>

<style>
.innerDiv {
width: 100px;
height: 100px;
border: 1px solid blue;
float: left;

}
/*
padding 内边距
margin 外边距
*/
.d1 {
background-color: greenyellow;
/* margin-left: 10px;
margin-right: 10px;
margin-top: 10px;
margin-bottom: 10px;
padding-top: 20px;
padding-bottom: 20px;
padding-left: 20px;
padding-right: 20px; */
/* margin padding的用法相同
margin: 10px; 则上下左右都是10px
margin: 10px 20px; 则上下是10px,左右是20px
margin: 10px 20px 30px 40px; 按照顺时针,上右下左设置外边距*/

/* margin: 0px auto 让方框居于浏览器中间 */
}
.d2 {
background-color: rgb(173, 77, 77);

}
.d3 {
background-color: aqua;
}
</style>

</head>
<body>
<div class="innerDiv d1">diva</div>
<div class="innerDiv d2">divb</div>
<div class="innerDiv d3">divc</div>
</body>
</html>