flex布局

flex布局 弹性盒布局

为什么我们需要 flex?

  • 解决元素居中问题

  • 自动弹性伸缩,合适适配不同大小的屏幕,和移动端

        开启 :display:flex;

        有两个概念,一个是父级 又称作容器;另一个是子级,又名项目

        首先聊一下容器的属性

                设置主轴方向:flex-direction:

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

                设置主轴上元素的排列方式:justifu-content: 

             flex-start (默认)靠着main-start对齐//参考常见术语(一般是左方向)
             flex-end   靠着main-end对齐//参考常见术语(一般是右方向)
             center     靠着主轴居中对齐//一般就是居中对齐
             space-between 两端对齐,靠着容器壁,剩余空间平分
             space-around  分散对齐,不靠着容器壁,剩余空间在每个项目二侧平均分配
             space-evenly  平均对齐,不靠着容器壁,剩余空间平分

                设置主轴元素一行满了是否换行:flex-wrap :

             nowrap (默认值) 不换行压缩宽度
             wrap    换行
             wrap-reverses 反向换行
                设置子级在父级侧轴上的排列方式:align-items:(在子项为单项的时候使用)整体一行元素看成整体,设置在侧轴对齐方式

           flex-start:交叉轴的起点对齐。
           flex-end:交叉轴的终点对齐。
           center:交叉轴的中点对齐。
           baseline: 项目的第一行文字的基线对齐。
           stretch(默认值)伸展:如果项目未设置高度或设为auto,将占满整个容器的高度。
                
                设置子级在侧轴元素上的排列方式:align-content:(只能用于出现换行的情况)

        flex-start (每一行)(默认)靠着cross-start对齐//参考常见术语(一般是左方向)
        flex-end   (每一行)靠着cross-end对齐//参考常见术语(一般是右方向)
        center     (每一行)靠着cross线居中对齐//一般就是居中对齐
        space-between (每一行)两端对齐,靠着容器上下壁,剩余空间平分
        space-around  (每一行)分散对齐,不靠着容器壁,剩余空间在每个项目二侧平均分配
        strentch      (每一行)伸缩,占满整个高度
        

项目属性:

        单独控制元素所占剩余空间,侧轴排列方式,顺序等。
        flex-grow:长大
        flex-shrinik: 缩小
        align-self: 覆盖container align-items 属性
        order 排序
        flex-basis: 有效宽度

                                                

flex:1什么意思?

     flex:1;又为flex:1 1 auto;经常用作自适应布局,将父容器的display:flex,侧边栏大小固定后,将内容区flex:1,内容区则会自动放大占满剩余空间。

       flex: 1 实际上是三个属性的缩写:flex-grow: 1; flex-shrink: 1 flex-basis: auto;

        该属性将会占据容器中所有剩余空间,所以可以轻易做到footer元素 一直保持在底部的效果

flex-grow:定义项目的的放大比例;

        默认为0,即 即使存在剩余空间,也不会放大;
        所有项目的flex-grow为1:等分剩余空间(自动放大占位);
        flex-grow为n的项目,占据的空间(放大的比例)是flex-grow为1的n倍。

flex-shrink:定义项目的缩小比例;

        默认为1,即 如果空间不足,该项目将缩小;
        所有项目的flex-shrink为1:当空间不足时,缩小的比例相同;
        flex-shrink为0:空间不足时,该项目不会缩小;
        flex-shrink为n的项目,空间不足时缩小的比例是flex-shrink为1的n倍。

flex-basis: 定义在分配多余空间之前,项目占据的主轴空间(main size),浏览器根据此属性计算主轴是否有多余空间。相当于设置初始值

        默认值为auto,即 项目原本大小;
        设置后项目将占据固定空间。

圣杯布局

        要求:

        header和footer各占领屏幕所有宽度、高度固定

        中间container是一个三栏布局

        三栏布局中两侧宽度固定不变、中间部分自动填充整个区域

        中间部分高度是三栏中最高区域的高度

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值