flex布局

Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
开发时使用弹性盒子布局替换传统的盒子+浮动方式。
注意:设为Flex布局以后,子元素的float、clear和vertical-align属性将失效;flex内各元素无法使用text-align,即水平对齐无效。
采用flex布局的元素称为flex容器,它的所有子元素称为item。
div启用flex布局

display: flex;

示例:

    <div style="display: flex;">
        <div></div>
        <div></div>
    </div>

效果:
在这里插入图片描述

1.容器属性

flex-direction

使用flex-direction可以修改容器内子元素(item)排列方向。
flex容器内item排列方向:设置主轴,默认水平方向是主轴,即容器内的子元素(item)自左向右水平排列。此时,纵向是侧轴。
属性名:flex-direction
属性值:row、row-reverse、column、column-reverse
(1)在容器内item从左往右水平排列,flex中默认item水平从左向右布局:

flex-direction:row

(2)在容器内item从右往左水平排列:

flex-direction: row-reverse;

(3)在容器内item从上往下纵向排列,此时垂直方向为主轴:

flex-direction:column

示例:

    <div style="display: flex;flex-direction: column;">
        <div></div>
        <div></div>
    </div>

效果:
在这里插入图片描述
(4)在容器内item从下往上纵向排列:

flex-direction: column-reverse

flex-wrap

设置item填满容器后如何换行。
属性名:flex-wrap
属性值:
(1)nowrap:不换行,默认值
(2)wrap:换行,从上往下
(3)wrap-reverse:换行,从下往上。
示例:

    <div style="width: 100px;display: flex;">
        <div>没有flex-wrap</div>
        <div>床前明月光,</div>
        <div>疑是地上霜。</div>
    </div>
    <div style="width: 100px;display: flex;flex-wrap: wrap;">
        <div>有flex-wrap</div>
        <div>床前明月光,</div>
        <div>疑是地上霜。</div>
    </div>

效果:
在这里插入图片描述
注意:如果不设置wrap,flex的布局宽度或高度无效,会在一行或一列内自动调整宽度或高度。
上面示例的“没有flex-wrap”所在的div就是从左到右排列。

justify-content

设置元素在主轴对齐方式。
如果主轴为水平方向,则容器设置了宽度;如果主轴为垂直方向,则容器设置了高度。
属性名:justify-content
属性值:
(1)flex-start:如果主轴为水平方向,则左对齐;主轴为垂直方向,则上对齐。默认值。
(2)flex-end:如果主轴为垂直方向,则右对齐;主轴为垂直方向,则下对齐。
(3)center: 居中
(4)space-between:两端对齐,项目之间的间隔都相等。
(5)space-around:每个item两侧的间隔相等。所以,item之间的间隔比item与边框的间隔大一倍。
示例,容器设置了宽度:

    <div style="width: 400px;border:solid 1px red;display: flex;">
        <div>默认:</div>
        <div>床前,</div>
        <div>疑是。</div>
        <div>举头,</div>
        <div>低头。</div>
    </div>
    <div style="width: 400px;border:solid 1px red;display: flex;justify-content: center;">
        <div>center:</div>
        <div>床前,</div>
        <div>疑是。</div>
        <div>举头,</div>
        <div>低头。</div>
    </div>
    <div style="width: 400px;border:solid 1px red;display: flex;justify-content: space-between;">
        <div>space-between:</div>
        <div>床前,</div>
        <div>疑是。</div>
        <div>举头,</div>
        <div>低头。</div>
    </div>
    <div style="width: 400px;border:solid 1px red;display: flex;justify-content: space-around;">
        <div>space-around</div>
        <div>床前,</div>
        <div>疑是。</div>
        <div>举头,</div>
        <div>低头。</div>
    </div>

