<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin: 0; padding: 0; } .box{ display: flex;/*开启弹性盒模型*/ width: 800px; height: 500px; margin: 50px auto; box-shadow: 0 0 30px 0 green inset; } .box1{ width: 120px; height: 100px; box-shadow: 0 0 30px 0 blue inset; } </style> </head> <body> <div class="box"> <div class="box1">1</div> <div class="box1">2</div> <div class="box1">3</div> <div class="box1">4</div> <div class="box1">5</div> <div class="box1">6</div> <div class="box1">7</div> <div class="box1">8</div> </div> <!-- display:flex; display:inline-flex定义弹性盒模型类型 flex 容器会开启块级弹性盒模型 inline-flex 容器会开启行内弹性盒模型 在flex布局模式下,弹性子元素的float,clear和vertical-align属性将失效 在弹性盒模型中 所有元素都会变成inline-block 支持width/height/margin display:flex; 弹性盒模型=弹性容器+弹性子元素 弹性盒模型的特点 弹性子元素默认沿主轴(类似于x轴的水平线左为flex-start)从左到右排列 当弹性子元素宽度之和大于弹性容器宽度,会按比例分配弹性容器的宽度 交叉轴是顺时针90度之后的垂直线 flex-direction:设置弹性盒模型中主轴的方向 row(默认) 水平从左到右 row-reverse 水平从右到左 column 竖直从上到下 column-reverse 竖直从下到上 flex-wrap 设置弹性子元素超出弹性容器时是否换行 弹性子元素默认只能是显示一排的 nowrap(默认) 不换行 wrap 换行 并且第一行在上边 wrap-reverse 换行 并且第一行在下边 justify-content: 设置弹性子元素的主轴对齐方式 flex-start(默认) 弹性子元素对齐主轴起点 flex-end 弹性子元素对齐主轴重点 center 弹性子元素对齐主轴中点 space-around 弹性子元素两端对齐并且两端与弹性容器有间隙 space-between 弹性子元素两端对齐并且两端与弹性容器无间隙 stretch(默认) 如果弹性子元素未设置高度,将占满整个弹性容器的高度 align-items: 设置弹性子元素的交叉轴对齐方式 flex-start 弹性子元素对齐交叉轴起点 flex-eng 弹性子元素对齐交叉轴终点 center 弹性子元素对齐交叉轴中点 baseline 弹性子元素的基线相互对齐 stretch(默认) 如果弹性子元素未设置高度,将占满整个弹性容器的高度 align-content 设置整体弹性子元素的交叉轴对齐方式 flex-start 整体弹性子元素对齐交叉轴起点 flex-end 整体弹性子元素对齐交叉轴终点 center 整体弹性子元素对齐交叉轴中点 space-around 弹性子元素两端对齐并且两端与弹性容器有间隙 space-between 弹性子元素两端对齐并且两端与弹性容器无间隙 stretch(默认) 如果弹性子元素未设置高度,将占满整个弹性容器的高度 align-items和align-content区别 align-content 在交叉轴方向存在多行弹性子元素的情况 并且中间没有间距 align-content 是把多行弹性子元素做为一个整体对齐 align-items 把每一行都当做一个整体对齐 给元素的值 align-self 控制单个弹性子元素在交叉轴的对齐方式 flex-start 弹性单个子元素对齐交叉轴起点 flex-eng 弹性单个子元素对齐交叉轴终点 center 弹性单个子元素对齐交叉轴中点 baseline 弹性单个子元素的基线相互对齐 stretch(默认) 如果弹性单个子元素未设置高度,将占满整个弹性容器的高度 order 控制子元素在主轴方向的排列顺序 数值越小 就排在越前 默认order为0 可以是其他值可以为负 flex-grow 在主轴方向有剩余空间时,设置弹性子元素的放大比例(就是占满) 所有弹性子元素的flex-grow之和=主轴方向的剩余空间 默认是0 即默认不放大 flex-shrink 在主轴方向元素宽度大于容器宽度默认占满,这时候可以使用收缩 收缩到和容器宽度一样 flex-shrink:0; 不收缩 默认是1 在设置弹性子元素宽度时 flex-basis比width的优先级要高 --> </body> </html>