Libiros
@Libiros
Frontend developer

Как реализовать спрайт на чистом CSS?

Условие:
Есть 20 картинок размером 128х128. Все они реализованы одним спрайтом.

Задача:
Вывести 20 div с background: url('url_of_my_sprite'), но менять им только background-position.

Решать с помощью nth-child не очень хочется. Потому что картинок может быть и 40. Хочется написать что-то вроде цикла, который увеличит мне background-position на 128px за каждую итерацию.
Прибегать к JS тоже не хочу из соображений производительности.

Если решить это чистым CSS невозможно, то есть такая вот мысль:
Так как сайт на PHP, то я могу взять картинку, посчитать ее длину и разделить на 128. Получится количество тегов div, в каждом написать атрибут style="background-position: $i*128."px", например. Нормальный ли костыль? Как он в плане производительности?
  • Вопрос задан
  • 333 просмотра
Решения вопроса 1
Костыль нормальный. В плане производительности будет работать хорошо.
Кстати, и на JS будет работать хорошо. Если причина в отказе от JS только производительность - не стоит. Эта задача на JS выполнится очень быстро
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы