You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自适应缩放图片直至宽度或高度占满页面100%?

任意比例图片适配视口解决方案

你需要的是保持图片原始宽高比,缩放时优先让先触及视口边界的边占满100%,完整保留图片内容的适配效果,对应CSS标准属性object-fit的contain属性值;如果需要完全铺满视口不留空白、允许裁剪图片超出部分,可替换为cover属性值。


方案1:纯CSS实现(推荐)

现代浏览器原生支持,无额外逻辑,性能最优:

/* 全局重置(如果你的图片直接放在body下) */
body {
  margin: 0;
  width: 100vw;
  height: 100vh;
  overflow: hidden; /* 裁剪超出视口的内容,不需要可以去掉 */
}

/* 目标image元素样式 */
.target-img {
  width: 100%;
  height: 100%;
  object-fit: contain; /* 完整显示图片,至少有一个边占满视口,符合你的核心需求 */
  /* object-fit: cover;  铺满视口不留空白,超出部分裁剪,适合背景类场景 */
  object-position: center; /* 可选,控制图片对齐位置,默认居中 */
}

该方案兼容除IE11外的所有主流浏览器,覆盖99%以上的用户场景。


方案2:JS兼容实现(适配老旧浏览器)

如果需要兼容不支持object-fit的旧版浏览器,可通过JS动态计算适配规则:

const targetImg = document.querySelector('.target-img')
// 封装适配逻辑
function adjustImgSize() {
  // 获取图片原始宽高
  const naturalW = targetImg.naturalWidth
  const naturalH = targetImg.naturalHeight
  const imgRatio = naturalW / naturalH
  // 获取视口宽高
  const viewportW = window.innerWidth
  const viewportH = window.innerHeight
  const viewportRatio = viewportW / viewportH

  if (imgRatio > viewportRatio) {
    // 图片宽高比大于视口,说明图片更宽,按高度撑满适配
    targetImg.style.height = '100vh'
    targetImg.style.width = 'auto'
  } else {
    // 图片宽高比小于等于视口,说明图片更高,按宽度撑满适配
    targetImg.style.width = '100vw'
    targetImg.style.height = 'auto'
  }
}
// 图片加载完成后执行适配
targetImg.onload = adjustImgSize
// 窗口大小变化时重新适配,可添加防抖优化性能
window.onresize = adjustImgSize

注意事项:必须在图片加载完成后再执行计算,否则无法获取正确的原始宽高值。


内容的提问来源于stack exchange,提问作者Maxim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:18:00