在開發中,有時候經常會碰到圖片水平居中或垂直居中或者水平、垂直都居中的情況,雖然知道怎么用,但是也只是局限於某一種,有時候也需要調試好一會兒才能解決,因此看了一下關於這方面的知識點,來總結一下。以代碼來說事兒。
html主要代碼:
<div class="container"> <img src="http://placeholder.qiniudn.com/190x284" alt=""> </div>
css代碼:
<style> .container{ width:500px; height:400px; border:1px solid #eee; } img{ width:200px; } </style>
1、圖片水平居中。
這里有一下幾種方法可以實現。
(1)、將img標簽變成塊元素,然后使用margin:0 auto;即可實現。其他不變,那么此時img的樣式為:
img{ display:block; width:200px; margin:0 auto; }
(2)、其實跟第一種差不多,就是將img標簽一個相對定位(relative)或者絕對定位(absolute),然后left值為50%,然后使用margin-left值為負的圖片的寬度的一半就行,代碼為
img{
width:200px;
position: absolute;
left:50%;
margin-left:-100px; // 該值為圖片寬度的一半
}
(3)、使用相對定位(relative)或者絕對定位(absolute),然后left值為50%,然后使用css3transform里的translate來實現(雖然在兼容性方面有些小問題)。
img{ width:200px; position: relative; left:50%; transform:translateX(-50%); }
2、圖片垂直居中
(1)、這里其實上面實現圖片水平居中的第三種方法是一樣的,只不過是將left換為了top,水平方向移動換成了垂直方向移動而已。
img{ width:200px; position: relative; top:50%; transform:translateY(-50%); }
(2)、使用css偽類選擇器 :before與vertical-align 來實現,代碼為:
.container:before{
content:'';
display: inline-block;
height:400px; // 高度值與包含圖片的容器的高度一致
vertical-align: middle;
}
img{
width:200px;
vertical-align: middle;
}
(3)、第三種方法就是已知圖片的高度,然后使用top:50%和設置margin-top值為負的圖片高度的一半。
3、至於水平垂直都居中那就好說了,將上面垂直、水平居中的方法結合一下就行了。