display: inline;
默认的行内元素display: inline-block;
可将a、span等行内元素变成块级元素可在同一行中显示
可设置宽度、高度
表单元素默认为该模式
详例
注:
设置margin以插入空隙时,注意每行末尾元素的margin需设为0,否则会换行
float: left/right/none;
可将a、span等行内元素变成块级元素可在同一行中显示
可设置宽度、高度
详例
注:
当父容器无高度时,将独占行的块级元素设置为float元素后,下方元素会上移,但会被float元素遮挡,解决方式如下:
额外标签法
方式:
在最后一个float元素后添加一个块级元素,并设置其css属性:clear: both;
单伪元素清除法
方式:
css中添加:
.clearfix::after {
content: "";
display: block;
clear: both;
}
然后在float所在的父元素的class添加clearfix,如:
<div class="box clearfix">
双伪元素清除法
方式:
css中添加:
.clearfix::after, .clearfix::before {
content: "";
display: table;
}
与
.clearfix::after {
clear: both;
}
overflow清除法
方式:
给float元素所在的父级元素添加css指令:verflow: hidden;
注:缺点是会切割露出父级盒子外的元素部分
display: flex;
flex使用指令:
.box {
display: flex;
}
注:
1.行内元素变为块级元素
2.若子元素规定宽高,则按规定宽高显示。若所有子元素超过父容器,会压缩子容器
3.若子元素未规定宽高,则高度为父容器的高度;宽度由子元素的内容自动调整
弹性盒子基础
flex-direction
定义主轴方向:
.box {
display:flex;
flex-direction: row(从左往右ABC);
flex-direction: row-reverse(倒序从左往右CBA);
flex-direction: row(从上往下ABC);
flex-direction: row(倒序从上往下CBA);
}
弹性盒子交叉轴方向
justify-content
主轴内容排列方式:
.box {
display:flex;
flex: start;(紧靠主轴起始点)
flex: end;(紧靠主轴结束点)
flex: center;(在主轴上居中)
flex: space-around;(空白平均包裹每个子元素)
flex: space-between;(空白平均填充子元素中间)
flex: space-evenly;(空白和子元素平均分布)
}
弹性盒子换行
align-items
交叉轴内容排列方式(主轴为单行时):
.box {
display:flex;
flex: start;(紧靠交叉轴起始侧)
flex: end;(紧靠交叉轴结束侧)
flex: center;(在交叉轴上居中)
flex: stretch;(子项目无固定尺寸时,拉伸交叉轴方向的尺寸至父容器尺寸)
}
弹性盒子交叉轴方向
align-content
交叉轴内容排列方式(主轴为多行时):
.box {
display:flex;
flex: start;(紧靠交叉轴起始侧)
flex: end;(紧靠交叉轴结束侧)
flex: center;(在交叉轴上居中)
flex: space-between;(在交叉轴上两端对齐)
flex: space-around;(项目两侧间隙相等)
flex: space-evenly;(项目间隙均匀分布)
}
弹性盒子交叉轴方向
flex-wrap
控制是否换行:
.box {
display:flex;
flex-wrap: nowrap;(不换行,从左往右ABC,可能压缩)
flex-wrap: wrap;(换行)
flex-wrap: wrap-reverse;(换行且行数倒序)
}
弹性盒子换行
gap
弹性盒子伸缩:
.box {
display:flex;
gap: (如20px或20px 10px);(行、列分别间距20px或行间距20px、列间距10px)
}
弹性盒子伸缩
flex
弹性盒子伸缩:
.box {
display:flex;
flex-grow: (如0);(项目剩余空间分配放大比例,默认0不放大)
flex-shrink:(如1);(项目剩余空间分配放大比例,默认1)
flex-basis: (如20px 50px);(项目在主轴方向的初始大小,覆盖width/height)
flex: (如1);(上面3行的简写);
align-self: (如center)(覆盖align-items,单独定义某项目的交叉轴对齐方式);
order
}
详例-淘宝(嵌套版心)
详例-京东(函数计算)
注意基线对齐问题,否则图片底部无法对齐。解决方式: 1.将图片改为块级元素(非行内元素/行内块元素)
2.将图片设置为非baseline对齐
.box {
vertical-align: top/middle/bottom;
border: 0;(可去除旧版浏览器的图片边框)
}