Кратко
СкопированоCSS-функция image
позволяет перечислить несколько фоновых изображений с условиями, по которым браузер решит, какое из них наиболее подходящее для загрузки в данный момент.
Похож по принципу работы на тег <picture>
.
Пример
Скопированоdiv { background-image: image-set( url("puppy@1x.webp") type("image/webp") 1x, url("puppy@2x.webp") type("image/webp") 2x, url("puppy@1x.png") type("image/png") 1x, url("puppy@2x.png") type("image/png") 2x );}
div { background-image: image-set( url("puppy@1x.webp") type("image/webp") 1x, url("puppy@2x.webp") type("image/webp") 2x, url("puppy@1x.png") type("image/png") 1x, url("puppy@2x.png") type("image/png") 2x ); }
Как понять
СкопированоНа сайт могут заходить с разных устройств. У многих дисплеи с повышенной плотностью пикселей и им нужно показывать картинку хорошего качества. А на телефонах лучше показывать небольшие файлы ради ускорения загрузки страницы. Нужно как-то давать разным клиентам разные версии изображений. Раньше для этого использовали медиавыражения, а теперь есть простые и удобные решения, которые позволяют через запятую указать все версии изображений. Конечно, есть тег <picture>
, но если изображение декоративное, будет правильнее установить его как фон элемента.
Как пишется
СкопированоВнутри круглых скобок указываем через запятую две и более ссылки на изображения при помощи функции url
и пишем условие для выбора этой картинки.
В качестве условия можно использовать коэффициент плотности пикселей: 1x
, 2x
и так далее. Или указываем тип изображения в формате MIME. Картинка будет загружена, если формат поддерживается браузером. Можно комбинировать условия.
Как и в случае с <picture>
, важен порядок перечисления форматов картинок: сначала более предпочтительные (AVIF, WebP), потом — менее (PNG, JPEG). Так браузер поймёт, какой из форматов ему выбрать, если он поддерживает все. Порядок перечисления картинок разной плотности не важен, браузер сам выберет подходящую.
Поддержка
СкопированоСвойство поддерживается всеми основными браузерами.
Проверить поддержку вы можете в демке.
- Chrome 113, поддерживается
- Edge 113, поддерживается
- Firefox 89, поддерживается
- Safari 17, поддерживается