在宽度百分比,高度不确定的情况下,如何保证图片正方形展示

方法一:

.square-container {
  width: 20%;
  aspect-ratio: 1 / 1; /* 宽高比 1:1,自动设置高度等于宽度 */
  overflow: hidden; /* 可选:裁剪溢出 */
}

.square-container img {
  width: 100%;
  height: 100%;
  object-fit: cover; /* 保持比例填充,可选 */
}
<div class="square-container">
  <img src="your-image.jpg" alt="正方形图片">
</div>

方法二:

.square-container {
  width: 20%;
  position: relative;
  padding-top: 100%; /* 高度 = 宽度,形成正方形 */
  overflow: hidden;
}

.square-container img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
<div class="square-container">
  <img src="your-image.jpg" alt="正方形图片">
</div>

方法一现代浏览器支持,但对于一些老版本浏览器可能不支持,方法二兼容老版本。

疑问:

为什么padding-top: 100%; 就能让宽高一致呢?

CSS 规范规定:

padding 的百分比值,是相对于其父元素的 width(宽度)来计算的,而不是高度。

,