前端笔记整理完成

This commit is contained in:
estomm
2022-04-18 23:03:54 +08:00
parent bb9110d289
commit 3d6284517e
50 changed files with 5685 additions and 15 deletions

BIN
CSS/01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
CSS/02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
CSS/03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -0,0 +1,35 @@
大多数 HTML 元素被定义为**块级元素**或**内联元素**。
### 10. 块级元素
块级元素在浏览器显示时,通常会以新行来开始(和结束)。
我们已经学习过的块级元素有: `<h1>`, `<p>`, `<ul>`, `<table>` 等。
> **值得注意的是:** `<p>` 标签中不能包含任何块级元素。
## `<div>` 元素
`<div>` 元素是块级元素,它可用于组合其他 HTML 元素的容器。
`<div>` 元素没有特定的含义。除此之外,由于它属于块级元素,浏览器会在其前后显示折行。
如果与 CSS 一同使用,`<div>` 元素可用于对大的内容块设置样式属性。
`<div>` 元素的另一个常见的用途是文档布局。
> **值得注意的是:** `<div>` 取代了使用表格定义布局的老式方法。
## 内联元素
内联元素在显示时通常不会以新行开始。
我们已经学习过的内联元素有: `<td>`, `<a>`, `<img>` 等。
> **值得注意的是:** `<a>` 标签中不能包含 `<a>` 标签,但可以包含其他任何元素。
## `<span>` 元素
`<span>` 元素是内联元素,可用作文本的容器。`<span>` 元素也没有特定的含义。
当与 CSS 一同使用时,`<span>` 元素可用于为部分文本设置样式属性。

430
CSS/box-model.md Normal file
View File

