伸缩布局
一、介绍
-
flex(弹性盒、伸缩盒)
—— 是css中的又一种布局手段,它主要用来代替浮动来完成页面的布局 —— flex可以使元素具有弹性,让元素可以跟随页面的大小的改变而改变 —— 弹性容器 要使用弹性盒,必须要将一个元素设置为弹性容器 我们通过 display 来设置弹性容器 display:flex 设置为块级弹性容器 display:inline-flex 设置为行内的弹性容器 —— 弹性元素 弹性容器的子元素是弹性元素(弹性项) 一个元素可以同时是弹性容器和弹性元素
-
主轴、侧轴
- 主轴:弹性元素的排列方向称为主轴
- 侧轴:与主轴垂直方向的称为侧轴
二、弹性容器的属性
-
flex-direction(指定容器中弹性元素的排列方式)
-
可选值:
-
row 默认值,弹性元素在容器中水平排列(左向右)
—— 主轴,子左向右
-
row-reverse 弹性元素在容器中反向水平排列(右向左)
—— 主轴,自右向左
-
column 弹性元素纵向排列(自上向下)
-
column-reverse 弹性元素方向纵向排列(自下向上)
-
-
-
flex-wrap(设置自动换行)
- 可选值:
- nowrap 默认值,元素不会自动换行
- wrap 元素沿着辅助方向自动换行
- wrap-reverse 元素沿着辅轴反方向换行
- 可选值:
-
flex-flow( wrap 和 direction 的简写属性)
例:flex-flow:row wrap;
-
justify-content(设置分配主轴空白)
- 可选值:
- flex-start 元素沿着主轴起边排列
- flex-end 元素沿着主轴终边排列
- center 元素居中排列
- space-around 空白分布到元素的两侧
- space-between 空白均匀分布到元素间
- space-evenly 空白分布到元素的单侧
- 可选值:
-
align-items(元素在辅轴上如何对齐)
- 可选值:
- stretch 默认值,将元素的长度设置为相同的值
- flex-start 元素不会拉伸,沿着辅轴起边对齐
- flex-end 沿着辅轴的终边对其
- center 居中对齐
- baseline 基线对齐
- 可选值:
-
align-content(设置分配辅轴空白)
- 可选值:
- flex-start 元素沿着主轴起边排列
- flex-end 元素沿着主轴终边排列
- center 元素居中排列
- space-around 空白分布到元素的两侧
- space-between 空白均匀分布到元素间
- space-evenly 空白分布到元素的单侧
- 可选值:
三、弹性元素的属性
-
flex-grow(指定弹性元素的伸展的系数)
—— 当父元素有多余的空间时,子元素如何伸展
—— 父元素的剩余空间,会按照比例进行分配
<style> /*这是弹性元素*/ div{ flex-grow:1; } </style>
-
flex-shrink(指定弹性元素的收缩系数)
—— 当父元素中的空间不足以容纳所有的子元素时,如果对子元素进行收缩
<style> /*这是弹性元素*/ div{ flex-shrink:1; } </style>
-
align-self(用来覆盖当前弹性元素所在弹性容器上的align-items样式)
- 可选值:
- stretch 默认值,将元素的长度设置为相同的值
- flex-start 元素不会拉伸,沿着辅轴起边对齐
- flex-end 沿着辅轴的终边对其
- center 居中对齐
- baseline 基线对齐
- 可选值:
-
flex-basis(设置元素在主轴的基础长度)
-
注意:
如果主轴是横向的 则 该值指定的就是元素的宽度 如果主轴是纵向的 则 该值指定的是就是元素的高度
-
可选值:
- auto 默认值,表示参考元素自身的高度或宽度
- 数值 例:100px,传递一个具体的数值,以该值为准(则width或height就被覆盖了)
-
-
flex(可以设置弹性元素的所有三个样式)
-
格式
flex: 增长值 缩减值 基础;
-
可选值:
- initial 表示
flex:0 1 auto;
- auto 表示
flex:1 1 auto;
- none 表示
flex:0 0 auto;
表示弹性元素没有弹性了
- initial 表示
-
-
order(绝对弹性元素的排列顺序)
-
例如:
<style> /*order的数值越小越靠前*/ div:nth-child(1){ order:2; } div:nth-child(2){ order:3; } div:nth-child(3){ order:1; } </style>
-