移动端知识点02—弹性盒子

一、定义

        弹性盒子是 CSS3 的一种新的布局模式。

        CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。

        引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间。

二、弹性盒子内容

  • 弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。
  • 弹性容器通过设置 display 属性的值为 flex inline-flex将其定义为弹性容器。
  • 弹性容器内包含了一个或多个弹性子元素,子元素可以称为容器内的项目。
  • 成为容器后,直接子元素的浮动居中等效果都会失效。
  • 弹性子元素通常在弹性盒子内一行显示。默认情况每个容器只有一行。
  • 弹性盒子内有主轴和交叉轴,主轴主管水平方向对齐方式,交叉轴主管垂直方向对齐方式

注意: 弹性容器外及弹性子元素内是正常渲染的。弹性盒子只定义了弹性子元素如何在弹性容器内布局。

三、语法

1、定义弹性容器

语法:display:flex;

   .box {
      /* 父元素容器,谁有flex谁是容器 */
      display: flex;
   
}

2、主轴方向(水平方向)的对齐方式

语法:justify-content: ;

值:

解释
flex-start左对齐
flex-end右对齐
center居中
space-between两端对齐 每两个项目之间的距离相等
space-around每个项目两侧距离相等
 space-evenly每两个项目之间的距离,与边沿项目距离容器之间的距离相等

示例:

    .box {
      /* 容器,谁有flex谁是容器 */
      display: flex;
      width: 500px;
      height: 500px;
      justify-content: flex-start;
      /* 左对齐 */

      justify-content: flex-end;
      /* 右对齐 */

      justify-content: space-between;
      /* 每两个项目之间的距离相等 */
      
      justify-content: space-around;
      /* 每一个项目两侧距离相等 */

      justify-content: space-evenly;
      /* 每两个项目之间的距离,与边沿项目距离容器之间的距离相等  */
      
      justify-content: center; 
      /* 居中对齐 */
}

3、交叉轴(垂直方向)的对齐方式

语法: align-items: ;

值:

解释
stretch

默认值  

注意:未定义交叉轴对齐方式且项目未设置高度时或高度为auto时,会自动拉伸为与父容器高度相同,占满整个父容器

flex-start 不加高度默认内容撑开,居上对齐
flex-end 与交叉轴的终点对齐 居下对齐
center垂直方向上居中对齐
baseline与第一个项目的第一行文字基线对齐

示例:

 .box {
      /* 容器,谁有flex谁是容器 */
      display: flex;
      width: 500px;
      height: 500px;
    
      align-items: center; /*垂直居中 */
     
      align-items: stretch; /* 默认 */
     
      align-items: flex-start;/* 与交叉轴起点对齐 居上对齐 */
    
      align-items: flex-end; /* 与交叉轴的终点对齐 居下对齐 */
     
      align-items: baseline;   /* 与第一个项目的文字基线对齐 */
     
      background-color: aquamarine;
    }

4、修改主轴方向 (即项目的排列方向)

语法: flex-direction: ;

值:

解释
row 默认值,主轴水平方向,起点在左侧
row-reverse主轴为水平方向,起点在右侧
column主轴与交叉轴互换位置,主轴为垂直方向,起点在上侧
column-reverse 主轴为垂直方向,起点在下侧

示例:

.box {
      /* 容器,谁有flex谁是容器 */
      display: flex;
      width: 500px;
      height: 500px;
      background-color: aquamarine;
      
      flex-direction: row;
      /* 默认值,起点在右侧 */

      flex-direction: row-reverse;
      /* 主轴为水平方向,起点在右侧 */

      flex-direction: column;
      /* 主轴与交叉轴互换位置,主轴为垂直方向,起点在上侧 */

      flex-direction: column-reverse;
      /* 主轴为垂直方向,起点在下侧 */
	/* 主轴位置改变后,justify-content的效果也会发生相应改变 */
      
    }

注意:主轴方向改变后,justify-content的效果也会发生相应改变

5、项目换行方式

语法: flex-wrap: ;

值:

解释

 nowrap

默认值,项目不换行

wrap

 项目换行,第一行在上方

wrap-reverse

项目换行,第一行在下方,使用较少

    .box {
      /* 容器,谁有flex谁是容器 */
      display: flex;
      width: 500px;
      height: 500px;
      background-color: aquamarine;
      
      /* 项目换行 */
      flex-wrap: nowrap;
      /* 默认值,项目不换行 */

      flex-wrap: wrap; 
      /* 项目换行,第一行在上方 */

      flex-wrap: wrap-reverse; 
      /* 项目换行,第一行在下方,使用较少 */
}

6、align-content 

在换行之后会出现多根轴线,且项目与其下行项目之间会出现缝隙,可以通过设置 align-content的值来解决。

align-content: 定义有多根轴线的垂直对齐方式,如果只有一根轴线,则不起作用。

语法:align-conten: ;

值:

解释

 flex-start

所有项目整体与交叉轴的起点对齐,缝隙消失

flex-end

整体与交叉轴的终点对齐,居下对齐

center

与交叉轴的中点对齐

space-between

在垂直方向上两端对齐,每两行之间的距离的相等

space-around

每一行上下两侧的距离相等

space-evenly

每行上下之间的距离与顶上底下两侧距离相等

.box {
      /* 容器,谁有flex谁是容器 */
      display: flex;
      width: 500px;
      height: 500px;
      background-color: aquamarine;
      
      /* 项目换行 */

      flex-wrap: wrap; 
      /* 项目换行,第一行在上方 */
      /* 换行之后会有多根轴线 */
      /* 换行之后会有缝隙,下面解决 */

      align-content: flex-start;
      /* 所有项目整体与交叉轴的起点对齐,缝隙消失 */

      align-content: flex-end;
      /* 整体与交叉轴的终点对齐,居下对齐 */

      align-content: center; 
      /* 与交叉轴的中点对齐 */

      align-content: space-between;
      /* 在垂直方向上两端对齐,每两行之间的距离的相等 */

      align-content: space-around;
      /* 每一行上下两侧的距离相等 */

      align-content: space-evenly;
       /* 每行上下之间的距离与顶上底下两侧距离相等 */

      /* 简写:flex-flow:flex-direction flex-wrap  使用较少*/
      flex-flow: column nowrap;


    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值