@@ -0,0 +1,430 @@
## 什么是盒子模型
盒子模型,也可以称为框模型。
所有 HTML 元素可以看作盒子。在 CSS 中,"box model" 这一术语是用来设计和布局时使用。
CSS 盒模型本质上是一个盒子,封装周围的 HTML 元素,它包括:边距,边框,填充,和实际内容。
![](01.png)
不同部分的说明:
- Margin外边距: 清除边框区域。Margin没有背景颜色它是完全透明。
- Border边框: 边框周围的填充和内容。边框是受到盒子的背景颜色影响。
- Padding内边距: 清除内容周围的区域。会受到框中填充的背景颜色影响。
- Content内容: 盒子的内容,显示文本和图像。
为了在所有浏览器中的元素的宽度和高度设置正确的话,你需要知道的盒模型是如何工作的。
### 元素的宽度和高度
下面的例子中的元素的总宽度为 300px:
```css
width:250px;
padding:10px;
border:5px solid gray;
margin:10px;
```
完整的 HTML 代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
div.ex
{
width:220px;
padding:10px;
border:5px solid gray;
margin:0px;
}
</style>
</head>
<body>
<div class="ex">The picture above is 250px wide.
The total width of this element is also 250px.</div>
</body>
</html>
```
上述示例运行的结果如下:
![](02.png)
> **值得注意的是:** 当指定一个 CSS 元素的宽度和高度属性时,只是设置内容区域的宽度和高度。要知道,完全大小的元素,还必须添加填充,边框和边距。
## 边框
CSS 边框属性允许指定一个元素边框的样式和颜色。
CSS 边框属性常见如下:
- border-width: 设置边框的宽度
- border-color: 设置边框的颜色
- border-style: 边框的样式
### 设置边框的宽度
如果设置一个值,则同时设置边框的四个方向的宽度。如下代码:
```css
border-width: 10px;
```
上述代码则表示同时四个方向的边框宽度为 10px。
如果设置两个值,则第一个值表示设置边框的上下方向宽度,第二个值表示设置边框的左右方向宽度。
```css
border-width: 10px 20px;
```
如果设置三个值,则第一个值表示设置边框的上边宽度,第二个值表示设置边框的左右方向宽度,第三个值表示设置边框的下边宽度。
```css
border-width: 10px 20px 30px;
```
如果设置四个值,则分别表示设置上、右、下和左四个方向的边框宽度。
```css
border-width: 10px 20px 30px 40px;
```
除了上述方式设置边框宽度CSS 还提供如下方式分别设置上、右、下和左边框的宽度。
| 属性名称 | 描述 |
| --- | --- |
| border-top-width | 设置一个元素的顶部边框的宽度。|
| border-right-width | 设置一个元素的右边框的宽度。|
| border-bottom-width | 设置一个元素的底部边框的宽度。|
| border-left-width | 设置一个元素的左边框的宽度。|
### 设置边框的颜色
如果设置一个值,则同时设置边框的四个方向的颜色。如下代码:
```css
border-color: red;
```
上述代码则表示同时四个方向的边框颜色为 red。
如果设置两个值,则第一个值表示设置边框的上下方向颜色,第二个值表示设置边框的左右方向颜色。
```css
border-color: red orange;
```
如果设置三个值,则第一个值表示设置边框的上边颜色,第二个值表示设置边框的左右方向颜色,第三个值表示设置边框的下边颜色。
```css
border-color: red orange yellow;
```
如果设置四个值,则分别表示设置上、右、下和左四个方向的边框颜色。
```css
border-color: red orange yellow blue;
```
除了上述方式设置边框颜色CSS 还提供如下方式分别设置上、右、下和左边框的颜色。
| 属性名称 | 描述 |
| --- | --- |
| border-top-color | 设置一个元素的顶部边框的颜色。|
| border-right-color | 设置一个元素的右边框的颜色。|
| border-bottom-color | 设置一个元素的底部边框的颜色。|
| border-left-color | 设置一个元素的左边框的颜色。|
### 设置边框的样式
边框样式的常用备选想如下:
| 边框样式 | 描述 |
| --- | --- |
| none | 定义无边框。|
| hidden | 与 "none" 相同。不过应用于表时除外对于表hidden 用于解决边框冲突。|
| dotted | 定义点状边框。在大多数浏览器中呈现为实线。|
| dashed | 定义虚线。在大多数浏览器中呈现为实线。|
| solid | 定义实线。|
| double | 定义双线。双线的宽度等于 border-width 的值。|
| inherit | 规定应该从父元素继承边框样式。|
如果设置一个值,则同时设置边框的四个方向的样式。如下代码:
```css
border-style: dotted;
```
如果设置两个值,则第一个值表示设置边框的上下方向样式,第二个值表示设置边框的左右方向样式。
```css
border-style: dotted solid;
```
如果设置三个值,则第一个值表示设置边框的上边样式,第二个值表示设置边框的左右方向样式,第三个值表示设置边框的下边样式。
```css
border-style: dotted solid dashed;
```
如果设置四个值,则分别表示设置上、右、下和左四个方向的边框样式。
```css
border-style: dotted solid dashed double;
```
除了上述方式设置边框样式CSS 还提供如下方式分别设置上、右、下和左边框的样式。
| 属性名称 | 描述 |
| --- | --- |
| border-top-style | 设置一个元素的顶部边框的样式。|
| border-right-style | 设置一个元素的右边框的样式。|
| border-bottom-style | 设置一个元素的底部边框的样式。|
| border-left-style | 设置一个元素的左边框的样式。|
### 简写设置边框
CSS 提供了 `border` 属性允许同时设置边框的宽度、颜色和样式。
```css
border: 5px solid red;
```
> **值得注意的是:** 设置的顺序没有明确要求。
除了上述方式设置边框CSS 还提供如下方式分别设置上、右、下和左边框。
| 属性名称 | 描述 |
| --- | --- |
| border-top| 设置一个元素的顶部边框。|
| border-right| 设置一个元素的右边框。|
| border-bottom| 设置一个元素的底部边框。|
| border-left| 设置一个元素的左边框。|
## 内边距
CSS Padding内边距属性定义元素边框与元素内容之间的距离。
如果设置一个值,则同时设置内边距的四个方向。如下代码:
```css
padding: 25px;
```
如果设置两个值,则第一个值表示设置内边距的上下方向,第二个值表示设置内边距的左右方向。
```css
padding: 25px 50px;
```
如果设置三个值,则第一个值表示设置内边距的上边,第二个值表示设置内边距的左右方向,第三个值表示设置内边距的下边。
```css
padding: 25px 50px 75px;
```
如果设置四个值,则分别表示设置上、右、下和左四个方向的内边距。
```css
padding: 25px 50px 75px 100px;
```
除了上述方式设置内边距CSS 还提供如下方式分别设置上、右、下和左边的内边距。
| 属性名称 | 描述 |
| --- | --- |
| padding-top| 设置一个元素的顶部内边距。|
| padding-right| 设置一个元素的右边内边距。|
| padding-bottom| 设置一个元素的底部内边距。|
| padding-left| 设置一个元素的左边内边距。|
## 外边距
CSS Margin外边距属性定义元素周围的距离。
外边距不会影响元素的可见大小,但是会影响元素的位置。
| 属性名称 | 描述 |
| --- | --- |
| margin-top | 设置元素的上外边距。|
| margin-right | 设置元素的右外边距。|
| margin-left | 设置元素的左外边距。|
| margin-bottom | 设置元素的下外边距。|
### 设置上和左外边距
```css
margin-top: 100px;
margin-left: 50px;
```
由于元素在 HTML 页面中默认是靠左靠上显示的。所以默认情况下,修改左外边距和上外边距时,会影响当前元素的位置。
### 设置下和右外边距
```css
margin-bottom: 100px;
margin-right: 50px;
```
修改右和下外边距时会影响其他元素相对于当前元素的位置。
### 简写设置外边距
如果设置一个值,则同时设置外边距的四个方向。如下代码:
```css
margin: 25px;
```
如果设置两个值,则第一个值表示设置外边距的上下方向,第二个值表示设置外边距的左右方向。
```css
margin: 25px 50px;
```
如果设置三个值,则第一个值表示设置外边距的上边,第二个值表示设置外边距的左右方向,第三个值表示设置外边距的下边。
```css
margin: 25px 50px 75px;
```
如果设置四个值,则分别表示设置上、右、下和左四个方向的外边距。
```css
margin: 25px 50px 75px 100px;
```
### 外边距重叠
当同时为两个相邻的 `<div>` 标签设置外边距,为第一个 `<div>` 标签设置下外边距,为第二个 `<div>` 标签设置上外边距。具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.box1{
width: 100px;
height: 100px;
background-color: red;
/*为上边的元素设置一个下外边距*/
margin-bottom: 100px;
}
.box2{
width: 100px;
height: 100px;
background-color: blue;
/*为下边的元素设置一个上外边距*/
margin-top: 100px;
}
</style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
</body>
</html>
```
上述示例代码,最终运行的结果是: 两个 `<div>` 之间的距离为 100px。
垂直方向的相邻的外边距会发生外边距的重叠现象,兄弟元素的相邻外边距会取最大值。
> **值得注意的是:** 外边距的重叠现象只会出现在垂直方向,而水平方向并不存在外边距重叠现象。
如果定义两个 `<div>` 标签是父子关系的话,当为作为子元素的 `<div>` 设置上外边距,该上外边距会传递给作为父元素的 `<div>`。具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.box3{
width: 300px;
height: 200px;
background-color: skyblue;
}
.box4{
width: 100px;
height: 100px;
background-color: red;
/*设置一个margin-top*/
margin-top: 100px;
}
</style>
</head>
<body>
<div class="box3">
<div class="box4"></div>
</div>
</body>
</html>
```
上述外边距的重叠现象,可以通过为作为父元素的 `<div>` 下内边距解决。
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.box3{
width: 300px;
height: 100px;
background-color: skyblue;
padding-top: 100px;
}
.box4{
width: 100px;
height: 100px;
background-color: red;
}
</style>
</head>
<body>
<div class="box3">
<div class="box4"></div>
</div>
</body>
</html>
```
## 内联元素的盒子模型
### 内联元素的宽度和高度
内联元素不支持设置宽和高,内联元素元素的大小由内容决定。
### 内联元素的内边距
- 内联元素支持水平方向的内边距。
- 内联元素可以设置垂直方向的内边距,但是不会影响布局。
### 内联元素的边框
- 内联元素支持水平方向的边框。
- 内联元素可以设置垂直方向的边框,但是不会影响布局。
### 内联元素的外边距
内联元素支持水平方向的外边距 , 不支持垂直方向的外边距。

