常見布局-三欄布局

兩側(cè)兩列固定寬度,中間列自適應(yīng)寬度

image.png
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>三列</title>
  <style>
    #content:after{
      content: '';
      display: block;
      clear: both;
    }
    .menu{
      width: 100px;
      height: 500px;
      background: pink;
      float: left;
    }
    .aside{
      width: 200px;
      height: 500px;
      background: yellow;
      float: right;
    }
    .main{
      margin-left: 110px; /*為什么要加margin-left*/
      margin-right: 210px;
      height: 400px;
      background: red;
    }
    
    #footer{
      background: #ccc;
    }
  
  </style>
</head>
<body>
  <div id="content">
    <!-- 為什么不是main在前面 -->
    <div class="menu">aside</div>
   
    <div class="aside">aside</div>
     <div class="main">content</div>
    
  </div>
  <div id="footer">footer</div>
</body>
</html>

實現(xiàn)demo

為什么要加margin-left和margin-right?
為了使main的內(nèi)容可以正常顯示,不容會被左右浮動的menu和aside遮蓋住一部份

為什么不是main在前面?
如果main在前,因為main為塊級元素。瀏覽器渲染時,會將它獨占一行,那么接下去的兩個浮動元素就會在main的下面一行進行浮動,無法實現(xiàn)浮于main 上方的效果。

圣杯布局

圣杯布局解決了什么問題?
使得三欄布局中間的區(qū)塊可以在在dom元素次序中優(yōu)先位置。

實現(xiàn)
注釋編號為實現(xiàn)順序

  <style>
    #content:after{
      content: '';        /*8*/
      display: block;     /*8*/
      clear: both;        /*8*/
    }
    #content{
      padding-left: 100px;  /*5*/
      padding-right: 150px; /*5*/
    }
    .aside, .main, .extra{
      float: left;         /*2*/
    }
    
    .aside{
      width: 100px;        /*1*/
      height: 300px;       /*1*/
      background: red;     /*1*/
      
      margin-left: -100%;  /*4*/
      position: relative;  /*6*/
      left: -100px;        /*6*/
    }
    .extra{
      width: 150px;        /*1*/
      height: 300px;       /*1*/
      background: yellow;  /*1*/
      
      margin-left: -150px; /*5*/
      position: relative;  /*7*/
      left: 150px;         /*7*/
      
    }
    .main{
      height: 350px;       /*1*/
      background: blue;    /*1*/
      
      width: 100%;         /*3*/
    }
  
  </style>

  <div id="content">
    <div class="main">main</div>
    <div class="aside">aside</div>
    <div class="extra">extra</div>
  </div>

實現(xiàn)demo
缺點
.main的最小寬度不能小于.aside的寬度。原因為margin-left: -100%;不足以偏移掉整個元素的寬度。

雙飛翼布局

所以有了雙飛布局來解決圣杯布局這個缺點

實現(xiàn)
注釋編號為實現(xiàn)順序

<style>
    
    #content:after{
      content: '';        /*8*/
      display: block;     /*8*/
      clear: both;        /*8*/
    }
    #content{
  
    }
    .aside, .main, .extra{
      float: left;         /*2*/
    }
    
    .aside{
      width: 100px;        /*1*/
      height: 300px;       /*1*/
      background: red;     /*1*/
      
      margin-left: -100%;  /*4*/

    }
    .extra{
      width: 150px;        /*1*/
      height: 300px;       /*1*/
      background: yellow;  /*1*/
      
      margin-left: -150px; /*5*/

      
    }
    .main{
      /* background: blue;  */   /*第1步添加,第7步注釋掉*/
      /* height: 350px;  */      /*第1步添加,第7步注釋掉*/
      
      width: 100%;         /*3*/
    }
    
    .wrap{
      margin-left: 100px;  /*6*/
      margin-right: 150px; /*6*/
      background: blue;    /*7*/
      height: 350px;       /*7*/
 
    }
  
  </style>
  
  <div id="content">
    <div class="main">
      <div class="wrap">main</div>
    </div>
    <div class="aside">aside</div>
    <div class="extra">extra</div>
  </div>

實現(xiàn)demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 14,181評論 1 92
  • 一、負(fù)邊距在讓元素產(chǎn)生偏移時和position: relative有什么區(qū)別? 負(fù)margin和position:...
    婷樓沐熙閱讀 995評論 0 4
  • 1.負(fù)邊距在讓元素產(chǎn)生偏移時和position:relative有什么區(qū)別? 通過負(fù)邊距進行偏移的元素,它會放棄偏...
    饑人谷_任磊閱讀 342評論 0 1
  • 1. 負(fù)邊距在讓元素偏移時和position: relative有什么區(qū)別? 通過負(fù)邊距進行偏移的元素,它會放棄原...
    Timmmmmmm閱讀 482評論 0 0
  • 按照是否相應(yīng)瀏覽器寬度變化劃分: 固定寬度布局:body的width是一個固定值,當(dāng)瀏覽器的窗口縮小時,底部出現(xiàn)滾...
    lingfighting閱讀 645評論 0 0

友情鏈接更多精彩內(nèi)容