圖片垂直居中

圖片居中在很多地方需要用到,水平居中很好實(shí)現(xiàn),垂直居中有點(diǎn)麻煩,這段時(shí)間在項(xiàng)目中遇到了好幾處這樣的問題婉刀,分享給大家律秃。

需求一:未知圖片大小柜裸,使圖片在高度固定的區(qū)域內(nèi)垂直居中

大家都習(xí)慣在應(yīng)該是圖片垂直居中的地方先設(shè)置圖片父元素的行高line-height等于其高度height蔬崩,然后對(duì)圖片設(shè)置vertical-align:middle來達(dá)到這種效果。首先我們先來看下這種方式的效果:

.wrapper{
    background: #cc8548;
    margin: 40px auto;
    width: 500px;
    height: 300px;
    line-height: 300px;
    text-align: center;
}
.img{
    vertical-align: middle;
}

<div class="wrapper">
        <img class="img" src="img1.jpg">
</div>

其效果如下:


貌似垂直居中了

是不是看著這樣就垂直居中了?
其實(shí)并沒有居中,只是因?yàn)樯舷虏顒e太小不好看出而已挡育,我們把父元素的高度縮小一下就很明顯了:

.wrapper{
    background: #cc8548;
    margin: 40px auto;
    width: 500px;
    height: 200px;
    line-height: 200px;
    text-align: center;
}
.img{
    vertical-align: middle;
}

很明顯垂直沒有居中

對(duì)于vertical-align這個(gè)屬性,W3C給出的說明是:

vertical-align用來設(shè)置垂直對(duì)齊方式,所有垂直對(duì)齊的元素都會(huì)影響行高
值: baseline | sub | super | top | text-top | middle | bottom | text-bottom | <length> | <percentage> | inherit
初始值: baseline
應(yīng)用于: 行內(nèi)元素、替換元素、表單元格
繼承性: 無
百分?jǐn)?shù): 相對(duì)于元素的行高line-height
[注意]IE7-瀏覽器中vertical-align的百分比值不支持小數(shù)行高矛绘,且取baseline喧锦、middle、text-bottom等值時(shí)與標(biāo)準(zhǔn)瀏覽器在展示效果不一樣,常用的解決辦法是將行內(nèi)元素設(shè)置display:inline-block

vertical-align:baseline(元素的基線與父元素的基線對(duì)齊)
vertical-align:sub(降低元素的基線到父元素合適的下標(biāo)位置)
vertical-align:super(升高元素的基線到父元素合適的上標(biāo)位置)
vertical-align:bottom(把對(duì)齊的子元素的底端與行框底端對(duì)齊)
vertical-align:text-bottom(把元素的底端與父元素內(nèi)容區(qū)域的底端對(duì)齊)
vertical-align:top(把對(duì)齊的子元素的頂端與行框頂端對(duì)齊)
vertical-align:text-top(把元素的頂端與父元素內(nèi)容區(qū)域的頂端對(duì)齊)
vertical-align:middle(元素的中垂點(diǎn)與父元素的基線加1/2父元素中字母X的高度對(duì)齊)
vertical-align:(+-n)px(元素相對(duì)于基線上下偏移npx)
vertical-align:x%(相對(duì)于元素的line-height值)
vertical-align:inherit(從父元素繼承vertical-align屬性的值)

由此可見罩锐,vertical-align: middle;屬性的作用并不是將子元素的垂直中點(diǎn)和父元素的垂直中點(diǎn)對(duì)齊熬的,而是元素的中垂點(diǎn)與父元素的基線加1/2父元素中字母X的高度對(duì)齊。
對(duì)于元素的中垂點(diǎn)與父元素的基線加1/2父元素中字母X的高度對(duì)齊,可參考下圖:

圖片來自網(wǎng)絡(luò)

基線并不是漢字文字的下端沿,而是英文字母“x”的下端沿忘伞。但是字符X在父元素中并不是垂直居中的斋射,且各個(gè)字體的字符X的高低位置不一致桑包。所以窄陡,當(dāng)字體大小較大時(shí)乘综,這種差異就更明顯萌朱。而當(dāng)字體大小為0時(shí),基線的位置就等于中線的位置锄弱,我們通過設(shè)置父元素的font-size:0來使圖片達(dá)到完成垂直居中的效果:

.wrapper{
    background: #cc8548;
    margin: 40px auto;
    width: 500px;
    height: 200px;
    line-height: 200px;
    text-align: center;
    font-size: 0;
}
.img{
    vertical-align: middle;
}
完全垂直居中

