2

css的常见布局经常结合普通流,浮动,定位,flex实现。下面看一下几种常见布局:

等分布局:把宽度三等分

 <div class="parent">
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
  </div>
  
  <style>
    /* 法一 */
    .parent{
      display: flex;
      flex-direction: row;
      background: #d3d3d3;
      height: 200px;
    }
    .child{
      flex: 1;
      background: pink;
    }
    
    /* 法二 */
    .parent{
      background: #d3d3d3;
    }
    .child{
      float: left;
      width: calc(100% / 3);
      height: 200px;
      background: pink;
    }
    
    /* 法三 */
    .parent{
      background: #d3d3d3;
      font-size: 0;
    }
    .child{
      display: inline-block;
      width: calc(100% / 3);
      height: 200px;
      background: pink;
    }
    
    /* 法四 */
    .parent{
      display: table;
      width: 100%;
      height: 200px;
      table-layout: fixed;
      background: #d3d3d3;
    }
    .child{
      display: table-cell;
      outline: 1px solid green;
      background: pink;
    }
  </style>

等高布局:父元素高度不知道,所有子元素高度和最高的子元素保持一致

此方法利用padding把每个子元素的高度撑的超出父元素,再利用margin的负值把父元素下面的块向上移和padding相同的距离,将加上的padding盖掉,不理解的可以尝试把下面的注释去掉,并自己调节margin的值看看效果。当然,此方法要记得把父元素设置为超出部分不可见,要不然,试试出滚动条的效果,就很尴尬了~

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    .parent{
      overflow: hidden;
      background: #d3d3d3;
    }
    /* .above{
      width: 100%;
      height: 300px;
      background: yellow;
    } */
    .child{
      float: left;
      width: 100px;
      padding-bottom: 200px;
      margin-bottom: -200px;
    }
    .one{
      background: pink;
    }
    .two{
      background: green;
    }
    .three{
      background: red;
    }
  </style>
</head>
<body>
  <div class="parent">
    <div class="child one">别打英文和数字别打英文和数字</div>
    <div class="child two">别打英文和数字别打英文和数字别打英文和数字别打英文和数字别打英文和数字别打英文和数字</div>
    <div class="child three">别打英文和数字别打英文和数字别打英文和数字别打英文和数字别打英文和数字</div>
  </div>
  <!-- <div class="above"></div> -->
</body>
</html>

两列自适应布局:以左边固定,右边宽度自适应为例

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    /* 法一:css3(左边宽度定) */
    body{
      font-size: 0;
    }
    .block{
      display: inline-block;
      vertical-align: top;
      font-size: 14px;
    }
    .left{
      background: #d3d3d3;
      width: 200px;
    }
    .right{
      background: pink;
      width: calc(100% - 200px);
    }
    
    /* 法二: float+margin(左边宽度定) */
    .left{
      background: red;
      float: left;
      width: 200px;
    }
    .right{
      background: green;
      margin-left: 200px;
    }
    
    /* 法三: float + BFC(左边宽度不定)*/
    .left{
      background: red;
      float: left;
    }
    .right{
      background: green;
      overflow: hidden;
    }
  </style>
</head>
<body>
  <div class="block left">左边布局</div>
  <div class="block right">右边布局右边布局右边布局右边布局右边布局右边布局右边布局右边布局右边布局右边布局右边布局右边布局右边布局右边布局右边布局右边布局右边布局</div>
</body>
</html>

雨花石
410 声望19 粉丝

人生没有彩排,每天都是直播