72
CSS/css-grammar.md Normal file
View File

@@ -0,0 +1,72 @@
## 语法格式
```css
选择器 { : ; : ;...}
```
语法特点:
- CSS声明总是以键值对(key\value)形式存在。
- CSS声明总是以分号(;)结束。
- 声明组以大括号({})括起来。
- 为了让CSS可读性更强每行只描述一个属性。
## CSS 注释
注释是用来解释你的代码并且可以随意编辑它浏览器会忽略它。CSS注释以 `/*` 开始, 以 `*/` 结束。
```html
<style type="text/css">
/* 这是一个注释 */
div {
/* 这是另一个注释 */
color : red;
}
</style>
```
## 值得注意的问题
### 值的不同写法和单位
例如在设置字体颜色时,以下几种方式效果相同。
- 第一种方式
```css
#show1 {color : red;}
```
- 第二种方式
```css
#show2 {color : #ff0000;}
```
像上面这种使用十六进制设置颜色时,如果两两相同,可以写成如下格式:
```css
#show2 {color : #f00;}
```
- 第三种方式
```css
#show3 {color : rgb(255,0,0);}
```
上面的格式还可以写成如下格式:
```css
#show3 {color : rgb(100%,0%,0%);}
```
> **值得注意的是:** 当使用 RGB 百分比时,即使当值为 0 时也要写百分比符号。但是在其他的情况下就不需要这么做了。
### 值为若干单词,记得写引号
```css
div {font-family : Courier, "Courier New", monospace;}
```
### 多重声明

20
CSS/css-introduce.md Normal file
View File

@@ -0,0 +1,20 @@
## 什么是 CSS
CSS全称为Cascading Style Sheets译为层叠样式表。样式定义如何显示HTML元素。样式通常存储在样式表中。
CSS 是能够真正做到网页表现与内容分离的一种样式设计语言。相对于传统 HTML 的表现而言CSS 能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的表现设计语言。
## 发展历史
从 1990 年代初 HTML 被发明开始,样式表就以各种形式出现了,不同的浏览器结合了它们各自的样式语言,读者可以使用这些样式语言来调节网页的显示方式。一开始样式表是给读者用的,最初的 HTML 版本只含有很少的显示属性,读者来决定网页应该怎样被显示。
但随着 HTML 的成长为了满足设计师的要求HTML获得了很多显示功能。随着这些功能的增加外来定义样式的语言越来越没有意义了。
1994 年哈坤·利提出了 CSS 的最初建议。伯特·波斯Bert Bos当时正在设计一个叫做“Argo”的浏览器他们决定一起合作设计 CSS。
当时已经有过一些样式表语言的建议了,但 CSS 是第一个含有“层叠”的主意的。在 CSS 中,一个文件的样式可以从其他的样式表中继承下来。读者在有些地方可以使用他自己更喜欢的样式,在其他地方则继承,或“层叠”作者的样式。这种层叠的方式使作者和读者都可以灵活地加入自己的设计,混合各人的爱好。
哈坤于 1994 年在芝加哥的一次会议上第一次展示了 CSS 的建议1995 年他与波斯一起再次展示这个建议。当时 W3C 刚刚创建W3C 对 CSS 的发展很感兴趣它为此组织了一次讨论会。哈坤、波斯和其他一些人比如微软的托马斯·雷尔登是这个项目的主要技术负责人。1996 年底CSS 已经完成。1996 年 12 月 CSS 要求的第一版本被出版。
1997 年初W3C 内组织了专门管 CSS 的工作组,其负责人是克里斯·里雷。这个工作组开始讨论第一版中没有涉及到的问题,其结果是 1998 年 5 月出版的第二版要求。到 2007 年为止,第三版还未完备。

42
CSS/css-pseudo-class.md Normal file
View File

