1.关于默认文档流
1)元素在页面中的显示顺序与元素在代码中出现的顺序是一致的。
2)块级元素独占一行空间,宽度默认为父级的100%,高度由其内容高度所决定。
3)行内元素与其他元素共享一行空间,宽高由其内容所决定。
浮动布局(如果一个元素添加float属性。那么这个元素就会成为一个浮动元素)
float
left 向左浮动
right 向右fudong
none 不浮动
inherit 浮动方式继承父元素
浮动元素的特点
1.当一个元素是浮动元素的时候,他会失去对父元素的支撑。浮动元素脱离了普通流,会出现一种高度坍塌的现象
2.浮动后的元素可以设置宽度和高度,行内元素变成了inline-block
3.浮动元素脱离了普通流,会出现一种高度坍塌的现象
清除浮动
1.给父元素添加 overflow:hidden;
2.使用伪元素 box1::after{ content:'';
display:both;
clear:both; } 伪元素
clear:both; 清除浮动元素对当前元素的影响
relative 相对定位 定位元素
1)相对的是元素原先的位置
2)不设置偏移量,元素不会发生任何变化
3)不脱离文档流(还是占据原先的位置),宽度默认100%
4)不会改变元素的性质
5)覆盖在其他元素上(z-index),相对定位会提升元素的层级
absolute 绝对定位 定位元素
1)相对的是距离它最近的开起定位的祖先元素的位置,如果没有祖先定位元素,(相对于根元素)
2)不设置偏移量,元素的位置不会发生变化
3)脱离文档流(不占据原先的位置)
4)绝对定位会改变元素的性质,行内变成块,块的宽高被内容撑开
5)绝对定位会提升元素的层级
fixed 固定定位 定位元素(也是一种绝对定位,大部分特点和绝对定位一样)
1)相对于浏览器的视口
2)脱离文档流
3)不会随着浏览器滚动而滚动
sticky 粘滞定位 定位元素(与相对定位特点一致)
1)使用top、right、bottom、left设置一个过渡点,当超过这个过度点的时候,就会体现fixed固定在页面上
2)不脱离文档流,仍然保留元素原本在文档流中的位置
定位元素可以使用 偏移量(offset): top、right、bottom、left、z-index(z-index 取值无需指定单位,值大的显示在上方)
脱离文档流的特点:默认宽度由内容决定,不占据原先的位置(原先的位置被其他元素抢占)
z-index:
1)z-index 取值无需指定单位,值大的显示在上方
2)如果元素的层级一样,则优先显示靠下的元素
3)祖先的元素层级再高也不会盖住后代元素
2.原理
任何容器都可以指定为flex布局
采用flex布局的元素,称为flex元素,所有的子元素称为flex项目
容器默认两根轴:水平的主轴和垂直的交叉轴
父盒子设置为flex布局后,子元素的float、clear都会失效
display:flex;
3.常见父项属性
1)flex-direction 设置主轴的方向
row 默认,主轴水平方向,起点在左端
row-reverse 主轴水平方向,起点在右端
column 主轴垂直方向,起点在上沿
column-reverse 主轴垂直方向,起点在下沿
2)flex-wrap 设置子元素是否换行
nowrap (默认) 不换行(会等比例的缩放)
wrap 换行,第一行在上方
wrap-reverse 换行,第一行在下方
flex-direction: row;
flex-wrap: wrap;
=》
6)flex-flow: row wrap;
3)justify-content 主轴上子元素的排列方式
flex-start 【默认值】在主轴的开始显示
flex-end 在主轴的结束显示
center 在主轴的中心显示
space-around 空白分配到元素的两侧,填充空白自适应在主轴中心显示
space-evenly 空白分配到元素的单侧
space-between 填充空白自适应在主轴中心显示,但是首尾两个元素距离容器没有空白
4)align-content 多轴排列在交叉轴对齐方式(多行)
取值: (对齐元素之间的空白)
flex-start:与交叉轴的起点对齐
flex-end:与交叉轴的终点对齐
center:与交叉轴的中点对齐
space-between:与交叉轴两端对齐,轴线之间平均分布
space-around:每根轴线两侧的间隔都相等,所以,轴线之间的间隔比轴线与边框的间 隔大一倍
stretch(默认值)
5)align-items 控制伸缩盒子在交叉轴的对齐方式(单行)
取值: (元素间的关系)
flex-start 在伸缩盒子容器的伸缩开始位置显示,即伸缩盒子容器顶部
flex-end 在伸缩盒子容器的伸缩结束位置显示,即伸缩盒子容器底部
stretch 【默认值】将盒子在交叉轴上进行拉伸,直至适应整个伸缩盒子容器
center 盒子在交叉轴中心显示
baseline 和项目第一行文字的基线对齐
4.项目的属性
order
该属性定义了项目的排列顺序,数值越小,排列越靠前,默认0
flex-grow
该属性定义了项目的放大比例,默认0,即如果存在剩余空间,也不放大
flex-shrink
该属性定义了项目的缩小比例,默认为1,即如果剩余空间不足,该项目将缩小
flex-basis
该属性定义了在分配多余空间之前,项目占据的主轴空间
flex
flex-grow、flex-shrink、flex-basis的速写形式
4.display:flex和display: inline-flex的使用效果区别
display:flex; /*父div设置该属性此时没有为父元素设置宽度,默认为100%*/
display:inline-flex /*没有为父元素设置宽度,但是父元素默认会根据子元素的宽高去自适应*/
5.align-self与align-items
align-items是一个弹性容器,而align-self则是一个弹性项目,
可以简单理解为,align-items是控制容器内的元素布局,而align-self则是控制自身的。
如果在Flex容器中有多个Flex项目时,该方法同样有效
6. .flex__container {
place-content: center;
place-items: center;
}
等效于:
.flex__container {
align-content: center;
justify-content: center;
align-items: center;
justify-items: center;
}
7.在Flex项目上设置margin: auto
如果在Flex容器中只有一个Flex项目,还可以显式在Flex项目中显式设置 margin 的值为auto,这样也可以让Flex项目在Flex容器中水平垂直居中。