我有 62 张 91 * 91 像素的图像的精灵,这使得整个东西成为 91 * 5642 像素。它们以一种动态网格的形式显示,该网格根据用户/指针的移动而增长和缩小。有时,一个元素(标准 91 * 91 像素)会放大到 120 * 120 像素。显然,我希望背景随着整个 91 * 91 px 图像的增长而显示在整个 120 * 120 元素中。
输入background-size: 100% auto
以使宽度始终完美。现在的问题是background-position
期望它的值也会更新!所有 62 个元素都有 inline style=background-position etc
。我无法从内联更新背景位置。我希望背景到第一个位置然后调整大小(缩放),而不是调整大小然后定位(缩放到错误的位置)。
我不确定我是否有任何意义。稍微澄清一下:
- 所有元素的样式都是
width: 91px; height: 91px; background-size: 100% auto;
. - 第二张图片的内联样式为
background-position: 0 -91px
. - 当您悬停该元素时,它会获得一种样式
width: 120px; height: 120px;
,然后显示第二张图像的大部分和第一张图像的某些部分,因为在调整大小后发生定位 =( - 如果我将背景位置(缩放/悬停后)更改为
0 -120px
,它会正确对齐。(但显然在不缩放/悬停时这是错误的。)
一个非常简单的解决方案是使用实际的zoom: 1.3
or transform: scale(1.3)
,但是过渡非常慢。
我肯定错过了什么。CSS 必须比这更聪明。具有背景大小的精灵......这不是不可能的吧!?
精灵的外观取决于我,所以我可以让它有一个 120 * 120 的网格而不是 91 * 91,如果这样更简单的话......
编辑:以小提琴为例:http: //jsfiddle.net/rudiedirkx/g4RQx/
聪明的答案 1: background-position: 0 calc(100% / 61 * 2)
(61 因为 62 图像,2 因为第 3 图像)