html - 如何使用 CSS 将图像调整为自身的百分比?

标签 html css image

我正在尝试根据自身的百分比调整图像的大小。例如,我只想通过将图像大小调整为 50% 来将图像缩小一半。但是申请 width: 50%;会将图像调整为容器元素的 50%(父元素,例如 <body>)。

问题是,我可以在不使用 JavaScript 或服务器端的情况下根据自身的百分比调整图像大小吗? (我没有图像大小的直接信息)

我很确定你不能这样做,但我只是想看看是否有仅智能 CSS 的解决方案。谢谢!

最佳答案

我有两种方法给你。

方法一

此方法仅调整图像的视觉尺寸而不是 DOM 中的实际尺寸,并且调整尺寸后的视觉状态在原始尺寸的中间居中。

img {
  transform: scale(0.5);
}
<img src="https://via.placeholder.com/300x200" />

浏览器支持说明: 浏览器统计信息显示在 css 中。

方法二。

#wrap {
  overflow: hidden;
  position: relative;
  float: left;
}

#wrap img.fake {
  float: left;
  visibility: hidden;
  width: auto;
}

#img_wrap {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
}

#img_wrap img.normal {
  width: 50%;
}
<div id="wrap">
  <img class="fake" src="https://via.placeholder.com/300x200" />
  
  <div id="img_wrap">
    <img class="normal" src="https://via.placeholder.com/300x200/cccccc" />
  </div>
</div>

注意:img.normalimg.fake是同一张图片。
浏览器支持说明:此方法适用于所有浏览器,因为所有浏览器都支持方法中使用的 css 属性。

该方法以这种方式工作:

  1. #wrap#wrap img.fake 有流
  2. #wrapoverflow: hidden 因此它的尺寸与内部图像相同 (img.fake)
  3. img.fake#wrap 中唯一没有 absolute 定位的元素,因此它不会破坏第二步
  4. #img_wrap#wrap 内有 absolute 定位,并在尺寸上扩展到整个元素(#wrap )
  5. 第四步的结果是#img_wrap和图片有相同的尺寸。
  6. 通过在 img.normal 上设置 width: 50%,它的大小是 #img_wrap50% ,因此是原始图像大小的 50%

关于html - 如何使用 CSS 将图像调整为自身的百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8397049/

相关文章:

html - 将 TD 扩展到最大可用宽度

ImageMagick - 像其他照片管理应用程序一样自动调整图像的颜色?

java - 从电影中原始提取帧

javascript - 溢出-x : scroll and overflow-y: visible alternative

html - Div 位置内联 block

c++ - OpenCV 相当于 MATLAB 中的阈值

javascript - 选择测验数量后显示测验

javascript - 在 HTML5 中将图像数组显示到 Canvas 的最佳方式?

php - 如何忽略来自 WordPress 插件样式表的特定 CSS 代码?

javascript - contentEditable div 即时替换 innerHTML