css布局問題

一.水平居中

子元素為行內(nèi)元素還是塊狀元素岂却,寬度一定還是寬度未定颤陶,采取的布局方案不同挣郭。

子元素為

  1. 行內(nèi)元素:對(duì)父元素設(shè)置text-align:center;
  2. 定寬塊狀元素: 設(shè)置左右margin: 0 auto;
  3. 不定寬塊狀元素: 設(shè)置子元素為display: inline-block,然后在父元素上設(shè)置text-align:center;
  4. 通用方案: flex布局露氮,對(duì)父元素設(shè)置display:flex;justify-content:center;

注意:內(nèi)聯(lián)元素 ,塊級(jí)元素和行內(nèi)塊元素的區(qū)別:

塊級(jí)元素的特點(diǎn):
(1)總是從新行開始
(2)高度须揣,行高葛虐、外邊距以及內(nèi)邊距都可以控制溜腐。
(3)寬度默認(rèn)是容器的100%
(4)可以容納內(nèi)聯(lián)元素和其他塊元素译株。

行內(nèi)元素的特點(diǎn):
(1)和相鄰行內(nèi)元素在一行上。
(2)高挺益、寬無效歉糜,但水平方向的padding和margin可以設(shè)置,垂直方向的無效望众。
(3)默認(rèn)寬度就是它本身內(nèi)容的寬度匪补。
(4)行內(nèi)元素只能容納文本或則其他行內(nèi)元素。

行內(nèi)塊元素的特點(diǎn):
(1)和相鄰行內(nèi)元素(行內(nèi)塊)在一行上,但是之間會(huì)有空白縫隙烂翰。
(2)默認(rèn)寬度就是它本身內(nèi)容的寬度夯缺。
(3)高度,行高甘耿、外邊距以及內(nèi)邊距都可以控制喳逛。

二.垂直居中

垂直居中對(duì)于子元素是單行內(nèi)聯(lián)文本、多行內(nèi)聯(lián)文本以及塊狀元素采用的方案是不同的棵里。

  1. 父元素一定润文,子元素為單行內(nèi)聯(lián)文本:設(shè)置父元素的height等于行高line-height
<div class="parent">                      
    <span class="child">
      12234 
    </span>
</div>
.parent{
  height: 50px;
  line-height: 50px;
}
  1. 父元素一定,子元素為多行內(nèi)聯(lián)文本:設(shè)置父元素的display:table-cell或inline-block殿怜,再設(shè)置vertical-align:middle;
<div class="parent">
    <span class="child">
      12234 <br>
      2345   
    </span>
</div>
.parent{
  height: 100px;
  display: table-cell;
  vertical-align:middle;
}
  1. 塊狀元素:設(shè)置子元素position:absolute 并設(shè)置top典蝌、bottom為0,父元素要設(shè)置定位為static以外的值头谜,margin:auto;

  2. 通用方案: flex布局骏掀,給父元素設(shè)置{display:flex; align-items:center;}。

注意:
vertical-align 不影響塊級(jí)元素中的內(nèi)容對(duì)齊,它只針對(duì)于 行內(nèi)元素或者行內(nèi)塊元素截驮,特別是行內(nèi)塊元素笑陈, 通常用來控制圖片/表單與文字的對(duì)齊

一個(gè)問題:
圖片或者表單等行內(nèi)塊元素葵袭,他的底線會(huì)和父級(jí)盒子的基線對(duì)齊涵妥。這樣會(huì)造成一個(gè)問題,就是圖片底側(cè)會(huì)有一個(gè)空白縫隙,怎么解決?

  1. 給img vertical-align:middle | top等等坡锡。 讓圖片不要和基線對(duì)齊
  2. 給img vertical-align:middle | top等等蓬网。 讓圖片不要和基線對(duì)齊
.parent{
  border: 1px solid red;
}
img{
  /* vertical-align: bottom; */
  display: block;
}

三.css布局

單列布局

1.上中下等寬布局

<div id="container">
    <div id="header">頭部</div>
    <div id="content">內(nèi)容</div>
    <div id="footer">尾部</div>
</div>
body{margin: 0;}
    #container{
         height: 100%;
        /*   width: 960px; */
        /*設(shè)置width當(dāng)瀏覽器窗口寬度小于960px時(shí),單列布局不會(huì)自適應(yīng)鹉勒。*/
        max-width: 960px;
        margin: 0 auto;
    }   
    
    #header{
        height: 20%;
        background-color: red;
    }
    #footer{
        height: 20%;
        background-color: yellow;
    }
    #content{
        height: 60%;
        background-color: green;
    }

2.上下瀏覽器寬度,中間內(nèi)容寬度

<div id="container">
    <div id="header">
        <div class="layout">頭部</div>
    </div>
    <div id="content" class="layout">內(nèi)容</div>
    <div id="footer">
        <div class="layout">尾部</div>
    </div>  
</div>
#container{
    height: 100%;
}
#header{
    background-color: yellow;
    height: 20%;
}
#content{
    background-color: green;
    height: 60%;
}
#footer{
    background-color: red;
    height: 20%;
}
.layout{
    /*width: 960px;*/
    max-width: 960px;/*當(dāng)瀏覽器寬度小于960px時(shí),效果與第一種方法相同*/
    margin: 0 auto;
}

二三列布局

1.float+margin

<div id="container">
    <div id="left"></div>
    <div id="right"></div>
    <div id="content"></div>
