zoukankan      html  css  js  c++  java
  • 几种常见布局的flex写法

    flex布局目前基本上兼容主流的浏览器,且实现方式简单。我整理了flex的一些知识点,并且总结归纳了几种常见布局的flex写法


    ​flex基础知识点

    flex-grow和flex-shrink相关计算公式

    • 公式1:子元素空间 < 父容器

    父容器剩余空间 = 父容器宽度 - 子元素宽度之和
    增长单位 = 父容器剩余空间 / 各子元素flex-grow之和
    子元素实际宽度 = (flex-basis) + 增长单位*(flex-grow)

    • 公式2:子元素空间 > 父容器

    子元素溢出的宽度 = 子元素的宽度之和 - 子元素宽度之和
    收缩单位 = 子元素溢出的宽度 / 各子元素flex_shrink之和
    计算的子元素的宽度 = (flex-basis) - 收缩单位*(flex-shrink)

    flex兼容性

    clipboard.png

    目前flex兼容主流浏览器,对于部分兼容的浏览器可加私有属性:

    display:-ms-flex;/* IE10 */
    display:-moz-flex;/* Firefox2 ~ Firefox21 */
    display:-webkit-flex;

    flex bugs

    • 在IE10~11浏览器,min-height不适合于flex容器的子元素flex项目。如果可能的话,使用height来替代min-height。

    • 在Chrome,Opear和Safari浏览器不识别flex项目内容的最小尺寸。可以设置flex-shrink的值为0(而不是默认的1),以避免不必要的收缩。

    • 不使用无单位的flex-basis值,因为在IE10~11中,flex简写被忽略。常使用0%来替代0px。

    flex布局应用场景

    Flexbox布局比较适合Web应用程序的一些小组件和小规模的布局,而Grid布局更适合用于一些大规模的布局。

    flex布局优缺点

    • 兼容所有主流浏览器

    • 轻松实现元素的水平垂直居中

    • 可以忽略内联元素的4px外边距

    • 可以简单的实现复杂的布局

    推荐阅读

    • 大漠:《一个完整的Flexbox指南》

    • 阮一峰:《Flex 布局教程》

    • Philip Walton和Greg Whitworth收集和整理了有关于Flexbox bugs。

    几种常见布局的flex写法

    首先要对父元素设置flex布局方式,同时在本案例中,利用媒体查询,当屏幕分辨率小于768px的时候,flex布局变成纵向排列。

    clipboard.png

    • 两列布局
      flex-grow定义的是元素的放大比例,默认值为0,表示元素不放大。当给所有子元素赋予flex-grow的值时,该值可以看作是元素尺寸所占父元素的比例。

    clipboard.png

    clipboard.png

    clipboard.png

    • 两列布局定宽
      flex是flex-grow flex-shrink flex-basis的简写方式。

    给第一个子元素赋值flex:1 0 100px;表示该元素在任何情况下的宽度均是固定位100px,不会随着父元素和其他子元素缩放。
    第二个子元素的flex-grow为1,则在任何情况下该元素均占满父元素的剩余空间,设置overflow可以防止元素溢出。

    clipboard.png

    clipboard.png

    clipboard.png

    • 三列布局
      该布局中重点介绍的是order属性,元素的先后排列顺序与order的值对应,order值越大,元素越靠后。

    clipboard.png

    clipboard.png

    clipboard.png

    • n列等比布局
      注意到第6个子元素的特殊性,我们希望这六个子元素能等宽分布,但是当元素内容过多时,它会占用更多的空间,甚至溢出。

    因此对这些元素定义了100%;该方法表示所有的元素均占用父元素应有的位置,不因其他兄弟元素内容过多而少分配空间。

    clipboard.png

    clipboard.png

    clipboard.png

    • 流式布局
      流式布局可适用于自适应布局中,当父元素大小发生改变时,其子元素的大小也随之改变。

    该布局的重点属性是flex-wrap:wrap;,如此设置可以使子元素自动换行,防止子元素溢出。

    clipboard.png

    clipboard.png

    clipboard.png

    • 水平垂直居中
      关键属性为justify-content:center;align-item:center;这是flex布局的一个两点,不需要知道父、子元素任何相关的尺寸信息,便能实现居中布局,灵活性很大。

    clipboard.png

    clipboard.png

    clipboard.png

    • 对折线
      该案例以及下面的“各种对齐方法”主要是介绍flex中,水平和垂直方向上的的各种对齐方式。

    clipboard.png

    clipboard.png

    clipboard.png

    • 各类对齐方式

    clipboard.png

    clipboard.png

    clipboard.png

  • 相关阅读:
    三个心态做人做学问 沧海
    成功走职场要找准自己的"快捷键" 沧海
    免费离线下载 拂晓风起
    Hibernate 获取某个表全部记录时 奇怪现象 (重复出现某个记录) 拂晓风起
    无法读取mdb 如果连接不了ACCESS mdb文件,就尝试安装MDAC 拂晓风起
    Netbeans 使用 Hibernate 逆向工程 生成hbm和pojo 拂晓风起
    如何点击单选框 radio 后面的文字,选中单选框 拂晓风起
    Java 连接access 使用access文件 不用配置 拂晓风起
    mysql下如何执行sql脚本 拂晓风起
    Hibernate配置access Hibernate 连接 access 拂晓风起
  • 原文地址:https://www.cnblogs.com/10manongit/p/12220862.html
Copyright © 2011-2022 走看看