css實(shí)現(xiàn)的讓圖片垂直居中的方法

下圖是理想中的效果圖,外部容器的寬度和高度是固定的,中間的圖片寬度和高度未知,但是圖片要始終要相對(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)也是相同的,方法一用的是條件注釋,方法二就用的CSS Hack。
CSS樣式部分:
<style type="text/css"> |
該方法有個(gè)弊端,在標(biāo)準(zhǔn)瀏覽器下由于外部容器#box的顯示模式為display:table-cell,所以導(dǎo)致#box無法使用margin屬性,并且在IE8下設(shè)置邊框也無效。
方法三 (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。以上方法都是收集于腳本之家,暫時(shí)只對(duì)這3個(gè)方法比較滿意,兼容性方面不錯(cuò),使用起來的限制也比較小,還有些方法我也都一一測(cè)試過,效果都不理想,在各瀏覽器中的差異比較大。另外司徒正美這里也收集了一些方法。
思考:很多方法都是依賴于將外部容器的顯示模式設(shè)置成table才能實(shí)現(xiàn)垂直居中,也就是div來模擬table,如果CSS有一個(gè)屬性來實(shí)現(xiàn)這種效果那該多好。如果你也有好的方法,歡迎你來分享。
原文:http://stylechen.com/img-middle.html
相關(guān)文章
純CSS定位的固定垂直居中浮動(dòng)層代碼,附經(jīng)典解說 《詳解定位與定位應(yīng)用
關(guān)于在html中浮動(dòng)層是眾多網(wǎng)頁愛好者剛開始的難點(diǎn),主要在于定位。如果你對(duì)CSS定位還不夠了解 可以接著往下看,運(yùn)行里面的內(nèi)容即可。 【需求】: 將一個(gè)網(wǎng)頁分成頭、身2009-07-01- 如題,用html,css如何實(shí)現(xiàn)垂直居中。水平居中我們知道最簡便的方法就是margin:auto,但是margin只是相對(duì)寬度有效。2010-03-18
用CSS讓img input select button 圖片,文本框,下拉菜單,按扭垂直居中的
一直以來,在HTML中,img input select button 這里元素,垂直對(duì)齊,比較難。結(jié)果我長大了。我發(fā)現(xiàn)了一個(gè)現(xiàn)像,其實(shí)解決這些問題只是一句話的事。2011-03-08CSS垂直居中網(wǎng)頁布局實(shí)現(xiàn)的5種方法
網(wǎng)頁制作Webjx文章簡介:利用 CSS 來實(shí)現(xiàn)對(duì)象的垂直居中有許多不同的方法,比較難的是選擇那個(gè)正確的方法。我下面說明一下我看到的好的方法和怎么來創(chuàng)建一個(gè)好的居中網(wǎng)站。2009-04-02- 用過 Fireworks / PhotoShop 的人應(yīng)該都知道,在畫布中將一個(gè)頁面模塊居中是多容易的事,可如果是垂直居中,前端就苦逼了2011-10-30
- 全屏垂直居中的一個(gè)辦法 DIV+CSS , 這個(gè)方面有一點(diǎn)不好, 就是不能自動(dòng)適應(yīng),必須把高和寬寫死!2011-10-07
- 寬度自適應(yīng):就是元素的寬度根居里面的內(nèi)容來變化2012-06-14
- 盡管有CSS的vertical-align特性,但是并不能有效解決未知高度的垂直居中問題(在一個(gè)DIV標(biāo)簽里有未知高度的文本或圖片的情況下)。2010-06-06
- 最近上網(wǎng)上找了些關(guān)于CSS實(shí)現(xiàn)垂直居中的方法,方法挺多,下面就我看到的幾種好方法在這里說明一下,使用 CSS 實(shí)現(xiàn)垂直居中并不容易。2011-09-05
- 看到問此問題的很多,所以花點(diǎn)時(shí)間整理下,歡迎大家提意見,做補(bǔ)充修改,謝謝2012-01-21