CSS實現(xiàn)元素的居中顯示

前言

元素的水平及垂直居中是在寫CSS樣式中最常遇到的問題之一奇钞。相信會CSS的同學(xué)肯定都有自己的解決方法,但是并不一定都能熟練運用匆篓,并且知道其中原理搁胆。下面筹误,我就將自己總結(jié)的實現(xiàn)方法分享給大家。
ps:重點是第四,疑惑在第三,第一撵摆、第二也較常用

為本文制作的demo:元素居中顯示

一、單行文本

這里的單行文本不僅是指單行顯示的文本以及行內(nèi)元素(設(shè)置了display: inline;的也是行內(nèi)元素)害晦,當(dāng)然這些元素也只有包含文本才有意義特铝,才能顯示出來。

/* 父元素*/
div {
  text-align: center;//水平居中
  light-height: heightValue;//垂直居中
}

注意

  • 這里的heightValue指的是height屬性值壹瘟,即行高值 = 高度值鲫剿,才能實現(xiàn)垂直居中。
  • 另外一種常見的就是不設(shè)置高度稻轨,直接用行高來撐起高度灵莲,這樣就不存在行高與高度一致的問題。

具體原因請參考文章:對文字和行高的理解

二殴俱、多行文本

這里的多行文本笆呆,實際上應(yīng)該說是不定行,這個方法能自適應(yīng)的居中粱挡。

/* 父元素*/
div {
  text-align: center;
  display: table-cell;
  vertical-align: middle;
}

這里設(shè)置table-cell,創(chuàng)建類似表格單元的元素俄精,就可以使用vertical-align設(shè)置垂直對齊方式询筏。

注意:在一些文章中,我看到還需要設(shè)置其子元素的vertical-align竖慧,但是在實踐中發(fā)現(xiàn)并不需要嫌套。與下面使用table-cell的方法有所區(qū)別

三、圖片

這里圖片泛指行內(nèi)塊元素

  • table-cell + vertical-align

/* 父元素*/
div {
  display: table-cell;
  text-align: center;
  vertical-align: middle;
}
/* 子元素img*/
img{
  vertical-align:middle;
}
  • 這個方法與上面的有區(qū)分圾旨,子元素必須加上vertical-align踱讨,否則不同大小的圖片顯示效果不一樣
  • 不支持img的父元素浮動,因為這樣display會自動變?yōu)?code>block砍的,所以當(dāng)多圖片顯示時需要再在外面嵌套一層標(biāo)簽痹筛,不方便

注意:在一些文章中,在父元素上還添加了font-size的大小控制,在我的實踐中帚稠,不添加font-size可以實現(xiàn)效果谣旁。但是,當(dāng)font-size達(dá)到一定程度的時候滋早,會有影響榄审。

  • vertical-align + font-size

/* 父元素*/
div {
font-size:128px; 
vertical-align: middle;
}
/* 子元素img*/
img{
  vertical-align: middle;
}

font-size達(dá)到一定大小就會影響行內(nèi)元素的垂直位置,具體是什么原因不明確杆麸,但是感覺是跟vertical-align以及行高有關(guān)搁进。

注意:這個方法的原本是在父元素上加display: inline-block;的,實踐發(fā)現(xiàn)并不需要昔头,只要里面的是行內(nèi)塊元素就可以了饼问。使用這個方法特別注意的是父元素font-size與子元素height的比例關(guān)系,因為不可控减细,所以不推薦使用匆瓜。

  • 其他方法參照下面的塊元素實現(xiàn)

四、盒子

盒子主要指塊元素行內(nèi)塊未蝌,下面分享的是布局中主要用到的驮吱。margin: 0 auto就不做介紹了。

1. position + 負(fù)margin

/* 父元素 */
.demo{
  position: relative;
}
/* 子元素 */
.box{
  width: 100px;
  height: 100px;
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -50px; /* img高度的一半*/
  margin-left: -50px;/* img寬度的一半*/
}

利用position移動父元素寬高的一半萧吠,再利用負(fù)margin往回移動子元素寬高的一半左冬,剛好居中對齊。適合固定寬高的元素纸型。

2.position + translate

/* 父元素 */
.demo{
  position: relative;
}
/* 子元素 */
.box{
  position: absolute;
  top: 50%;
  left: 50%;
  transform:translate3d(-50%,-50%,0);
}

同上理拇砰,這里利用translate3d往回移動。子元素不固定寬高也適用狰腌。

3. table-cell + vertical-align

這就是前面圖片提到的方法除破,只不過要設(shè)置子元素為display: inline-block;

4. flex

這才是真正的布局神器。適用于所有琼腔,但也需要靈活應(yīng)用瑰枫。

.demo {
  display: flex;
  align-items: center;
  justify-content: center;
}

簡潔、高效丹莲,在低版本IE存在兼容問題光坝,但是現(xiàn)在幾乎不用考慮了。

詳細(xì)語法請查看我的博文:關(guān)于Flex布局

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末甥材,一起剝皮案震驚了整個濱河市盯另,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洲赵,老刑警劉巖鸳惯,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件商蕴,死亡現(xiàn)場離奇詭異,居然都是意外死亡悲敷,警方通過查閱死者的電腦和手機(jī)究恤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來后德,“玉大人部宿,你說我怎么就攤上這事∑芭龋” “怎么了理张?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長绵患。 經(jīng)常有香客問我雾叭,道長,這世上最難降的妖魔是什么落蝙? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任织狐,我火速辦了婚禮,結(jié)果婚禮上筏勒,老公的妹妹穿的比我還像新娘移迫。我一直安慰自己,他們只是感情好管行,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布厨埋。 她就那樣靜靜地躺著,像睡著了一般捐顷。 火紅的嫁衣襯著肌膚如雪荡陷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天迅涮,我揣著相機(jī)與錄音废赞,去河邊找鬼。 笑死叮姑,一個胖子當(dāng)著我的面吹牛唉地,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播戏溺,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屠尊!你這毒婦竟也來了旷祸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤讼昆,失蹤者是張志新(化名)和其女友劉穎托享,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡闰围,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年赃绊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羡榴。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡碧查,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出校仑,到底是詐尸還是另有隱情忠售,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布迄沫,位于F島的核電站稻扬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏羊瘩。R本人自食惡果不足惜泰佳,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尘吗。 院中可真熱鬧逝她,春花似錦、人聲如沸摇予。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侧戴。三九已至宁昭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酗宋,已是汗流浹背积仗。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蜕猫,地道東北人寂曹。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像回右,于是被迫代替她去往敵國和親隆圆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案翔烁? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 13,753評論 1 92
  • H5移動端知識點總結(jié) 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,500評論 0 26
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,472評論 0 6
  • 收聽音頻,戳鏈接,舊號itclan已暫停使用,歡迎關(guān)注微信itclanCoder公眾號可收聽更多音頻 前言 關(guān)于網(wǎng)...
    itclanCoder閱讀 8,179評論 3 30
  • 一 外部式css樣式 (也可稱為外聯(lián)式)就是把css代碼寫一個單獨的外部文件中渺氧,這個css樣式文件以“.css...
    KunMitnic閱讀 939評論 0 1