zoukankan      html  css  js  c++  java
  • Flex布局 详解

    @

    Flex布局 详解

    基本上是仿照这三个写的
    Flex 布局教程:语法篇http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
    Flex 布局教程:实例篇http://www.ruanyifeng.com/blog/2015/07/flex-examples.html
    flex简介https://www.cnblogs.com/echolun/p/11299460.html
    这个东西看的再多不如自己写一遍 写完你就知道该怎么用 用到哪个地方了

    概念:

    意为"弹性布局",用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为 Flex 布局。

    用法:

    布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。

    而flex布局则是一种新的布局方案,通过修改父div的display属性,让父元素成为一个flex容器,从而可以自由的操作容器中子元素(元素)的排列方式。

    例如我们让多个div横向排列,传统做法是使用浮动,但浮空后因为脱离文档流的缘故,父元素会失去高度,这又涉及了清除浮动等一系列的问题。

    而flex布局相对简单很多,修改父元素display:flex,你会发现div自动就排列成了一行,而且没有浮动之后的副作用,从回流角度考虑,flex的性能更优于float;随着浏览器不断兼容以及旧版本的淘汰,flex布局注定会成为更为流行的布局方案。

    --------所以使用的时候主要就是,父容器的属性和内部元素的属性
    1.父容器元素:
    属性: flex-direction
    用于控制元素排列方向与顺序,

    row(默认)     | 横向排列 顺序:正序1-2-3
    row-reverse   | 横向排列 顺序:倒序3-2-1
    column        | 纵向排列 正序:正序1-2-3 
    column-reverse| 倒序排列 倒序:倒序3-2-1
    

    属性: flex-wrap
    用于控制元素是否换行

    nowrap(默认) | 不换行
    			举个例子:比如容器宽度为300px,容器中有6个宽度为60px的元素,nowrap情况下,元素会强行等分容器宽度从而不换行,那么元素实际宽度也就只有50px了,而非我们自己设置的60px。
    wrap         | 表示换行
    			即元素不会等分容器宽度,而是根据自身宽度进行排列,如果超出父容器宽度则自然换行。
    wrap-reverse | 表示换行
    			需要注意的是第一排会紧贴容器底部,而不是我们想象的元素6紧贴容器顶部,效果与wrap相反。
    

    属性: flex-wrap
    flex-flow属性是flex-deriction与flex-wrap属性的简写集合,默认属性为row nowrap,即横向排列,且不换行,如果需要控制元素排列与换行,推荐使用此属性,而非单独写两个。
    属性: justify-content
    用于控制元素在横轴的对齐方式,默认flex-start即左对齐,center 为居中,对应的flex-end为右对齐。

    flex-start(默认) | 左对齐
    flex-end         | 右对齐
    center           | 中间紧凑对齐
    space-between    | 两端对齐
    space-around     | 元素之间间距为左右两侧元素到容器间距的2倍
    space-evenly     | 元素之间间距与元素与容器间距相等
    

    在这里插入图片描述
    在这里插入图片描述
    属性: align-items
    用于控制元素在纵轴排列方式,默认stretch即如果元素没设置高度,或高度为auto,则占满整个容器,下面第一张图的元素没设置高度,其余图片中均为60px。

    stretch(默认) | 占满容器
    flex-start    | 紧贴顶部
    flex-end      | 紧贴底部
    center        | 中部对齐
    baseline      | 元素以第一行文字的基线为参照进行排列
    

    注意,常理来说justify-content与align-items默认分别处理元素横轴,纵轴的对齐方式,但如果我们修改了flex-direction为column,它们处理的轴向会交换,也就是justify-content处理纵轴,align-items处理横轴。
    在这里插入图片描述


    属性: align-content
    用于控制多行元素的对齐方式,如果元素只有一行则不会起作用;默认stretch,即在元素没设置高度,或高度为auto情况下让元素填满整个容器,与align-items类似。注意,如下演示的12个元素我均没有设置高度。

    stretch(默认) |
    flex-start    | 
    flex-end      | 
    center        | 
    space-between | 
    space-around  | 
    space-evenly  | 
    
    

    在这里插入图片描述
    2.元素属性:
    容器属性是加在容器上的,那么元素属性呢,就是写在元素上的,就好比容器属性给ul,元素属性给li差不多一个意思。
    属性 : order
    取值:默认0,用于决定元素排列顺序,数值越小,元素排列越靠前。
    在这里插入图片描述
    属性 :flex-grow
    取值:默认0,用于决定元素在有剩余空间的情况下是否放大,默认不放大;注意,即便设置了固定宽度,也会放大。

    假设默认三个元素中前两个个元素都是0,最后一个是1,最后的元素会沾满剩余所有空间。
    在这里插入图片描述
    属性 :flex-shrink
    取值:默认1,用于决定元素在空间不足时是否缩小,默认元素都是1,即空间不足时大家一起等比缩小;注意,即便设置了固定宽度,也会缩小。

    但如果某个元素flex-shrink设置为0,则即便空间不够,自身也不缩小。
    在这里插入图片描述
    上图中第二个元素flex-shrink为0,所以自身不会缩小。
    属性 :flex-basis
    取值:默认auto,用于设置元素宽度,默认auto时,元素会保持默认宽度,或者以width为自身的宽度,但如果设置了flex-basis,权重会width属性高,因此会覆盖widtn属性

    在这里插入图片描述
    上图中先设置了flex-basis属性,后设置了width属性,但宽度依旧以flex-basis属性为准。

    属性 :flex
    取值:默认0 1 auto,flex属性是flex-grow,flex-shrink与flex-basis三个属性的简写,用于定义元素放大,缩小与宽度。

    该属性有两个快捷键值,分别是auto(1 1 auto)等分放大缩小,与none(0 0 auto)不放大,但等分缩小。

    属性 :align-self

    auto(默认) | 
    flex-start | 
    flex-end | 
    center | 
    baseline | 
    stretch,
    

    取值:表示继承父容器的align-items属性。如果没父元素,则默认stretch。

    用于让个别元素拥有与其它元素不同的对齐方式,各值的表现与父容器的align-items属性完全一致。
    在这里插入图片描述
    抄的还蛮好的哈 哈哈哈 一定要自己去写一遍才好 就明白了

  • 相关阅读:
    工作那些事(四)大公司VS小公司
    HTTP Keep-Alive详解
    Burp Suite Walkthrough(英文版)
    Burp Suite Walkthrough(中文版)
    Burp Suite教程(英文版)
    XSS之学习误区分析
    工具猫魔盒介绍
    XSS脚本攻击漫谈
    WEB黑客工具箱之FireBug介绍
    WEB黑客工具箱之LiveHttpHeaders介绍
  • 原文地址:https://www.cnblogs.com/tcz1018/p/14115844.html
Copyright © 2011-2022 走看看