• Flex布局--必然的选择


    这篇文章是我在阮一峰老师的flex布局教程下,按照自己的理解重写写一遍,以便增强理解。如果你来到这里最好去看一下阮一峰大神的Flex布局教程

    正式开始自己的。

    说起布局方式,大家首先要了解css3有哪些布局方式,这里就不一一详解了。网上一大堆,而且平时写css3的时候大家一般也都会用到。

    Flex布局:

    1.概念:flex布局,英文全称为:Flexible Box 也就是弹性盒子的意思。设置flex布局的元素叫做容器,其他的子元素叫做项目。恩,我之前还真不知道叫做项目,没注意过。在容器中存在着两根轴:主轴(水平)和交叉轴(垂直)。

    然后我们先创建一个正常的li列表

    <div>
        <ul>
            <li>first</li>
            <li>second</li>
            <li>third</li>
            <li>forth</li>
            <li>fifith</li>
        </ul>
    </div>

    在简单设置一下css样式,也不能太难看

      div{
          height: 500px;
          width: 500px;
          margin:0 auto;
          background-color: #333;
      }
      ul{
          padding: 20px;
          box-sizing: border-box;
      }
        div li{
            list-style: none;
            display: block;
            width: 200px;
            height:50px;
            text-align: center;
            line-height: 50px;
            font-size: 30px;
         margin:10px; } li:nth-child(n){ background-color: #007aff; } li:nth-child(2n){ background-color: #8a6de9; color: #fff; }

    最终展现在我们眼前的效果就是

    这个留着备用,我们继续开始下面的流程。

    2.作用在容器上面的6大属性

             flex-direction
             align-items
             justify-content
             align-content
             flex-wrap
             flex-flow

    2.1首先看第一个flex-direction属性

    在之前我们设置好得li列表上面我们做一下改动,给div增加新的样式,为了方便容易看,我就直接在之前的样式后面 继续为 div 下ul元素添加样式。

       div ul{
            display: flex;
        }

    看一下效果

    从原本的横向排列,变成了纵向排列。而且之前我们设置的 每个li 的宽度已经不起作用了。当我们设置display:flex;的时候,主轴默认的方向是水平方向也就是我们看到的样子。所以我们可以通过改变主轴的方向来随意调整我们li的排列方式。

            /*设置主轴方向为垂直方向*/
            flex-direction: column;
            /*设置主轴方向为垂直方向,从下往上*/
            flex-direction: column-reverse;
            /*设置主轴方向为水平方向,从左往右*/
            flex-direction: row;
            /*设置主轴方向为水平方向,从右往左*/
            flex-direction: row-reverse;
            flex-direction: inherit;

    flex-direction有五个属性,也可以说四个,毕竟最后一个可以省去。我们只要记着两个就行,column代表着垂直方向,row代表着水平方向。

    2.2、这里我们看一下flex-wrap属性。

    上面我们看到,设置成flex布局之后,li的宽度发生了变化,而且没有换行,挤在了一起。给样式加上flex-wrap之后,看一下

        div ul{
            display: flex;
            flex-wrap: wrap;
        }

    flex-wrap,默认是nowrap。不换行。所以就导致了我们之前的那种情况,现在我们设置成wrap,让他根据宽度来决定是否换行。这样一来,就和float一样了。而且更加方便。flex-wrap还有一个属性

        div ul{
            display: flex;
            flex-wrap: wrap-reverse;
        }

    也就是颠倒个个。

    2.3flex-flow也就是flex-direction和flex-wrap的结合体,没什么好说的啦!

    2.4justify-content

        div ul{
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
        }

    也就是设置垂直方向的排列方式,center就是居中。另外还有其他属性space-between;space-around;这两个属性可以说是我经常用到的属性。

    2.4align-item这个就是水平方向的设置了。也justify-content相对应。也就不举栗子了。

    2.5align-content属性定义的是多根线轴的对齐方式。具体样式也上面那两位几乎一样的。

    3、在项目上的6大属性。

            order
            flex-grow
            flex-shrink
            flex-basis
            align-self

    3.1、order,设置数值,数值越小越靠前。例如我们给最后一个li添加order属性。设置为-1,样式为

        li:last-child{
            order: -1;
        }

    可以看到第五个fifth排到了第一位!!这就很方便了。也很实用,说实话,我刚刚发现这个属性的时候就想发现新大陆一样激动(鬼知道哥伦布怎么想的)

    3.2、flex-grow属性。设置放大比例,默认值是0,例如我们给最后一个li增加属性

        li:last-child{
          flex-grow: 1;
        }

    3.3、flex-shrink就是缩小比例了。这个就不多说了。

    3.4、flex-basis属性则定义了在分配多余空间之前,项目占据的主轴空间。

    3.5、flex属性就是结合体.....我不是很熟练。还是一个个写吧

    3.6、align-self也就是一个特立独行的存在。改变自己的排列方式。

    如果你的才华还实现不了你的野心,那就静下心来,埋头苦干。有志者事竟成破釜成舟百二秦关终属楚,苦心人天不负卧薪尝胆三千越甲可吞吴!
  • 相关阅读:
    keras入门--Mnist手写体识别
    Python 实现简单的感知机算法
    使用Keras实现机器翻译(英语—>法语)
    keras实现mnist数据集手写数字识别
    将mnist数据集存储到本地文件
    测试神经网络
    使用Keras开发神经网络
    kali 执行apt-get upgrade后,终端无法打开的解决办法
    USACO 2020 January Contest, Platinum Problem 3. Falling Portals
    USACO 2020 January Contest, Platinum Problem 2. Non-Decreasing Subsequences
  • 原文地址:https://www.cnblogs.com/chinabin1993/p/7251768.html
Copyright © 2020-2023  润新知