1. float布局
float CSS属性指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它。该元素从网页的正常流动(文档流)中移除,尽管仍然保持部分的流动性(与绝对定位相反)。 —— MDN
步骤
- 子元素上加
float:和width - 父元素上加
.chearfix
.clearfix::after{
content: '';
display: block;
clear: both;
}
注意:IE6/7存在双倍margin bug,有两种解决办法
- 针对 IE6/7 把margin减半;
- 加一个
display: inline-block;
2. flex布局
采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。
flex container的样式
- 让一个元素变成flex容器
.container {
display: flex; /* or inline-flex */
}
- 改变items流动方向(主轴)
.container {
flex-direction: row | row-reverse | column | column-reverse;
}
- 改变折行
.container{
flex-wrap: nowrap | wrap | wrap-reverse;
}
- 主轴对齐方式 默认主轴是横轴,除非你改变了flex-direction方向
.container {
justify-content: flex-start | flex-end;
}
- 次轴对齐 默认次轴是纵轴
.container {
align-items: stretch | flex-start;
}
- 多行任务
.container {
align-content: flex-start | flex-end;
}
flex item的样式
- order属性:子容器排列顺序
.item {
order: 0; /* default 0 */
}
- flex-grow属性:扩展比例
.item {
flex-grow: 0; /* default 0 */
}
- flex-shrink属性:收缩比例
.item {
flex-shrink: 0; /* default 1 */
}
防止缩小
- flex-basis属性:控制基准宽度。
.item {
flex-basis: auto; /* default auto */
}
- flex属性
.item {
flex: flex-grow flex-shrink flex-basis;
}
缩写,空格隔开
- align-self属性
align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
注意:多用 min-width / max-width / min-height / max-height,不要把 width 和 height 写死。
3. grid布局
二维布局用grid,一维布局用flex。
grid也分 container 和 items
- 成为container
.container {
display: grid | inline-grid;
}
- 成为行和列
- 还可以给每条线取名
结果如下:
- item可以设置范围
.item-a {
grid-column-start: 2;
grid-column-end: five;
grid-row-start: row1-start;
grid-row-end: 3;
}
- fr-free space
.container {
grid-template-columns: 1fr 1fr 1fr;
}
平均分成三份。
其余属性先不说了。