22 flex布局容器六大属性

1、flex-direction

flex-direction属性决定主轴的⽅向。
flex-direction 属性指定了主轴线的方向,子元素默认是按照主轴线排列的,所以 flex-direction 也指定了弹性子元素在弹性容器中的排列方式, 有以下四个值:

  • row :(默认)横向从左到右排列。
  • row-reverse :顾名思义,从右向左横向排列,反向。
  • column : 纵向从上往下排列。
  • column-reverse : 纵向从下往上排列。
    在这里插入图片描述
    下面使用值 row 操作属性 flex-direction
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .container {
            display: flex;
            flex-direction: row; /*(默认)横向从左到右排列。*/
            width: 400px;
            height: 450px;
            background-color: green;
        }
        .item {
            background-color: red;
            width: 100px;
            height: 100px;
            margin: 20px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="item">item1</div>
        <div class="item">item2</div>
        <div class="item">item3</div>
    </div>
</body>

在这里插入图片描述
如图所示,三个子元素按照值 row 的排列方式,在容器的横向从左到右排列。

当我们修改 flex-directioncolumn , 在容器的纵向从上往下排列。
在这里插入图片描述
指明容器的高度,才能更好的看到效果。
在这里插入图片描述

2、flex-wrap

flex-wrap属性设置⼦项⽬的换⾏⽅式。
弹性盒子默认情况下所有子元素都是排在一行上的,但容器大小有限,很有可能出现子元素被截断的情况,这时候就需要换行,flex-wrap 就是用来操作子元素换行的属性。flex-wrap 有以下三个值:

  • nowrap :(默认) 不换行。
  • wrap :换行,第一行排满后自动换到第二行。
  • wrap-reverse :换行,与 wrap 不同的是如果出现换行,换行后的元素在第一行上方。
    在这里插入图片描述
    下面使用值 wrap 来操作属性 flex-wrap
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .container {
            display: flex;
            flex-wrap: wrap-reverse;
            width: 350px;
            height: 450px;
            background-color: green;
        }
        .item {
            background-color: red;
            width: 120px;
            height: 100px;
            margin: 20px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="item">item1</div>
        <div class="item">item2</div>
        <div class="item">item3</div>
    </div>
</body>

在这里插入图片描述
当父元素的一行排不下三个盒子,那么设置 wrap 属性就能够换行,第一行排满后自动换到第二行。
修改代码如下:

flex-wrap: wrap;

在这里插入图片描述
而如果我们强制不换行,设置 nowrap 属性值:
在这里插入图片描述
子元素的宽度就会被自动减少(宽度失效),挤在一行。
在这里插入图片描述
在这里插入图片描述

5、flex-flow

flex-flowflex-directionflex-wrap 的简写形式,默认值为 row nowrap

flex-flow: <flex-direction> || <flex-wrap>;
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .container {
            display: flex;
            /*从左往右 换行*/
            flex-flow: row wrap; 
            width: 350px;
            height: 350px;
            background-color: green;
        }
        .item {
            background-color: red;
            width: 120px;
            height: 100px;
            margin: 20px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="item">item1</div>
        <div class="item">item2</div>
        <div class="item">item3</div>
    </div>
</body>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置align-content: flex-start;
在这里插入图片描述

6、justify-content

子元素在容器中默认是以左对齐的布局排列在主轴线上的,属性 justify-content 用来调整子元素在主轴线上的对齐方式,它有以下五个值:

  • flex-start :左对齐
  • flex-end :右对齐
  • center :居中
  • space-between :两端对齐,项目之间的间隔都相等。
  • space-around :每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改成justify-content: space-between;
在这里插入图片描述

修改成justify-content: space-around;
在这里插入图片描述
在这里插入图片描述

<style>
        .container {
            display: flex;
            justify-content: space-around;
            width: 400px;
            height: 250px;
            background-color: green;
        }
        .item {
            background-color: red;
            height: 100px;
            margin: 10px;
			}
    </style>
</head>
<body>
	<div class="container">
	    <div class="item">item1</div>
	    <div class="item">item2</div>
	    <div class="item">item3</div>
	</div>
</body>

在这里插入图片描述
容器的宽度为 400px,三个子元素的宽度和加上它们的边框小于 400px,所以不会出现换行。

7、align-items

align-items属性规定⼦项⽬在交叉轴上的对⻬⽅式(单行情况下在交叉轴的对齐方式)
与主轴垂直的轴我们称它为交叉轴,属性 align-items 用于定义子元素在交叉轴上的排列方式,它有下列五个值:

  • flex-start :交叉轴的起点对齐。
  • flex-end :交叉轴的终点对齐。
  • center :交叉轴的中点对齐。
  • baseline :项目的第一行文字的基线对齐。
  • stretch :如果子元素未设置高度或设置为 auto ,子元素将占满整个容器高度。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    align-items: flex-start;的效果
    在这里插入图片描述
    align-items: flex-end;的效果
    在这里插入图片描述
    align-items: center;的效果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    下面使用值 flex-end 来操作属性 align-items
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .container {
            display: flex;
            flex-direction: column; /**/
            align-items: flex-end;
            width: 400px;
            height: 250px;
            background-color: green;
        }
        .item {
            background-color: red;
            width: 100px;
            height: 100px;
            margin: 10px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="item">item1</div>
        <div class="item">item2</div>
        <div class="item">item3</div>
    </div>
</body>

在这里插入图片描述
注:这里的 flex-direction 设置为 column ,即主轴线的方向是垂直的,即交叉轴的方向是水平的;align-items 设置为 flex-end,即子元素在交叉轴结束位置上的边界对齐,交叉轴的结束位置在右侧,所以三个子元素在右边界上对齐。

8、align-content

align-content多⾏情况下的对⻬⽅式,类似justify-content的对⻬⽅式。(多行情况下在交叉轴的对齐方式)
align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。align-content 有以下六个值:

  • flex-start :与交叉轴的起点对齐。
  • flex-end :与交叉轴的终点对齐。
  • center :与交叉轴的中点对齐。
  • space-between :与交叉轴两端对齐,轴线之间的间隔平均分布。
  • space-around :每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch:轴线占满整个交叉轴。
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
注释子项目的height: 100px;,效果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
align-content: flex-end;的效果如下:
在这里插入图片描述
align-content: center;的效果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
align-content: space-around;的效果如下:
在这里插入图片描述
下面使用值 center 来操作属性 align-content

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .container {
            display: flex;
            flex-wrap: wrap;
            align-content: center;
            width: 200px;
            height: 600px;
            background-color: green;
        }
        .item {
            background-color: red;
            width: 100px;
            height: 100px;
            margin: 10px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="item">item1</div>
        <div class="item">item2</div>
        <div class="item">item3</div>
    </div>
</body>

在这里插入图片描述
注:该处设置 flex-wrap 换行属性为 wrap,允许换行。align-content 属性在容器内不存在换行时不产生效果,所以我们将容器的 width 设置为 200px,一行只能放下一个子元素。align-content:center 表示每一行在交叉轴上居中排列,三个子元素只是在交叉轴上居中排列,因为我们没有设置主轴线的对齐方式,如果我们将 CSS 代码修改为如下所示,其余代码不变,那么子元素的排列效果就会发生变化。

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .container {
            display: flex;
            flex-wrap: wrap;
            align-content: center;
            justify-content: center;
            width: 200px;
            height: 600px;
            background-color: green;
        }
        .item {
            background-color: red;
            width: 100px;
            height: 100px;
            margin: 10px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="item">item1</div>
        <div class="item">item2</div>
        <div class="item">item3</div>
    </div>
</body>

在这里插入图片描述
可以看到,三个子元素的排列已经完全居中了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值