flex布局

目录

flex布局-介绍

flex布局-使用步骤

flex布局-理解主轴和侧轴

容器的属性

设置主轴的方向

设置主轴对齐方式

设置侧轴对齐方式(单行)

flex布局-项目属性

设置项目的放大比例

设置项目的缩小比例

设置在分配多余空间之前,项目占据的主轴空间

flex复合属性

设置子元素单独的侧轴对齐方式

flex布局-几点注意事项

flex布局-使用flex布局解决常见布局案例

flex布局-什么时候使用flex布局

flex布局-使用flex布局的步骤


flex布局-介绍

  1. 什么是flex布局?

    它的由来:由于传统的布局解决方案太过复杂,例如:垂直居中、两端固定中间自适应。2009年,W3C提出了一种新的方案——flex布局

    也叫伸缩布局,flex布局

  2. 它有什么好处?

    好处:简单、灵活、自适应

    初体验:

flex布局-使用步骤

  1. 第一步:给父盒子设置 display: flex;

    一旦给父盒子添加了 display: flex; 则会发生两件事:

    • 父盒子就变成了弹性盒子(Flexbox),一般称为容器,父盒子还是老的,原来的,子盒子是全新的盒子

    • 子元素就变成了一个全新的盒子,既不是行内、行内块,也不是块级元素(无论子元素原来是什么类型,现在都可以设置width、height、四个margin、四个padding了),一般称为项目

  2. 第二步:给父盒子或子元素添加属性来控制子元素在父盒子里的布局

    示例:M·M·F 小屋

flex布局-理解主轴和侧轴

flexbox里存在两根轴:

  • 主轴(默认水平,并且从左到右)

  • 侧轴(默认垂直,并且从上到下)

他俩关系:

始终保持垂直

作用:

控制Flexbox里子元素的排列方式

特别注意:

子元素永远按照主轴方向排列

容器的属性

设置主轴的方向

flex-direction: row行(默认值) | row-reverse颠倒相反 | column柱子 | column-reverse;
/*
	row:表示水平从左向右
	row-reverse:表示水平从右向左
	column: 表示垂直从上向下
	column-reverse:表示垂直从下向上
*/

注意:

  • 当flex-direction设置为column或column-reverse时,侧轴则自动变为水平方向,原因是它俩要始终保持垂直

  • 没有设置侧轴方向的属性

设置主轴对齐方式

justify-content: flex-start(默认值) | flex-end | center |  space-between | space-around | space-evenly平均的;
/*
flex-start(默认值):左对齐
flex-end:右对齐
center: 居中
space-between:两端对齐,项目之间的间隔都相等。
space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
space-evenly:项目和项目之间、项目和边框之间,距离都相等
*/

设置侧轴对齐方式(单行)

align-items: stretch(默认值) | flex-start | flex-end | center | baseline;
/*
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
flex-start:交叉轴的起点对齐。
flex-end:交叉轴的终点对齐。
center:交叉轴的中点对齐。
baseline: 项目的第一行文字的基线对齐。
*/

flex布局-项目属性

设置项目的放大比例

flex-grow: <number>;
/* 默认为0,即如果存在剩余空间,也不放大。 */

设置项目的缩小比例

flex-shrink: <number>;
/* 默认为1,即如果空间不足,该项目将缩小。 */

设置在分配多余空间之前,项目占据的主轴空间

flex-basis: <length> | auto;
/* 默认为auto,即项目本身的大小。但一旦设置了值,则该元素的width失效。 */

flex复合属性

flex: flex-grow flex-shrink flex-basis;
/* 默认为 0 1 auto  即:初始宽度由width决定,不放大,但可以缩小*/

/* 它的值有这些:*/
flex: auto; <=> flex: 1 1 auto;  /* 子元素宽度由width决定,并且可以放大缩小 */
flex: none; <=> flex: 0 0 auto;  /* 子元素宽度由width决定,并且不能放大缩小 */
flex: 0; <=> flex: 0 1 0%;  /* 子元素宽度为0(如果里面有内容会撑开),并且不能放大 */
flex: 1; <=> flex: 1 1 0%;  /* 子元素宽度为0(如果里面有内容会撑开),父盒子剩余空间我占1份 */
flex: 9; <=> flex: 9 1 0%;  /* 子元素宽度为0(如果里面有内容会撑开),父盒子剩余空间我占9份 */

