这是我参与「第四届青训营 」笔记创作活动的的第3天
1、浮动
1.1 浮动简介
-
通过浮动可以使一个元素向其父元素的左侧或右侧移动
使用float属性来设置元素的浮动
可选值:
none 默认值,元素不浮动
left 元素向左浮动
right 元素向右移动
-
注意:元素设置浮动以后,水平布局的等式便不必强制成立(margin-right就没了)
-
元素设置浮动后,会完全从文档流中脱离,不再占用文档流的位置
所以,元素下边的还在文档流中的元素会自动向上移动(两个div方块,如果将上方的设置了浮动,下方会移上去重叠)
-
浮动的特点:
1、浮动元素会完全脱离文档流,不再占据文档流中的位置;
2、设置浮动以后元素会向父元素的左侧或右侧移动;
3、浮动元素默认不会从父元素中移出;
4、浮动元素向左或向右移动时,不会超过它前面的其他浮动元素;
5、如果浮动元素的上边是一个没有浮动的块元素,则浮动元素无法上移;
6、浮动元素不会超过它上边的兄弟元素,最多一样高;
-
简单总结:
浮动目前来讲它主要作用就是让页面中的元素可以水平排列
通过浮动可以制作一些水平方向的布局
-
浮动元素不会盖住文字,文字会自动环绕在浮动元素周围,所以我们可以利用浮动来设置文字环绕图片的效果
-
元素设置浮动后,将会从文档流中脱离,从文档流脱离后,元素的一些特点也会发生改变
脱离文档流的特点:
1、块元素不再独占一行;
2、脱离文档流后,块元素的宽度和高度默认都被内容撑开;
3、行内元素脱离文档流以后会变成块元素,特点和块元素一样,可以设置宽高
脱离文档流后,不需要再区分块和行内了
1.2 浮动缺陷--高度塌陷
-
高度塌陷问题:
在浮动布局中,父元素的高度默认是被子元素撑开的,当子元素浮动后,其会完全脱离文档流,子元素从文档流中脱离将会无法撑起父元素的高度,导致父元素高度丢失;
-
父元素高度丢失以后,其下的元素会自动上移,导致页面的布局混乱
-
所以高度塌陷是浮动布局中比较常见的问题,这个问题我们必须要进行处理!
-
解决方案:
-
方案一:给父元素设置固定高度(能处理,但不能满足所有需要,高度少了会溢出,多了会空白)
-
方案二:BFC(Block Formatting Context)块级格式化环境
-
-
1.3 BFC Block Formatting Context
-
BFC是一个CSS中的一个隐含的属性,可以为一个元素开启BFC,开启BFC该元素会变成一个独立布局的区域;
-
元素开启BFC的特点
-
开启BFC的元素不会被浮动元素覆盖;
//上下两个div box,给上边的元素开启浮动,下边的元素就会被遮盖。如果此时给下边的元素开启BFC,则他两会并排显示,不会被遮盖
-
开启BFC的元素子元素和父元素的外边距不会重叠;
//给子元素设置margin-top,子元素和父元素会一起向下移动 ,此时给父元素开启BFC,只会移动子元素,父元素不会一起向下移动
-
开启BFC的元素可以包含浮动的子元素
-
-
可以通过一些特殊的方式来开启元素的BFC:(不能直接开启BFC 只能间接开启BFC)
-
设置元素的浮动;float:left;(缺陷:脱离文档流)不推荐 副作用大
-
将元素设置为行内块元素;display:inline-block;(缺陷: 宽度也没了)不推荐 副作用大
-
将元素的overflow设置为一个非visible值(scroll、auto、hidden)
常用方式 为元素设置 overflow:hidden; 开启其BFC 以使其可以包含浮动元素;
-