效果:
在这里插入图片描述
主轴为垂直方向的示例,容器设置了高度:

    <div style="width: 200px;height:200px;border:solid 1px red;display: flex;flex-direction: column;">
        <div>默认:</div>
        <div>床前,</div>
        <div>疑是。</div>
        <div>举头,</div>
        <div>低头。</div>
    </div>
    <div style="width: 200px;height:200px;border:solid 1px red;display: flex;flex-direction: column;justify-content: center;">
        <div>center:</div>
        <div>床前,</div>
        <div>疑是。</div>
        <div>举头,</div>
        <div>低头。</div>
    </div>
    <div style="width: 200px;height:200px;border:solid 1px red;display: flex;flex-direction: column;justify-content: space-between;">
        <div>space-between:</div>
        <div>床前,</div>
        <div>疑是。</div>
        <div>举头,</div>
        <div>低头。</div>
    </div>
    <div style="width: 200px;height:200px;border:solid 1px red;display: flex;flex-direction: column;justify-content: space-around;">
        <div>space-around</div>
        <div>床前,</div>
        <div>疑是。</div>
        <div>举头,</div>
        <div>低头。</div>
    </div>

效果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/4d1041d7685446eb8b2af45fa0eccd97.png

align-items

设置子元素(item)在侧轴方向的元素对齐方式,justify-content设置了在主轴方向的对齐,而align-items则设置了侧轴方向。
属性名:align-items
属性值:
(1)stretch(中文“舒展”):铺满竖直方向,默认值。注意:设置该属性时,不能设置height,否则按照height来显示
(2)flex-start:靠上边沿对齐
(3)center:居中
(4)flex-end:靠下边沿对齐
(5)baseline:以项目第一行文字的基线对齐
示例:

    <div style="width: 300px;border:solid 1px red;display: flex;">
        <div style="border: solid 1px blue;width: 100px;">默认</div>
        <div style="height: 80px;border: solid 1px green;">床前,</div>
        <div style="height: 50px;border: solid 1px orange;">疑是。</div>
        <div style="height: 100px;border: solid 1px gray;">举头,</div>
        <div style="border: solid 1px purple">低头。</div>
    </div>
    
    <div style="width: 300px;border:solid 1px red;display: flex;align-items: stretch;">
        <div style="border: solid 1px blue;width: 100px">stretch</div>
        <div style="height: 80px;border: solid 1px green;">床前,</div>
        <div style="height: 50px;border: solid 1px orange;">疑是。</div>
        <div style="height: 100px;border: solid 1px gray;">举头,</div>
        <div style="border: solid 1px purple">低头。</div>
    </div>

    <div style="width: 300px;border:solid 1px red;display: flex;align-items: flex-start;">
        <div style="border: solid 1px blue;width: 100px;">flex-start</div>
        <div style="height: 80px;border: solid 1px green;">床前,</div>
        <div style="height: 50px;border: solid 1px orange;">疑是。</div>
        <div style="height: 100px;border: solid 1px gray;">举头,</div>
        <div style="border: solid 1px purple">低头。</div>
    </div>

    <div style="width: 300px;border:solid 1px red;display: flex;align-items: center;">
        <div style="border: solid 1px blue;width: 100px">center</div>
        <div style="height: 80px;border: solid 1px green;">床前,</div>
        <div style="height: 50px;border: solid 1px orange;">疑是。</div>
        <div style="height: 100px;border: solid 1px gray;">举头,</div>
        <div style="border: solid 1px purple">低头。</div>
    </div>

    <div style="width: 300px;border:solid 1px red;display: flex;align-items: flex-end;">
        <div style="border: solid 1px blue;width: 100px">flex-end</div>
        <div style="height: 80px;border: solid 1px green;">床前,</div>
        <div style="height: 50px;border: solid 1px orange;">疑是。</div>
        <div style="height: 100px;border: solid 1px gray;">举头,</div>
        <div style="border: solid 1px purple">低头。</div>
    </div>

    <div style="width: 300px;border:solid 1px red;display: flex;align-items: baseline;">
        <div style="border: solid 1px blue;width: 100px">baseline</div>
        <div style="height: 80px;border: solid 1px green;">床前,</div>
        <div style="height: 50px;border: solid 1px orange;">疑是。</div>
        <div style="height: 100px;border: solid 1px gray;">举头,</div>
        <div style="border: solid 1px purple">低头。</div>
    </div>

效果:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值