使图像覆盖浏览器窗口的宽度和高度,并保持滚动条不被剪切

问题描述 投票:0回答:1

我想按比例缩放图像以覆盖浏览器窗口的宽度和高度,以便用户只需向一侧或向下滚动即可看到整个图像,而不管图像和浏览器的尺寸如何。我使用了最小宽度:100vw 和最小高度:100vh。只要浏览器窗口大于图像的像素尺寸,该代码就可以正常工作。如何使其适用于较大的图像?

画出我想要的东西

在整个页面中运行代码片段,并使浏览器窗口小于 600px 宽和 400px 高,以查看问题。

html {
 width: 100%;
 margin: 0;
}
.full-plus {
 width: calc(100vw - 20px);
 height: calc(100vh - 20px);
 background-color: red;
}
.full-plus img {
 min-width: calc(100vw - 40px);
 min-height: calc(100vh - 40px);
}
<html>
 <head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
 </head>
 <body>
  <div class="full-plus">
   <img src="https://www.w3schools.com/w3css/img_lights.jpg" alt="">
  </div>
 </body>
</html>

css
1个回答
0
投票

它需要处理不同长宽比的图像。

@AHaworth 是对的 - 你需要 JS 来检查纵横比。


工作示例:

const myDiv = document.querySelector('div.full-plus');

const resizeDiv = () => {
  if (window.innerWidth / window.innerHeight) {
    myDiv.style.setProperty('width', 'auto');
  } else {
    myDiv.style.setProperty('height', 'auto');
  }
}

window.addEventListener('resize', resizeDiv);

resizeDiv();
body {
 margin: 0;
}

div.full-plus {
  position: fixed;
  inset: 0;
  width: 100vmin;
  height: 100vmin;
  background-image: url('https://www.w3schools.com/w3css/img_lights.jpg');
  background-size: contain;
  background-repeat: no-repeat;
}
<div class="full-plus"></div>

© www.soinside.com 2019 - 2024. All rights reserved.