У меня есть спрайт из 62 изображений 91 * 91px, что делает все это 91 * 5642 px. Они отображаются в виде динамической сетки, которая растет и сжимается в зависимости от движения пользователя/указателя. Иногда элемент (std 91 * 91 px) масштабируется, чтобы сделать его 120 * 120 px. Очевидно, что я хочу, чтобы фон увеличивался с тем, чтобы весь образ 91 * 91 px отображался во всем элементе 120 * 120.
Введите background-size: 100% auto
, чтобы ширина всегда была идеальной. Проблема в том, что background-position
ожидает, что ее значения будут также обновлены! Все 62 элемента имеют встроенный style=background-position etc
. Я не могу обновить положение фона из строки. Я хочу, чтобы фон был первым, а затем изменил размер (масштабирование), а не изменил размер, а затем положение (приблизить к неправильному положению).
Я не уверен, что у меня есть смысл. Чтобы прояснить несколько:
- Все элементы имеют стиль
width: 91px; height: 91px; background-size: 100% auto;
. - Второе изображение имеет встроенный стиль
background-position: 0 -91px
. - Когда вы наведете этот элемент, он получит стиль
width: 120px; height: 120px;
, а затем отобразит большую часть второго изображения и некоторую часть 1-го, потому что позиционирование происходит после изменения размера = ( - Если я изменил положение фона (после масштабирования/наведения) на
0 -120px
, он выравнивается правильно. (Но тогда, очевидно, это неправильно, когда не масштабирование/зависание.)
Очень простое решение - использовать фактические zoom: 1.3
или transform: scale(1.3)
, но это ОЧЕНЬ ОЧЕНЬ медленно с переходами.
Мне что-то не хватает. CSS должен быть умнее этого. Спрайт с размером фона... Это не невозможно!?
Как спрайт смотрит на меня, поэтому я мог бы сделать его сеткой 120 * 120 вместо 91 * 91, если бы это было проще...
EDIT: Пример скрипта: http://jsfiddle.net/rudiedirkx/g4RQx/
Интеллектуальный ответ 1: background-position: 0 calc(100% / 61 * 2)
(61 из-за 62 изображений, 2 из-за третьего изображения)