如果图像的宽度比其容器更宽,我该如何居中放置图像?
通常情况下,您将图像置于display: block; margin: auto
display: block; margin: auto
,但如果图像大于容器,则会溢出到右侧。 我如何让它平等地溢出到双方? 容器的宽度是固定的并且是已知的。 图像的宽度未知。
HTML
<div class="image-container">
<img src="http://www.google.com/images/logo.gif" height="100" />
</div>
CSS
.image-container {
width: 150px;
border: solid 1px red;
margin:100px;
}
.image-container img {
border: solid 1px green;
}
jQuery的
$(".image-container>img").each(function(i, img) {
$(img).css({
position: "relative",
left: ($(img).parent().width() - $(img).width()) / 2
});
});
在jsFiddle上查看:http://jsfiddle.net/4eYX9/30/
一个纯粹的CSS解决方案
需要一个额外的包装(在FireFox,IE8,IE7中测试):
改进的答案
原始答案有问题(如下)。 如果图像大于outer
以其自动边距为中心的容器,则会在该提琴显示时截断左侧的图像并在右侧创建多余的空间。
我们可以通过浮动inner
权利然后集中权利来解决这个问题。 这仍然会截断页面左侧的img
,但是它通过明确地按下它来实现,然后居中放置,这样做的组合就是阻止右侧多余的水平滚动。 现在我们只需要获得尽可能多的右侧滚动条,以便看到图像的正确部分。
小提琴示例(小提琴中的边框仅用于演示。)
基本的CSS
div.outer {
width: 300px; /* some width amount needed */
margin: 0 auto;
overflow: visible;
}
div.inner {
position:relative;
float: right; /* this was added and display removed */
right: 50%;
}
div.inner img {
position: relative;
right:-50%; /* this was changed from "left" in original */
}
如果你不希望滚动广角图像
然后使用上面的内容,也可以设置任何元素包装outer
(如body
或第三个包装)以使其overflow: hidden
。
原创理念(历史)
小提琴示例(小提琴中的边框仅用于演示。)
HTML
<div class="outer">
<div class="inner">
<img src="/yourimage.png">
</div>
</div>
CSS
div.outer {
width: 300px; /* some width amount needed */
margin: 0 auto;
overflow: visible;
}
div.inner {
display: inline-block;
position:relative;
right: -50%;
}
div.inner img {
position: relative;
left:-50%;
}
这是一个2行CSS解决方案(跨浏览器支持可能需要多行):
img {
margin-left: 50%;
transform: translateX(-50%);
}
链接地址: http://www.djcxy.com/p/89231.html
上一篇: How do I center an image if it's wider than its container?