HTML, CSS, адаптивный: как использовать спрайт, содержащий изображения разных размеров?

На моем сайте мне нужны изображения разных размеров. Например:

  • Изображения A, B, C: 320 x 320 пикселей
  • Изображение D, E: 400 x 200 пикселей
  • Изображение F: 20 x 16 пикселей.

Я хочу сделать один спрайт для всех изображений. Я хочу сделать его отзывчивым, поэтому я использую проценты для определения его высоты и ширины. Все методы, которые я нашел в Интернете, имеют высоту жесткого кода и не упоминают, как сделать его отзывчивым.

Текущий используемый метод:

Я объединил изображения одинакового размера в один спрайт

  • Изображения A, B, C - sprite1.png
  • Изображения D, E - sprite2.png
  • Изображение F — без использования спрайтов

Я также создал прозрачные изображения (холдеры) для указанных выше размеров.

Причина, по которой я делаю это таким образом, заключается в том, что я понял, как заставить его работать и при этом оставаться отзывчивым:

<div class="type-1">
    <img src="transparent_img_320_320.png" class="image_a" />
    <img src="transparent_img_320_320.png" class="image_b" />
    <img src="transparent_img_320_320.png" class="image_c" />
</div>

<div class="type-2">
    <img src="transparent_img_400_200.png" class="image_d" />
    <img src="transparent_img_400_200.png" class="image_e" />
</div>

<div class="type-3">
    <img src="transparent_img_20_16.png" class="image_f" />
</div>

И в CSS я поместил свои изображения в качестве фонового изображения, как показано ниже (упомянув только одно для одного размера, но я повторяю то же самое и меняю положение в своем коде):

.image_a {
    background: url(../images/sprite1.png);
    background-size: 300% 100%;
    background-position: 100% 0;
}

.image_d {
    background: url(../images/sprite2.png);
    background-size: 400% 200%;
    background-position: 300% 0;
}

Проблемы:

  • Необходимо создать уникальное прозрачное изображение для каждого файла.
  • Проблематично работать со многими спрайтами.
  • Приходится помещать каждое изображение в качестве фона, так как я не нашел решения, которое не использует жестко заданную высоту и ширину для файлов .
  • растяжка прозрачных изображений для изображений разных размеров не работает. Есть ли способ избежать прозрачных изображений?

Любой другой способ сделать это приветствуется.

Требования: несколько изображений разного размера, адаптивной высоты и ширины.

дополнительный вопрос: должны ли большие изображения (например, фон всей страницы) быть частью спрайта, учитывая, что у меня есть 8 фоновых изображений.


person Jesse Sravya    schedule 04.07.2017    source источник
comment
Один из способов, который вы можете сделать, это использовать transform. Это хорошо работает, только если вы хотите использовать отзывчивый дизайн, а не гибкий дизайн.   -  person Praveen Kumar Purushothaman    schedule 04.07.2017


Ответы (1)


Я думаю, у вас есть несколько вариантов решения вашей проблемы.

Моя первая идея:

Создайте один файл спрайта с background-position и width, height с пикселями. Вы можете использовать transform:scale() для заполнения своего адаптивного контента.

Но я никогда не использую спрайт для больших изображений для адаптивной печати. На мой взгляд, это плохая привычка, потому что вы загружаете большой файл .png вместо одного по запросу (например, несколько фонов).

person kris_IV    schedule 04.07.2017