Разумная загрузка: SVG против растровых загрузчиков в современном веб-дизайне | CSS-трюки

Разумная загрузка: SVG против растровых загрузчиков в современном веб-дизайне | CSS-трюки


Я нашел этот интересный вопрос в SVG Workshop: «В чем разница в производительности между загрузчиком SVG и простым вращением изображения для загрузчика?»

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

понимание форматов

являются SVG вектор-основанная графика, популярная благодаря своей масштабируемости и ясности. Но давайте начнем с определения того, что на самом деле представляют собой растровые изображения и векторная графика.

Растровые изображения основаны на физических пикселях. Они содержат явную информацию о цвете для каждого пикселя. Происходит следующее: вы отправляете всю попиксельную информацию, а браузер рисует каждый пиксель один за другим, что усложняет работу сети.

Это означает:

  • у них есть фиксированное разрешение (Масштабирование может привести к размытию),
  • Обязательно наличие браузера Раскодируйте и раскрасьте каждый кадрИ
  • Анимация обычно означает покадровое воспроизведениеНапример, GIF или цикл видео.

векторы — это математические инструкции В котором рассказывается, как создавать компьютерную графику. Как сказал Крис Койер на конференции CSS: «Зачем отправлять пиксели, если можно отправить математические данные?» Таким образом, вместо того, чтобы отправлять пиксели со всей информацией, SVG отправляет инструкции о том, как нарисовать объект. Другими словами, позвольте браузеру выполнять больше работы, а сети — меньше.

По этой причине SVG:

  • Неограниченный масштаб без потери качества,
  • Можно стилизовать и манипулировать с помощью CSS и JavaScript, а также
  • Может находиться непосредственно в DOM, исключая дополнительные HTTP-запросы.
Разумная загрузка: SVG против растровых загрузчиков в современном веб-дизайне | CSS-трюки

Сила векторов: почему побеждает SVG

Есть несколько причин, по которым обычно рекомендуется использовать SVG вместо растровых изображений.

1. Прозрачность и визуальное качество

Большинство современных форматов изображений поддерживают прозрачность, но не вся прозрачность одинакова. Например, GIF-файлы поддерживают только двоичную прозрачность, то есть пиксели либо полностью прозрачны, либо полностью непрозрачны.

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

jpg гифка PNG SVG
вектор
растр
прозрачность
анимация
Давление вредный безупречный безупречный безупречный

2. Производительность «нулевого запроса»

С точки зрения производительности вращение небольшого PNG и SVG в CSS (или JavaScript, если уж на то пошло) одинаково. Однако на практике SVG выигрывает, потому что они поддерживает gzip и может быть встроен в строку.



  Heart
  



твердое черное сердце

Вставляя код SVG непосредственно в HTML, вы исключаете весь HTTP-запрос. Для чего-то вроде загрузчика — того, что должно быть видно, пока загружаются другие объекты — тот факт, что код SVG уже существует и немедленно отображается, является огромным выигрышем для производительности.

Что еще более важно, грузчики влияют воспринимаемая производительность. Загрузчик, который легко оптимизирует свой контекст и правильно масштабирует, может сократить время ожидания, даже если фактическое время загрузки такое же.

И хотя код SVG похоже Поскольку это будет тяжелее, чем одна строка HTML, действительно важен размер файла изображения. И тот факт, что мы измеряем SVG в байтах, которые можно сжать gzip, означает, что в конечном итоге это очень низкие накладные расходы.

Несмотря на все это, импорт SVG все еще возможен. Точно так же, как растровый файл (с некоторыми другими методами):

твердое черное сердце

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

3. Анимация, управление и интерактивность

Загрузчики форматов в SVG основаны на DOM, а не на кадрах. Это означает, что вы можете:

Вы можете манипулировать своим SVG с помощью CSS, JavaScript или SMIL, создавая целый мир возможностей интерактивности, с которыми растровые изображения не могут сравниться.

4. Но нужны ли отдельные файлы для анимированного SVG?

Опять же, анимация SVG может быть встроена в HTML или внутри файла. .svg файл. Это означает, что вы можете отправить анимированный файл, например GIF, но с гораздо большим контролем. используя И Вы можете сохранить код в чистоте. Вот пример файла загрузчика SMIL:


  Loading...
  
    
  
  
    
  
  
    
  

Для более сложных взаимодействий вы также можете включить CSS и JavaScript в свой SVG-файл:


Interactive Loading Spinner A blue rotating circle. Clicking it toggles the rotation speed between fast and slow.