这可能是一个愚蠢的问题,但由于通常的中心对齐图像的方式不起作用,我想我会问。 如何在容器div内居中(水平)对齐图像?
这是HTML和CSS。 我还包括了缩略图的其他元素的CSS。 它按降序运行,所以最高的元素是所有东西的容器,最低的元素是所有东西的内部。
null
#thumbnailwrapper {
color: #2A2A2A;
margin-right: 5px;
border-radius: 0.2em;
margin-bottom: 5px;
background-color: #E9F7FE;
padding: 5px;
border: thin solid #DADADA;
font-size: 15px
}
#artiststhumbnail {
width: 120px;
height: 108px;
overflow: hidden;
border: thin solid #DADADA;
background-color: white;
}
#artiststhumbnail:hover {
left: 50px
}
<!--link here-->
<a href="NotByDesign">
<div id="thumbnailwrapper">
<a href="NotByDesign">
<!--name here-->
<b>Not By Design</b>
<br>
<div id="artiststhumbnail">
<a href="NotByDesign">
<!--image here-->
<img src="../files/noprofile.jpg" height="100%" alt="Not By Design" border="1" />
</a>
</div>
<div id="genre">Punk</div>
</div>
null
好的,我在没有PHP的情况下添加了标记,所以应该更容易看到。 这两种解决方案在实践中似乎都行不通。 顶部和底部的文本不能居中,图像应在其容器div内居中。 容器有溢出隐藏,所以我想看到图像的中心,因为那通常是焦点所在。
CSS的家伙建议如下:
所以,翻译过来,也许是:
#artiststhumbnail a img {
display:block;
margin:auto;
}
下面是我的解决方案:http://jsfiddle.net/marvo/3k3cc/2//
CSSFlexBox可以通过图像父元素上的justify-content:center
来实现。 若要保留图像的纵横比,请向其添加align-self:flex-start;
。
HTML
<div class="image-container">
<img src="http://placehold.it/100x100" />
</div>
CSS
.image-container {
display: flex;
justify-content: center;
}
输出:
null
body {
background: lightgray;
}
.image-container {
width: 200px;
display: flex;
justify-content: center;
margin: 10px;
padding: 10px;
/* Material design properties */
background: #fff;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
}
.image-2 {
width: 500px;
align-self: flex-start; /* to preserve image aspect ratio */
}
.image-3 {
width: 300px;
align-self: flex-start; /* to preserve image aspect ratio */
}
<div class="image-container">
<img src="http://placehold.it/100x100" />
</div>
<div class="image-container image-2">
<img src="http://placehold.it/100x100/333" />
</div>
<div class="image-container image-3">
<img src="http://placehold.it/100x100/666" />
</div>
我刚刚在下面的W3 CSS页面上找到了这个解决方案,它回答了我的问题。
img {
display: block;
margin-left: auto;
margin-right: auto;
}
资料来源:http://www.w3.org/style/examples/007/center.en.html