css布局-基礎(chǔ),單列,雙列,三列


什么是布局

現(xiàn)有樣式

  • 文檔流
  • 浮動(dòng)
  • 定位

不能滿(mǎn)足人們的需求.

人們需要:

  • 導(dǎo)航欄+內(nèi)容
  • 導(dǎo)航欄+內(nèi)容+廣告欄
  • 從上到下、從左到右、定寬、自適應(yīng)...

CSS 2 并沒(méi)有提供原生支持,所以需要將一些屬性組合起來(lái),以實(shí)現(xiàn)布局

“DIV + CSS 布局”?

國(guó)外一般不這么叫.<div> 是一個(gè)無(wú)語(yǔ)義的標(biāo)簽,適合用來(lái)做與內(nèi)容無(wú)關(guān)的事情.

只能用<div> 嗎?

  • 不一定
  • 盡量使用有語(yǔ)義的標(biāo)簽

常見(jiàn)布局(pc)

  • 固定寬度布局

    所有的內(nèi)容都在頁(yè)面寬度范圍內(nèi),最多使用.

    優(yōu)點(diǎn): 簡(jiǎn)單,每個(gè)分區(qū)的寬度都可以固定.
    缺點(diǎn):瀏覽器寬度小于內(nèi)容寬度時(shí),會(huì)出現(xiàn)滾動(dòng)條.

  • 彈性(fluid)布局

無(wú)固定寬度.一般需要百分比來(lái)適配
優(yōu)點(diǎn):頁(yè)面好看.
缺點(diǎn):無(wú)論設(shè)計(jì)還是實(shí)現(xiàn),都比較復(fù)雜,要考慮多種情況

  • 響應(yīng)式布局 —— 多終端(PC、Pad、Phone)

常見(jiàn)具體布局

  1. 單列布局

實(shí)現(xiàn):
#定寬
width: 1000px; 或 max-width: 1000px;
#水平居中
margin-left: auto; margin-right: auto; 

max-width 和 width的區(qū)別:

  • 前者在瀏覽器寬度小于max-width情況下,顯示寬度為瀏覽器寬度.
  • 后者在瀏覽器寬度小于width情況下,寬度不變,下方出現(xiàn)滾動(dòng)條.

優(yōu)化:
省標(biāo)簽,便于控制局部 范例

通欄

給通欄加背景色 范例

通欄優(yōu)化:
給 body 設(shè)置min-width 去掉滾動(dòng)背景色 bug

內(nèi)部元素水平居中
.parent{text-align:center;}
.child{display: inline-block;}

如果child高度不一致,需要設(shè)置 vertical-align:top實(shí)現(xiàn)頂部對(duì)齊.

IE 6 不支持 inline-block :

.child{*display: inline; *zoom: 1;}

bfc可以讓元素呈現(xiàn)塊級(jí)特性,即使是行內(nèi)元素
使用zoom1可以觸發(fā)bfc.設(shè)置height,width,
加*表示ie瀏覽器識(shí)別

范例

  1. 雙列布局

一列固定寬度,另外一列自適應(yīng)寬度


如何實(shí)現(xiàn)

浮動(dòng)元素 + 普通元素margin 范例

<style>
    #content:after{
      content: '';
      display: block;
      clear: both;
    }
    .aside{
      width: 200px;
      height: 500px;
      background: yellow;
      float: left;
    }
    .main{
      margin-left: 210px;
      height: 400px;
      background: red;
    }
    
    #footer{
      background: #ccc;
    }
  
  </style>
  <div id="content">
    <div class="aside">aside</div>
    <div class="main">content</div>
  </div>
  <div id="footer">footer</div>

如果側(cè)邊欄在右邊:

.aside{float: right;}
.main{ margin-right: 210px;}

注意:考慮到瀏覽器的渲染順序,

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

aside和main順序不可更改.

  1. 三列布局

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


如何實(shí)現(xiàn)

范例

    #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;
    }

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

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

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,207評(píng)論 1 92
  • 按照是否相應(yīng)瀏覽器寬度變化劃分: 固定寬度布局:body的width是一個(gè)固定值,當(dāng)瀏覽器的窗口縮小時(shí),底部出現(xiàn)滾...
    lingfighting閱讀 647評(píng)論 0 0
  • CSS布局 布局是CSS中一個(gè)重要部分,本文總結(jié)了CSS布局中的常用技巧,包括常用的水平居中、垂直居中方法,以及單...
    web前端學(xué)習(xí)閱讀 1,708評(píng)論 1 38
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類(lèi)選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 2,137評(píng)論 0 2
  • 曾經(jīng),從來(lái)不會(huì)為自己的將來(lái)做打算 曾經(jīng),以為順其自然就好 曾經(jīng),是那么的沒(méi)心沒(méi)肺 曾經(jīng),以為吃飽喝足就好 大學(xué)畢業(yè)...
    哆laiA夢(mèng)閱讀 382評(píng)論 0 0

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