1,什么是弹性布局?
弹性布局(flex container),页面中任何一个元素只要设置了display:flex属性,那么当前盒子都称为弹性盒子。弹性盒子默认有两条轴: 默认水平显示的主轴 和 始终要垂直于主轴的侧轴(也叫交叉轴),在弹性盒子中所有的子元素都是沿着主轴方向显示。
2.什么情况下使用弹性布局?
(1)在网页中当遇到需要将父元素按照奇数进行等分,如果用流式布局那么就需要设置33。33%。如果用弹性布局只需要给每一个子元素设置一个属性flex:1即可快速实现。
(2)当我们需要页面中多个子元素快速实现在父元素中以左右距离适中显示的时候,这个时候我们不需要设置任何的px值,只需要给元素设置justify-content:space-around就可以实现。
(3)当页面中出现子元素按照其他比例分割父元素的时候,依然可以通过弹性盒子中的flex实现快速实现
3.弹性布局的一些常用属性?
弹性布局第一步就是先给父元素设定为弹性盒子,既设置属性:display:flex
(1)flex-direction: 该属性可以调整主轴的方向,改变元素的显示方式
flex-direction:row:水平显示
flex-direction:row-reverse:水平倒序显示
flex-direction:column:垂直显示
flex-direction:column-reverse:垂直倒序显示
(2)justify-content:该属性用来设置元素在主轴方向的对齐显示方式
justify-content:flex-start:从行首起始位置开始排列
justify-content:flex-end;从行尾位置开始排列
justify-content:space-between;均匀排列每个元素,首个元素放置于起点,末尾元素放置于终点
justify-content:space-around;均匀排列每个元素 每个元素之间的间隔相等
(3)align-items:该元素设置弹性盒子中元素在侧轴(交叉轴)方向的对齐方式
align-items: stretch;默认值。元素被拉伸以适应容器。如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。
align-items:flex-start;元素位于容器的开头,弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
align-items:flex-end;元素位于容器的结尾。弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
align-items:center;元素位于容器的中心。弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
(4)flex-wrap;在伸缩盒子中,默认所有的子元素超出父容器宽度后都不换行显示,如果希望让超出父元素后换行显示
flex-wrap:nowrap ;默认值。规定灵活的项目不拆行或不拆列。
flex-wrap:wrap;规定灵活的项目在必要的时候拆行或拆列。
(5)align-content;该属性可以伸缩和中元素换行后设置多行对齐方式
align-content:stretch;默认值。元素被拉伸以适应容器。各行将会伸展以占用剩余的空间。如果剩余的空间是负数,该值等效于'flex-start'。在其它情况下,剩余空间被所有行平分,以扩大它们的侧轴尺寸。
align-content:flex-start ;元素位于容器的开头。各行向弹性盒容器的起始位置堆叠。弹性盒容器中第一行的侧轴起始边界紧靠住该弹性盒容器的侧轴起始边界,之后的每一行都紧靠住前面一行。
align-content:flex-end;元素位于容器的结尾。各行向弹性盒容器的结束位置堆叠。弹性盒容器中最后一行的侧轴起结束界紧靠住该弹性盒容器的侧轴结束边界,之后的每一行都紧靠住前面一行。
align-content:center;元素位于容器的中心。各行向弹性盒容器的中间位置堆叠。各行两两紧靠住同时在弹性盒容器中居中对齐,保持弹性盒容器的侧轴起始内容边界和第一行之间的距离与该容器的侧轴结束内容边界与第最后一行之间的距离相等。(如果剩下的空间是负数,则各行会向两个方向溢出的相等距离。)
align-content: space-between;元素位于各行之间留有空白的容器内。各行在弹性盒容器中平均分布。如果剩余的空间是负数或弹性盒容器中只有一行,该值等效于'flex-start'。在其它情况下,第一行的侧轴起始边界紧靠住弹性盒容器的侧轴起始内容边界,最后一行的侧轴结束边界紧靠住弹性盒容器的侧轴结束内容边界,剩余的行则按一定方式在弹性盒窗口中排列,以保持两两之间的空间相等。
align-content: space-around;元素位于各行之前、之间、之后都留有空白的容器内。各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。如果剩余的空间是负数或弹性盒容器中只有一行,该值等效于'center'。在其它情况下,各行会按一定方式在弹性盒容器中排列,以保持两两之间的空间相等,同时第一行前面及最后一行后面的空间是其他空间的一半。
(6)Flex: 数字;如果希望弹性盒子中子元素按照任何一个比例显示,可以给子元素设置flex属性
Flex: 1代表子元素占父元素空间宽度的一份。
Flex: 2代表子元素占父元素空间宽度的两份。
4.弹性布局优缺点分析
弹性布局在网页中实现快速分配比例,盒子快速对齐优势很大,因为通过简单的几个属性就可以实现,进而减少我们设置具体值。但是弹性布局中的属性对于浏览器版本要求比较严格,如果浏览器版本太低那么弹性布局中的属性是无法正常使用的。
优点在于其容易上手,根据flex规则很容易达到某个布局效果。
缺点是:浏览器兼容性比较差,只能兼容到ie9及以上。