You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用object-fit:cover实现图片居中裁剪填充200x200px div容器

问题说明

试过各类推荐实现方案,需求看似简单但始终达不到预期:现有一张非正方形图片,需要放入尺寸为200x200px的父级div容器,要求不改变图片原有宽高比,居中裁剪图片超出容器的部分,最终实现图中盘子居中显示的效果。

原有未达预期的代码

HTML部分

<div class="container">
  <img src="https://storage.googleapis.com/frese-product-images/25.jpg">
</div>

CSS部分

.container {
    width: 200px;
    height: 200px;
    overflow: hidden;
    justify-content: center;
    align-items: center;
    text-align: center;
}

.container > img {
    width: 200px;
    object-fit: cover;
    object-position: center center;
}
失效原因
  • 父容器.container未声明display: flex,写入的justify-content: center、align-items: center是Flex布局专属属性,未触发Flex布局时这两个属性不生效
  • 图片固定设置width: 200px,未设置高度适配规则,竖图状态下宽度撑满容器时高度溢出,默认顶部对齐导致核心内容(盘子)偏下,无法居中
修复代码

方案1:保留img标签的Flex实现(兼容原有代码逻辑)

.container {
    width: 200px;
    height: 200px;
    overflow: hidden;
    /* 补充flex布局触发声明 */
    display: flex;
    justify-content: center;
    align-items: center;
}

.container > img {
    /* 宽高铺满容器,由object-fit控制比例和裁剪规则 */
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

方案2:背景图实现(代码更简洁)

如果不需要保留img标签的DOM结构,直接用背景图实现逻辑更短:

<div class="container"></div>
.container {
    width: 200px;
    height: 200px;
    background: url(https://storage.googleapis.com/frese-product-images/25.jpg) center/cover no-repeat;
}

两种方案都能保证图片不变形,自动裁剪超出容器的部分,核心内容居中显示。

内容的提问来源于stack exchange,提问作者Carter Joe Sherman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 22:36:20