弹性盒子简单用法

flex布局,一定要区分开,弹性盒子和弹性元素,主轴和交叉轴,就很简单了

1、弹性盒子

设置弹性盒子
display:flex;

可以简洁,完整,响应式(自适应)的实现各种页面布局

采用flex布局的元素,称为弹性盒子 或者 flex容器,
他的所有子元素称为弹性元素 或者 flex项目

主轴:元素盒子排列的方向(默认的排列方向x轴,
当然不是说主轴就是x,因为我们可以通过属性来
改变主轴的方向)

交叉轴:和主轴垂直的轴

弹性盒子属性/容器属性:

flex-direction 改变主轴的方向。
  • 属性值有四种情况:
  • {flex-direction: row;}/默认值,从左往右排列/
  • {flex-direction: row-reverse;}/从右往左排列/
  • {flex-direction: column;}/从上往下排列/
  • {flex-direction: column-reverse;}/从下往上排列/
flex-wrap 控制容器是单行还是多行
属性值有三种情况:
{flex-wrap: nowrap; } 默认值,不换行,会压缩,不会超出父级
{flex-wrap: wrap; } /*换行*/
{flex-wrap: wrap-reverse; }
只是单纯的上下反转,不是序号改变
复合属性:
  • flex-flow:是 flex-direciton 和 flex-wrap两个属性综合
justify-content定义弹性元素在主轴上的对齐方式

用于控制元素在主轴上的排列方式,再次强调是主轴的排列方式。
属性值五种:

  • 1 flex-start //默认值,从主轴开始部分开始排列(说白了就是左对齐)
  • 2 flex-end //从主轴结束部分开始排列(说白了是右对齐)
  • 3 center //居中
  • 4 space-between // 两端对齐,中间有相等的间隔
  • 5 space-around //环绕对齐,每个项目两边的间隔相等
  • 6 space-evenly 元素间距离平均分配
align-items定义弹性元素在交叉轴上如何对齐
  • align-items: stretch; //弹性元素不设置高度时被拉伸以适应容器(默认值)
  • align-items: flex-end; //交叉轴下沿对齐
  • flex-start 元素位于容器的交叉轴开头
  • align-items: center; // 交叉轴中部对齐
  • align-items: baseline; //项目里面的文字的基线对齐
align-content定义了多根主轴在(交叉轴的对齐方式)

如果项目自有一根轴线,则不起作用
只适用于多行显示的弹性容器

属性值六种

  • stretch 元素被拉伸以适应容器(默认值
  • flex-start //与交叉轴上沿紧密对齐
  • flex-end //与交叉轴下沿紧密对齐
  • center //居中
  • space-between // 与交叉轴两端对齐,中间主轴宽度平均分配
  • space-around //环绕对齐,中间主轴宽度平均分配
  • space-evenly //元素间距离平均分配

2、弹性元素

弹性盒子里面的元素即为弹性元素
放在容器盒子中的元素即为弹性元素。
不能使用float与clear规则
弹性元素均为块元素
绝对定位的弹性元素不参与弹性布局

align-self

用于控制单个元素在交叉轴上的排列方式,
align-items 用于控制容器中所有元素的排列,
而 align-self 用于控制一个弹性元素的交叉轴排列。

选项 说明

stretch 不设置高,高度占满盒子的高
flex-start 元素紧靠主轴起点
flex-end 元素紧靠主轴终点
center 元素从弹性容器中心开始

flex-grow

默认值 0
用于将弹性盒子的可用空间,分配给弹性元素。可以使用整数或小数声明。
下例中为三个DIV 弹性元素设置了1、3、6 ,即宽度分成10等份,
第三个元素所占宽度为(宽度/(1+3+6)) X 6。

如果弹性元素设置了宽度,将把(弹性盒子-弹性元素宽度和)
后按照 flex-grow 进行分配 。‘
例如弹性盒子500,弹性元素设置宽100
让后flex-grow 分别设置 0 -1 -3
(500-300)/ (0+1+3)= 50
200+0x50
200+1x50
200+3*50
来分配

flex-shrink

与 flex-grow 相反 flex-shrink 是在弹性盒子装不下元素时定义的缩小值
默认值 1

案例

 article {
        border: solid 5px silver;
        width: 400px;
        height: 120px;
        display: flex;
        box-sizing: content-box;
    }
    article div:nth-child(1) {
        flex-shrink: 0;
    }
    article div:nth-child(2) {
        flex-shrink: 1;
    }
    article div:nth-child(3) {
     flex-shrink: 3;
    }
    article * {
        width: 200px;
        height: 100px;
       }
 计算方式:
   flex-shrink: 0; 代表不缩放,还是原来的宽度
   flex-shrink: 1;
   flex-shrink: 3;
   父级400,3个子级每个200,所以必须缩小200,
   flex-shrink0 代表不缩放,还是原来的宽度
   1+3 总共把200分成4份
   flex-shrink 1 就是200里面的其中1份(200-50) 
   flex-shrink 3 就是200里面的其中3份(200-150) 

flex-basis

flex-basis的优先级高于width、height属性。
flex-basis: 100px;

flex

flex是flex-grow、flex-shrink 、flex-basis缩写组合
flex: 1 0 100px;

order

用于控制弹性元素的位置,默认为 order:0 数值越小越在前面,可以负数或整数。

弹性文本

文本节点也在弹性布局操作范围内

绝对定位

绝对定位的弹性元素不参与弹性布局

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值