第一步是规划精灵图。
我将设置2种类型。那将是 type1 和 type2 类,并且是水平的。我将设置 4 个方向,这将是垂直的。如果精灵的大小为 32,则 type2 的水平偏移量为 32,方向的偏移量为 32、64 和 96。
接下来是颜色。在这里,我需要做一些数学运算。可以用 CSS 吗?不,是的。如果我将一个元素放在另一个元素中,left 属性是累积的。因此,我们将需要另一个元素,并使用 left 和 tops:
.type1 { position: relative;}
.type2 { left: -32px; position: relative;}
.dir1 { }
.dir2 { top: -32px}
.dir3 { top: -64px}
.dir4 { top: -96px}
.color2 img { left: -64px}
标记是
<div class="clip solution">
<div class="type2 dir4 color2 reflecty damagey">
<img src="./SpritewithImages.png">
</div>
</div>
颜色类应该与图像一起使用,但是在 2 个不同的地方有类会是一个问题,所以我将 CSS 规则设置为与父亲中的选择器一起使用。颜色类别将以 64 像素为增量,因为我们有 2 种类型。如果我们有更多,那将相应增加现在我们还剩下 2 个维度。为了适应这一点,我们需要另一层 div。为了避免这种情况,我们在一维中打包 2 个决策。反射是,损坏是,以及两者(无需指定无损坏或无反射)。复合选择器:
.reflecty img { top: -128px}
.damagey img { top: -256px}
.reflecty.damagey img { top: -384px}
仅此而已!当然,目标可能不是在 sprite 中做所有事情。然后可能你可以玩转旋转,激光的东西可以进入一个透明层过度施加。
那是小提琴
在进入最后一个之前,您将看到选择的中间精灵的显示
已编辑
我在小提琴按钮中包含了切换状态。您可以在右侧看到带有精灵的网格。这些列旨在:
1 - figure 1, color 1
2 - figure 2, color 1
- separator
3 - figure 1, color 2
4 - figure 2, color 2
列是
1 - direction 1
2 - direction 2
4 - direction 4
- separator
5 - reflection, direction 1
8 - reflectio , direction 4
- separator
9 - damaged, direction 1
12 - damaged, direction 4
- separator
13 reflection, damaged, direction 1
更新的小提琴在这里