display:flex弹性布局讲解

弹性布局

Web页面布局的一种方式,使用方便,效果完美,可以简便、完整、响应式地实现各种页面布局。主流浏览器都早已支持。

.box {
    
    
    width: 400px;
    height: 80px;
    background: aquamarine;
}
.box-item {
    
    
    width: 60px;
    height: 60px;
    line-height: 60px;
    text-align: center;
    color: rgb(0, 0, 0);
}
.item-1 {
    
    
    background-color: rgb(165, 230, 60);
}
.item-2 {
    
    
    background-color: rgb(168, 52, 189);
}
.item-3 {
    
    
    background-color: rgb(80, 62, 236);
}
.item-4 {
    
    
    background-color: rgb(240, 66, 66);
}
.item-5 {
    
    
    background-color: rgb(87, 202, 52);
}
<div class="box">
    <div class="box-item item-1">1</div>
    <div class="box-item item-2">2</div>
    <div class="box-item item-3">3</div>
    <div class="box-item item-4">4</div>
    <div class="box-item item-5">5</div>
</div>

如上是正常的网页div默认布局。
在这里插入图片描述

给父元素box添加display:flex/inline-flex

☆给父元素box添加display:flex/inline-flex属性即打破常规文档流的显示方式,使box容器内容采用弹性布局显示。

☆设为flex布局后,下级节点的float、clear和vertical-align属性将失效。position属性依然生效。

display:flex/inline-flex
.box{
    
    
	Display:flex
}

在这里插入图片描述

display:flex与display:inline-flex区别

☆容器添加弹性布局后,仅仅是容器内容采用弹性布局,而容器自身在文档流中的定位方式依然遵循常规文档流;
display:flex 与display:inline-flex在容器内对下级节点的作用都是一致的,主要的区别在于主容器box上。
☆flex使弹性布局容器box以块级元素显示
☆inline-flex使弹性布局容器box以行内块元素显示。
比如容器box有相邻元素:

<div class="box">
    <div class="box-item item-1">1</div>
    <div class="box-item item-2">2</div>
    <div class="box-item item-3">3</div>
    <div class="box-item item-4">4</div>
    <div class="box-item item-5">5</div>
</div>
<span>2020-12-17 10:34:58</span>
.box{
    
    
	display:flex
}

在这里插入图片描述
弹性容器box以块级元素显示,独占一行。

.box{
    
    
	display:inline-flex;
}

在这里插入图片描述

弹性容器box以行内元素显示。

配合”display:flex;”使用的12大属性,分为两类,6个作用于主容器,6个作用于下级项。

作用于父容器的6大属性

flex-direction

flex-direction属性决定主轴的方向(项目排列方向)。
row(默认值): 主轴为水平方向,起点在左端;
row-reverse: 主轴在水平方向,起点在右端 ;
column:主轴为垂直方向,起点在上沿。
column-reverse:主轴为垂直方向,起点在下沿。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

flex-wrap

flex-wrap属性定义,如果一条轴线排不下,如何换行。
nowrap(默认):不换行。当容器宽度不够时,每个项目会被挤压宽度;
wrap: 换行,并且第一行在容器最上方;
wrap-reverse: 换行,并且第一行在容器最下方。
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

flex-flow

flex-flow 是flex-direction和flex-wrap的缩写形式,默认值为:flex-flow: row wrap; 不做过多解释

justify-content

justify-content属性定义了项目在主轴上的对齐方式。
此属性与主轴方向相关。
主轴方向为:row-起点在左边,row-reverse-起点在右边, column-起点在上边,column-reverse-起点在下边
flex-start(默认值): 项目位于主轴起点。
flex-end:项目位于主轴终点。
center: 居中
space-between:两端对齐,项目之间的间隔都相等。(开头和最后的项目,与父容器边缘没有间隔)
space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。(开头和最后的项目,与父容器边缘有一定的间隔)
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

align-items

align-items属性定义项目在交叉轴上如何对齐。
flex-start:交叉轴的起点对齐。
flex-end:交叉轴的终点对齐。
center:交叉轴的中点对齐。
baseline: 项目的第一行文字的基线对齐。(文字的行高、字体大小会影响每行的基线)
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

作用于子节点的6大属性

order

order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

.item-1 {
    
    
    background-color: rgb(165, 230, 60);
    order: 5;
}
.item-2 {
    
    
    background-color: rgb(168, 52, 189);
    order: 3;
}
.item-3 {
    
    
    background-color: rgb(80, 62, 236);
    order: 4;
}
.item-4 {
    
    
    background-color: rgb(240, 66, 66);
    order: 2;
}
.item-5 {
    
    
    background-color: rgb(87, 202, 52);
    order: 1;
}

在这里插入图片描述

flex-grow

flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
如果有子节点flex-grow属性不为0,则不为0的子节点按各自数字比例分剩余空间。
在这里插入图片描述

flex-shrink

flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

flex-basis

flex-basis定义项目占据的主轴空间。
如果主轴为水平,则设置这个属性,相当于设置项目的宽度。 原width将会失效。
在这里插入图片描述
如果主轴为竖直方向(即box父容器flex-direction:column),设置了子项的flex-basis属性的话,则会覆盖子项本身的height。
在这里插入图片描述

flex

flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。
此属性有两个快捷设置:auto=(1 1 auto)/none=(0 0 auto)
所有子项有flex:1意思是所有子项按相同比例分剩余空间,撑满整个容器。
在这里插入图片描述

align-self

align-self:定义单个项目自身在交叉轴上的排列方式,可以覆盖掉容器上的align-items属性。
属性值:与align-items相同,默认值为auto,表示继承父容器的align-items属性值。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41993525/article/details/111322003