前言

经过第一篇的知识点的学习以及flex青蛙的学习,我们下面在布局中找一些实用的案例进行分享学习吧。

布局实战

dom内容是不变的,作为公共部分。

  1. <ul class="container">
  2. <li class="item">111111
  3. </li>
  4. <li class="item">111111
  5. </li>
  6. <li class="item">111111
  7. </li>
  8. <li class="item">111111
  9. </li>
  10. <li class="item">111111
  11. </li>
  12. </ul>

左边浮动,项目之间固定间距

常规的向左浮动布局,每个内容固定宽度,向左间距固定

  1. .container{
  2. display:flex;
  3. height:300px;
  4. border:1px solid red;
  5. flex-wrap:wrap;
  6. .item{
  7. border:1px solid #000;
  8. background:red;
  9. color:#fff;
  10. flex-basis:300px;
  11. margin-left:20px;
  12. height:100px;
  13. }
  14. }

向左浮动,均分中间等间距

常规的向左浮动布局,每个内容固定宽度,中间等分剩余间距

  1. .container{
  2. display:flex;
  3. height:300px;
  4. border:1px solid red;
  5. flex-wrap:wrap;
  6. justify-content:space-between;
  7. .item{
  8. border:1px solid #000;
  9. background:red;
  10. color:#fff;
  11. flex-basis:300px;
  12. height:100px;
  13. }
  14. }

水平垂直居中布局

直接利用弹性盒本身的特性即可。

  1. <div class="demo">
  2. <span>sdfwefer f</span>
  3. </div>
  4. .demo{
  5. display:flex;
  6. border:1px solid red;
  7. height:50px;
  8. justify-content:center;
  9. align-items:center;
  10. }

等高容器布局

无论其他容器的高度是多少,其他的项目扩充到最高元素的高度。

代码地址:https://codepen.io/robinson90/pen/oNNrVXJ

  1. ul{
  2. display:flex;
  3. li{
  4. flex:1;
  5. border:1px solid red;
  6. word-break:break-all;
  7. display:flex;
  8. align-items:center;
  9. // justify-content:center;
  10. }
  11. }

特别说明:重要的是flex:1本身就可以设置实现等高的效果,如果想要更详细的内容居中,可以内容再设置display:flex,并设置垂直居中以及水平居中即可。(当然如果不是直接内容,可以设置li的子元素的对其方式)

中间固定宽度,两边等分宽度

  1. .container{
  2. display:flex;
  3. align-items:center;
  4. .left{
  5. flex:1;
  6. }
  7. .center{
  8. width:300px;
  9. }
  10. .right{
  11. flex:1;
  12. }
  13. }

中间变宽 ,两边固定宽度

左边内容宽度不确定,右边占据剩下的全部.如果你希望无论两者的高度占据多少,都能实现垂直居中的效果,容器样式增加align-items:center即可

  1. .container{
  2. display:flex;
  3. align-items:center;
  4. .left{
  5. width:100px;//other width is also ok
  6. }
  7. .right{
  8. flex:1;
  9. }
  10. }

固定最小高度,固定底部预留空间

  1. .container{
  2. display:flex;
  3. min-height:100vh;
  4. flex-direction:column;
  5. .body{
  6. flex:1;
  7. }
  8. .footer{
  9. height:200px;
  10. background:red;
  11. }
  12. }

其他文章