我有一个145px X 145px的div。我在这次潜水中有一个img。 img可以是任何尺寸(最长边为130px)。我希望图像在div中垂直居中。我尝试的一切都适用于大多数浏览器,但不适用于IE7。我需要能在IE7中运行的东西。
答案 0 :(得分:51)
这是一个跨浏览器的解决方案:
<div class="img-container"><img src="picture.png" class="cropped"/></div>
div.img-container {
width: 390px;
height: 211px;
position: relative;
margin-left: auto;
margin-right: auto;
overflow: hidden;
}
img.cropped {
position: absolute;
margin: auto;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
答案 1 :(得分:17)
您可以使用div中的背景替换图像,如下所示:
<div style="background:url(myimage.jpg) no-repeat center center"></div>
答案 2 :(得分:5)
不确定IE7,但IE9和其他现代浏览器的工作方式不确定。
.picturecontainer{
width:800px;
height:800px;
border:solid 1px;
display:table-cell;
vertical-align:middle;
}
.horizontalcenter{
display:block;
margin-left:auto;
margin-right:auto;
vertical-align:middle;
}
使用它
<div class="picturecontainer"><img src="" class="horizontalcenter"/></div>
这会将图像置于死点。
答案 3 :(得分:4)
不确定到目前为止您尝试了什么,但如果图像显示为内联元素,则 vertical-align CSS属性应该有效。
有关vertical-align的一些信息:http://www.w3schools.com/css/pr_pos_vertical-align.asp
如果必须考虑所有图像高度,这几乎是不使用JavaScript的唯一方法。
如果图像不是内联元素而您只需要容纳一致高度的图像,则可以执行以下操作:
img {
margin-top: -50px; /* This number should be half the height of your image */
position: absolute;
top: 50%;
}
否则我能想到容纳不同高度图像的唯一方法就是用你的CSS做类似的事情,但用JS将负边距设置为图像高度的一半。
答案 4 :(得分:4)
使用line-height
属性解决了我的问题。
参考:vertical-align image in div
<强> HTML:强>
<div class="img_thumb">
<a class="images_class" href="large.jpg" rel="images"><img src="http://www.minfo.pt/fotos/_cache/produtos/0/068.M.976010002__thumbnail_50_50_true_sharpen_1_1.JPG" title="img_title" alt="img_alt" /></a>
</div>
CSS:
.img_thumb {
float: left;
height: 120px;
margin-bottom: 5px;
margin-left: 9px;
position: relative;
width: 147px;
background-color: rgba(0, 0, 0, 0.5);
border-radius: 3px;
line-height:120px;
text-align:center;
}
.img_thumb img {
vertical-align: middle;
}
答案 5 :(得分:1)
我创建了一个小jQuery代码来执行此操作,而不必使用讨厌的表:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js">
imagepos = function () {
$('img').each(function () {
imgheight = Math.round($(this).height() / 2);
imgwidth = Math.round($(this).width() / 2);
$(this).attr("style", "margin-top: -" + imgheight + "px; margin-left: -" + imgwidth + "px; opacity:1;");
});
}
$(window).load(imagepos);
</script>
你还需要一点css:
div
{
position:relative;
}
img
{
display:block;
margin:auto;
max-width:100%;
position:absolute;
top:50%;
left:50%;
opacity:0;
}