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

如何将Sprite背景图适配到容器内且不扩大容器尺寸?

Sprite图适配父容器的解决方案

我有一张包含两张图片的Sprite图,但其尺寸始终大于父容器。希望将该Sprite背景图适配到父容器中,且不增大父容器的尺寸,该如何实现?

父容器(红色边框)中的Sprite图效果

原始代码

HTML

<body>
<div><span class="affiliate-sprite-60"></span></div>
<div><span class="affiliate-sprite-40"></span></div>
</body>

CSS

.affiliate-sprite-60
{
background:url('affiliate-sprite.jpg') 0px -1px;
width:799px;height:440px;
display:inline-block;
}

.affiliate-sprite-40
{
background:url('affiliate-sprite.jpg') -799px -0px;
width:783px;height:441px;
display:inline-block;
}
div {
width: 600px;
border: 2px solid red;
}

原始Sprite图:
原始Sprite图

解决方法

核心思路是让Sprite图的目标区域适配父容器尺寸,同时保持原图比例,通过调整CSS的background-size、background-position和元素尺寸实现:

修改后的CSS代码:

div {
  width: 600px;
  border: 2px solid red;
}

.affiliate-sprite-60, .affiliate-sprite-40 {
  display: block;
  width: 100%; /* 占满父容器宽度 */
  background-image: url('affiliate-sprite.jpg');
  background-repeat: no-repeat;
}

.affiliate-sprite-60 {
  /* 保持原始图799x440的宽高比 */
  aspect-ratio: 799/440;
  /* 总Sprite宽度为799+783=1582px,缩放至当前元素宽度的1.98倍,确保目标区域填满容器 */
  background-size: 198% auto;
  /* 定位到Sprite中第一个图的位置 */
  background-position: 0 0;
}

.affiliate-sprite-40 {
  /* 保持原始图783x441的宽高比 */
  aspect-ratio: 783/441;
  /* 总Sprite宽度1582px,缩放至当前元素宽度的2.02倍 */
  background-size: 202% auto;
  /* 向左偏移100%,定位到Sprite中第二个图的位置 */
  background-position: -100% 0;
}

关键说明

  • width:100%让元素占满父容器宽度,aspect-ratio确保元素高度和原始Sprite图区域的宽高比一致,避免拉伸变形
  • background-size按总Sprite宽度与目标区域宽度的比例设置,保证目标区域正好填满元素
  • background-position用百分比定位,精准显示Sprite中对应的图片区域

内容的提问来源于stack exchange,提问作者Amin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 13:16:18