Новый image-set как 🖼 тег picture в CSS: не только ретина, но и WebP и AVIF

00:00 Интро
00:34 Вставка PNG
01:08 Оптимизация в JPEG
01:56 Ретиновый JPEG
02:53 Подключение WebP
04:23 Подключение AVIF
05:42 Картинка как фон
06:35 Основа карточки
09:31 Как делали раньше
10:15 Замена на image-set
11:08 Загрузка по типам
12:33 AVIF в Firefox
12:57 Градиент под текстом
13:43 Ссылка на карточке
14:43 Ресайз карточки
15:43 Аутлайн для ссылки
16:45 Выводы
17:04 Аутро
Нравится? Становитесь патронами / pepelsbey
Код github.com/pepelsbey/playgrou...
Демо с котом pepelsbey.github.io/playgroun...
Image-set на MDN developer.mozilla.org/en-US/d...
Aspect-ratio на MDN developer.mozilla.org/en-US/d...
Squoosh squoosh.app/
Справочник и конвертер в AVIF avif.io/
* * *
Камера: Blackmagic Pocket Cinema 4K
Объектив: Panasonic 12-35 мм, f/2,8
Микрофон: Audio-Technica BP40
Свет: Amaran 200d + Light Dome
Софт: DaVinci Resolve, iZotope RX

