html - 我如何水平和垂直居中页面上的图像,除非它太大而不适合?

标签 html css

我正在尝试使用 HTML 和 CSS 实现一个基本的图像查看器,其中图像在页面中保持居中,除非它太大而不适合。在这种情况下,用户应该能够无边距地滚动查看图像的其余部分。如果只有一个维度太大而不适合,则另一个维度保持居中。页面上除图像外没有其他内容。

但是,图像的大小需要通过比例因子来指定,以便我可以相对于其原始大小放大或缩小它。这意味着我不能使用以像素为单位的显式宽度/高度或相对于页面大小调整它的大小。我试过调整它的 transform css 属性,即 transform: scale(2.5) 但这通常会导致图像的顶部被切断。我也尝试过将图像的 display 属性设置为 inline-block 并将其 height 属性设置为 auto 这样我就可以将它的 width 设置为我希望它缩放的百分比,但是我不知道如何按照上一段中的描述让它在页面上居中。

我怎样才能做到这一点?到目前为止,我已经尝试了大约十几种不同的方法来使页面上的元素居中,但没有一种方法会导致我所追求的这种行为。例如,我使用 flexboxes 来保持图像水平和垂直居中,但是一旦它变得太高而无法容纳,(再次)图像的顶部就会被切断。

最佳答案

你可以使用 flexbox 和 center with margin 来获得这个:

body {
 min-height:100vh;
 margin:0;
 display:flex;
}
body > img {
 margin:auto;
}
<img src="https://picsum.photos/500/500?image=1069" >

如果你不想滚动应用max-height/max-width:

body {
 height:100vh;
 margin:0;
 display:flex;
}
body > img {
 margin:auto;
 max-width:100%;
 max-height:100%;
}
<img src="https://picsum.photos/500/500?image=1069" >

关于html - 我如何水平和垂直居中页面上的图像,除非它太大而不适合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50574397/

相关文章:

javascript - 如何使用 javascript 获取 HTML 文本节点的位置和大小?

html - Chrome Text Flickr 使用 Css 旋转。 'backface-visibility' 让事情变得更糟

javascript - 将 ajax 函数转换为 jquery

html - Bootstrap 等列高度

html - XSLT - 如何循环遍历 XML 重复/重复节点并获得第一次出现

ruby-on-rails - Rails View : creating a menu

javascript - 如何自定义插入符号?

android - 在移动/触摸设备上捕获文本选择事件

javascript - 如何制作一个在小屏幕上可切换但在大屏幕上始终可见的元素

html - CSS如何实现多重背景+渐变?