需求二:圖文混排赎瞎,使圖片在未知高度的div中垂直居中

使用場景大概是圖文混排,左邊是圖片,右邊為文字熟史,文字多少未知怒详,圖片垂直居中。


文字較少時(shí),圖片和文字分別垂直居中

文字較多時(shí)溪椎,圖片垂直居中

這里使用flex布局來解決圖文混排的問題蛾洛,其代碼如下:

.wrapper{
    background: #cc8548;
    margin: 40px auto;
    padding: 20px;
    width: 500px;
    display: flex;
    flex-direction: row;
    align-items: center; /*垂直居中*/
    justify-content: center; /*水平居中*/
    font-size: 0;
}
.img{
    vertical-align: middle;
    align-items: center;
    }
.text{
    flex: 1;
    padding-left: 50px;
    font-size: 20px;
}
<div class="wrapper">
    <img class="img" src="img1.jpg">
    <div class="text">
        富強(qiáng)民主文明和諧,自由平等公正法制,愛國敬業(yè)誠信友善趁餐。
        富強(qiáng)民主文明和諧,自由平等公正法制篮绰,愛國敬業(yè)誠信友善后雷。
        富強(qiáng)民主文明和諧,自由平等公正法制吠各,愛國敬業(yè)誠信友善臀突。
        富強(qiáng)民主文明和諧,自由平等公正法制贾漏,愛國敬業(yè)誠信友善候学。
        富強(qiáng)民主文明和諧,自由平等公正法制纵散,愛國敬業(yè)誠信友善梳码。
        富強(qiáng)民主文明和諧隐圾,自由平等公正法制,愛國敬業(yè)誠信友善边翁。
        富強(qiáng)民主文明和諧翎承,自由平等公正法制,愛國敬業(yè)誠信友善符匾。
        富強(qiáng)民主文明和諧叨咖,自由平等公正法制,愛國敬業(yè)誠信友善啊胶。
    </div>
</div>

over~ QAQ

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末甸各,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子焰坪,更是在濱河造成了極大的恐慌趣倾,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件某饰,死亡現(xiàn)場離奇詭異儒恋,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)黔漂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門诫尽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人炬守,你說我怎么就攤上這事牧嫉。” “怎么了减途?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵酣藻,是天一觀的道長。 經(jīng)常有香客問我鳍置,道長辽剧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任税产,我火速辦了婚禮抖仅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘砖第。我一直安慰自己,他們只是感情好环凿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布梧兼。 她就那樣靜靜地躺著,像睡著了一般智听。 火紅的嫁衣襯著肌膚如雪羽杰。 梳的紋絲不亂的頭發(fā)上渡紫,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音考赛,去河邊找鬼惕澎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛颜骤,可吹牛的內(nèi)容都是我干的唧喉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼忍抽,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼八孝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鸠项,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤干跛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后祟绊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體楼入,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年牧抽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘉熊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡阎姥,死狀恐怖记舆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情呼巴,我是刑警寧澤泽腮,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站衣赶,受9級(jí)特大地震影響诊赊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜府瞄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一碧磅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遵馆,春花似錦鲸郊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至换况,卻和暖如春职辨,著一層夾襖步出監(jiān)牢的瞬間盗蟆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工舒裤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喳资,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓腾供,卻偏偏與公主長得像仆邓,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子台腥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

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

  • 對(duì)于許多前端來說黎侈,讓圖片居中有很多辦法察署,但是最簡單,最便捷的有哪些方法呢峻汉? padding贴汪? margin?對(duì)于單...
    qyer0222閱讀 2,993評(píng)論 2 2
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案休吠? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,734評(píng)論 1 92
  • 圖片垂直居中是個(gè)經(jīng)典的問題扳埂,網(wǎng)上關(guān)于這個(gè)的方法也非常多,良莠不齊瘤礁,本人比較推薦的以下三種簡單的方法阳懂,大家可以稍做參...
    六寸星田閱讀 3,505評(píng)論 0 0
  • 在開發(fā)中經(jīng)常遇到需要將不定高度的圖片垂直居中的情況,尤其電商網(wǎng)站柜思,圖片很多岩调,寬高比例不一定。如果想要整齊地顯示在網(wǎng)...
    來個(gè)大雞腿吧閱讀 1,271評(píng)論 0 2
  • 收聽音頻,戳鏈接,舊號(hào)itclan已暫停使用,歡迎關(guān)注微信itclanCoder公眾號(hào)可收聽更多音頻 前言 關(guān)于網(wǎng)...
    itclanCoder閱讀 8,157評(píng)論 3 30