css常見佈局

css的常見佈局常常結合普通流,浮動,定位,flex實現。下面看一下幾種常見佈局:css

等分佈局:把寬度三等分

<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的值看看效果。固然,此方法要記得把父元素設置爲超出部分不可見,要否則,試試出滾動條的效果,就很尷尬了~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>
    .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>
相關文章
相關標籤/搜索