@@ -0,0 +1,42 @@
CSS 伪类用于向某些选择器添加特殊的效果。
| 属性 | 描述 |
| --- | --- |
| :active | 向被激活的元素添加样式。|
| :focus | 向拥有键盘输入焦点的元素添加样式。|
| :hover | 当鼠标悬浮在元素上方时,向元素添加样式。|
| :link | 向未被访问的链接添加样式。|
| :visited | 向已被访问的链接添加样式。|
| :first-child | 向元素的第一个子元素添加样式。|
## 锚伪类
```css
a:link {color: #FF0000} /* 未访问的链接 */
a:visited {color: #00FF00} /* 已访问的链接 */
a:hover {color: #FF00FF} /* 鼠标移动到链接上 */
a:active {color: #0000FF} /* 选定的链接 */
```
## :first-child伪类
```css
p:first-child {font-weight: bold;}
```
## 选择器的优先级
在实际开发中,经常会为同一个标签设置多个样式。使用不同方式的选择器,由于其优先级不同,导致最终的效果也会不同。
选择器的优先级,具体如下:
- 内联样式的优先级为 1000
- ID 选择器的优先级为 100
- 类选择器的优先级为 10
- 元素选择器的优先级为 1
- 通配符选择器的优先级为 0
- 继承的样式没有任何优先级
> **值得注意的是:**
>
> - 当一个样式中包含多个选择器时,需要将所有的选择器的优先级进行相加。

126
CSS/css-selector.md Normal file
View File

@@ -0,0 +1,126 @@
## 元素选择器
元素选择器就是通过 HTML 页面的元素名称来设置 CSS 样式。具体语法如下:
```css
元素名称 { : ; }
```
示例代码:
```css
div {color : red; }
```
## 类选择器
类选择器就是通过 HTML 元素的 class 属性值来设置 CSS 样式。具体语法如下:
```css
.class属性值 { : ; }
```
示例代码:
```css
.myDiv {color : red; }
```
## ID选择器
ID选择器就是通过 HTML 元素的 id 属性值来设置 CSS 样式。具体语法如下:
```css
#id属性值 { : ; }
```
示例代码:
```css
#show1 {color : red; }
```
## 属性选择器
属性选择器就是通过 HTML 元素的属性名称来设置 CSS 样式。具体语法如下:
```css
[属性名称] { : ; }
```
示例代码:
```css
[name] {color : red; }
```
| 选择器 | 描述 |
| --- | --- |
| [attribute] | 用于选取带有指定属性的元素。|
| [attribute=value] | 用于选取带有指定属性和值的元素。|
| [attribute~=value] | 用于选取属性值中包含指定词汇的元素。|
| [attribute^=value] | 匹配属性值以指定值开头的每个元素。|
| [attribute$=value] | 匹配属性值以指定值结尾的每个元素。|
| [attribute*=value] | 匹配属性值中包含指定值的每个元素。|
## 后代选择器
后代选择器就是设置 HTML 页面的指定元素的后代元素(中间使用空格)的 CSS 样式。具体语法如下:
```css
祖先元素 后代元素 { : ; }
```
示例代码:
```css
div em {color : red; }
```
## 子元素选择器
子选择器就是设置 HTML 页面的指定元素的子元素的 CSS 样式。具体语法如下:
```css
祖先元素 > 子元素{ : ; }
```
示例代码:
```css
div > em {color : red; }
```
## 相邻元素选择器
相邻元素选择器就是设置 HTML 页面的指定元素的下一个兄弟元素的 CSS 样式。具体语法如下:
```css
指定元素 + 兄弟元素 { : ; }
```
示例代码:
```css
div + div {color : red; }
```
## 其他内容
### 选择器分组
选择器分组就是将不同选择器相同声明的内容“压缩”在一起,得到更简洁的样式表。
```css
/* no grouping */
h1 {color:blue;}
h2 {color:blue;}
h3 {color:blue;}
h4 {color:blue;}
h5 {color:blue;}
h6 {color:blue;}
/* grouping */
h1, h2, h3, h4, h5, h6 {color:blue;}
```

191
CSS/display-and-hidden.md Normal file
View File

