Тёмный

JS-решения №12. Базовая анимация при скролле на чистом JS 

MaxGraph - cайты как страсть
Подписаться 30 тыс.
Просмотров 29 тыс.
50% 1

Привет! В новой части JS-решений я покажу, как сделать простую и удобную анимацию по скроллу на чистом js)
github.com/maxdenaro/maxgraph... - исходники видео на GitHub
Меня зовут Максим Васянович. Фрилансер уже 5 лет, создал более 50 коммерческих сайтов. Преподаватель в онлайн-университете Skillbox, автор курса Веб-верстка.
Понравилось? clck.ru/Gr9Ec
Моя страница вконтакте: maxdenaro
Мой блог: blog.maxgraph.ru
Мой сайт: maxgraph.ru
Канал в телеграм: teleg.run/maxgraph
Чат для верстальщиков: teleg.run/maxgraph_chat
#ityoutubersru #скролл #анимацияприскролле

Опубликовано:

 

10 дек 2020

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 87   
@user-cf6vl5xe2d
@user-cf6vl5xe2d Год назад
гениальность - это когда ты повторяешь весь код и он не работает и только с третей попытки ты понимаешь что просто не подключила скрипт. Браво
@alexandrgusletsov2567
@alexandrgusletsov2567 3 года назад
Мах спасибо , всегда радуете начинающих кодеров!
@maxgraph
@maxgraph 3 года назад
Пожалуйста)
@TheZUB95
@TheZUB95 3 года назад
супер урок,спасибо как не хватало таких разборов,я новичёк в js и эти уроки визуализируют прочитанную теорию успехов!
@maxgraph
@maxgraph 3 года назад
Спасибо)
@TheZUB95
@TheZUB95 3 года назад
@@maxgraph у вас отличная подача,есть в планах сделались подробный гайд по оптимизации скорости wp,это было бы очень полезно и интересно
@user-tz8xo5wj1o
@user-tz8xo5wj1o 3 года назад
Топовый контент! Спасибо!
@alseos4023
@alseos4023 Год назад
1:45 Господи, как же мне сильно нужна была эта анимация, но никак её не мог найти! Спасибо вам огромное!!!😮😮😮😁😁😁 Продолжайте снимать в том же духе!!!🎉😁😁
@EugeneKh.
@EugeneKh. 7 месяцев назад
используй IntersectionObsrverAPI вместо скролла
@user-vm2db5cq1g
@user-vm2db5cq1g Год назад
Полезное видео! Спасибо! Отличный канал))
@super_snejinka
@super_snejinka 3 года назад
Максим, спасибо огромное за это видео, попалось как нельзя кстати! Я не видела продолжения, еще нет на канале? И еще раз спасибо, твои видео уже не раз меня спасали
@maxgraph
@maxgraph 3 года назад
Продолжение было) анимация плагином
@marishakarpova8278
@marishakarpova8278 3 года назад
Отличное видео 👍 Всё доступно и понятно, буду экспериментировать 😊 Продвижения каналу 😉
@maxgraph
@maxgraph 3 года назад
Спасибо)
@aleksandrkhabarov6026
@aleksandrkhabarov6026 3 года назад
Классный урок, все доходчиво)) Только вместо все у нас будет хорошо, хотелось бы слышать что будет делать код))) А так всё очень понравилось!
@maxgraph
@maxgraph 3 года назад
Спасибо)
@plantlife1710
@plantlife1710 3 года назад
Все как всегда, четко и полезно! Но скрол ведь событие которое вызывается миллион раз, intersection observer как вариант
@maxgraph
@maxgraph 3 года назад
Да, как вариант)
@MeME59356
@MeME59356 5 месяцев назад
Спасибо за отличное решение
@Sufferer12
@Sufferer12 Год назад
Спасибо за уроки. Скажите, почему может animation-class сразу присваиваться, никаких изменений не происходит при скролле?
@DerAleksey
@DerAleksey 10 месяцев назад
пошёл пробовать
@epicshorsviral
@epicshorsviral Год назад
Мое почтение 👍
@miraigrafit7865
@miraigrafit7865 3 года назад
Очень круто! Я для себя еще добавил дата атрибут, если он есть, то анимация проигруется лишь раз, если нету, то повторяется при скролле обратно, как на видео. Ты обычно используешь именно что-то свое для анимации, или подключаешь стороннее?
@maxgraph
@maxgraph 3 года назад
Да по-разному. Могу и greensock подключить
@amaronov
@amaronov 10 месяцев назад
Помогло, спасибо!
@Andrey_4dev
@Andrey_4dev 3 года назад
Отличное видео, но мне кажется, что не хватает хотя бы базового напоминания о производительности. На скролл можно повесить очень тяжёлую функцию с большой перерисовкой и сайт превратится в тыкву. В будущем видео отлично было бы затронуть эту тему
@goodman4493
@goodman4493 2 года назад
+ Сталкиваясь с этим вопрос все упускают важный момент - производительность. Добавляя допустим какой-нибудь цикл в обработчик scroll, означает, что каждый раз при скролле это будет запускаться очень много раз, тем самым влияя на производительность. И на это очень мало информации, и почему-то всеми игнорируется.
@vodoo8854
@vodoo8854 3 года назад
Здравствуйте! А когда будет Js, вроде хотели делать!? Отдельное спасибо за полезный и качественный контент!
@maxgraph
@maxgraph 3 года назад
Здравствуйте, делаю. Хочу сперва все сделать, потом выкладывать) Через месяц-два будет
@vodoo8854
@vodoo8854 3 года назад
@@maxgraph понял. Ждём) Спасибо
@konstantinkuznetsov4415
@konstantinkuznetsov4415 3 года назад
Спасибо за полезное видео. А как сделать, чтобы анимация срабатывала только один раз. То есть при повторном скроле просмотренного участка она не срабатывала?
@maxgraph
@maxgraph 3 года назад
Убрать else в условии, чтобы класс не удалился
@galievramil1169
@galievramil1169 Год назад
Классно
@mister_robot01
@mister_robot01 3 года назад
Может вы расскажете про библиотеку GSAP ? Например сделать какую то крутую анимацию с ним)
@maxgraph
@maxgraph 3 года назад
Расскажу
@lastchancehider
@lastchancehider 3 года назад
@@maxgraph лично я еще бы глянул примеры использования нативного js вместо gsap. Как в этом ролике, к примеру. (замена gsap scrollTrigger в 20ти минутном видео (: ) Контент топ, спасибо вам
@Maxim9575
@Maxim9575 3 года назад
А это хорошая идея для небольшого плагина :)
@user-cz7px1om1o
@user-cz7px1om1o 2 года назад
Это база для любого сайта.
@user-jh5pw6lv9k
@user-jh5pw6lv9k 2 года назад
хорошее, полезное видео. расскажи о горизонтальной анимации как в конце видео.
@maxgraph
@maxgraph 2 года назад
Спасибо
@_onesevenfive_
@_onesevenfive_ 3 года назад
Thanks a lot
@NotForSale49
@NotForSale49 9 месяцев назад
У функции, добавляющей класс animation-class есть очень интересный баг точнее это даже не баг, а просто особенность метода offsetTop. Если прописать position:relativе родительскому контейнеру, в котором содержатся элементы с классом scroll-item, то при попытке скролла им сразу присвоится animation. вот такие дела, вместо offsetTop можно вариант с getBoundingClientRect нарисовать.
@user-hw9iu6fe8x
@user-hw9iu6fe8x 3 месяца назад
Здравствуйте в двух проектах такой баг, не подскажите как исправить )
@NotForSale49
@NotForSale49 3 месяца назад
@@user-hw9iu6fe8x Я уже точно не помню, один из вариантов это использовать getBoundingClientRect, второй вариант это поменять стили, третий вариант взять offsetTop до нужного блока, потом получить его высоту и уже исходя из этой высоты прописывать анимацию при скроле для элементов.
@k0rsoYD
@k0rsoYD 2 года назад
хотелось бы послушать про Gsap, а точнее про ScrollTrigger и что-то тяжелее чем простые фишки
@maxgraph
@maxgraph 2 года назад
Уже есть кое что на канале
@user-hw9iu6fe8x
@user-hw9iu6fe8x 3 месяца назад
Максим здравствуйте, помогите решить проблему) анимация некоторых элементов не срабатывает. я так понимаю из за position relative у родителя. Это связанно offsetTop? как это исправить или чем заменить offsetTop?
@maxgraph
@maxgraph 3 месяца назад
Я бы посмотрел в сторону intersection observer
@dmitryg.9533
@dmitryg.9533 Год назад
не могу понять, а в чём разница анимации через keyframes или просто через транзишены? просто удобством ?
@maxgraph
@maxgraph Год назад
Кейфреймы можно вызывать без событий (наведение и тд)
@sweetknitt4259
@sweetknitt4259 2 года назад
снимите, пожалуйста, видео про анимацию при скролле на jquery. Анимацию сделала по вашему уроку, но она не работает в Таплинке.
@maxgraph
@maxgraph 2 года назад
Вряд ли на канале будет что-то по jq, извините)
@1Nurali
@1Nurali 2 года назад
вот бы gsap на этот канал. Чумовая штука
@maxgraph
@maxgraph 2 года назад
Есть уже несколько)
@user-vi8jd8fy9l
@user-vi8jd8fy9l 3 года назад
Здравствуйте, можно ли использовать этот код в react.js??
@Maxim9575
@Maxim9575 3 года назад
А почему нет?
@imeewiz516
@imeewiz516 Год назад
А как сделать, чтобы при загрузке страницы, анимация первого блока срабатывала автоматически? А то когда пользователь условно заходит на страницу сайта, необходимо проскролить немного вниз, чтобы началась анимация у объектов первого блока. Получается не очень красиво(
@maxgraph
@maxgraph Год назад
Можно вызвать анимацию не на скролл, а просто
@imeewiz516
@imeewiz516 Год назад
@@maxgraphточно, спасибо!
@user-vt1od4do5i
@user-vt1od4do5i 3 года назад
Видео интересное! Так держать! У меня тут один вопрос есть. У меня есть фиксированная шапка. Как сделать так, чтобы шапка исчезала при скролле вниз а когда вверх - появилась снова? Коды, которые находила в интернете, не работали😢 А я новичок и не понимаю в чём проблема
@maxgraph
@maxgraph 3 года назад
Прямо сегодня выйдет видео на эту тему))
@user-vt1od4do5i
@user-vt1od4do5i 3 года назад
@@maxgraph ❤️👍🤗
@denysmaksymuck
@denysmaksymuck 3 года назад
Что означает название переменой hero?
@maxgraph
@maxgraph 3 года назад
Так принято называть первый блок сайта
@DeadStiks
@DeadStiks 2 года назад
Так всё отлично и понятно, но вот часть функций не работает и всё тут. С margin на самом деле полезное решение, т.к. в стилях не всегда получается его прописать, особенно когда речь идёт об относительных величинах, которые могут меняться в зависимости от объёма контента. Но эта зараза не хочет выводить переменные значения, выводит лишь постоянные, типа '80px' или 'unset', а высчитывать что-то отказывается. Рад, что хоть с шапкой сайта проблем нет. )))
@maxgraph
@maxgraph 2 года назад
Не понял, что именно не работает))
@DeadStiks
@DeadStiks 2 года назад
@MaxGraph - cайты как страсть Вместо hero.style.marginTop = '${header.offsetHeight}px' сразу выводится значение hero.style.marginTop = '0px' и не реагирует на прокрутку. И с многозадачной анимацией элементов scrollItems проблемы - сразу присваивается элементам класс animation-class и не реагирует на скролл страницы. Хотя вполне возможно, что я где-то накосячил, но вроде всё раз 10 перепроверил ничего не нашёл. Либо у Wordpress есть какие-то особенности. Я не силён в JS от слова совсем. Только по урокам и остаётся хоть как-то разнообразие на сайт вносить. 😄
@maxgraph
@maxgraph 2 года назад
Где-то косячок в коде, не иначе)
@DeadStiks
@DeadStiks 2 года назад
@@maxgraph Ок. Понял. Спасибо. Значит буду дальше колупать код, есть смысл. ))
@DeadStiks
@DeadStiks 2 года назад
@MaxGraph - cайты как страсть Я явно чего-то не понимаю 😩 const paddingHeight = scrollItemsTop.offsetTop; //в консоле выводит 184px, прокрутка на значение не влияет - то, что нужно. scrollCont.style.paddingTop = '184px'; - пишешь так, всё работает. scrollCont.style.paddingTop = '${paddingHeight}px'; - а так не хочет, хотя разницы по идеи никакой нет. Так даже внутренний отступ в стиль блока не подгружает.😵‍💫 И здесь статически в CSS не задать, как писали в комментариях ниже, т.к. у каждой страницы это расстояние от верхнего края блока до верхней границы экрана будет своё и зависит от наполнения. Так, что отступы через JS штука нужная. 👍
@user-gp5cq8pp1o
@user-gp5cq8pp1o 3 года назад
Зачем в скрипте задавать маргин для отступа за навигацией? Не лучше ли будет сделать навигацию абсолютной и отступ задать заранее в стилях уже
@maxgraph
@maxgraph 3 года назад
Не лучше, а одно из решений
@user-gp5cq8pp1o
@user-gp5cq8pp1o 3 года назад
@@maxgraph ну как же Если все это будет прописываться из скрипта то нагрузка будет на много больше ежели прописывалось бы сразу же из стилей
@user-gp5cq8pp1o
@user-gp5cq8pp1o 3 года назад
@@maxgraph ну может я ошибаюсь, я совсем новичок можно сказать ахах
@user-pf1wb2nx8b
@user-pf1wb2nx8b 3 года назад
Это просто сделать. А как сделать анимацию объектов при скроллинге? Я имею ввиду такую анимацию: south-stream-transport.com
@maxgraph
@maxgraph 3 года назад
scrollTrigger в GSAP, видимо)
@user-pf1wb2nx8b
@user-pf1wb2nx8b 3 года назад
@@maxgraph А можно как-то по другому сделать, а то очень сложно таким способом понять.
@EvgenOl
@EvgenOl Год назад
Вот не пойму зачем так много писать и так долго на ванильном js если всё то-же самое на jq делается в 2 строки. Хотя наверное для урока и лучшего понимания материала оно и надо. Но для работы мало применимо, когда у тебя сроки и нет времени писать это всё каждый раз ради элементарных эффектов.
@maxgraph
@maxgraph Год назад
Jq - лишняя нагрузка, лишние килобайты
@EvgenOl
@EvgenOl Год назад
@@maxgraph ага, только килобайта перестали экономить лет 20 назад. Клиент всё равно попросит подключить пять пикселей, чат, капчу и прочую хрень. QJ от этого добра 1% займёт. А вот время разработки сокращает кратно.
@maxgraph
@maxgraph Год назад
Ничего подобного) как экономили, так и экономят
@EvgenOl
@EvgenOl Год назад
@@maxgraph у тебя ода жизнь. Чтобы сэкономить килобайт ты тратишь несколько минут жизни. Это невосполнимый ресурс. А браузер сэкономленный килобайт не заметит. JQ весит меньше чем фотка, что там экономить на спичках то? Лучше бы жизнь поэкономил. Но как знаешь...
@maxgraph
@maxgraph Год назад
А я то причём тут😀😀
Далее
GLUE A BROKEN CARDBOARD PLATE TOGETHER!#asmr
00:30
Просмотров 1,1 млн
Subtle, yet Beautiful Scroll Animations
5:04
Просмотров 1,5 млн