Пікірлер: 149

  • @FFizmaTT
    @FFizmaTT2 жыл бұрын

    Круто. Увидел в видео несколько хаков, о которых даже и не догадывался. Спасибо, Вадим!

  • @DolphinArtem
    @DolphinArtem2 жыл бұрын

    Не знаю кто вы, я подписался на каналы про программирование, прошел 50 уроков по Java от автора Alishev, тут появились вы... Скажу вам, вы очень приятная личность! Просто очень, очень приятный голос и фейс ))). Вадим, у вас будет свыше миллиона... Да вы и сами это знаете.

  • @Zagir08
    @Zagir082 жыл бұрын

    Вот конечно ссылка на всю карточку меня немножко удивила 👍 Вроде все логично и понятно. А додуматься ох как сложно. Спасибо за новые знания 😄

  • @trewerguli1727

    @trewerguli1727

    2 жыл бұрын

    Не ссылка, а ховер на всю карточку

  • @Anatoli-bq1pe
    @Anatoli-bq1pe5 ай бұрын

    Благодарю! Хорошо что сейчас image-set уже отлично поддерживается браузерами)

  • @maximkiselev1554
    @maximkiselev15542 жыл бұрын

    aspect ratio имба!

  • @demeja16
    @demeja162 жыл бұрын

    Столько хаков в одном видео) Спасибо Вадим!)

  • @serghiokomolov2339
    @serghiokomolov23392 жыл бұрын

    Друг мой! Ты не даешь мне стареть!

  • @parango812
    @parango8122 жыл бұрын

    Очень круто! Фишек 5 за одно видео. Пойду играться

  • @tyortyo
    @tyortyo2 жыл бұрын

    Хоть и быстро. Но приятно и понятно. Спасибо

  • @eldarda
    @eldarda2 жыл бұрын

    Помнится задавался вопросом, как сделать в css с картинками то же, что и в html. А вот теперь, наконец, я нашел ответ. Спасибо)

  • @demidovmaxim1008
    @demidovmaxim10082 жыл бұрын

    Большое спасибо за выпуск, aspect-ratio очень полезное открытие.

  • @user-pl5ig1te3g
    @user-pl5ig1te3g2 жыл бұрын

    Выглядит круто! Спасибо большое за уроки, много интересного для себя почерпнул)

  • @VIMPdev
    @VIMPdev2 жыл бұрын

    Отлично как всегда! Жду про отношение сторон

  • @k-ivan
    @k-ivan2 жыл бұрын

    Вадим, это гениально )!

  • @luksik0
    @luksik02 жыл бұрын

    Первый раз узнал об Avif сегодня! В восторге от размеров. Теперь жду когда же все браузеры догадаются. Но благо сейчас сафаря webp стал поддерживать

  • @romanstein13
    @romanstein132 жыл бұрын

    Клёво-клёво, спасибо, Вадим👏 Очень жду видео про aspect ratio.

  • @alinanur6676
    @alinanur66762 жыл бұрын

    Люблю ваши видео, ну очень!

  • @my_coolheart
    @my_coolheart2 жыл бұрын

    Спасибо за открытие скуша))

  • @user-xd7vj5cf9f
    @user-xd7vj5cf9f2 жыл бұрын

    это шедеврально))))

  • @SL0Tspb
    @SL0Tspb2 жыл бұрын

    Как раз сегодня делал карточку из нескольких дивов, и была необходимость сделать всю ее ссылкой. Обернул в тег а, все заработало, но ведь семантически не правильно... а тут пример. коротко и доступно. Спасибо!

  • @user-zh5kg2op4h

    @user-zh5kg2op4h

    2 жыл бұрын

    На самом деле нет никакой проблемы обернуть всё в тег a. Спецификация HTML это вполне допускает. Только не забывайте, что внутри a не может быть других a или других интерактивных элементов: кнопок, полей и так далее. (Это может быть неудобно, когда, например, в блоке есть маленькая подсказка. Тогда надо как-то вместе совмещать.) Так что смотрите как вам удобнее.

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Семантически всё правильно - можно оборачивать карточки в ссылки. Другое дело, что в таком случае в содержимое ссылки попадают лишние элементы из карточки и её описание становится перегруженным для скринридеров.

  • @user-et2me5vv4d

    @user-et2me5vv4d

    2 жыл бұрын

    Я добавляю ссылку и растягиваю ее абсолютом поверх всей карточки. В итоге ссылке нет лишних элементов + добавляю текст с классом visually-hidden, чтобы ссылка была доступной.

  • @yorik2872
    @yorik28722 жыл бұрын

    Вадим, хотел вас попросить рассказать о адаптивной вёрстке с использованием vw и vh. За ранее спасибо!

  • @andreyzhukov2821
    @andreyzhukov28212 жыл бұрын

    Добрый день! Как раз разбирался с картинками для Retina дисплеев Спасибо!

  • @HelgaOz
    @HelgaOz2 жыл бұрын

    как всегда, очень понятно и доходчиво! всегда жду Ваши видео! спасибо!

  • @AleksovAnry
    @AleksovAnry2 жыл бұрын

    Очень доступно. Приятно слушать. Всё по делу без лишнего мусора. Спасибо за контент!

  • @endotub
    @endotub Жыл бұрын

    Спасибо за Ваши ролики, очень интересно и доступно!

  • @andreigunderin
    @andreigunderin2 жыл бұрын

    Круто! Спасибо! Респект и уважуха.

  • @EvgenichTalagaev
    @EvgenichTalagaev2 жыл бұрын

    Спасибо вам большое за ваш труд! Вы делаете этот мир лучше)

  • @user-eq8wf1mq6z
    @user-eq8wf1mq6z2 жыл бұрын

    Спасибо за Вашу работу. Ценно!

  • @yernut
    @yernut2 жыл бұрын

    я всегда создавал отдельный variable для aspect ratio и задавал высоту и ширину через calc. Очень жду видео про aspect ratio теперь)

  • @mirislamus
    @mirislamus2 жыл бұрын

    Спасибо за видео, как всегда все круто и понятно

  • @user-3773
    @user-37732 жыл бұрын

    Спасибо, восхитительно!

  • @guestalex
    @guestalex2 жыл бұрын

    Вадим, классно, как всегда!

  • @evgenyaliakseenko2228
    @evgenyaliakseenko22282 жыл бұрын

    Отличная подача материала 👍

  • @vitalycooperman3387
    @vitalycooperman33872 жыл бұрын

    Просто отличное видео. Спасибо.

  • @aquaciti
    @aquaciti2 жыл бұрын

    спасибо за видео, очень круто

  • @user-ue7ou9lk2s
    @user-ue7ou9lk2s2 жыл бұрын

    лучший как всегда!

  • @hopmnc
    @hopmnc2 жыл бұрын

    Спасибо, годно.

  • @Gogsan
    @Gogsan2 жыл бұрын

    супер верстка, хочу быть таким же

  • @victor_bozhok
    @victor_bozhok2 жыл бұрын

    Спасибо большое! Очень полезно и интересно :3

  • @shittywizzard5727
    @shittywizzard57272 жыл бұрын

    Великолепно, спасибо!

  • @katerinaelgina2376
    @katerinaelgina23762 жыл бұрын

    Вау. Круто. Спасибо !

  • @romannovak375
    @romannovak3752 жыл бұрын

    Большое вам спасибо очень интересно

  • @viktor_kost
    @viktor_kost2 жыл бұрын

    Я все ещё не могу понять - как на такой превосходный контент да подписано ~30к подписчиков? Желаю роста! Это заслужено! ✊

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Подпишитесь, станет больше :)

  • @viktor_kost

    @viktor_kost

    2 жыл бұрын

    @@pepelsbey обижаете) как только узнал - так сразу и подписался)

  • @dudovichenko
    @dudovichenko2 жыл бұрын

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

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Велком! И спасибо, буду продолжать )

  • @user-rj6ro3mp1p
    @user-rj6ro3mp1p2 жыл бұрын

    Очень спасибо.😁

  • @sergreva7192
    @sergreva71922 жыл бұрын

    Супер!

  • @evgenenterprises4933
    @evgenenterprises49332 жыл бұрын

    Круто!

  • @zapiski_verstalshika
    @zapiski_verstalshika2 жыл бұрын

    Печально что только сейчас на работе разрешили флексы... А этого мне долго на практике не видать) разве что для себя что-то сверстать. Спасибо)))

  • @Zagir08

    @Zagir08

    2 жыл бұрын

    Привет. Как я понял вы работали на float???!! Зачем!?

  • @windomizer

    @windomizer

    2 жыл бұрын

    @@Zagir08 Видимо, чтобы жизнь сладкой не казалась :D

  • @a.n.burdin
    @a.n.burdin2 жыл бұрын

    👍👍

  • @russianstan
    @russianstan2 жыл бұрын

    Очень круто! Но кто поставил дизлайк?

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Может я сам? 😱

  • @albertrain7093
    @albertrain70932 жыл бұрын

    Здравствуйте Вадим! Спасибо большое, что Вы есть ) Очень многому у Вас научился. Терзает меня один момент касательно способа с псевдо-элементом ссылки. Нуждаюсь в Вашем профессиональном мнении ))) Не ломает ли такой способ доступность для пользователей с мышкой. Ведь нельзя, при желании выделить и скопировать текст ссылки, придеться лезть в девтулзы для этого. Спасибо заранее!

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

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

  • @shurinskiy
    @shurinskiy2 жыл бұрын

    Авиф - выкатывает со дворов 😉

  • @vladislav805
    @vladislav8052 жыл бұрын

    "..., кроме Firefox, которым никто не пользуется ..." ачёвсмысле? Я вот только его и использую. Или... я - никто?))

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Я тоже! Нас двое )

  • @VladimirMiroshnichenko64

    @VladimirMiroshnichenko64

    2 жыл бұрын

    я в таких случаях говорю так "Есть статистика, а есть погрешность. Так вот вы даже не погрешность" :)

  • @denisdmitriev4670
    @denisdmitriev4670 Жыл бұрын

    Вау, открыл для себя много нового, обидно, что всё еще нет никакого прогресса в поддержке image-set

  • @pepelsbey

    @pepelsbey

    Жыл бұрын

    Кажется полная поддержка (как в Firefox) будет в следующей версии Chrome (скоро) и в следующей версии Safari (никто не знает когда, но думаю скоро) caniuse.com/css-image-set

  • @veadev
    @veadev8 ай бұрын

    Top, Right, Left, Bottom можно заменить одним свойством inset:0;👍

  • @freeeon29
    @freeeon292 жыл бұрын

    Вот только aspect-ratio до сих пор не поддерживается в Safari, что сводит на нет его использование. На данный момент он есть там только в превью будущей версии. В случае сафари это означает, что пока человек не перейдет на новую версию Mac OS он будет сидеть на старой версии сафари, т.к. там нельзя обновить браузер отдельно от ОС.

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Вы неправы, Safari всё-таки обновляется на предыдущих версиях macOS. Например, Safari 14 работает на 10.11-10.14, то есть совместим с macOS, вышедшей в 2018 году. Другое дело, что некоторые возможности, которые зависят от самой ОС, могут в браузере отстутствовать: кодеки, форматы шрифтов и графики.

  • @TamaraNikolaevna
    @TamaraNikolaevna Жыл бұрын

    Вадим, имеет значение расширение картинки jpg или jpeg? У меня в Sqoosh при оптимизации получается расширение только jpg. Большое спасибо за работу.

  • @pepelsbey

    @pepelsbey

    Жыл бұрын

    Расширение .jpg совместимо со старыми ОС, есть даже расширение .htm для таких случаев. Но это очень, очень старые ОС, вроде MS-DOS. Так что никакой практической разницы сегодня нет.

  • @TamaraNikolaevna

    @TamaraNikolaevna

    Жыл бұрын

    @@pepelsbey Спасибо

  • @artimovskiy
    @artimovskiy2 жыл бұрын

    Мода на backgraund-image возвращается или c object-fit что-то не так?

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

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

  • @user-cl9yc1tw2i
    @user-cl9yc1tw2i2 жыл бұрын

    Класс, в can i use показано 96% у данного свойства, так его можно или нет использовать?

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Конечно! Только с типом пока не получится

  • @user-cl9yc1tw2i

    @user-cl9yc1tw2i

    2 жыл бұрын

    @@pepelsbey Вадим, а объясните пожалуйста, где брать все эти картинки? Допустим есть картинка, где мне взять эту же картинку в двукратном разрешении? Вопрос может быть элементарный, но я не знаю(

  • @nir0pilot
    @nir0pilot2 жыл бұрын

    Этот хак иногда глючит. Height:auto не отрабатывает и картинки искажаются. Я потупил денёк, и пришёл к выводу: можно убрать width, height, css к картинке и добавить одно css свойство aspect-ratio

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Ну это не хак, это обычный CSS. Не стоит отказываться от атрибутов width и height, они очень полезны при загрузке - браузер сразу знает, сколько отдать места для картинок, знает их соотношение сторон. Ну и «иногда глючит» звучит как магия, лучше бы разобраться и понять. Может есть демка?

  • @nir0pilot

    @nir0pilot

    2 жыл бұрын

    @@pepelsbey демки нет, но там использовался js-плагин slick, который, возможно, как-то влиял, и турболинки из rails. при некоторых прогрузках страниц фото решительно деформировались, но не всегда - как фишка ляжет. С вычисленным aspect-ratio pagespeed перестает ругаться на отсуствие width/height, чего я и добивался.

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Жаль, что вы не разобрались, в чём проблема. Добавлять aspect-ratio в стилях - слишком «далеко», браузеру это нужно понимать в разметке.

  • @omnomnom1323
    @omnomnom13232 жыл бұрын

    А в какой программе переводят здесь картинку из png в jpeg?

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Это Squoosh squoosh.app/, все ссылки всегда есть в описании

  • @TheBubaololo
    @TheBubaololo2 жыл бұрын

    11:03 не совсем понял, на юзеров лисы предлагается забить?

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    А вы посмотрите на демку в Firefox: там вполне WebP 2x pepelsbey.github.io/playground/63/

  • @TheBubaololo

    @TheBubaololo

    2 жыл бұрын

    @@pepelsbey Вадим, вы золотой человек

  • @ggg-tq9be
    @ggg-tq9be2 жыл бұрын

    Проверил в опере, хроме, лисе и осле, везде отображается кроме ie. Нужно ещё добавить обычный фолбэк background-image: url(...). Вы забыли про это или это массовый протест против ослов?)

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Да, вы правы, для лучшей совместимости можно добавить ещё и фолбэк для IE

  • @StonHenge
    @StonHenge8 ай бұрын

    Как вставить image-set в место где использованы множественные фоны? Т.е. у меня две картинки которые нужно прописать в image-set. Не получается. Или это невозможно?

  • @pepelsbey

    @pepelsbey

    8 ай бұрын

    Функция image-set() - это, по сути, замена url(), то есть если вы можете прописать несколько картинок в свойстве background-image через запятую с помощью url(), то аналогично можно и с image-set().

  • @mrakcw
    @mrakcw2 жыл бұрын

    Перезалил видео? Лайк мой куда дел?))) 😂😂😂 Вадим, есть предложение для следующего ролика))) предложения принимаешь? )) 🧙‍♂️🚀🐱‍👤🏍😁🐱‍🏍

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Перезалил, там ошибка была ( Заявки не принимаю, а идеи выслушаю ;)

  • @dimovich85

    @dimovich85

    2 жыл бұрын

    Хотел тоже самое написать) я тоже днем хотел видос глянуть, но что-то не давал ютуб

  • @user-bp5lj1fj1y
    @user-bp5lj1fj1y2 жыл бұрын

    Спасибо за видео! Почему при background-image: -webkit-image-set( url(../../../assets/images/header@1x.webp) 1x, url(../../../assets/images/header@1x.jpg) 1x) хром подгружает ( смотрю в "Network") header@1x.jpg , почему не header@1x.webp ?

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Посмотрите внимательнее на синтаксис с MIME-типом и браузерную поддержку, я об этом рассказываю в видео.

  • @clleoweb4083
    @clleoweb40832 ай бұрын

    А что же делать с lazy load? Как к этой красоте прикрутить отложенную загрузку изображений? При чем нужен правильный lazy, при котором в src будет не пустота а реальное изображение?

  • @pepelsbey

    @pepelsbey

    Ай бұрын

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

  • @CzarOfScripts
    @CzarOfScripts2 жыл бұрын

    Можете объяснить про "двухкратный экран"? Что это значит?

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Это когда на один логический пиксель приходится четыре физических. Они же ретиновые экраны или HiDPI

  • @Beyond-the-transcendent
    @Beyond-the-transcendent Жыл бұрын

    Теперь вопрос если к тэгу img я задаю класс , то получаю что если браузер выбирает изображение из sours то класс и стили css не подтягиваются , class="cover__users-ava" - задаёт позицию абсолют и координаты, если удалить source то всё работает

  • @pepelsbey

    @pepelsbey

    Жыл бұрын

    Браузеры выбирают подходящие картинки из source и ставят их в img, так что должно сработать. Попробуйте то же самое, но со ссылкой на CodePen с демкой, чтобы можно было понять, в чём ваша проблема.

  • @Beyond-the-transcendent

    @Beyond-the-transcendent

    Жыл бұрын

    @@pepelsbey ладно, сяб, значит просто баг синтаксиса.

  • @antonmanin3521
    @antonmanin35212 жыл бұрын

    Вы играли когда-нибудь в майнкрафт?

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Нет, я плохо понимаю зачем люди играют в компьютерные игры, ведь можно поверстать )

  • @EgorMoscowNeverSleep
    @EgorMoscowNeverSleep2 жыл бұрын

    По поводу "никто не пользуется Firefox": я уже год как использую его как основной браузер, потому что в Chrome у меня лагает KZread видео качеством выше 720 (внезапно), хотя у меня 1660 super с аппаратной поддержкой всех необходимых кодеков. А в Firefox ничего не нагает, даже 4К. Возможно,проблема в Хроме в том, что у меня включена скорость воспроизведения 2x по-умолчанию, но в FF всё на этой скорости всё прекрасно работает. P.S. Если FF постигнет судьба Opera и Edge, это будет катастрофа :(

  • @lvivduncan
    @lvivduncan2 жыл бұрын

    6:50 picture -- class?

  • @svet0v
    @svet0v2 жыл бұрын

    А что делать с тем, чтобы w3c валидатор не ругался на это свойство?

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    Не использовать CSS-валидатор W3C, он оторван от реальности

  • @svet0v

    @svet0v

    2 жыл бұрын

    @@pepelsbey а как тогда проверять валидна ли верстка?

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    HTML-валидатор вполне имеет смысл, валидность стилей лучше проверять линтерами, вроде Stylelint

  • @svet0v

    @svet0v

    2 жыл бұрын

    @@pepelsbey а есть какое-то подтверждение того, что на валидность стилей в валидаторе w3c не имеет смысл обращать внимания, чтобы я со спокойной совестью мог image-set пользоваться?

  • @user-bi4vy7ut4w
    @user-bi4vy7ut4w2 жыл бұрын

    авиф ауф

  • @ag_main
    @ag_main2 жыл бұрын

    Squoosh все же передавливает фото и качество падает да прописать 2х под респонс

  • @AntonMorya
    @AntonMorya2 жыл бұрын

    Кто дизлайк поставил? Кто этот дивергент))

  • @oshurek-dev
    @oshurek-dev2 жыл бұрын

    зачем нам нужно свойство, которое нигде не работает кроме firefox? и тут я, кто смотрит это видео с firefox....

  • @pepelsbey

    @pepelsbey

    2 жыл бұрын

    И тут я, который залил это видео в Firefox. Может быть нас всё-таки много? )

  • @isvladxxe

    @isvladxxe

    2 жыл бұрын

    Firefox единственный кто нормально выводит звук с ютуба на системы 7.1 звука в Linux ( в win вроде костылем можно везде сделать) хром задействует только 2 передних канала ((

Келесі