</div>
div{height: 100%;}
    #left{
        width: 100px;
        float: left;
        background-color: red;
    }
    #right{
        width: 100px;
        float: right;
        background-color: yellow;
    }
    #content{
        margin: 0 100px;/* 或者換成overflow: hidden; 觸發(fā)了BFC使重新計(jì)算寬度帆锋,就不需要寫margin了*/
        background-color: green;
    }

DOM順序固定!
效果:(缺點(diǎn):先寫兩側(cè)欄禽额,再寫主面板锯厢,更換后則側(cè)欄會(huì)被擠到下一列,渲染時(shí)先渲染了側(cè)邊欄脯倒,而不是比較重要的主面板.实辑。)

2.絕對(duì)定位法

<div id="container">
    <div id="left"></div>
    <div id="content"></div>
    <div id="right"></div>
</div>
div{height: 100%;}
#left,#right{
        position: absolute;
        top: 0;
        width: 100px;
    }
    #left{
        left: 0;
        background-color: red;
    }
    #right{
        right: 0;
        background-color: yellow;
    }
    #content{
        margin: 0 100px;/* overflow: hidden; */
        background-color: green;
    }

DOM順序可以隨意調(diào)整!
缺點(diǎn)在于:如果中間欄含有最小寬度限制盔憨,或是含有寬度的內(nèi)部元素,當(dāng)瀏覽器寬度小到一定程度讯沈,會(huì)發(fā)生層重疊的情況郁岩。

3.margin負(fù)值法(圣杯布局)

<div id="container">         
    <div class="main"></div>        
    <div class="left"></div>        
    <div class="right"></div>  
</div>
.main {        
    float: left;       
    width: 100%;   
 }  
 .left {       
    float: left;        
    width: 190px;        
    margin-left: -100%;               
    position: relative;  
    left: -190px;  
}   
.right {        
    float: left;        
    width: 230px;        
    margin-left: -230px; 
    position: relative; 
    right: -230px;  
 }
#container {        
    padding: 0 230px 0 190px;   
 }

DOM元素的書寫順序不得更改。
主面板部分優(yōu)先渲染(一般主面板會(huì)比側(cè)欄內(nèi)容重要)缺狠。
當(dāng)面板的main內(nèi)容部分比兩邊的子面板寬度小的時(shí)候问慎,布局就會(huì)亂掉。

4.margin負(fù)值法(雙飛翼法)

<div class="main-wrap">
      <div class="main">#main</div>
</div>
<div class="sub"></div>        
<div class="extra"></div>
.main-wrap {        
    float: left;       
    width: 100%;   
 }  
 .sub {       
    float: left;        
    width: 190px;        
    margin-left: -100%;   
}   
.extra {        
    float: left;        
    width: 230px;        
    margin-left: -230px; 
 }
.main {    
    margin: 0 230px 0 190px;
}

主面板部分優(yōu)先渲染(一般主面板會(huì)比側(cè)欄內(nèi)容重要)挤茄。
圣杯采用的是padding如叼,而雙飛翼采用的margin,解決了圣杯布局main的最小寬度不能小于左側(cè)欄的缺點(diǎn)穷劈。
雙飛翼布局不用設(shè)置相對(duì)布局笼恰,以及對(duì)應(yīng)的left和right值。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末歇终,一起剝皮案震驚了整個(gè)濱河市社证,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌评凝,老刑警劉巖追葡,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡宜肉,警方通過查閱死者的電腦和手機(jī)匀钧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谬返,“玉大人之斯,你說我怎么就攤上這事≈煸。” “怎么了吊圾?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)翰蠢。 經(jīng)常有香客問我项乒,道長(zhǎng),這世上最難降的妖魔是什么梁沧? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任檀何,我火速辦了婚禮,結(jié)果婚禮上廷支,老公的妹妹穿的比我還像新娘频鉴。我一直安慰自己,他們只是感情好恋拍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布垛孔。 她就那樣靜靜地躺著,像睡著了一般施敢。 火紅的嫁衣襯著肌膚如雪周荐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天僵娃,我揣著相機(jī)與錄音概作,去河邊找鬼。 笑死默怨,一個(gè)胖子當(dāng)著我的面吹牛讯榕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播匙睹,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼愚屁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了痕檬?” 一聲冷哼從身側(cè)響起集绰,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谆棺,沒想到半個(gè)月后栽燕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罕袋,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年碍岔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了浴讯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蔼啦,死狀恐怖榆纽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情捏肢,我是刑警寧澤奈籽,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站鸵赫,受9級(jí)特大地震影響衣屏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辩棒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一狼忱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧一睁,春花似錦钻弄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至复凳,卻和暖如春瘤泪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背染坯。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工均芽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丘逸,地道東北人单鹿。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像深纲,于是被迫代替她去往敵國(guó)和親仲锄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案湃鹊? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,743評(píng)論 1 92
  • 1. 前言 前端圈有個(gè)“谷搴埃”:在面試時(shí),問個(gè)css的position屬性能刷掉一半人币呵,其中不乏工作四五年的同學(xué)怀愧。在...
    YjWorld閱讀 4,428評(píng)論 5 15
  • 本文主要是起筆記的作用侨颈,內(nèi)容來自慕課網(wǎng). 認(rèn)識(shí)CSS樣式 CSS全稱為“層疊樣式表 (Cascading Styl...
    0o凍僵的企鵝o0閱讀 2,630評(píng)論 0 30
  • 很早就想去歐洲浪漫之城布拉格,除了因?yàn)樗慕ㄖ蛩匦疽澹驗(yàn)榭ǚ蚩ü福驗(yàn)楦枨祭駨V場(chǎng),老徐的電影有一個(gè)地方扛拨,并且布拉...
    心芷水閱讀 287評(píng)論 1 1