zoukankan      html  css  js  c++  java
  • flex弹性布局心得

    概述

    最近做项目用flex重构了一下网页中的布局,顺便学习了一下flex弹性布局,感觉超级强大,有一些心得,记录下来供以后开发时参考,相信对其他人也有用。

    参考资料:

    Solved by Flexbox

    Flex 布局教程:语法篇

    flex基础

    flex基础语法可以参考上面阮一峰的flex布局教程。简要如下:

    display: flex;
    justify-content: space-between; //子元素横向排列方式
    align-items:center; //子元素纵向排列方式
    

    注意:父元素声明为flex之后,子元素不需要声明为flex。

    强大的flex: 1

    在布局的时候,我们经常会遇到需要让子元素的宽度随着父元素的宽度改变的情况,即子元素需要自己撑满父元素。比如粘性页脚,让高度未知的页脚粘在高度未知的父元素的底部。这个时候只需要加上下面的css即可:

    // 父元素声明为flex,排列方式为上下排列
    .Site {
      display: flex;
      min-height: 100vh;
      flex-direction: column;
    }
    
    // 要自己撑满父元素的子元素加上这个class(不是页脚哦~)
    .Site-content {
      flex: 1;
    }
    

    注意:利用flex:1和父div包裹可以实现各种强大的布局。如果不行的话,就给它包一层flexbox的父元素轻松解决啦~

    深入flex: 1

    flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

    该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

    flex-grow属性定义了项目的 放大比例,默认为0,就是不放大。
    
    flex-shrink属性则定义了项目的缩小比例,默认为1,就是如果空间不足的话,项目将缩小。
    
    flex-basis定义了项目的本来大小,基本相当于width或者height。
    

    注意:这里有一个坑,就是低版本浏览器在解析flex和width属性的时候会发生冲突,表现出来就像是flex-wrap不生效的样子,当初解决这个问题花了我3.5个小时。所以一般对于flexbox不直接写 50%,而是用flex: 0 0 50%来代替;如果width是具体的值 200px,则用flex: 0 0 200px代替

  • 相关阅读:
    IDEA出现There is no configured/running web-servers found! Please, run any web-configuration and hit the Refr
    国内加速访问Github的办法
    Sublime Text3常用插件汇总
    Qt的进度条设置
    Qt的Qss样式
    Qt中的事件
    QT 的信号与槽
    Qt使用QStackedWidget实现堆栈窗口
    Qt 窗口等设置
    Qt入门1---widget、mainwindow和Dialog区别
  • 原文地址:https://www.cnblogs.com/yangzhou33/p/10408247.html
Copyright © 2011-2022 走看看