### 一. 有无浮动的呈现效果
```
<div class="parent">
<div class="one"></div>
<div class="two"></div>
</div>
```
```
.parent {
border: 1px solid black;
}
.one {
width: 100px;
height: 100px;
background: aquamarine
}
.two {
width: 200px;
height: 100px;
background: yellowgreen;
}
```
此时没有浮动时,呈现的效果如图:
![](images/float1.png)
给`div.one`加上浮动效果:
```
.one {
width: 100px;
height: 100px;
float: left;
background: aquamarine
}
```
此时显示效果:
![](images/float22.png)
此时`.one`浮动,`.two`向上占据位置,因此有100px被.one遮住
### 二. 浮动元素margin关系
1.div.one浮动后, 未浮动的`.two`的margin-left不会相对于`.one`,而是父元素,如:
```
.one {
margin-left: 20px;
}
.two {
margin-left: 130px;
}
```
![](images/float44.png)
2.而当`.two`也设置为浮动时,margin-left相对于`.one`,而不是父元素,如:
```
.two {
float: left;
margin-left: 20px;
}
```
![](images/float55.png)
此时发现,因为`.one`, `.two`都浮动了,所以div变成了一个"空"容器,只剩下边框。
3.我们再加上一个子元素`.three`, 各方面数值与`.three`一致:
```
.three {
width: 100px;
height: 100px;
background: burlywood;
}
```
此时,因为`.three`没有设置浮动,而前两个div又"浮"了起来,所以会贴着父div,如图:
![](images/float6.png)
并且.three有一部分内容被.two遮住。
那么我们现在将`three`也设置成浮动效果会发生什么呢?
```
.three {
float: left;
}
```
![](images/float7.png)
与我们猜测的一样,`.three`会贴着`.two`,并且由于三个div都浮起来, 父元素无法被撑起来,那么如何清除浮动呢,下章再见。
- 空白目录
- 1. css选择器
- 1.1 基础选择器
- 1.2 伪类
- 1.3 first-child与:first-of-type的区别
- 1.4 nth-child(:not())与nth-of-type(:not())
- 1.5 属性选择器
- 2. html标签分类&css样式继承
- 2.1 html标签分类
- 2.2 样式继承
- 2.3 font
- 3. css动画
- 1. transition
- 2. animation
- 4. 布局位置方面
- 4.1 实现图片左右垂直居中
- 4.2 父元素中第一个子元素margin-top无效问题
- 4.3 position定位
- 5. 关于浮动
- 5.1 浮动的呈现效果
- 5.2 清除浮动的三种方式
- 5.3 inline-block与block浮动的对比
- 6. 弹性布局
- 7. border
- 7.1 添加border不影响盒子大小的三种方式
- 7.2 利用border画三角形
- 8. css预处理--sass
- 8.1 变量
- 8.2 嵌套
- 8.3 导入SASS文件
- 8.4 静默注释
- 8.5 混合器@mixin
- 8.6 继承@extend
- 8.7.function
- ! element语法
- 9. grid 布局
- 10. filedset 使用
- css面试题
- 1.题目汇总
- 2.回流(重排)和重绘
- 3.浏览器渲染流程
- 4.水平垂直居中
- 5.flex布局