前端面試重點(diǎn)——居中問題

前端面試重點(diǎn)——居中問題

在頁面布局開發(fā)中寝贡,居中問題是我們經(jīng)常碰到的問題,掌握居中問題對于解決頁面布局非常重要,同時它也是常見的面試重點(diǎn)。本文匯總一些常見的居中方式以及一些注意點(diǎn)玄渗,權(quán)當(dāng)學(xué)習(xí)筆記。

[TOC]

一譬淳、水平居中

1. inline-block + text-align

確保子元素是行內(nèi)塊級元素后直焙,給父元素 text-align: center; 這種情況對于子元素定寬或者不定寬都生效。

<div class="parent">
    <div class="child">child</div>
</div>
.parent {
    text-align: center;
}
.child {
    display: inline-block;
}

2. table + margin

此時利用table的寬度是內(nèi)容的寬度吞琐,且table可以使用margin

<div class="parent">
    <div class="child">child</div>
</div>
.child {
    display: table;
    margin: 0 auto;
}

3. absolute + transform

確定父元素 相對定位后捆探,將子元素通過絕對定位在父元素內(nèi)實現(xiàn)居中。該方法適用于子元素定寬或者不定寬站粟,萬能方法黍图。

<div class="parent">
    <div class="child">child</div>
</div>
.parent {
    position: relative;
}
.child {
    position: absolute;
    left: 50%;
    top: translateX(-50%);
}

4. flex + justify-content

彈性布局(flex布局)也是常用來居中的方式,只需要給父級元素添加彈性布局格式奴烙,同時設(shè)置橫軸對齊方式j(luò)ustiify-content來設(shè)置居中助被。

<div class="parent">
    <div class="child">child</div>
</div>
.parent {
    display: flex;
    justify-content: center;
}

在選擇居中對齊的時候,也可以通過考慮子元素的寬度是否確定切诀,如果寬度確定恰起,也可通過:margin: 0 auto;實現(xiàn)水平居中。

注意點(diǎn):

  • text-align用來設(shè)置元素中的的文本行內(nèi)元素的對齊方式趾牧;
  • text-align只對行內(nèi)元素有效检盼,對塊元素?zé)o效,不能設(shè)置塊元素的對齊方式翘单;

二吨枉、垂直居中

1. line-height = height (只適用于單行內(nèi)行內(nèi)元素)

這種方法在設(shè)置單行塊的時候特別有效蹦渣,需要知道父元素高度。

<div class="parent">
    <div class="child">child</div>
</div>
.parent {
    height: 100px;
}
.child {
    line-height: 100px;
}

2. table-cell + vertical-align(單行貌亭,多行都可居中)

利用表格單元格的特性柬唯,單元格內(nèi)支持居中。

<div class="parent">
    <div class="child">child</div>
</div>
.parent {
    display: table-cell;
    vertical-align: middle;
}

3. absolute + transform

父元素相對布局圃庭,子元素絕對布局锄奢,適用很多場景。

<div class="parent">
    <div class="child">child</div>
</div>
.parent {
    position: relative;
}
.child {
    position: absolute;
    top: 50%;
    transfrom: translateY(-50%);
}

4. flex + align-item

flex布局剧腻,通過縱向?qū)Ralign-item設(shè)置交叉軸對齊拘央。

<div class="parent">
    <div class="child">child</div>
</div>
.parent {
    display: flex;
    align-items: center;
}

三、水平垂直居中

將上面的水平居中方法和垂直居中方法結(jié)合起來就可以實現(xiàn)水平垂直居中书在。

1. inline-block + text-align + table-cell + vertical-align

<div class="parent">
    <div class="child">child</div>
</div>
.parent {
    diaplay: teable-cell;
    text-align: center;
    vertical-align: middle;
}
.child {
    display: inline-block;
}

2. margin: auto

已知寬高的元素父元素相對定位灰伟,子元素絕對定位。

<div class="parent">
    <div class="child">child</div>
</div>
.parent {
    positon: relative;
}
.child {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    bottom: 0;
    margin: auto;
}

3. transform + translate

不管寬高是否給定儒旬,都可以使用父元素相對定位栏账,子元素絕對定位。(未知寬高可能是行內(nèi)元素)

<div class="parent">
    <div class="child">child</div>
</div>
.parent {
    positon: relative;
}
.child {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

4. flex

flex布局栈源,設(shè)置主軸和交叉軸的對齊方式挡爵。

<div class="parent">
    <div class="child">child</div>
</div>
.parent {
    display: flex;
    justify-content: center;
    align-items: center;
}

注意點(diǎn):

  1. 行內(nèi)元素設(shè)置寬高是無效的,可以通過設(shè)置line-height實現(xiàn)行內(nèi)元素高度的設(shè)置甚垦,行內(nèi)元素設(shè)置margin或者padding只有左右有效了讨,上下無效。
  2. flex(ie 9以上才支持)的兼容性寫法:
{
    display: -webkit-box;
    display: -webkit-flex;
    display: -moz-flex; 
    display: -ms-flexbox; 
    display: flex;
}

(完)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末制轰,一起剝皮案震驚了整個濱河市前计,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垃杖,老刑警劉巖男杈,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異调俘,居然都是意外死亡伶棒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門彩库,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肤无,“玉大人,你說我怎么就攤上這事骇钦⊥鸾ィ” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長窥翩。 經(jīng)常有香客問我业岁,道長,這世上最難降的妖魔是什么寇蚊? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任笔时,我火速辦了婚禮,結(jié)果婚禮上仗岸,老公的妹妹穿的比我還像新娘允耿。我一直安慰自己,他們只是感情好扒怖,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布较锡。 她就那樣靜靜地躺著,像睡著了一般姚垃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盼忌,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天积糯,我揣著相機(jī)與錄音,去河邊找鬼谦纱。 笑死看成,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的跨嘉。 我是一名探鬼主播川慌,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼祠乃!你這毒婦竟也來了梦重?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤亮瓷,失蹤者是張志新(化名)和其女友劉穎琴拧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘱支,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚓胸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了除师。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沛膳。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖汛聚,靈堂內(nèi)的尸體忽然破棺而出锹安,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布八毯,位于F島的核電站搓侄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏话速。R本人自食惡果不足惜讶踪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望泊交。 院中可真熱鬧乳讥,春花似錦、人聲如沸廓俭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽研乒。三九已至汹忠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雹熬,已是汗流浹背宽菜。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竿报,地道東北人铅乡。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像烈菌,于是被迫代替她去往敵國和親阵幸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

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