css-弹性布局

一、什么是Flex

Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性

二、Flex组成

设置方式: 給父元素设置dispaly:flex,子元素可以自动挤压和拉伸
组成部分:
1.弹性容器
2.弹性盒子
3.主轴:默认水平方向
4.侧轴/交叉轴:垂直方向
没有设置布局方式默认在这里插入图片描述

    <style>
    /*弹性容器*/
        .all {
            display: flex;
            height: 300px;
            border: 1px solid black;
        }
            /*弹性盒子 默认沿着主轴方向排列*/
        .all div {
            width: 200px;
            height: 100px;
            background-color: pink;
        }
    </style>
    <div class="all">
        <div class="id1">
            1
        </div>
        <div class="id2">
            2
        </div>
        <div class="id3">
            3
        </div>
    </div>

在父类设置display:flex
在这里插入图片描述

主轴对齐方式(justify-content)

flex-start(默认值):弹性盒子从起点依次排列
flex-end:弹性盒子从终点依次排列
center: 弹性盒子沿主轴居中排列
space-between:弹性盒子沿主轴均匀排列,空白间距均分布在弹性盒子之间
space-around:弹性盒子沿主轴均匀排列,空白间距均分布在弹性盒子两侧
space-evenly:弹性盒子沿主轴均匀排列,弹性盒子与容器之间间距相等

2.1center

        .all {
            display: flex;
            height: 300px;
            border: 1px solid black;
            justify-content: center; 
        }

        .all div {
            width: 200px;
            height: 100px;
            background-color: pink;
        }

在这里插入图片描述

2.2 space-between

        .all {
            display: flex;
            height: 300px;
            border: 1px solid black;
            
            /*父元素剩余尺寸分配成间距*/
            /*弹性盒子之间的间距相等*/
            /* justify-content: space-between; */
        }

        .all div {
            width: 200px;
            height: 100px;
            background-color: pink;
        }

在这里插入图片描述

2.3 space-around

        .all {
            display: flex;
            height: 300px;
            border: 1px solid black;
            
            /*间距出现在盒子两侧*/
            /*视觉效果:弹性盒子之间的间距是两侧 间距的2倍*/
            justify-content: space-around;
        }

        .all div {
            width: 200px;
            height: 100px;
            background-color: pink;
        }

在这里插入图片描述

2.4 space-around

        .all {
            display: flex;
            height: 300px;
            border: 1px solid black;
            /*均匀分配*/
            justify-content: space-evenly; 
        }

        .all div {
            width: 200px;
            height: 100px;
            background-color: pink;
        }

在这里插入图片描述

三、弹性盒子在侧轴对齐方式(align-items)

align-items 当前弹性容器内所有弹性盒子的侧轴对齐方式(給弹性容器设置)
1.flex-start 默认值, 起点开始依次排列
2.flex-end 终点开始依次排列
3.center 沿侧轴居中排列
4.stretch 默认值, 弹性盒子沿着主轴线被拉伸至铺满容器
align-self 单独控制某个弹性盒子的侧轴对齐方式(給弹性盒子设置)

3.1 stretch

     .all {
            display: flex;
            /*弹性盒子在侧轴方向内有尺寸才会拉伸*/
            align-items: stretch;
            height: 300px;
            border: 1px solid black;
        }

        .all div {
            width: 200px;
           /* height: 100px; */
            background-color: pink;
        }

在这里插入图片描述

3.2 flex-start

        .all {
            display: flex;
            align-items: flex-start;
            height: 300px;
            border: 1px solid black;
        }

        .all div {
            width: 200px;
            height: 100px;
            background-color: pink;
        }

在这里插入图片描述

3.3 flex-end

        .all {
            display: flex;
            align-items: flex-end;
            height: 300px;
            border: 1px solid black;
        }

        .all div {
            width: 200px;
            height: 100px;
            background-color: pink;
        }

在这里插入图片描述

3.3 center

        .all {
            display: flex;
            align-items: center;
            height: 300px;
            border: 1px solid black;
        }

        .all div {
            width: 200px;
            height: 100px;
            background-color: pink;
        }

在这里插入图片描述

3.3 align-self

  .all {
            display: flex;
            align-items: flex-end;
            height: 300px;
            border: 1px solid black;
        }
        /* 第二个div侧轴剧中对齐 */
        .all div:nth-child(2){
            align-self: center;

        }

        .all div {
            width: 200px;
            height: 100px;
            background-color: pink;
        }

在这里插入图片描述

四、修改主轴方向(flex-direction)

row(默认值):主轴为水平方向,起点在左端(项目从左往右排列)。
row-reverse:主轴为水平方向,起点在右端(项目从右往左排列)。
column:主轴为垂直方向,起点在上沿(项目从上往下排列)
column-reverse:主轴为垂直方向,起点在下沿(项目从下往上排列)

五、弹性盒子的伸缩比

作用:控制弹性盒子主轴方向的尺寸
属性名:flex
属性值:整数数字,表示占父级剩余尺寸的分数

        /* 默认情况下,主轴的尺寸靠内容撑开的,侧轴默认拉伸 */
        .all {
            display: flex;
            height: 300px;
            border: 1px solid black;
        }
        .all div:nth-child(1){
            width: 200px;
        }
        /* 占父级剩余尺寸的1份 */
        .all div:nth-child(2){
            flex:1;
            background-color: yellow;
        }
        /* 占父级剩余尺寸的2份 */
        .all div:nth-child(3){
            flex:2;
            background-color: red;
        }
        .all div {
            height: 100px;
            background-color: pink;
        }

1:2的比例
在这里插入图片描述

六、弹性盒子换行

弹性盒子可以自动挤压或拉伸,默认情况下,所有弹性盒子在一行显示
属性名: flex-wrap
属性值: wrap 换行 nowarp 不换行(默认)

nowarp 不换行(默认)
在这里插入图片描述
wrap 换行

<style>
      .all {
          display: flex;
          height: 300px;
          border: 1px solid black;
          flex-wrap: wrap;
      }

      .all div {
          width: 200px;
          height: 100px;
          background-color: pink;
      }
  </style>
   <div class="all">
      <div>1</div>
      <div>2</div>
      <div>3</div>
      <div>4</div>
      <div>1</div>
      <div>2</div>
      <div>3</div>
      <div>4</div>
      <div>1</div>
      <div>2</div>
      <div>3</div>
      <div>4</div>
      <div>1</div>
      <div>2</div>
      <div>3</div>
      <div>4</div>
      <div>1</div>
      <div>2</div>
      <div>3</div>
      <div>4</div>
  </div>

在这里插入图片描述

** 七、行对齐方式(align-content)**(对单行弹性盒子不生效)

flex-start(默认值):弹性盒子从起点依次排列
flex-end:弹性盒子从终点依次排列
center: 弹性盒子沿主轴居中排列
space-between:弹性盒子沿主轴均匀排列,空白间距均分布在弹性盒子之间
space-around:弹性盒子沿主轴均匀排列,空白间距均分布在弹性盒子两侧
space-evenly:弹性盒子沿主轴均匀排列,弹性盒子与容器之间间距相等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值