zoukankan      html  css  js  c++  java
  • flex布局案例

    http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

    难得一篇比较好的

    一个父容器,留个子元素

      <div class="container">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
      </div>

    1、正常情况下

    虽然制定了div的宽高,但是他是沾满一行的,所以会换行

        .container{
           100%;
          /*display: flex;*/
          background-color: #eee;
        }
    
        .item{
           50px;
          height: 50px;
          background-color: red;
          border:1px solid black;
          box-sizing: border-box;
        }

    2、flex布局之后

        .container{
           100%;
          display: flex;
          background-color: #eee;
        }

    因为默认选项,是横着排的,元素都打横了(flex-direction)

    这是后压缩一下浏览器,因为width是100%且默认不换行,所以会有变化的

     

    可以看到,随着浏览器不断压缩,元素也被压扁了!

    浏览器放大,元素又会变大!直至回复原来的50px!

    所以真的很 “弹”!

    因为默认值,所有都会在宽度上 一起缩小!

    只要大家的数值一样就行,无论是1、2、3,数字不一样才会有变化

     如果将第二个改成0

        .item{
          width: 50px;
          height: 50px;
          background-color: red;
          border:1px solid black;
          box-sizing: border-box;
        }
    
        .item-shrink{
          width: 50px;
          height: 50px;
          background-color: red;
          border:1px solid black;
          box-sizing: border-box;
          flex-shrink: 0;
        }
    <div class="container">
        <div class="item"></div>
        <div class="item-shrink"></div>
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
      </div>

    第二个元素,不会缩小!

    正常情况下,没有沾满容器,是因为,默认不放大

    如果只有一个项目,且为1,将沾满整个容器!

    还有一个属性,正常情况下,元素的显示方法

    auto就是本来的大小

    设置其他值,就是会覆盖掉本来的大小。

    这三个属性简写就是flex!指定各种情况下,元素怎么变化

    flex:放大、缩小、正常

    chrome视口最小宽度是130-150px

    如果不想元素被压缩,可以使用换行

    将父元素设置为100%宽度

    压缩浏览器的时候

    如果横着放不下了,就会换行

    正方形是200x200

    一直压缩

    直到一行一个的时候,就不会换行了

    此时再压缩,就会压缩元素了,但是不会出现滑动条

    如果不想从左边开始排,可以使用

    flex-end

    center,里面的所有元素,都保持会在中间

     

    space-betwen

    自动计算剩余的空间,使得元素之间间隔相等

    压缩到间隔没有之后,才会换行

    每一行的间隔,会各自计算

    space-around有点不同

    它要求元素两边的间隔相同。就是说,元素两边都会有间隔,并且间隔相同,个人一种居中的感觉呢

    如果元素相邻的话,中间就是两倍的间隔

    在竖直方向的排列

    横轴是主轴,还有一个竖直的叫交叉轴

    主轴和交叉轴排列方式的属性,完全不一样,要好好记住

     因为没有高度,的确没有什么好设置的呀

    如果有高度的话,他们换行之间是有间隔的,但是这个间隔很奇怪

     不换行就没事

     1、每个元素都对齐交叉轴的开始位置

     2、end

    end换行

    3、center中间对齐,最有用的

    加上justify:center,就是垂直居中了

     换行也会保持垂直居中

    4、base-line,让元素第一行文字的基线对齐 ,不是很通用

    最后的问题是,这个奇怪的间隔,是哪里来的呢?

    如果容器产生了多条轴线,就是多行多列了,就使用这个

     默认情况下,会让行之间产生间隔,沾满整个交叉轴

    加上这一句

    不压缩的情况下,垂直居中,压缩的时候变成这样了,因为产生换行才会生效

    center才是我们理想中的效果

    其他的属性很少用,这个属性挺奇怪的。

    最后一个额外的Item属性

    像压缩换行这些属性,可以很好的实现响应式了,这些基本用法基本足够了

  • 相关阅读:
    Winform跨线程操作界面的策略
    Winform DataGridView扩展
    GDI+的常用类
    函数中参数的验证顺序
    C# Winform常见的Editor及其它经验
    能够引起异常的运算符和关键字
    终结程序
    C#异常处理策略
    python3.6入门到高阶(全栈) day01 python 基础
    虚拟机中系统盘扩容
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9692463.html
Copyright © 2011-2022 走看看