响应式图像全屏和居中 - 保持纵横比,不超过窗口

san*_*zer 29 css css3 responsive-design

所以我希望img显示一个

  • 尽可能大(当它是风景时填充宽度/纵向时是高度)
  • 没有作物
  • 没有歪斜或拉伸(原始宽高比)
  • 垂直和水平居中

此外,图像的原始大小未知.

我已经尝试了很多不同的选项,包括一个flexbox(获得垂直中心),但似乎没有任何东西勾选所有框.

理想情况下,我当然希望这是一个全CSS解决方案,但我也在研究一些JS.

谢谢

Ita*_*tay 72

jsFiddle Demo

要使其居中,您可以使用此处显示的技术:绝对居中.

为了使它尽可能大,给它max-widthmax-height100%.

.className {
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    max-width: 100%;
    max-height: 100%;
    margin: auto;
    overflow: auto;
}
Run Code Online (Sandbox Code Playgroud)

  • 如果你想让一个较小的图像伸展到容器的边框,也可以添加`zoom:10`(10应该足够了). (7认同)
  • 如果图像比屏幕小,则不会拉伸到屏幕尺寸.我能做些什么来实现这一目标? (3认同)
  • @Pandaiolo:缩放是无稽之谈,它不是有效的 css 属性。它不起作用(在FF中)。 (2认同)
  • `max-height` 和 `max-width` 不会增加图像的尺寸。如果您的图像很小,它们将保持很小。OP 要求图像能够缩放以填充视口。 (2认同)

dcr*_*cro 5

您可以改用div带有背景图片的CSS3属性:

background-size: contain

您可以查看以下示例:

https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Scaling_background_images#contain

引用Mozilla:

包含值指定不管容纳盒的大小如何,背景图像都应缩放,以使每一侧尽可能大,同时不超过容器相应侧的长度。

但是,请记住,如果div图像大于原始图像,则图像将被放大。