30秒学会 CSS 片段 · 2023年12月31日

30秒学会 CSS 片段 – Aspect ratio

Creates a responsive container with a specified aspect ratio.

  • Use a CSS custom property, --aspect-ratio to define the desired aspect ratio.
  • Set the container element to position: relative and height: 0, calculating its height using the calc() function and the --aspect-ratio custom property.
  • Set the direct child of the container element to position: absolute and filling it parent, while giving it object-fit: cover to maintain the aspect ratio.

预览



HTML

<div class="container">
  <img src="https://picsum.photos/id/119/800/450" />
</div>

CSS

.container {
  --aspect-ratio: 16/9;
  position: relative;
  height: 0;
  padding-bottom: calc(100% / (var(--aspect-ratio)));
}

.container > * {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

翻译自:https://www.30secondsofcode.org/css/s/aspect-ratio