我有以下的div元素。
<div id="over" style="position:absolute; width:100%; height:100%>
<img src="img.png">
</div>
如何将图像对齐以位于div的中间和中心位置?
<div id="over" style="position:absolute; width:100%; height:100%>
<img src="img.png">
</div>
如何将图像对齐以位于div的中间和中心位置?
body {
margin: 0;
}
#over img {
margin-left: auto;
margin-right: auto;
display: block;
}
<div id="over" style="position:absolute; width:100%; height:100%">
<img src="http://www.garcard.com/images/garcard_symbol.png">
</div>
display: block
,则默认为 display: inline
,根据 http://www.w3schools.com/cssref/pr_class_display.asp。为什么我们需要使用块?我用它可以工作,但不确定为什么块会居中 img 而行内不会。 - user3731622<div style="display:table-cell; vertical-align:middle; text-align:center">
<img src="img.png">
</div>
STATIC SIZE
.parent {
display: flex;
height: 300px; /* Or whatever */
background-color: #000;
}
.child {
width: 100px; /* Or whatever */
height: 100px; /* Or whatever */
margin: auto; /* Magic! */
}
<div class="parent">
<img class="child" src="https://i.vimeocdn.com/portrait/58832_300x300"/>
</div>
DYNAMIC SIZE
html, body {
width: 100%;
height: 100%;
display: flex;
background-color: #999;
}
* {
margin: 0;
padding: 0;
}
.parent {
margin: auto;
background-color: #000;
display: flex;
height: 80%;
width: 80%;
}
.child {
margin: auto; /* Magic! */
max-width: 100%;
max-height: 100%;
}
<div class="parent">
<img class="child" src="https://i.vimeocdn.com/portrait/58832_300x300"/>
</div>
我在这篇文章中找到了一个例子,它很好地解释了如何使用布局。
在我看来,您还希望将该图像垂直居中于容器中。(我没有看到任何提供此功能的答案)
HTML
<div id="over">
<span class="Centerer"></span>
<img class="Centered" src="http://th07.deviantart.net/fs71/200H/f/2013/236/d/b/bw_avlonas_a5_beach_isles_wallpaper_image_by_lemnosexplorer-d6jh3i7.jpg" />
</div>
CSS
*
{
padding: 0;
margin: 0;
}
#over
{
position:absolute;
width:100%;
height:100%;
text-align: center; /*handles the horizontal centering*/
}
/*handles the vertical centering*/
.Centerer
{
display: inline-block;
height: 100%;
vertical-align: middle;
}
.Centered
{
display: inline-block;
vertical-align: middle;
}
注意:这个解决方案适用于将任何元素对齐到任何元素。对于IE7,在块级元素上应用.Centered
类时,您将需要使用另一个技巧来使inline-block
生效。(这是因为IE6 / IE7在块级元素上使用inline-block时不太兼容)
#over { position:absolute; width:100%; height:100%;
是什么意思? - Rodrigo您可以轻松地使用 display:flex
CSS属性来完成此操作:
#over {
height: 100%;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
}
#over {position:relative; text-align:center;
width:100%; height:100%; background:#CCC;}
#over img{
position: absolute;
margin: auto;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
我对其他解决方案仍然有一些问题。最终,这个对我来说效果最好:
<div class="parent">
<img class="child" src="image.png"/>
</div>
CSS3:
.child {
display: block;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%); /* Safari and Chrome */
-moz-transform: translate(-50%, -50%); /* Firefox */
-ms-transform: translate(-50%, -50%); /* IE 9 */
-o-transform: translate(-50%, -50%); /* Opera */
// I suppose you may like those too:
// max-width: 80%;
// max-height: 80%;
}
你可以在这个页面阅读更多关于该方法的信息。
Daaawx的回答是可行的,但我认为如果我们消除内联CSS,它会更干净。
body {
margin: 0;
}
#over img {
margin-left: auto;
margin-right: auto;
display: block;
}
div.example {
position: absolute;
width: 100%;
height: 100%;
}
<div class="example" id="over">
<img src="http://www.garcard.com/images/garcard_symbol.png">
</div>
基本上,将右和左边距设置为自动会使图像居中对齐。
<div id="over" style="position:absolute; width:100%; height:100%>
<img src="img.png" style="display: block; margin: 0 auto;">
</div>