
一、aspect-ratio 属性
基本概念 :
aspect-ratio 用于定义元素的宽高比(宽度与高度的比例关系),控制容器本身的尺寸比例。
语法:
easpect-ratio: auto | <ratio>;主要作用:
定义元素本身的宽高比例。
确保元素在响应式设计中保持固定比例。
适用于任何块级元素或行内块元素。
示例:
.video-container {
width: 100%;
aspect-ratio: 16/9;
background-color: #f0f0f0;
}二、object-fit 属性
基本概念:
object-fit 用于控制替换元素(如 img、video、iframe 等)的内容如何适应其容器的宽高比。
语法:
object-fit: fill | contain | cover | none | scale-down;主要值说明:
fill:拉伸内容以填充整个容器,可能会改变宽高比。
contain:保持内容的宽高比,缩放内容使其完全适应容器。
cover:保持内容的宽高比,缩放内容以完全覆盖容器,可能会裁剪内容。
none:保持内容原始大小,不进行缩放。
scale-down:比较 none 和 contain,选择显示较小的版本。
示例:
.image {
width: 300px;
height: 200px;
object-fit: cover;
}三、两者的区别

作用区别
spect-ratio控制元素盒子的宽高中比例,用来“定尺寸关系”。
object-fit控制替换元素内容如何在其盒子内部缩放/裁剪,用来“定内容呈现”。
适用范围
aspect-ratio适用于任意元素;有无内在比例都可用来推导另一维。
object-fit仅适用于替换元素,<img>, <video>, <canvas>;对普<div>无效。
交互逻辑
盒子尺寸:width/heightaspect-ratio 共同决定;至少一维 auto 时,比例可推导另一维。
内容呈现:在确定的盒子内 object-fit 决定内容是否保持比例、是否裁剪或拉伸。
内在比例:替换元素未设 aspect-ratio 时,浏览器用资源内在比例参与尺寸计算;设置后以CSS比例为准。
典型搭配
响应式封面图
.avatar { width: 48px; aspect-ratio: 1; }
.avatar > img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }正方形头像裁剪
.avatar { width: 48px; aspect-ratio: 1; }
.avatar > img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }图片防抖动占位
.slot { aspect-ratio: 4 / 3; }
.slot > img { width: 100%; height: 100%; object-fit: contain; }网格卡片统一比例
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.grid > .item { aspect-ratio: 3 / 4; }四、两者结合使用
media-container {
/* 定义容器宽高比 */
aspect-ratio: 16/9;
width: 100%;
overflow: hidden;
}
.media-container img,
.media-container video {
/* 确保内容填充容器并保持比例 */
width: 100%;
height: 100%;
object-fit: cover;
}五、实际应用场景
aspect-ratio 应用:
视频播放器容器
图片画廊网格布局
响应式卡片设计
object-fit 应用:
图片缩略图展示
头像显示
响应式图片库
六、与传统方法对比
传统方法(padding trick)
.traditional-ratio {
position: relative;
width: 100%;
padding-top: 56.25%; /* 16:9 = 9/16 = 56.25% */
}
.traditional-ratio > * {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}aspect-ratio 方法
.modern-ratio {
width: 100%;
aspect-ratio: 16/9;
}七、浏览器兼容性
aspect-ratio
查看:https://caniuse.com/?search=aspect-ratio
object-fit
查看:https://caniuse.com/?search=object-fit
八、常见误区
同时写width,height会 aspect-ratio 不生效;至少留一维auto或可推导。
object-fit不适用 <div> 背景图;背景应使background-size: cover/contain。
只aspect-ratio不会裁剪内容;需要裁剪时object-fit: cover并让内容充满盒子。
裁剪焦点需配object-position调整,object-position: center top。