網(wǎng)頁(yè)制作Webjx文章簡(jiǎn)介:讓圖片垂直居中的方法. |
圖片的寬度和高度是未知的,沒(méi)有一個(gè)固定的尺寸,在這個(gè)前提下要使圖片在一個(gè)固定了寬度和高度的容器中垂直居中,想想感覺(jué)還是挺麻煩的,由于最近的項(xiàng)目可能會(huì)用到這個(gè)方案,所以把一些常用的方法都收集整理了一下。
下圖是理想中的效果圖,外部容器的寬度和高度是固定的,中間的圖片寬度和高度未知,但是圖片要始終要相對(duì)于外部的容器垂直居中。
但是實(shí)際中實(shí)現(xiàn)的效果并不是很完美,由于各瀏覽器的解析都各不相同,所以各瀏覽器都會(huì)有1px-3px的偏差。
方法一 (XHTML 1.0 transitional):
該方法是將外部容器的顯示模式設(shè)置成display:table,img標(biāo)簽外部再嵌套一個(gè)span標(biāo)簽,并設(shè)置span的顯示模式為display:table-cell,這樣就可以很方便的使用vertical-align象表格元素那樣對(duì)齊了,當(dāng)然這只是在標(biāo)準(zhǔn)瀏覽器下,IE6/IE7還得使用定位。
HTML結(jié)構(gòu)部分:
<div id="box"> |
CSS樣式部分:
<style type="text/css">? |
方法二 (XHTML 1.0 transitional):
方法二和方法一的實(shí)現(xiàn)的原理大同小異,結(jié)構(gòu)也是相同的,方法一用的是條件注釋?zhuān)椒ǘ陀玫腃SS Hack。
CSS樣式部分:
<style type="text/css">? |
該方法有個(gè)弊端,在標(biāo)準(zhǔn)瀏覽器下由于外部容器#box的顯示模式為display:table-cell,所以導(dǎo)致#box無(wú)法使用margin屬性,并且在IE8下設(shè)置邊框也無(wú)效。
方法三 (XHTML 1.0 strict):
標(biāo)準(zhǔn)瀏覽器還是將外部容器#box的顯示模式設(shè)置為display:table-cell,IE6/IE7是利用在img標(biāo)簽的前面插入一對(duì)空標(biāo)簽的辦法。
HTML結(jié)構(gòu)部分:
<div id="box"><i></i><img src="images/demo.jpg" alt=""></div> |
CSS樣式部分:
<style type="text/css">? |
方法三也同樣適用XHTML 1.0 transitional。以上方法都是收集于網(wǎng)頁(yè)教學(xué)網(wǎng),暫時(shí)只對(duì)這3個(gè)方法比較滿(mǎn)意,兼容性方面不錯(cuò),使用起來(lái)的限制也比較小,還有些方法我也都一一測(cè)試過(guò),效果都不理想,在各瀏覽器中的差異比較大。另外司徒正美這里也收集了一些方法。
思考:很多方法都是依賴(lài)于將外部容器的顯示模式設(shè)置成table才能實(shí)現(xiàn)垂直居中,也就是div來(lái)模擬table,如果CSS有一個(gè)屬性來(lái)實(shí)現(xiàn)這種效果那該多好。如果你也有好的方法,歡迎你來(lái)分享。
原文:http://stylechen.com/img-middle.html
聯(lián)系客服