頁面布局:兩列布局

定寬與自適應(yīng)

浮動 float + margin

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.left {
  float: left;
  width: 100px;
}
.right {
  margin-left: 120px;
}

簡單的布局方法,左側(cè)設(shè)置浮動,右側(cè)設(shè)置margin-left(避免環(huán)繞左側(cè))的布局方法

  • 優(yōu)點:容易理解,易于編寫
  • 缺點:兼容性問題(IE6有三像素Bug)

浮動 float + margin + (fix)

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right-fix">
    <div class="right">
      <p>right</p>
      <p>right</p>
    </div>
  </div>
</div>
<!--css-->
.left {
  float: left;
  width: 100px;
  position: relative; //提高層級
}
.right-fix {
  float: right;
  width: 100%;
  margin-left: -100px;
}
.right {
  margin-left: 120px;
}

通過在 html 文件的 right 上套上一層 right-fix,然后對 right-fix 設(shè)置浮動可以解決 IE6 的兼容性問題,然后提高 left 的層級設(shè)置定位屬性為 relative

  • 優(yōu)點:結(jié)構(gòu)和樣式更加復雜,不利于理解
  • 缺點:兼容性好

浮動 float + overflow

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.left {
  float: left;
  width: 100px;
  margin-right: 20px;
}
.right{
  overflow: hidden;
}

通過設(shè)置overflow觸發(fā) BFC(Block Formatting Context塊級格式化文本 )模式,內(nèi)容與外界隔離,不受浮動影響(不會環(huán)繞浮動元素)

  • 優(yōu)點:設(shè)置簡單
  • 缺點:兼容性問題(IE6 不支持)

table

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.parent {
  display: table;
  width: 100%; 
}
.left,.right {
  display: table-cell; //不能設(shè)置 margin
  table-layout: fixed; //優(yōu)點 1.加速table渲染。2.實現(xiàn)了布局優(yōu)先
}
.left {
  width:100px;
  padding-right: 20px;
}

table特點,每列的寬度之和一定是等于表格寬度的,所以設(shè)置left,right會自動填滿剩下的寬度

  • 缺點:代碼較多

flex

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.parent {
  display: flex;
}
.left {
  width: 100px;
  margin-right: 20px;
}
.right {
  flex: 1;
}

flex: 1 => flex: 1,1,0增長因子,收縮因子都是1,基礎(chǔ)寬度為0(剩余寬度都分配給了right)

  • 缺點:兼容性問題,性能問題(做一些小范圍的布局)

不定寬與自適應(yīng)

浮動 float + margin 與 浮動 float + margin + (fix)

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.left {
  float: left;
  width: 100px;
}
.right {
  margin-left: 120px;
}

不能完成不定寬自適應(yīng),width: 100px;margin-left: 120px;是強耦合的屬性

浮動 float + overflow

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.left {
  float: left;
  margin-right: 20px;
}
.right{
  overflow: hidden;
}
.left p {
  width: 200px;
}

可以實現(xiàn)不定寬自適應(yīng)布局(IE6 有兼容性問題)

table

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.parent {
  display: table;
  width: 100%; 
}
.left,.right {
  display: table-cell;
  /*table-layout: fixed;*/
}
.left {
  /*width: 100px;*/
  width: 0.1%;
  padding-right: 20px;
}
.left p {
  width: 200px;
}

可以實現(xiàn)不定寬自適應(yīng)布局,如果根據(jù)內(nèi)容適應(yīng)寬度,應(yīng)去掉table-layout: fixed,同時更改left寬度width:0.1%(設(shè)置 0.1% 有兼容性的考慮,1px 在 IE8 中有問題),再設(shè)置單元格內(nèi)容(不兼容IE6)

flex

<!--html-->
<div class="parent">
  <div class="left">
    <p>left</p>
  </div>
  <div class="right">
    <p>right</p>
    <p>right</p>
  </div>
</div>
<!--css-->
.parent {
  display: flex;
}
.left {
  width: 200px;
  margin-right: 20px;
}
.right {
  flex: 1;
}

可以實現(xiàn)不定寬自適應(yīng)布局(低版本瀏覽器有兼容性問題)

最后編輯于
?著作權(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)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,114評論 1 92
  • display:設(shè)置元素的顯示方式 display:block(塊級元素) 默認為父元素寬高,可設(shè)置寬高相對前序換...
    bluishwhiteC閱讀 723評論 0 0
  • 1. CSS Reset 瀏覽器對標簽進行樣式設(shè)置,不同瀏覽器默認樣式有差異 CSS Reset 全局定義樣式,通...
    hyt222閱讀 423評論 0 0
  • 親愛的弟兄, 你在哪里? 無數(shù)個黑夜, 我都在排練, 與你相遇的情景。 也許是在某個主日, 與你擦肩而過的間隙。 ...
    路得Ruth閱讀 284評論 0 0
  • 因為工作地點離家較近,也為了能幫妻子分擔一點帶孩子的辛苦,中午我一般在單位食堂打飯回家和妻子一塊吃,家里就她一個人...
    Mr__Pan閱讀 333評論 1 1

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