弹性布局
简单介绍
弹性布局是HTML文档中的另外一种布局方式,弹性布局一般是给一个父级盒子设置弹性布局,父级盒子本身依然在HTML的流式布局中。弹性布局为页面的编写提供了更加简洁,更加方便的布局方式,但是弹性布局不兼容8.0版本以下的IE浏览器,所以在IE浏览器中,弹性布局不能完美的被使用。
设置弹性布局的方式:display:flex;
采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,弹性盒子内的元素会被转化成行内块元素,同时需要注意的是一个父元素设为Flex布局,子元素的float,clear和vertical- align属性将失效。
弹性布局的轴
在弹性布局中,存在着两个轴,分为水平的主轴和竖直的交叉轴,主轴的方向为水平方向是默认的(flex-direction: row;设置主轴为水平轴),如果我们想设置主轴的方向为竖直的方向,则通过使用过属性 flex-direction: column来设置,此时,弹性盒子内的元素是从上到下依次排列的,需要注意的是,主轴的方向和交叉轴是垂直的。
弹性布局中的属性
- flex-direction:容器内项目的排列方向(默认横向排列
属性值 | 功能 |
row | 设置主轴的方向为水平轴(从左往右正向排序) |
row-reverse | 主轴方向上的排列方向为从右往左,反向排序 |
column | 设置主轴的方向为竖直方向(从上往下) |
column-reverse | 设置竖直方向上的主轴的排列方式为从下往上 |
- flex-wrap 设置弹性盒子内元素的排列换行方式
属性值 | 功能 |
nowrap | 规定在水平方向或者竖直方向上,元素的长度超过弹性盒子的长度时,不换行 |
wrap | 规定在水平方向或者竖直方向上,元素的长度超过弹性盒子的长度时,换行 |
wrap-reverse | 根据需要换行,并且换行的方向为相反的 |
- justify-content :元素在主轴上的对齐方式
属性值 | 功能 |
flex-start | 弹性盒子元素将向行起始位置对齐。该行的第一个子元素的主起始位置的边界将与该行的主起始位置的边界对齐,同时所有后续的伸缩盒项目与其前一个项目对齐。 |
flex-end | 弹性盒子元素将向行结束位置对齐。该行的第一个子元素的主结束位置的边界将与该行的主结束位置的边界对齐,同时所有后续的伸缩盒项目与其前一个项目对齐。 |
center | 将盒子内的元素在行中间进行对齐,左右两边的空白部分宽度相等 |
space-between | 容器中的元素均匀的排列在父容器内,左右两边不留白 |
space-around | 容器中元素均匀排列,两边留白,留白的距离与元素之间的距离相等 |
- align-items:定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式。
属性值 | 功能 |
flex-start | 弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。 |
flex-end | 弹性盒子元素的侧轴(纵轴)结束位置的边界紧靠住该行的侧轴结束边界。 |
center | 弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。 |
baseline | 如弹性盒子元素的行内轴与侧轴为同一条,则该值与’flex-start’等效。其它情况下,该值将参与基线对齐。 |
stretch | 如果指定侧轴大小的属性值为’auto’,则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照’min/max-width/height’属性的限制。 |
- align-content:当伸缩容器的侧轴还有多余空间时,本属性可以用来调准「伸缩行」在伸缩容器里的对齐方式,这与调准伸缩项目在主轴上对齐方式的 <’ justify-content '> 属性类似。请注意本属性在只有一行的伸缩容器上没有效果。
属性值 | 功能 |
flex-start | 各行向弹性盒容器的起始位置堆叠。弹性盒容器中第一行的侧轴起始边界紧靠住该弹性盒容器的侧轴起始边界,之后的每一行都紧靠住前面一行。 |
flex-end | 各行向弹性盒容器的结束位置堆叠。弹性盒容器中最后一行的侧轴起结束界紧靠住该弹性盒容器的侧轴结束边界,之后的每一行都紧靠住前面一行。 |
center | 各行向弹性盒容器的中间位置堆叠。各行两两紧靠住同时在弹性盒容器中居中对齐,保持弹性盒容器的侧轴起始内容边界和第一行之间的距离与该容器的侧轴结束内容边界与第最后一行之间的距离相等。(如果剩下的空间是负数,则各行会向两个方向溢出的相等距离。) |
space-between | 各行在弹性盒容器中平均分布。如果剩余的空间是负数或弹性盒容器中只有一行,该值等效于’flex-start’。在其它情况下,第一行的侧轴起始边界紧靠住弹性盒容器的侧轴起始内容边界,最后一行的侧轴结束边界紧靠住弹性盒容器的侧轴结束内容边界,剩余的行则按一定方式在弹性盒窗口中排列,以保持两两之间的空间相等。 |
space-around | 各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。如果剩余的空间是负数或弹性盒容器中只有一行,该值等效于’center’。在其它情况下,各行会按一定方式在弹性盒容器中排列,以保持两两之间的空间相等,同时第一行前面及最后一行后面的空间是其他空间的一半。 |
stretch | 各行将会伸展以占用剩余的空间。如果剩余的空间是负数,该值等效于’flex-start’。在其它情况下,剩余空间被所有行平分,以扩大它们的侧轴尺寸。 |
- flex-flow:复合属性。设置或检索弹性盒模型对象的子元素排列方式。
它有两个值:
<’ flex-direction ‘>:定义弹性盒子元素的排列方向。
<’ flex-wrap '>:控制flex容器是单行或者多行。
以上就是弹性布局的简单介绍,如果想要更多了解,就去亲自实验一下吧。欢迎来指出错误,谢谢。