@@ -0,0 +1,191 @@
CSS 中的 display 和 visibility 都可以设置一个元素在浏览器中的显示或隐藏效果。
- display: 隐藏某个元素时,不会占用任何空间。换句话讲,不会影响布局。
- visibility: 隐藏某个元素时,仍需占用与未隐藏之前一样的空间。换句话讲,会影响布局。
## display 属性
| 属性值 | 描述 |
| --- | --- |
| none | 此元素不会被显示。|
当将一个元素的 CSS 属性 display 设置为 none 时,该元素会被隐藏。并且被隐藏的元素不会占用 HTML 页面的任何空间。
在 HTML 页面中定义两个 `<div>` 标签,并设置 CSS 样式,具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#d1 {
width: 300px;
height: 300px;
background-color: lightskyblue;
}
#d2 {
width: 300px;
height: 300px;
background-color: green;
}
</style>
</head>
<body>
<div id="d1"></div>
<div id="d2"></div>
</body>
</html>
```
当为第一个 `<div>` 标签设置 display 属性值为 none 时,该 `<div>` 标签会被隐藏。
| 属性值 | 描述 |
| --- | --- |
| block | 此元素将显示为块级元素。|
该值主要作用于**内联元素**。如果将内联元素的 CSS 属性 display 设置为 block 时,该内联元素将在浏览器中显示成块级元素效果。
在 HTML 页面中定义两个 `<div>` 标签,并设置 CSS 样式,具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#s1 {
width: 300px;
height: 300px;
background-color: lightskyblue;
}
#s2 {
width: 300px;
height: 300px;
background-color: green;
}
</style>
</head>
<body>
<span id="s1">这是一个span</span>
<span id="s2">这是一个span</span>
</body>
</html>
```
当为第一个 `<span>` 标签设置 display 属性值为 block 时,该 `<span>` 标签会呈现块级元素效果。
| 属性值 | 描述 |
| --- | --- |
| inline | 默认值,此元素会被显示为内联元素。|
该值主要作用于**块级元素**。如果将内联元素的 CSS 属性 display 设置为 inline 时,该内联元素将在浏览器中显示成内联元素效果。
在 HTML 页面中定义两个 `<div>` 标签,并设置 CSS 样式,具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#d1 {
width: 300px;
height: 300px;
background-color: lightskyblue;
}
#d2 {
width: 300px;
height: 300px;
background-color: green;
}
</style>
</head>
<body>
<div id="d1">这是一个div</div>
<div id="d2">这是一个div</div>
</body>
</html>
```
当为第一个 `<div>` 标签设置 display 属性值为 inline 时,该 `<div>` 标签会呈现内联元素样式。
| 属性值 | 描述 |
| --- | --- |
| inline-block | 行内块元素。|
当将 CSS 属性 display 设置为 inline-block 时,该元素在浏览器中显示为内联块级效果。即每个元素呈现块级元素效果,元素之间呈现内联元素效果。
在 HTML 页面中定义两个 `<div>` 标签,并设置 CSS 样式,具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#d1 {
width: 300px;
height: 300px;
background-color: lightskyblue;
}
#d2 {
width: 300px;
height: 300px;
background-color: green;
}
</style>
</head>
<body>
<div id="d1">这是一个div</div>
<div id="d2">这是一个div</div>
</body>
</html>
```
分别为两个 `<div>` 标签设置 display 属性值为 inline-block 时,这两个 `<div>` 会显示在一行中。
### visibility 属性
visibility 属性指定一个元素是否是可见的。
> **值得注意的是:** visibility 属性设置元素不可见的元素,但会占据页面上的空间。请使用 display 属性来创建不占据页面空间的不可见元素。
| 属性值 | 描述 |
| --- | --- |
| visible | 默认值,元素是可见的。|
| hidden | 元素是不可见的。|
在 HTML 页面中定义两个 `<div>` 标签,并设置 CSS 样式,具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#d1 {
width: 300px;
height: 300px;
background-color: lightskyblue;
}
#d2 {
width: 300px;
height: 300px;
background-color: green;
}
</style>
</head>
<body>
<div id="d1">这是一个div</div>
<div id="d2">这是一个div</div>
</body>
</html>
```
当为第一个 `<div>` 标签设置 visibility 属性值为 hidden 时,该 `<div>` 会被隐藏。

219
CSS/float.md Normal file
View File

@@ -0,0 +1,219 @@
## 文档流
将窗体自上而下分成一行一行,并在每行中按从左至右的挨次排放元素,即为文档流。
文档流是 HTML 页面的底层结构HTML 页面创建的元素默认都在文档流中。
- 块级元素
- 块级元素在文档流中自上向下排列(垂直方向排列)
- 块级元素在文档流中默认的宽度是父元素的100%
- 块级元素在文档流中默认的高度被是所有子元素的高度总和
- 内联元素
- 内联元素在文档流中自左向右水平排列(水平方向排列)
- 内联元素的宽度和高度都由内容确定
> **值得注意的是:** 如果在一行中不能容纳所有的元素,则会换到下一行,继续自左向右排列。
有三种状况将使得元素离开文档流而存在,分别是浮动、绝对定位、固定定位。
> **值得注意的是:** 在 IE 浏览器中浮动元素也存在于文档流中。
## 浮动
CSS 的 Float浮动会使元素脱离文档流向左或向右移动。其他元素会被重新排列。
Float浮动往往是用于图像但它在布局时一样非常有用。
| 属性值 | 描述 |
| --- | --- |
| none | 默认值。元素不浮动。|
| left | 元素向左浮动。|
| right | 元素向右浮动。|
设置元素浮动效果时,以下四种情况比较特殊:
- 子元素只能在父元素的区域中进行浮动(子元素浮动不能超出父元素的范围)。
在 HTML 页面中定义两个 `<div>` 标签为父子元素,并设置 CSS 样式,具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#d1 {
height: 300px;
background-color: lightskyblue;
}
#d2 {
width: 50px;
height: 50px;
background-color: green;
}
</style>
</head>
<body>
<div id="d1">
<div id="d2"></div>
</div>
</body>
</html>
```
当为子元素 `<div>` 标签设置 float 属性值为 right 时,该 `<div>` 为浮动效果。
- 兄弟元素同时设置相同浮动效果时,会进行自动排列。
在 HTML 页面中定义两个 `<div>` 标签为兄弟元素,并设置 CSS 样式,具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#d1 {
width: 300px;
height: 300px;
background-color: lightskyblue;
}
#d2 {
width: 300px;
height: 300px;
background-color: green;
}
</style>
</head>
<body>
<div id="d1"></div>
<div id="d2"></div>
</body>
</html>
```
当同时为两个 `<div>` 标签设置 float 属性值为 left 时,这两个 `<div>` 为浮动效果。
- 如果兄弟元素中,前一个兄弟元素没有设置浮动,而后一个兄弟元素设置浮动的话,后一个兄弟元素的浮动不能超过前一个兄弟元素。
在 HTML 页面中定义两个 `<div>` 标签为兄弟元素,并设置 CSS 样式,具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#d1 {
width: 300px;
height: 300px;
background-color: lightskyblue;
}
#d2 {
width: 300px;
height: 300px;
background-color: green;
}
</style>
</head>
<body>
<div id="d1"></div>
<div id="d2"></div>
</body>
</html>
```
当为第二个 `<div>` 标签设置 float 属性值为 right 时,该 `<div>` 为浮动效果。
> **值得注意的是:** 所有浮动元素的层级要高于文档流中的元素的层级。但文字是个例外,文字不会被浮动元素所覆盖,而是环绕在浮动元素的周围。
### 块级元素浮动
块级元素设置浮动之后,会从文档流中脱离,并且具有以下特点:
- 块级元素不会独占 HTML 页面的一行。换句话讲,多个块级元素可以处在一行。
- 块级元素的宽度和高度等于所有后代元素的总和。
### 内联元素浮动
内联元素设置浮动之后,也会从文档流中脱离,并且会呈现块级元素的效果。特点也与设置浮动的块级元素相同。
### 清除浮动
clear 属性指定元素的左侧或右侧不允许浮动的元素。
| 属性值 | 描述 |
| --- | --- |
| none | 默认值。允许浮动元素出现在两侧。|
| left | 在左侧不允许浮动元素。|
| right | 在右侧不允许浮动元素。|
| both | 在左右两侧均不允许浮动元素。|
## 高度塌陷
在 HTML 页面中定义两个 `<div>` 标签为父子元素,并设置 CSS 样式,具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#d1 {
border: 10px black solid;
background-color: lightskyblue;
}
#d2 {
width: 300px;
height: 300px;
background-color: green;
}
</style>
</head>
<body>
<div id="d1">
<div id="d2"></div>
</div>
</body>
</html>
```
上述 HTML 页面运行的效果如下:
![](img/15.png)
为作为子元素 `<div>` 设置 float 属性值为 left 时,该 `<div>` 为浮动效果。
![](img/16.png)
由于并没有为作为父元素的 `<div>` 设置高度,作为父元素的 `<div>` 实际的高度与作为子元素的 `<div>` 的高度相等。
但作为子元素的 `<div>` 设置浮动后,脱离了文档流,导致作为父元素的 `<div>` 没有了高度。
现在所看到的效果,就被称为**高度塌陷**。
> 所谓**高度塌陷**,就是指在没有为父元素设置指定高度,并且设置子元素为浮动时,父元素的高度丢失的情况。
高度塌陷的问题,可以通过 BFCBlock Formatting Context块级格式化环境进行解决。
### BFC 块级格式化环境
BFCBlock Formatting Context是元素的隐含属性。默认情况下 BFC 是关闭的,当元素开启 BFC 以后,将会具有如下特性:
- 文档流中的元素不会被设置为浮动的元素所覆盖。
- 子元素的垂直方向的外边距不会传递给父元素。
- 元素可以包含浮动的子元素。
当然,并不能直接去开启 BFC而需要使用一些特殊的样式来间接的打开元素的 BFC。
- 设置元素为浮动float
- 设置元素的 display 为 inline-block
- 设置元素为绝对定位(后面的内容)
- 将元素的 overflow 设置为一个非 visible 的值(一般设置为 hidden
- 在所有子元素的最后新增一个子元素,并设置 clear 属性值为 both
> **值得注意的是:** 开启 BFC 都会有一些副作用,需要选择一些副作用小的方式。

41
CSS/how-use-css.md Normal file
View File

@@ -0,0 +1,41 @@
## 第一种内联样式
通过HTML元素的style属性来设置CSS样式语法如下:
```html
style="css属性:css属性值;"
```
示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>01_第一种使用方式.html</title>
</head>
<body>
<!-- style="css属性:css属性值;" -->
<div style="color:red;" >atguigu</div>
</body>
</html>
```
## 第二种内联样式
通过HTML页面的style元素来设置CSS样式语法如下:
```html
<style type="text/css">
选择器 {
: ;
}
</style>
```
示例代码:
```html
<!DOCTYPE html>
<html>
<head>

92
CSS/overflow-attribute.md Normal file
View File

@@ -0,0 +1,92 @@
overflow 属性用于设置当元素中的内容溢出后的情况。
> **值得注意的是:** 所谓溢出,是指子元素的大小(包括文本、元素或图片等)超出父元素的区域,会有一部分内容显示在父元素所在的区域外。
| 属性值 | 描述 |
| --- | --- |
| visible | 默认值。内容不会被修剪,会呈现在元素框之外。|
| hidden | 内容会被修剪,并且其余内容是不可见的。|
上述两个值,要么设置溢出的内容默认显示在父元素的区域之外,要么设置溢出的内容隐藏不可见。这两种结果都是很好的效果。所以,在实际开发中,很少使用这两个值。
在 HTML 页面中定义一个 `<div>` 标签,设置 CSS 样式,并设置较多的文本内容,具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
div {
width: 300px;
height: 300px;
background-color: lightskyblue;
}
</style>
</head>
<body>
<div>
在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也是枣树。
这上面的夜的天空,奇怪而高,我生平没有见过这样奇怪而高的天空。他仿佛要离开人间而去,使人们仰面不再看见。然而现在却非常之蓝,闪闪地䀹着几十个星星的眼,冷眼。他的口角上现出微笑,似乎自以为大有深意,而将繁霜洒在我的园里的野花草上。
我不知道那些花草真叫什么名字,人们叫他们什么名字。我记得有一种开过极细小的粉红花,现在还开着,但是更极细小了,她在冷的夜气中,瑟缩地做梦,梦见春的到来,梦见秋的到来,梦见瘦的诗人将眼泪擦在她最末的花瓣上,告诉她秋虽然来,冬虽然来,而此后接着还是春,蝴蝶乱飞,蜜蜂都唱起春词来了。她于是一笑,虽然颜色冻得红惨惨地,仍然瑟缩着。
枣树,他们简直落尽了叶子。先前,还有一两个孩子来打他们,别人打剩的枣子,现在是一个也不剩了,连叶子也落尽了。他知道小粉红花的梦,秋后要有春;他也知道落叶的梦,春后还是秋。他简直落尽叶子,单剩干子,然而脱了当初满树是果实和叶子时候的弧形,欠伸得很舒服。但是,有几枝还低亚着,护定他从打枣的竿梢所得的皮伤,而最直最长的几枝,却已默默地铁似的直刺着奇怪而高的天空,使天空闪闪地鬼䀹眼;直刺着天空中圆满的月亮,使月亮窘得发白。
鬼䀹眼的天空越加非常之蓝,不安了,仿佛想离去人间,避开枣树,只将月亮剩下。然而月亮也暗暗地躲到东边去了。而一无所有的干子,却仍然默默地铁似的直刺着奇怪而高的天空,一意要制他的死命,不管他各式各样地䀹着许多蛊惑的眼睛。
哇的一声,夜游的恶鸟飞过了。
我忽而听到夜半的笑声,吃吃地,似乎不愿意惊动睡着的人,然而四围的空气都应和着笑。夜半,没有别的人,我即刻听出这声音就在我嘴里,我也即刻被这笑声所驱逐,回进自己的房。灯火的带子也即刻被我旋高了。
后窗的玻璃上丁丁地响,还有许多小飞虫乱撞。不多久,几个进来了,许是从窗纸的破孔进来的。他们一进来,又在玻璃的灯罩上撞得丁丁地响。一个从上面撞进去了,他于是遇到火,而且我以为这火是真的。两三个却休息在灯的纸罩上喘气。那罩是昨晚新换的罩,雪白的纸,折出波浪纹的叠痕,一角还画出一枝猩红色的栀子。
猩红的栀子开花时,枣树又要做小粉红花的梦,青葱地弯成弧形了……我又听到夜半的笑声;我赶紧砍断我的心绪,看那老在白纸罩上的小青虫,头大尾小,向日葵子似的,只有半粒小麦那么大,遍身的颜色苍翠得可爱,可怜。
我打一个呵欠,点起一支纸烟,喷出烟来,对着灯默默地敬奠这些苍翠精致的英雄们。
一九二四年九月十五日。
</div>
</body>
</html>
```
当为第一个 `<div>` 标签设置 overflow 属性值为 hidden 时,该 `<div>` 中的溢出文本内容会被隐藏。
| 属性值 | 描述 |
| --- | --- |
| scroll | 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。|
| auto | 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。|
在 HTML 页面中定义一个 `<div>` 标签,设置 CSS 样式,并设置较多的文本内容,具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
div {
width: 300px;
height: 300px;
background-color: lightskyblue;
}
</style>
</head>
<body>
<div>
在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也是枣树。
这上面的夜的天空,奇怪而高,我生平没有见过这样奇怪而高的天空。他仿佛要离开人间而去,使人们仰面不再看见。然而现在却非常之蓝,闪闪地䀹着几十个星星的眼,冷眼。他的口角上现出微笑,似乎自以为大有深意,而将繁霜洒在我的园里的野花草上。
我不知道那些花草真叫什么名字,人们叫他们什么名字。我记得有一种开过极细小的粉红花,现在还开着,但是更极细小了,她在冷的夜气中,瑟缩地做梦,梦见春的到来,梦见秋的到来,梦见瘦的诗人将眼泪擦在她最末的花瓣上,告诉她秋虽然来,冬虽然来,而此后接着还是春,蝴蝶乱飞,蜜蜂都唱起春词来了。她于是一笑,虽然颜色冻得红惨惨地,仍然瑟缩着。
枣树,他们简直落尽了叶子。先前,还有一两个孩子来打他们,别人打剩的枣子,现在是一个也不剩了,连叶子也落尽了。他知道小粉红花的梦,秋后要有春;他也知道落叶的梦,春后还是秋。他简直落尽叶子,单剩干子,然而脱了当初满树是果实和叶子时候的弧形,欠伸得很舒服。但是,有几枝还低亚着,护定他从打枣的竿梢所得的皮伤,而最直最长的几枝,却已默默地铁似的直刺着奇怪而高的天空,使天空闪闪地鬼䀹眼;直刺着天空中圆满的月亮,使月亮窘得发白。
鬼䀹眼的天空越加非常之蓝,不安了,仿佛想离去人间,避开枣树,只将月亮剩下。然而月亮也暗暗地躲到东边去了。而一无所有的干子,却仍然默默地铁似的直刺着奇怪而高的天空,一意要制他的死命,不管他各式各样地䀹着许多蛊惑的眼睛。
哇的一声,夜游的恶鸟飞过了。
我忽而听到夜半的笑声,吃吃地,似乎不愿意惊动睡着的人,然而四围的空气都应和着笑。夜半,没有别的人,我即刻听出这声音就在我嘴里,我也即刻被这笑声所驱逐,回进自己的房。灯火的带子也即刻被我旋高了。
后窗的玻璃上丁丁地响,还有许多小飞虫乱撞。不多久,几个进来了,许是从窗纸的破孔进来的。他们一进来,又在玻璃的灯罩上撞得丁丁地响。一个从上面撞进去了,他于是遇到火,而且我以为这火是真的。两三个却休息在灯的纸罩上喘气。那罩是昨晚新换的罩,雪白的纸,折出波浪纹的叠痕,一角还画出一枝猩红色的栀子。
猩红的栀子开花时,枣树又要做小粉红花的梦,青葱地弯成弧形了……我又听到夜半的笑声;我赶紧砍断我的心绪,看那老在白纸罩上的小青虫,头大尾小,向日葵子似的,只有半粒小麦那么大,遍身的颜色苍翠得可爱,可怜。
我打一个呵欠,点起一支纸烟,喷出烟来,对着灯默默地敬奠这些苍翠精致的英雄们。
一九二四年九月十五日。
</div>
</body>
</html>
```
当为第一个 `<div>` 标签设置 overflow 属性值为 scroll 时,该 `<div>` 中的溢出文本内容会显示滚动条。
上述两个值,当有溢出的内容出现时,都会显示滚动条以便查看其余的内容。但不同是:
- scroll: 无论是否有溢出的内容,始终显示滚动条。
- auto: 当有溢出的内容出现时,才显示滚动条。如果没有溢出的内容时,会自动隐藏滚动条。

217
CSS/position.md Normal file
View File

@@ -0,0 +1,217 @@
CSS 的 position 定位属性允许自定义元素在 HTML 页面的位置,但需要先开启元素在 HTML 页面中的定位。
> **值得注意的是:** 元素在 HTML 页面中默认是不开启定位的。
CSS 定位属性提供了四种方式的定位效果:
- static: 默认值,表示元素为静态定位。
- absolute: 表示元素为绝对定位。
- fixed: 表示元素为固定定位。
- relative: 表示元素为相对定位。
当设置元素的 position 定位属性为**非默认值**时CSS 提供了上、右、下和左四个方向的偏移量完成元素的位置设置。
- top: 表示当前元素到上边的距离。
- right: 表示当前元素到右边的距离。
- bottom: 表示当前元素到下边的距离。
- left: 表示当前元素到左边的距离。
![](03.png)
## 绝对定位
| 属性值 | 描述 |
| --- | --- |
| absolute | 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。|
> 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
元素开启绝对定位后,与浮动效果类似:
- 元素会脱离文档流。
- 元素会呈现块级元素效果。
- 如果不设置偏移量,元素的位置不会发生变化。
### 如果元素的父元素是 `<body>` 的话,绝对定位会相对于当前页面
在 HTML 页面中定义两个 `<div>` 标签,并且为相邻的兄弟元素,并设置其 CSS 样式,具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#d1 {
width: 300px;
height: 300px;
background-color: lightskyblue;
}
#d2 {
width: 300px;
height: 300px;
background-color: green;
}
</style>
</head>
<body>
<div id="d1"></div>
<div id="d2"></div>
</body>
</html>
```
为第二个 `<div>` 元素开启绝对定位,并设置偏移量,具体代码如下:
```css
position: absolute;
left: 0px;
top: 0px;
```
> **值得注意的是:** 如果开启绝对定位的元素的父元素并不是 `<body>` 标签,但父元素没有开启任何定位的话,开启绝对定位的元素还是相对于当前页面。
### 如果元素的父元素不是 `<body>` 标签,并且开启定位的话,绝对定位会相对于父元素
在 HTML 页面中定义两个 `<div>` 标签,并且为父元素与子元素的关系,并设置其 CSS 样式,具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#d1 {
width: 500px;
height: 400px;
background-color: lightskyblue;
}
#d2 {
width: 300px;
height: 300px;
background-color: green;
}
</style>
</head>
<body>
<div id="d1">
<div id="d2"></div>
</div>
</body>
</html>
```
为两个 `<div>` 元素开启绝对定位,并设置偏移量,具体代码如下:
```css
#d1 {
width: 500px;
height: 400px;
background-color: lightskyblue;
position: absolute;
left: 100px;
top: 0px;
}
#d2 {
width: 300px;
height: 300px;
background-color: green;
position: absolute;
left: 100px;
top: 0px;
}
```
## 固定定位
| 属性值 | 描述 |
| --- | --- |
| fixed | 生成绝对定位的元素,相对于浏览器窗口进行定位。|
> 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
固定定位是一种特殊的绝对定位,固定定位与绝对定位的区别在于:
- 固定定位始终相对于当前页面进行定位。
- 绝对定位相对于最近的祖先元素进行定位。
例如上述效果就是固定定位的一种应用方式。实现上述效果的具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
body {
margin: 0px;
height: 2000px;
}
#d1 {
width: 100%;
height: 100px;
background-color: lightskyblue;
position: fixed;
bottom: 0px;
}
</style>
</head>
<body>
<div id="d1"></div>
</body>
</html>
```
## 相对定位
| 属性值 | 描述 |
| --- | --- |
| relative | 生成相对定位的元素,相对于其正常位置进行定位。|
> **值得注意的是:**
>
> - 开启相对定位的元素,不会脱离文档流。
> - 开启相对定位的元素,是相对于该元素在文档流中的定位效果。
> - 开启相对定位的元素,不会改变元素的性质。(块级元素呈现块级元素效果,内联元素呈现内联元素效果)
在 HTML 页面中定义两个 `<div>` 标签,并且为相邻的兄弟元素,并设置其 CSS 样式,具体代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#d1 {
width: 500px;
height: 400px;
background-color: lightskyblue;
}
#d2 {
width: 300px;
height: 300px;
background-color: green;
}
</style>
</head>
<body>
<div id="d1"></div>
<div id="d2"></div>
</body>
</html>
```
为第二个 `<div>` 元素开启相对定位,并设置偏移量,具体代码如下:
```css
position: absolute;
left: 0px;
top: 0px;
```