以前總是以為vertical-align與text-align是同樣的道理,一個是垂直居中,一個是水平居中,結果在這裡一點效果也沒有。事實上vertical-align與text-align完全不一樣,vertical-align不能這樣用。 vertical-align 屬性設置元素的垂直對齊方式 ...
以前總是以為vertical-align與text-align是同樣的道理,一個是垂直居中,一個是水平居中,結果在這裡一點效果也沒有。事實上vertical-align與text-align完全不一樣,vertical-align不能這樣用。
vertical-align 屬性設置元素的垂直對齊方式。該屬性定義行內元素的基線相對於該元素所在行的基線的垂直對齊。允許指定負長度值和百分比值。這會使元素降低而不是升高。在表單元格中,這個屬性會設置單元格框中的單元格內容的對齊方式。預設值:baseline,元素放置在父元素的基線上。
第一種用法,先看後面一句“在表單元格中,這個屬性會設置單元格框中的單元格內容的對齊方式。”這很容易理解,如果給一個表格的td加一個vertical-align:middle的樣式,表格裡面的內容會垂直居中,同樣的如果給一個vertical-align:bottom就會底部對齊,如果給一個vertical-align:top就會頂部對齊。第二種用法,該屬性定義行內元素的基線相對於該元素所在行的基線的垂直對齊。假設有兩個行內元素a和b,a和b都是div,當a加了一個vertical-align:middle樣式之後,b的底部(基線)就會對齊a的中間位置,如下圖:
如果a和b都加了一個vertical-align:middle樣式,那麼就互相對齊了對方的中間位置,也就是它們在垂直方向上的中線對齊了,如下圖:
現在我要讓class="box"的div在class="wrapper"的div裡面垂直居中,我可以在class="wrapper"的div裡面加一個div空標簽,把它的高度設為100%,寬度設置為0,再給它一個vertical-align:middle樣式,同樣的給class="box"的div一個vertical-align:middle樣式,那麼box就可以在div裡面垂直居中了。
1 <style> 2 .wrapper { 3 width: 200px; 4 height: 200px; 5 background-color: green; 6 7 margin: 0 auto; 8 text-align: center; 9 } 10 11 .help { 12 width: 0; 13 height: 200px; 14 15 display: inline-block; 16 vertical-align: middle; 17 18 } 19 .content { 20 width: 100px; 21 height: 100px; 22 background-color: yellow; 23 24 vertical-align: middle; 25 display: inline-block; 26 27 } 28 29 </style> 30 </head> 31 <body> 32 <div class="wrapper"> 33 <div class="help"></div> 34 <div class="content"></div> 35 </div> 36 37 </body>
下麵我們來看一張圖來更好理解垂直對齊主要屬性值的表現形式