flex弹性布局

一、flex布局的基础

1.1、flex的含义

flex布局,也被称之为弹性盒子布局,是CSS3里面新增的一种布局方式,通过使用flex布局,我们可以让布局更加便捷高效.

1.2、如何触发弹性盒子

  • 给父元素添加display属性,并且将取值设置成:flex

1.3、触发弹性盒子有哪些特点

  1. 子元素默认横向显示
  2. 子元素会默认变成块级元素,能设置宽度高度
  3. 如果只有一个子元素的话,则给子元素添加margin:auto的时候会让子元素直接实现水平垂直居中显示

二、flex的相关容器属性

2.1、flex的各个值

在这里插入图片描述

  1. Flex容器:采用Flex布局的元素的父元素;
  2. Flex项目:采用Flex布局容器里面的子元素;
  3. 横轴(水平轴):水平方向轴线纵轴(垂直轴):垂直方向轴线
  4. 主轴:触发弹性盒子之后,项目的排列方向
  5. 侧轴(交叉轴):触发弹性盒子之后,与主轴对立的方向
  • 注意:触发弹性盒子之后,项目默认沿主轴排列。

2.2、修改主轴的方向

flex-direction:

属性:

说明
row主轴在横向,并且以开始位置显示;
row-reverse主轴在横向,并且以相反方向位置显示;
column主轴在纵向,并且以开始位置显示;
column-reverse主轴在纵向,并且以相反方向位置显示.

2.3、调整主轴上的对齐方式

justify-content:

属性:

说明
flex-start主轴的开始位置显示(项目之间是没有间距的);
flex-end主轴的结束位置显示(项目之间是没有间距的);
center主轴居中位置显示(项目之间是没有间距的);
space-around主轴的两端环绕,项目与项目之间距离是首尾项目与容器之间距离的2倍;
space-between主轴的两端对其;
space-evenly主轴的间距平分.

2.4、调整侧轴上的对齐方式

align-items:

属性:

说明
flex-start侧轴的开始位置显示;
flex-end侧轴的结束位置显示;
center侧轴的居中位置显示;
baseline侧周的基线位置显示,效果与开始位置一致,实际开发的时候不会使用该属性值;
stretch默认的拉伸效果,前提,项目不需要设置高度;

2.5、元素折行显示

flex-wrap:

属性:

  1. nowrap:不折行,默认就是存在挤压的效果
  2. wrap:折行显示;
说明
nowrap不折行,默认就是存在挤压的效果;
wrap折行显示;

2.6、调整在侧轴上显示的行间距

align-content

属性:

说明
flex-start侧轴的开始位置(没有有行间距的);
flex-end侧轴的结束位置显示(没有行间距的);
center侧轴的居中位置显示(没有行间距的);
space-between两端对其;
space-around两端环绕;
space-evenly行间距均分

三、flex的相关项目属性

3.1、项目中的单独对齐方式

在这里插入图片描述
项目中的单独对其方式, 可以让不同的元素位于不同的位置显示

  • 父元素触发: display:flex;
  • 单独调整对其方式
    需要使用属性: align-self
说明
align-self: flex-start侧轴开始位置;
align-self: flex-end侧轴的结束位置;
align-self: center侧轴的居中位置;
align-self: baseline侧轴的基线位置;
align-self: stretch侧轴默认拉伸;

3.2、项目显示的顺序

属性:order:

  • 取值:

    • 可以为正数
    • 可以为负数
  • 取值越大越靠后面

  • 取值越小越靠前面

  • order:auto

3.3、项目对于空间的显示

  1. 主轴在横向的时候
    如果项目不设置高度的话,默认高度是拉伸的,项目添加flex:1实现的是占剩余宽度的所有
  2. 主轴在纵向的时候
    如果项目不设置宽度的话,默认宽度是拉伸的,项目添加flex:1实现的是占剩余高度的所有
  • 属性:flex: 1;
  • 作用:设置占剩余宽度,剩余高度的所有:
  • 前提:
    • 主轴在横向则实现占剩余宽度所有;
    • 主轴在纵向的话,则实现占剩余高度的所有
    • 如果所有的项目都使用了flex:1;则实现的效果是均分的情况

3.4、flex属性

  1. flex属性是一个复合属性是由: flex-grow、flex-shrink、flex-basis三个属性的缩写。
    1. flex-grow:定义项目的的放大比例;
      默认为0,即即使存在剩余空间,也不会放大;
      所有项目的flex-grow为1:等分剩余空间(自动放大占位);
      flex-grow为n的项目,占据的空间(放大的比例)是flex-grow为1的n倍。
    2. flex-basis: 定义在分配多余空间之前,项目占据的主轴空间(main size)
      浏览器根据此属性计算主轴是否有多余
      空间。相当于设置初始值,默认值为auto
    3. flex-shrink:定义项目的缩小比例
      取值为0/1
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .bigbox{
                width: 500px;height : 500px;
                border:10px solid gray;margin: 100px auto;
                /*触发弹性盒子*/
                display: flex;
                overflow: auto;
                }
        .bigbox>div{
                    width: 50px;height: 50px;
                    border:2px dashed red;/*不挤压,不折行*/
                    flex-shrink: 0;
                    }
        </style>
</head>
<body>
        <body>
                <div class="bigbox">
                    <div>1</div>
                    <div>2</div>
                    <div>3</div>
                    <div>4</div>
                    <div>5</div>
                    <div>6</div>
                    <div>7</div>
                    <div>8</div>
                    <div>9</div>
                    <div>9</div>
                    <div>9</div>
                    <div>9</div>
                    <div>9</div>
                    <div>9</div>
                    <div>9</div>
                </div>
        </body>
</body>
</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值