使用 CSS 从精灵调整图像大小

pim*_*eys 5 css

我有一个大小为 32x32px 的各种图标的 CSS 精灵。

现在我需要以 20x20px 大小显示这些图标之一。我尝试了一些方法,例如将大小设置为 20px、使用 background-size:cover 或使用 transform:scale(0.625) - 但我的尝试都没有给出我想要的结果。

我的测试的 HTML:

32px icons:

<div class="sprite" style="background-position:0px 32px;">&nbsp;</div>
<div class="sprite" style="background-position:64px 32px;">&nbsp;</div>
<div class="sprite" style="background-position:32px 96px;">&nbsp;</div>
<div class="sprite" style="background-position:0px 0px;">&nbsp;</div>
<div class="sprite" style="background-position:32px 64px;">&nbsp;</div>

<hr>
20px icons (attempts):

<div class="sprite" style="background-position:32px 64px; width:20px; height:20px;">&nbsp;</div>
<div class="sprite" style="background-position:32px 64px; width:20px; height:20px; background-size:cover;">&nbsp;</div>
<div class="sprite" style="background-position:32px 64px; width:20px; height:20px; transform:scale(0.625);">&nbsp;</div>
Run Code Online (Sandbox Code Playgroud)

我的测试的 CSS:

.sprite {
  background-image:url(http://buildnewgames.com/assets/article//dom-sprites/spritesheet.png);
  width:32px;
  height:32px;
}
Run Code Online (Sandbox Code Playgroud)

请看一下这个小提琴,看看我尝试了什么:

https://jsfiddle.net/dfqh0yrc/4/

Seb*_*sch 4

您只能使用scalewithoutwidth和 ,height如下所示:

.sprite {
  background:url(http://buildnewgames.com/assets/article//dom-sprites/spritesheet.png);
  width:32px;
  height:32px;
}
Run Code Online (Sandbox Code Playgroud)
32px icons:
<div class="sprite" style="background-position:0px 32px;">&nbsp;</div>
<div class="sprite" style="background-position:64px 32px;">&nbsp;</div>
<div class="sprite" style="background-position:32px 96px;">&nbsp;</div>
<div class="sprite" style="background-position:0px 0px;">&nbsp;</div>
<div class="sprite" style="background-position:32px 64px;">&nbsp;</div>
<hr>
20px icons (attempts):
<div class="sprite" style="background-position:32px 64px; transform:scale(0.625);">&nbsp;</div>
<div class="sprite" style="background-position:32px 64px; transform:scale(calc(20 / 32));">&nbsp;</div>
Run Code Online (Sandbox Code Playgroud)

您还可以使用calc以下方法计算比例因子:

<div class="sprite" style="background-position:32px 64px; transform:scale(calc(20 / 32));">&nbsp;</div>
Run Code Online (Sandbox Code Playgroud)

JSFiddle 上的演示: https ://jsfiddle.net/dfqh0yrc/5/