css 如何在不拉伸图像的情况下使垂直和水平居中?

How to make vertical and horizontal center without stretching image with css?

如果我使用css设置宽度和高度(宽度:100%;height:100%),图像会被拉伸,看起来很难看。 如何在不拉伸的情况下填充图像?另外,如何让纵横居中?

仅使用 HTML 和 CSS:

HTML

<div class="fill"></div>

CSS

.fill {
    overflow: hidden;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-size: cover;
    background-position: center;
    background-image: url('path/to/image.jpg');
}

使用

图片所有者致谢 图片来源:https://imgur.com/gallery/ow0qD

* {
  margin: 0;
}

.bg {
  width: 100%;
  height: 100vh;
}

.bg img {
  object-fit: cover;
  width: 100%;
  height: 100vh;
}
<body>
  <div class="bg"><img src="https://i.imgur.com/PLZJasi.jpg"></div>