/* 补充 */
flex:<number>; 如何计算?(父盒子的width/子盒子number之和)* 自己的number值 = 自己最终的width

flex布局实现圣杯布局

        /* flex布局 */
        .box {
            display: flex;
            height: 50px;
        }
        .box .left, .box .right {
            /* 作用: 既不放大也不缩小 */
            flex: none;
            width: 100px;
            height: 100%;
            background-color: blue;
        }
        .box .middle {
            /* 作用: 既放大也缩小 */
            flex: auto;
            height: 100%;
            background-color: red;
        }

       <div class="box">
         <div class="left"></div>
         <div class="middle"></div>
         <div class="right"></div>
       </div>

设置子元素单独的侧轴对齐方式

align-self: auto(默认值) | stretch | flex-start | flex-end | center

flex布局-几点注意事项

flex:none;既不放大也不缩小

flex:auto;即放大也缩小

  1. 要给一个元素使用flex布局,是给它的父元素设置display: flex;然后它的子元素可以通过这些属性来布局,而父元素本身没有发生什么变化

  2. flex布局只作用于子元素,对孙子元素没有任何作用

    问题:那如果想对孙子也使用flex布局,该如何做?

    答案:  嵌套使用flex布局

  3. flex布局中子元素的float、clear、vertical-align变得不再可用。原因是flex盒子已经控制了之前需要用这些属性才能控制的排布方式,所以这些属性不能用了

flex布局-使用flex布局解决常见布局案例

  • 圣杯布局(两端固定中间自适应)

  • 水平垂直居中

  • 均分盒子

flex布局-什么时候使用flex布局

传统布局

  • 兼容性好

  • 布局繁琐

  • 局限性,不能在移动端很好的布局

flex布局

  • 操作方便,布局非常简单,移动端使用比较广泛

  • IE11或更低版本不支持flex或仅支持部分(不太重要)

总结:

移动端:首选flex布局

pc端:

  • 对兼容性要求不高,也是首选flex布局

  • 如果需要兼容IE,则使用传统布局

flex布局-使用flex布局的步骤

  1. 找到父子关系,将父盒子设置为flexBox

  2. 确定主轴方向

  3. 对主轴和侧轴分别使用哪种对齐方式

  4. 使用flex属性设置子元素的分配空间

  5. 使用align-self对单个子元素设置对齐方式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flex布局(也称为弹性布局)是种主流的CSS布局方式,它可以方便地实现页面元素的自适应和排列。Flex布局通过定义容器和子元素的属性来实现灵活的布局效果。 在Flex布局中,有两个重要的概念:容器和子元素。容器是指应用Flex布局的父元素,而子元素则是容器内部的直接子元素。 以下是Flex布局的一些主要特点和属性: 1. 容器属性: - display: flex;:将容器设置为Flex布局。 - flex-direction:指定主轴的方向,可以是row(水平方向)、column(垂直方向)、row-reverse(水平反向)或column-reverse(垂直反向)。 - justify-content:定义了子元素在主轴上的对齐方式,可以是flex-start(起始对齐)、flex-end(末尾对齐)、center(居中对齐)、space-between(两端对齐,项目之间间隔相等)或space-around(每个项目两侧的间隔相等)。 - align-items:定义了子元素在交叉轴上的对齐方式,可以是flex-start(起始对齐)、flex-end(末尾对齐)、center(居中对齐)、baseline(基线对齐)或stretch(拉伸对齐)。 - flex-wrap:定义了子元素是否换行,可以是nowrap(不换行)、wrap(换行)或wrap-reverse(反向换行)。 2. 子元素属性: - flex:指定子元素的伸缩比例,用于控制子元素在容器中的占比。 - align-self:定义了单个子元素在交叉轴上的对齐方式,可以覆盖容器的align-items属性。 以上是Flex布局的一些基本概念和属性,通过灵活地使用这些属性,可以实现各种不同的布局效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值