flex布局-20201028

改版自阮一峰的网络日志-Flex 布局教程:语法篇

在flex容器上设置的(即父元素上设置);

  1. flex-direction属性决定主轴的方向(即项目的排列方向)。
flex-direction: row | row-reverse | column | column-reverse;
//row(默认值):主轴为水平方向,起点在左端。
//row-reverse:主轴为水平方向,起点在右端。
//column:主轴为垂直方向,起点在上沿。
//column-reverse:主轴为垂直方向,起点在下沿。
  1. flex-wrap属性定义,如果一条轴线排不下,如何换行。默认情况下,项目都排在一条线(又称"轴线")上。
flex-wrap: nowrap | wrap | wrap-reverse;
//nowrap(默认):不换行。
//wrap:换行,第一行在上方。
//wrap-reverse:换行,第一行在下方。
  1. flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
flex-flow: <flex-direction> || <flex-wrap>;
//flex-wrap: row nowrap;
  1. justify-content属性定义了项目在主轴上的对齐方式。
justify-content: flex-start | flex-end | center | space-between | space-around;
//flex-start(默认值):左对齐;所有项目左对齐,项目之间无间隔,项目与容器右侧有间隔;
//center: 居中;所有项目居中对齐,项目之间无间隔,项目左右两侧与容器有间隔,且左右间隔相等;
//flex-end:右对齐;所有项目右对齐,项目之间无间隔,项目左侧与容器有间隔;
//space-between:两端对齐,项目之间的间隔都相等;所有项目居中,项目左右两侧与容器无间隔,项目之间有间隔,项目之间的间隔相等;
//space-around:每个项目两侧的间隔相等;所以,项目之间的间隔比项目与边框的间隔大一倍;所有项目居中,项目左右两侧与容器有间隔,项目之间有间隔,项目之间的间隔相等(若最小间隔记为1,那么项目左侧与容器间隔为1,项目之间间隔为2,项目右侧与容器间隔为1);
  1. align-items属性定义所有项目在交叉轴上如何对齐。
align-items: flex-start | flex-end | center | baseline | stretch;
//flex-start:所有项目与交叉轴的起点上对齐。
//flex-end:所有项目与交叉轴的终点下对齐。
//center:所有项目与交叉轴的中点居中对齐。
//baseline: 所有项目与自身项目的第一行文字基线对齐。
//stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。若设置了高度,则类似于flex-start;
  1. align-content属性定义了多根主轴的垂直对齐方式。如果项目只有一根主轴,该属性不起作用。
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
//flex-start:所有主轴与交叉轴的起点上对齐。所有主轴上对齐,主轴之间无间隔,主轴与容器上侧无间隔,主轴与容器下侧有间隔;
//flex-end:所有主轴与交叉轴的终点下对齐。所有主轴下对齐,主轴之间无间隔,主轴与容器上侧有间隔,主轴与容器下侧无间隔;
//center:所有主轴与交叉轴的中点居中对齐。所有主轴居中对齐,主轴之间无间隔,主轴上下两侧与容器有间隔,且上下间隔相等;
//space-between:与交叉轴两端对齐,主轴之间的间隔平均分布。所有主轴居中对齐,主轴上下两侧与容器有间隔,主轴之间有间隔,主轴之间间隔及主轴上下两侧与容器间隔相等;
//space-around:每根主轴两侧的间隔都相等。所以,主轴之间的间隔比主轴与边框的间隔大一倍。所有主轴居中对齐,主轴上下两侧与容器无间隔,主轴之间有间隔,主轴之间间隔相等(若最小间隔记为1,那么主轴上侧与容器间隔为1,主轴之间间隔为2,主轴下侧与容器间隔为1);
//stretch(默认值):主轴占满整个交叉轴。所有主轴上对齐,主轴之间有间隔,主轴与容器上侧无间隔,主轴与容器无侧有间隔,主轴之间间隔相等(因为所有主轴上对齐,且主轴之间间隔相等,所以最后一条主轴与容器下侧还是会有间隔,但那间隔是由于每个主轴之间间隔产生的);

在flex项目上设置的;

  1. order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
order: <integer>;//整数;
//order: 1;
  1. flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。 //如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。
flex-grow: <number>;//数字,可为浮点小数?;
//flex-grow: 1;
  1. flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。//如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。负值对该属性无效。
flex-shrink: <number>;//数字,可为浮点小数?;
//flex-shrink: 1;
  1. flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间,默认为auto。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。//它可以设为跟width或height属性一样的值(如:350px),则项目将占据固定空间。
flex-basis: <length> | auto;
//flex-basis: auto;
  1. flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。//该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。//建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。
flex: none | [ <flex-grow> <flex-shrink> <flex-basis> ];
//flex: 0 1 auto;
  1. align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。//该属性可能取6个值,除了auto,其他都与align-items属性完全一致。
align-self: auto | flex-start | flex-end | center | baseline | stretch;
//align-self: auto;

简单的代码:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>flex布局</title>
    <style>
      .flex-container {
        width: 700px;
        height: 800px;
        border: 1px solid rgb(255, 255, 0);

        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        /* flex-flow: row nowrap; */
        justify-content: flex-start;
        align-items: stretch;
        align-content: flex-start;
      }
      .flex-item {
        width: 100px;
        height: 100px;
        border: 1px solid rgb(255, 0, 0);
      }
      .flex-item:nth-child(1) {
        width: 100px;
        height: 100px;
        border: 1px solid rgb(0, 255, 0);
      }
      .flex-item:nth-child(3) {
        width: 200px;
        height: 100px;
        border: 1px solid rgb(0, 0, 255);
        font-size: 37px;
      }
      .flex-item:nth-child(5) {
        order: 0;
        flex-grow: 0;
        flex-shrink: 1;
        flex-basis: auto;
        flex: 0 1 auto;
        align-self: auto;
      }
      .flex-item:nth-child(7) {
        width: 100px;
        height: 200px;
        border: 1px solid rgb(0, 0, 255);
        font-size: 42px;
      }
      .flex-item:nth-child(15) {
        width: 100px;
        height: 200px;
        border: 1px solid rgb(0, 255, 255);
        font-size: 35px;
      }
    </style>
  </head>
  <body>
    <div class="flex-container">
      <div class="flex-item">1</div>
      <div class="flex-item">2</div>
      <div class="flex-item">3</div>
      <div class="flex-item">4</div>
      <div class="flex-item">5</div>
      <div class="flex-item">6</div>
      <div class="flex-item">7</div>
      <div class="flex-item">8</div>
      <div class="flex-item">9</div>
      <div class="flex-item">10</div>
      <div class="flex-item">11</div>
      <div class="flex-item">12</div>
      <div class="flex-item">13</div>
      <div class="flex-item">14</div>
      <div class="flex-item">15</div>
      <div class="flex-item">16</div>
      <div class="flex-item">17</div>
      <div class="flex-item">18</div>
      <div class="flex-item">19</div>
      <div class="flex-item">20</div>
      <div class="flex-item">21</div>
      <div class="flex-item">22</div>
      <div class="flex-item">23</div>
      <div class="flex-item">24</div>
      <div class="flex-item">25</div>
      <div class="flex-item">26</div>
      <div class="flex-item">27</div>
      <div class="flex-item">28</div>
      <div class="flex-item">29</div>
    </div>
  </body>
</html>


图片

posted @ 2020-10-28 14:20  方朝端  阅读(9)  评论(0编辑  收藏  举报

我的页脚HTML代码