Display: table-cell實現img、文字垂直居中


在文章開頭先說明一下此方法的兼容性,IE8+以及其他現代瀏覽器都支持此屬性。

 

直接獻上一個demo

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Table-cell Demo</title>

<style type="text/css">

body {

padding: 0;

margin: 0;

}

h3 {

position: absolute;

z-index: 9;

top: 0;

right: 0;

margin: 0;

}

h5 {

position: absolute;

z-index: 8;

top: 230px;

right: 0;

margin: 0;

color: red;

}

.line {

position: absolute;

width: 100%;

height: 250px;

border-bottom: 1px solid red;

}

.box {

/*IE的主流瀏覽器識別的垂直居中的方法*/

display: table-cell;

vertical-align: middle;

 

/*設置水平居中*/

text-align: center;

 

/* 針對IEHack */

 

*display: block;

/*約為高度的0.873200*0.873 約為175*/

*font-size: 175px;

/*防止非utf-8引起的hack失效問題,如gbk編碼*/

*font-family: Arial;

 

width: 500px;

height: 500px;

border: 1px solid #ccc;

}

.img1 {

width: 40px;

height: 40px;

 

/*設置圖片垂直居中*/

vertical-align: middle;

}

.img2 {

width: 80px;

height: 80px;

 

/*設置圖片垂直居中*/

vertical-align: middle;

}

.img3 {

width: 120px;

height: 120px;

 

/*設置圖片垂直居中*/

vertical-align: middle;

}

</style>

</head>

<body>

<div class="line"></div>

<div class="box">

<span>bpdqooo</span>

<img class="img1" src="./home.jpg"/>

<img class="img2" src="./home.jpg"/>

<img class="img3" src="./home.jpg"/>

<span>bpdqooo</span>

</div>

<h3>table-cell實現垂直居中</h3>

<h5>中線</h5>

</body>

</html>

 

以下是說明:

class=”box”div設為display: table-cell,即可實現div內元素的垂直居中

將我的demo用瀏覽器打開,可以看到我放了3張大小不一的圖片,還有兩段文字,我們暫且把這些東西看作是一行

好,為什么我要放三張圖片呢?

現在我們可以做個實驗:

把最大的圖片(class=”img3”)設為vertical-align: top

可以看到其他圖片和文字均向上偏移,而且第二大的圖片(class=”img2”)頂部和img3對齊,這說明,img3vertical-align屬性控制行內其他所占高度更小的元素,並且對img2作用最強

接着上一步,再來做個實驗:

img2設為vertical-align: top

可以看到img1和文字均向上偏移,而且img1頂部和img3對齊,這說明,img2vertical-align屬性控制行內其他所占高度更小的元素,並且對img1作用最強

你是不是似乎明白了什么,同理,若把img設為vertical-align: top,那么兩邊的文字將會向上偏移,頂部與img1對齊。

 

結論:

table-cell內的元素,均可視為同一行中

如果只有單行,

該行的高度由最高的元素決定

若對行內某一元素進行設置vertical-align: top,則該屬性影響其余高度更小的元素,且對高度最接近的元素作用最強(使之與其頂部對齊)

如果有多行,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM