笔记四、弹性布局

本文详细介绍了FlexBox布局模式,包括如何创建容器和项目,以及容器属性如flex-direction、flex-wrap、justify-content和align-items的作用。同时讲解了项目属性如order、flex-grow、flex-shrink和flex-basis的使用方法。
摘要由CSDN通过智能技术生成

一、FlexBox布局

       Flexbox(即弹性盒子)布局模式,主要思想是让容器有能力让其子项目能够改变其宽度、高度(甚至顺序),以最佳方式填充可用空间(主要是为了适应所有类型的显示设备和屏幕大小

(一)FlexBox布局的概念

1. 容器

采用 FlexBox 布局的元素,称为 Flex 容器(flex container),简称"容器"。只需要给元素添加 display 属性,并设置为 flex 即可

<style>
    .container {
      display: flex;
    }
</style>

<div class="container">
    <div class="left"></div>
    <div class="center"></div>
    <div class="right"></div>
</div>

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)

  • 主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;
  • 交叉轴的开始位置叫做cross start,结束位置叫做cross end。如下:

2.项目

容器中的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称”项目”。如以上案例中的:.left.center.right

注意:设为弹性布局之后,子项的 float、clear 和 vertical-align 属性将失效 

Flex 属性分为两部分:

  • 一部分作用于容器称 容器属性
  • 另一部分作用于子项称为 子项属性

(二)容器的属性  

1.flex-direction

此属性主要 决定主轴的方向 ,即项目的排列方向。

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

2.flex-wrap

       定义伸缩容器里是 单行还是多行显示 ,交叉做的方向决定了新行堆放的方向。Flex项目都尽可能在一行显示,可以根据flex-wrap的属性值来改变,让Flex项目多行显示。

  • nowrap:默认属性,不换行。
  • wrap:换行,第一行在上方,方向从上往下。
  • wrap-reverse:换行,第一行在下方,方向从下至上。

注意:使用该属性,需要 给弹性容器添加固定宽度,当弹性容器宽度超过子项宽度总和时,值设为 wrap 或 wrap-reverse 均不起效果. 

3.flex-flow

       属性是 flex-direction 属性和 flex-wrap 属性的简写形式,默认值为 row nowrap。 

4.justify-content

       属性定义了项目在 主轴上的对齐方式 。具体对齐方式与轴的方向有关,假设主轴方向为从左到右:

  • flex-start(默认值):子项按主轴起点线对齐,即左对齐
  • flex-end:子项按主轴终点线对齐,即右对齐
  • center: 居中排列
  • space-between:子项均匀分布,第一项紧贴主轴起点线,最后一项紧贴主轴终点线,子项目之间的间隔都相等。要注意特殊情况,当剩余空间为负数或者只有一个项时,效果等同于 flex-start。
  • space-around:每个项目两侧的间隔相等。并且,项目与容器边框的间隔是项目之间间隔的一半。要注意特殊情况,当剩余空间为负数或者只有一个项时,效果等同于 center。
  • space-evenly:弹性容器子项均匀分布,所有项目之间及项目与边框之间的距离相等。

5.align-items

       定义项目在 交叉轴上对齐方式 。具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下:

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

6.align-content

       定义了 多根轴线的对齐方式 ,如果项目只有一根轴线,该属性不起作用。
核心是一定是盒子内部的元素超过了盒子项的宽度(默认)出现了换行,也就是 
出现多行才会起作用 。

  • stretch(默认值):轴线占满整个交叉轴。(如果子项设定了高度则无法展开.
  • flex-start:表示各行与交叉轴的起点线对齐。
  • flex-end:表示各行与交叉轴的终点对齐。
  • center:表示各行与交叉轴的中心点对齐。
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。当剩余空间为负数时,效果等同于flex-start。
  • space-around:每根轴线两侧的间隔都相等。

注意:该属性只作用于多行的情况(flex-warp: wrap / warp-reverse),在只有一行的弹性容器上无效,另外该属性可以很好的处理,换行以后相邻行之间产生的间距。

(三)项目的属性

1.order:定义项目的排列顺序。数值越小,排列越靠前,默认为0

2.flex-grow:定义 项目的放大比例,默认为0,即使存在剩余空间,也不放大。Flex 容器会根据子项设置的扩展比例作为比率来分配剩余空间。

  • 当所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有剩余空间)。

  • 如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍

3.flex-shrink定义了项目的 缩小比例,默认为1,即如果空间不足,该项目将缩小。

  • 如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。

  • 如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

4.flex-basis:定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小,可以设为跟width或height属性一样的值(比如350px)

5.align-self:此属性允许单个项目有与其他项目不一样的对齐方式,可覆盖 align-items 属性。
默认值为 auto,表示继承父元素的 align-items 属性,如果没有父元素,则等同于 stretch。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值