新聞中心
圖片的居中顯示 css 有很多方法,但在很多情況下有的方法無效,這是件很頭疼的事情,比如

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、北海網(wǎng)站維護(hù)、網(wǎng)站推廣。
一般設(shè)置圖片屬性
?
text-align:center
?
水平居中,但這個(gè)方法經(jīng)常無效,
很多前端工程師都有研究過或者說是搜索過
CSS
圖片居中方法吧。
但其實(shí) CSS 圖片居中有多種不同的情況,也有多種不同的解決方法,具體方法如下所示:
圖片居中又分為水平居中和垂直居中
提示:在你開始閱讀以下內(nèi)容之前,你可以先了解CSS圖片的基礎(chǔ)內(nèi)容。
一、水平居中:
1、單獨(dú)文字垂直居中我們只需要設(shè)置 CSS 樣式line-height屬性即可。
2、文字與圖片同排,在設(shè)置div高度同時(shí)再對此 CSS 樣式的圖片“img”樣式設(shè)置?vertical-align:middle?垂直居中屬性,如:? img{vertical-align:middle;}? 。
3 不確定寬度的塊級元素設(shè)置水平居中的方法
(1)是使用? table? 作為容器的方法來實(shí)現(xiàn)。當(dāng)然不大推薦使用這種方法,因?yàn)樘砑恿藷o意義的標(biāo)簽。這里就稍微介紹一下吧。?Table? 標(biāo)簽本身并不是塊級元素,當(dāng)我們不設(shè)置?table?的寬度的話,他里面的寬度是由他內(nèi)部元素的寬度撐起來的。但即使我們沒有設(shè)置?table?的寬度,直接設(shè)置?table?的外邊距?margin:0 auto;?就可以實(shí)現(xiàn)水平居中了!這樣我們就可以通過設(shè)置?table?水平居中,間接使里面的內(nèi)容居中。
(2)相對于用?table?的方法的好處是不用增加無語義標(biāo)簽,簡化標(biāo)簽嵌套深度。這個(gè)思路是這樣的,通過改變塊級元素的?display?屬性值為?inline?類型,然后設(shè)置?text-align:center?來實(shí)現(xiàn)居中。這種方法也有一定不妥之處就是把塊級元素改為行內(nèi)元素后,行內(nèi)元素比塊元素少了一些功能。比如說設(shè)定長寬值等,在項(xiàng)目運(yùn)用中可能會有一些限制,大家可以自行選擇。
(3)通過給父元素設(shè)置浮動(dòng)?float?,再設(shè)置父元素的?position?屬性為?relative?和?left:50%;?子元素設(shè)置?position:relative?和?left:-50%?來實(shí)現(xiàn)水平居中。這個(gè)好處是可以保留塊級元素仍然是以?display:block?的形式顯示,不會添加無意義的標(biāo)簽,不添加嵌套深度。確點(diǎn)是設(shè)置了?position:relative;?帶來了一些副作用。下面是第三種方法的實(shí)例代碼,放到?body?標(biāo)簽里面就可以了。
二、垂直居中:
對這個(gè)CSS居中問題,我們可以使用設(shè)置背景圖片的方法。舉例:
body {BACKGROUND: url(”圖片文件”) #FFF no-repeat center;}
關(guān)鍵就在于這個(gè)?center?屬性,它表示讓該背景圖片在容器中居中。你也可以把?center?換成?top left?或者直接寫上數(shù)字來調(diào)整它的位置。
方法一:
實(shí)例
div {
width:500px;
height:500px;
border:1px solid #666;
overflow:hidden;
position:relative;
display:table-cell;
text-align:center;
vertical-align:middle;}
嘗試一下 ?
方法二:
實(shí)例
div p {
position:static;
+position:absolute;
top:50%
}
img {
position:static;
+position:relative;
top:-50%;left:-50%;
vertical-align:middle
}
嘗試一下 ?
方法三:
實(shí)例
img {
position:static;
+position:relative;
top:-50%;left:-50%;
vertical-align:middle; }
嘗試一下 ?
方法四:
實(shí)例
* {margin:0;padding:0;}
div {
width:500px;border:1px solid #666;
height:500px;
background:url("/statics/images/w3c/intro.png") center no-repeat;}
嘗試一下 ?
三、css圖片居中用text-align:center無效怎么回事?
實(shí)例
div{
border:1px solid red;
margin:20px;
text-align:center;
}
嘗試一下 ?
四、如何讓圖片在DIV中水平和垂直兩個(gè)方向都居中?
方法一:
思路:利用?text-align?屬性將圖片水平居中,然后設(shè)置?padding-top?的值使其垂直居中。
結(jié)構(gòu)如下:
CSS樣式如下:
div {width:300px; height:150px; background-color:#CCC; border:#000 1px solid; text-align:center; padding-top:50px;}
運(yùn)行結(jié)果如下:
釋義:
圖片的尺寸為150x100px,DIV的大小為300x200px;
background-color:#CCC; border:#000 1px solid;為DIV加個(gè)邊框和背景色,便于觀察效果。
?text-align:center?,實(shí)現(xiàn)圖片的水平居中;?padding-top:50px?,50px這個(gè)數(shù)值是經(jīng)過計(jì)算得到的,?padding-top?的值具體算法如下:(DIV的高度 – 圖片的高度)/2,但這里要注意,根據(jù)盒模型原理,我們還要將DIV原來的高度200減去?padding-top?的值,這樣顯示的才是正確的,否則DIV會變高。
方法二:
思路:只用?padding?屬性,通過計(jì)算求得居中
結(jié)構(gòu)代碼同上;
CSS樣式如下:
div {width:225px; height:150px; background-color:#eee; border:#000 1px solid; padding-top:50px; padding-left:75px;}
備注:這里DIV的寬高計(jì)算都遵循盒模型原理,計(jì)算方法同上。
方法三:
思路:利用圖片的?margin?屬性將圖片水平居中,利用DIV的?padding?屬性將圖片垂直居中。
結(jié)構(gòu)代碼同上;
CSS代碼如下:
div {width:300px; height:150px; background-color:#eee; padding-top:50px; border:#000 1px solid;}
img {display:block; margin:0 auto;}
備注:
?Img?是內(nèi)聯(lián)元素,要設(shè)置其?margin?屬性使其居中,就要將其轉(zhuǎn)換為塊元素?display:block;?然后利用?margin:0 auto;?實(shí)現(xiàn)圖片的水平居中;(有的設(shè)計(jì)師為圖片再加個(gè) div 標(biāo)簽,然后通過 div 標(biāo)簽的?margin?實(shí)現(xiàn)居中,也可以,不過,在結(jié)構(gòu)中就又多了對 div,相對麻煩點(diǎn))至于垂直居中的方法和前面的都一樣,就不再重述。
以上方法都是有前提的,就是必須知道 DIV 與圖片的尺寸,否則無法完成垂直居中的效果。
用一行css居中并裁剪圖片的方法
設(shè)置圖片的裁剪尺寸非常簡單,你只需在 CSS 里使用這行代碼:
img {
object-fit: cover;
}
就是這樣。不需要語義、包裝 div 或者其他沒意義的代碼。
這種技術(shù)能很好地把大小不合適的頭像圖片裁剪為正方形或者圓形的圖片。以下面那只熊的寬圖片來舉例。一旦把 ?object-fit:cover ?技術(shù)應(yīng)用在這種圖片上,并且設(shè)置好寬和高,圖片自己就會進(jìn)行裁剪和居中。
?object-fit:cover?的裁剪方式和?background-size:cover?的完全相同,不過它是用來為 imgs、videos 和其他的媒體標(biāo)簽設(shè)置樣式的,而不是給背景圖片設(shè)置樣式。
相當(dāng)多的最新瀏覽器都支持 object-fit 技術(shù),并且還有 polyfill 項(xiàng)目讓你能在更老的瀏覽器(IE8+)里使用該技術(shù)。
文章題目:創(chuàng)新互聯(lián)CSS教程:厲害了我的哥,css圖片居中原來有這么多種方法
網(wǎng)頁路徑:http://m.fisionsoft.com.cn/article/cdcdcie.html


咨詢
建站咨詢
