object-fit

CSS

object-fit 这个 CSS 样式,是针对可替换元素(replaced element)设计的。一般来说,常见的可替换元素包含图片(img)或是视频(video)。这些可替换元素的大小是事先不确定的,在实际展示的时候,需要一定的规则来决定元素实际如何被放置到元素框中去。

以下是几种 object-fit 的值及对应的显示效果(每种类型显示两个图片,第一张图片的原始尺寸大于元素显示的尺寸,第二张图片的原始尺寸小于元素显示的尺寸):

fill

big image

small image

  • 宽高比例:不保持
  • 显示范围:占满元素
  • 可能影响:显示结果宽高比失真;显示结果比原始尺寸大

contain

big image

small image

  • 宽高比例:保持
  • 显示范围:至少一轴占满,整体(另一轴)不超过元素
  • 可能影响:出现黑边(letterboxed);显示结果比原始尺寸大

cover

big image

small image

  • 宽高比例:保持
  • 显示范围:至少一轴占满,整体(另一轴)可以超过元素
  • 可能影响:超出显示范围;显示结果比原始尺寸大

none

big image

small image

  • 宽高比例:保持
  • 显示范围:原始尺寸
  • 可能影响:超出显示范围

scale-down

big image

small image

使用 none 或者 contain 的规则进行显示。具体选择哪个规则,要看两个规则生成的最终效果,哪一个更小。换句话说,如果元素的原始尺寸两轴都小于元素的显示范围,就使用 none 进行显示,显示结果是原始元素的原始尺寸;否则就是用 contain 的方式进行显示,用黑边的方式将元素压缩到显示范围内完整显示。