【发布时间】:2015-10-22 02:09:38
【问题描述】:
Stack Overflow 似乎充满了类似的问题,但我还没有为我的用例找到令人满意的答案。基本上,我的首页顶部需要一个响应式的全屏背景图像。意味着,缩小视口会导致裁剪,而不是拉伸;图像应该居中。我想避免使用 JS。
Aaron 创建了一个fiddle,几乎看起来就像我正在寻找的东西。两个问题:
- 缩小视口时的奇怪行为(宽度低于 500 像素)
position: fixed;
我能够为容器复制solution of Bryce Hanscomb and Gabriela Gabriel(请参阅my fiddle):
但我未能将其扩展到全屏。这是我的代码(见fiddle):
HTML:
<div id="background">
<img src="//dummyimage.com/600x200/0099cc/fff.png" />
</div>
CSS:
div#background {
background-color: orange;
min-height: 100%;
min-width: 100%;
overflow: hidden;
position: absolute;
top: 0;
z-index: -1;
}
img {
left: 50%;
position: relative;
transform: translate(-50%, 0);
min-height: 100%;
min-width: 100%;
}
问题 #1: 图片未占据其父 div 的全部高度(min-height 设置为 100%)。
问题#2 + #3:在狭窄的视口中,图像在右侧被截断(未居中),并显示水平滚动条。
作为旁注,有人可以告诉我where those 4 pixels come from吗?
【问题讨论】:
-
我只是想了解更多信息:您希望图像占据背景容器的整个高度和宽度? (在你的小提琴中,这是 100% 的高和宽)如果是这样,请在你的图像上尝试
position:absolute,它将保持居中并填充背景容器 -
另外,您对使用 CSS
background-image而不是实际的<img>image 有任何问题吗? -
是的,为什么你只使用背景 - 包含?
-
我和@ntgCleaner 有相同的想法/问题,这可能更容易作为css中的背景图像来实现,因为背景图像属性具有非常好的“姐妹属性”,例如背景-大小和背景位置。 Background-size 允许您使用非常有用的值,例如 'cover' 和 'contain'。此外, background-position 允许您使用值 'center center' 将其定位在容器的中间。如果这是一个可行的选择,请告诉我,我会提供更详细的解决方案。
-
伙计,真不敢相信事情就这么简单。 img 上的
position: absolute实际上起到了作用。 I updated the fiddle.在这么简单的事情上花了这么多时间之后,我希望它对其他人有用......@ntgCleaner,你发布一个我可以接受的答案怎么样?
标签: css image responsive-design