Простые решения для сложных задач с Intersection Observer API

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 ก.ค. 2024
  • Ленивая загрузка, бесконечный скролл и многие другие крутые фишки сегодня можно легко реализовать, используя браузерный API Intersection Observer. В рамках видео мы рассмотрим четыре практических примера, на которых разберем как работать с данной возможностью.
    Intersection Observer MDN developer.mozilla.org/ru/docs...
    Код из видео:
    lazy loading codesandbox.io/s/lazy-loading...
    воспроизведение видео codesandbox.io/s/video-autost...
    якорное меню codesandbox.io/s/anchor-menu-...
    бесконечный скролл codesandbox.io/s/blissful-roe...
    00:00 Обзор Intersection Observer API
    01:48 Ленивая загрузка изображений
    09:19 Запуск/остановка видео
    15:24 Переключение вкладок якорного меню
    22:01 Бесконечный скролл
    #js Текстовая версия t.co/lFC7fpo106
    Мои курсы по вебу с купонами:
    ✅ mishanep.com/
    📢 Поддержка канала:
    / mishanep
    www.tinkoff.ru/rm/nepomnyasch...
    paypal.me/mishanep

ความคิดเห็น • 89

  • @aceracer5556
    @aceracer5556 2 ปีที่แล้ว +1

    Спасибо Михаил за подробный обзор!

  • @happy_cutman
    @happy_cutman 2 ปีที่แล้ว +1

    Михаил, спасибо за труды!

  • @ivanfadeev5389
    @ivanfadeev5389 2 ปีที่แล้ว +3

    Спасибо за материал! Подача огонь 🔥

  • @Nuts_Cracker
    @Nuts_Cracker 2 ปีที่แล้ว

    Огромное спасибо за контент! Как всегда очень полезно!

  • @user-nd9ce7ul4e
    @user-nd9ce7ul4e 6 หลายเดือนก่อน

    Спасибо за ваш труд! Очень полезная информация!

  • @ihopeingod1
    @ihopeingod1 ปีที่แล้ว

    Михаил, спасибо вам за подробное объяснение! Вы замечательный преподаватель! Желаю развития вашему каналу!

  • @beznamea9549
    @beznamea9549 2 ปีที่แล้ว +2

    Какой же у вас годный контент! Спасибо!!!

  • @alexmlnkv
    @alexmlnkv 2 ปีที่แล้ว

    Михаил, спасибо огромное за Ваш труд! Очень полезное видео. Бегу пробовать эту апишку)

  • @vladislove1337
    @vladislove1337 ปีที่แล้ว

    Самое понятное видео на эту тему, спасибо!

  • @amancalllednoise
    @amancalllednoise ปีที่แล้ว

    Михаил, мое почтение. За одно видео ответил на уйму волнующих вопросов! Лучший !

  • @IvanZakharanka
    @IvanZakharanka 2 ปีที่แล้ว

    Огромное спасибо! Через такие костыли делал подгруку, а оказывется есть такой прекрасный инструмент!

  • @gregoryzhel
    @gregoryzhel ปีที่แล้ว

    Великолепное объяснение. Спасибо за видео!

  • @alexeykuzniecov223
    @alexeykuzniecov223 2 ปีที่แล้ว

    Один из лучших каналов, постепенно просматриваю все видео отсюда)

  • @artemzirka9675
    @artemzirka9675 2 ปีที่แล้ว

    Спасибо! Полезный материал с хорошим пояснением.

  • @Pavelius
    @Pavelius หลายเดือนก่อน

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

  • @shittywizzard5727
    @shittywizzard5727 2 ปีที่แล้ว +2

    Очень нужная тема, спасибо!

  • @nikolaysmolov8031
    @nikolaysmolov8031 ปีที่แล้ว

    Класс! Давно хотел разобраться, а тут Михаил такой урок сделал! Спасибо!

  • @Maxim9575
    @Maxim9575 2 ปีที่แล้ว

    Хорошо и понятно рассказываешь, редко такое видишь.

  • @ardanow1
    @ardanow1 2 ปีที่แล้ว

    Очень крутой контент и подача, спасибо!

  • @eliaseugene1270
    @eliaseugene1270 2 ปีที่แล้ว +6

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

  • @mikhail_one
    @mikhail_one ปีที่แล้ว

    Невероятно круто, большое спасибо за видео.

  • @user-artem-busyhin
    @user-artem-busyhin 2 ปีที่แล้ว

    Супер. Огромное спасибо!

  • @unknown.6914
    @unknown.6914 5 หลายเดือนก่อน

    Отличный урок , спасибо Михаил

  • @pvrybakin
    @pvrybakin 2 ปีที่แล้ว

    Сегодня узнал о нем, а вчера Михаил выпустил видео о о нем) Спасибо за видео.

  • @EugeneChe-81
    @EugeneChe-81 2 ปีที่แล้ว

    С нетерпением буду ждать ещё подобного материала! Вы у меня в Топ-3 ютуба!!!

  • @user-hw9cs6te5y
    @user-hw9cs6te5y 3 หลายเดือนก่อน

    Благодарю, урок отличный и познавательный, больше всего узнала именно из вашего видео.

  • @user-fw9hc5lg9f
    @user-fw9hc5lg9f ปีที่แล้ว

    Круто объяснил!

  • @over79751
    @over79751 6 หลายเดือนก่อน

    Спасибо огромное очень помог !

  • @vlasovdanildev
    @vlasovdanildev 2 ปีที่แล้ว

    Очень интересное видео, оно сто процентов пригодится, спасибо вам за все Михаил

  • @azizbekkomilov3589
    @azizbekkomilov3589 2 ปีที่แล้ว

    Спасибо за видео ЛАЙК и ждем новых видосов!!!

  • @AlexGabber
    @AlexGabber 2 ปีที่แล้ว +2

    Пару недель назад приходилось изучить observer api и внедрить в задачу) в принципе ничего сложного, но это видео очень полезное и я к нему буду возвращаться точно. Понимание расширилось и теперь хочется заняться практикой на всех своих проектах)) очень полезная штука. А автор как всегда лучший! Честно говоря среди огромного количества каналов, для меня этот один из лучших точно. Михаил) спасибо! Обязательно возьму ваши курсы на udemy

  • @rzdegor1978
    @rzdegor1978 ปีที่แล้ว

    Объяснение супер!!!

  • @alsua1297
    @alsua1297 ปีที่แล้ว

    спасибо за видео👍

  • @user-no2rk3rz4e
    @user-no2rk3rz4e ปีที่แล้ว

    Лучшее объяснение Intersection Observer

  • @vladimirmuratov2220
    @vladimirmuratov2220 ปีที่แล้ว

    Очень крутое видео! Спасибо!!!! 😊

  • @user-cr1pq1wz8v
    @user-cr1pq1wz8v 2 ปีที่แล้ว

    Полезно, спасибо!

  • @user-le3je2mu4n
    @user-le3je2mu4n 10 หลายเดือนก่อน

    Молодец, большое спасибо), оч доступно

  • @user-ki6sz4nz3l
    @user-ki6sz4nz3l 4 หลายเดือนก่อน

    Спасибо за урок

  • @katada
    @katada 2 ปีที่แล้ว +1

    Продолжай в том же духе!)

  • @motolife4900
    @motolife4900 2 ปีที่แล้ว +1

    отличный разбор

  • @user-rw3ry9bd6l
    @user-rw3ry9bd6l 2 ปีที่แล้ว

    Отличный контент. Комментарий в поддержку канала

  • @serjdenisov2114
    @serjdenisov2114 2 ปีที่แล้ว

    Спасибо Михаил!

  • @curillaenator
    @curillaenator 2 ปีที่แล้ว

    очень полезная информация!

  • @0xSxVKaJnwQ
    @0xSxVKaJnwQ 10 หลายเดือนก่อน

    Спасибо!

  • @user-pe4wq2dv7q
    @user-pe4wq2dv7q 2 ปีที่แล้ว

    Спасибо. Полезно

  • @olegsh2888
    @olegsh2888 2 ปีที่แล้ว +1

    Отличный видос, Михаил! Актуальные браузерные апишки - это годнота)

    • @mishanep
      @mishanep  2 ปีที่แล้ว

      Сегодня видел прикольную штуку Intl.ListFormat для склеивания массива строк в строку.

    • @olegsh2888
      @olegsh2888 2 ปีที่แล้ว

      @@mishanep тоже вчера видел) Было бы круто собрать видос по этому могучему объекту, там уже целый новый мир)

  • @ShoTHIk
    @ShoTHIk 2 ปีที่แล้ว +5

    ЭТО!... ПРОСТО!... ОХ...очень полезный материал! Очень класно доносите информацию, Михаил! Контент максимально информативен - что по Реакту, что по JS в целом.
    Действительно, незаслужено малое количество подписчиков, ведь для вашей целевой вы отличный лектор, ментор, учитель или преподаватель. Но дорогу осилит идущий. С таким качественным контентом быстрый рост подписчиков гарантирован. Главное - регулярность и не останавливаться на достигнутом. Успехов Вам, Михаил! И побольше лайков под видео ;)

  • @sergeylunyaka4315
    @sergeylunyaka4315 2 ปีที่แล้ว

    да, действительно полезный материал и доступный

  • @Mr04unit
    @Mr04unit ปีที่แล้ว

    просто лучший.

  • @volod-one
    @volod-one 2 ปีที่แล้ว

    Топчик!

  • @dev-to-prod
    @dev-to-prod 2 ปีที่แล้ว

    Топ как всегда.

  • @mercury_2379
    @mercury_2379 2 ปีที่แล้ว

    ооо, круто, спасибо

  • @user-natal04ka
    @user-natal04ka ปีที่แล้ว

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

  • @vvsl3882
    @vvsl3882 2 ปีที่แล้ว

    Супер)

  • @romanstoleru7936
    @romanstoleru7936 2 ปีที่แล้ว

    Очень нравиться твоя подача! Но это мне сломало мозги, пойду дальше учить html/css/js xD Когда нибудь это тоже пойму! Спасибо за хорошие уроки!

  • @from_brest2631
    @from_brest2631 2 ปีที่แล้ว

    Круть, видел данную. апишку на инфинит скролле в реакте

  • @boycovclub
    @boycovclub ปีที่แล้ว

    Уважуха)

  • @lessons3141
    @lessons3141 ปีที่แล้ว

    очень крутое видео

  • @user-ic4dk4sp3y
    @user-ic4dk4sp3y 2 ปีที่แล้ว

    thnx fr th vd, круто

  • @RK-yk3hj
    @RK-yk3hj 2 ปีที่แล้ว +2

    как всегда супер. Зделай видео пo GraphGL + React пажалустаааааааа

    • @mishanep
      @mishanep  2 ปีที่แล้ว +1

      И туда однажды доберемся)

  • @JUN-17
    @JUN-17 ปีที่แล้ว +1

    Очень полезно и информативно. Просмотров почему-то мало.👍
    Но никак не пойму, что делает опция root на 0:50 и как его использовать ? Но уже загуглил и понял.)

  • @user-di3xd7tq8g
    @user-di3xd7tq8g 2 ปีที่แล้ว

    Большое спасибо за вашу работу.
    Хотел спросить что на сегодняшний день лучше учить JOI или YUP.
    и может снимите ролик на эту тему в нете я нашел только англоязычные ролики

  • @iarmiksafaryan1200
    @iarmiksafaryan1200 3 หลายเดือนก่อน

    Отлично! Наверное, то что искал.
    А как реализовать такой функционал у меню, чтобы оно автоматически прокручивалось к "активным" пунктам (которые не вмещаются на экране), при скроллинге страницы?

  • @boycovclub
    @boycovclub ปีที่แล้ว

    ))) я тут курсы у вас на юдеми покупал, а вы ещё бесплатно курсы тут преподаете

  • @sergey_zatsepin
    @sergey_zatsepin 2 ปีที่แล้ว

    А если у тебя элемент на первом экране, т.е. по умолчанию пересечён, будешь от обратного идти или по старинке отслеживать позицию скролла? Ну и хотелось бы увидеть пример с root не null

  • @margino
    @margino 9 หลายเดือนก่อน +2

    Спасибо за видео, Михаил! Не знаю почему, но у меня rootMargin срабатывает только если прописано одно значение, например, rootMargin: "50px". Если пишу, например, rootMargin: "50px 0px 0px 0px" rootMargin не работает 🙃 Поделитесь если кто-то столкнулся с подобным и нашел решение.

  • @timchenkod88
    @timchenkod88 ปีที่แล้ว

    Михаил, подскажите пожалуйста, как реализовать пример с якорным меню в React. Если я правильно понимаю, то там нужно использовать API react-intersection-observer. Вот с ленивой загрузкой изображений и запуск/остановка видео у меня получилось сделать, а вот с якорным меню некий ступор возник. Буду признателен, если покажете решение.

    • @mishanep
      @mishanep  ปีที่แล้ว

      Здесь надо посидеть-подумать-погуглить. На первой напрашиваются два решения: либо хранить текущее положение в сторе и обновлять его через обзервер, либо использовать роутинг и через обзервер обновлять url по достижению якоря. Но вполне возможно есть более элегантное решение.

  • @govorov_top
    @govorov_top 2 ปีที่แล้ว

    Internet Explorer хотя бы 11 поддерживал... а так да, круто и библиотеки не нужны, спасибо!

    • @mishanep
      @mishanep  2 ปีที่แล้ว

      Сочувствую, если вам приходится поддерживать IE.

  • @abdulvahhabakbarov7850
    @abdulvahhabakbarov7850 2 ปีที่แล้ว +1

    Привет из Узбекистана! пожалуйста, сделайте полное видео о наборе инструментов redux toolkit, об использовании его с почтальоном. Заранее спасибо !

    • @mishanep
      @mishanep  2 ปีที่แล้ว

      С каким почтальоном? :)

    • @danildemchenko6004
      @danildemchenko6004 2 ปีที่แล้ว +1

      @@mishanep Печкиным, полагаю:)))

    • @abdulvahhabakbarov7850
      @abdulvahhabakbarov7850 2 ปีที่แล้ว

      ой Извините Я допустил ошибку ): с postman

    • @digitalturkistan1857
      @digitalturkistan1857 ปีที่แล้ว

      @@abdulvahhabakbarov7850 postman обычно используется бэкенд разработке для написание рест запросов. Redux toolkit это стейт менеджер точнее загатовка для редукса

  • @vovergg
    @vovergg 2 ปีที่แล้ว

    А как сделать так, чтобы при скролле наврех обзёрвер отарабатывал, когда элемент пересекает своей верхней частью верх экрана (и уходит дальше наверх за пределы экрана), а при скролле вниз, обзёрвер отрабатывает тогда, когда элемент наоборот только начинает появляться сверху (то есть пересекает своей нижней частью верхнюю чать экрана)?
    Как я понимаю, для этого в первом случае обзёрвер должен срабатывать при threshold: 1 (условно будем считать, что высота элемента примерно равна высоте viewport'a), а во втором случае при threshold: 0. И вот как это совместить? Я пока не смог придумать...

  • @0xSxVKaJnwQ
    @0xSxVKaJnwQ 5 หลายเดือนก่อน

    Вроде все логично и понятно, а потом оказывается, что intersectionRatio возвращает не процент, который занимает элемент относительно рута, а процент относительно самого элемента. То есть, если секция очень длинна, она может перекрыть почти весь вьюпорт, но intersectionRatio будет меньше 0.5 %)

  • @user-np4vg9pc5o
    @user-np4vg9pc5o 2 ปีที่แล้ว

    Привет!!! А можете сделать видео как в React такое использовать?

    • @mishanep
      @mishanep  2 ปีที่แล้ว +1

      Приветствую!
      Для Реакта есть удобная библиотека react-intersection-observer. Я думал было снять видео с ее использованием, но реализовал всё намного проще и по-другому =) Тут всегда стоит вопрос, что мы хотим сделать, и уже под него подбираем инструменты.
      th-cam.com/video/PGW36uIVggM/w-d-xo.html

    • @user-np4vg9pc5o
      @user-np4vg9pc5o 2 ปีที่แล้ว

      @@mishanep Привет!!! Подскажите пожалуйста, какой командой стартануть проект? При старте npm start запускается, но пишет --- Note that the development build is not optimized.
      To create a production build, use yarn build.

    • @mishanep
      @mishanep  2 ปีที่แล้ว +1

      @@user-np4vg9pc5o вы всё правильно делаете. Это не ошибка. Уведомление просто уведомляет, что в дев режиме файлы не оптимизированы. Это нормально, так оно быстрее собирается для изменений и отладки. После npm run build или yarn build собирается продакшн вариант приложения, он оптимизирован.

    • @user-np4vg9pc5o
      @user-np4vg9pc5o 2 ปีที่แล้ว

      @@mishanep Спасибо за ваши видео!!!

  • @sartjhon3300
    @sartjhon3300 6 หลายเดือนก่อน

    а как же поисковые роботы? ведь не видя картинок он не сможет их проанализировать

    • @mishanep
      @mishanep  6 หลายเดือนก่อน

      Это не всегда требуется. Сегодня множество сайтов с бесконечным скроллом и все картинки всё равно никогда не будут проиндексированы. Кроме того, есть разные подходы к ленивым картинкам, изначально картинка может быть отрисована в очень плохом качестве, и обновлена при подскролле к ней. У меня было видео об этом.

  • @Ivan-ee4pz
    @Ivan-ee4pz ปีที่แล้ว

    Этот канал уже превращается в классику Фронтенд туториалов для нас смертных, ГОДНОТА !!! 2023 год

  • @denys_demianchuk
    @denys_demianchuk 2 ปีที่แล้ว

    Спасибо!