Как написать плавную веб-анимацию | ускоряем веб-анимацию | CSS + JS

Поділитися
Вставка
  • Опубліковано 25 січ 2025

КОМЕНТАРІ • 39

  • @deniskotov
    @deniskotov 2 роки тому +11

    Офигеть. Я в восторге. Это максимально полезное видео. Спасибо🙏💕

  • @michaelkamko
    @michaelkamko Рік тому +1

    Красавица и умничка❤))

  • @mind150
    @mind150 2 роки тому +1

    Кайф спасибо)))) Ждем какие-нибудь интересные кейсы анимаций, паттерны и что-то еще интересное!

  • @sergeys4732
    @sergeys4732 2 роки тому +5

    Было бы неплохо рассказать про composition, как происходит вынос на отдельный слой

  • @Максим-ъ4ъ3ж
    @Максим-ъ4ъ3ж 2 роки тому +3

    Класс 🤤

  • @kosha9951
    @kosha9951 2 роки тому +1

    Спасибо за видео! Сразу исправила в своем проекте анимацию)

  • @_Froger_
    @_Froger_ Рік тому

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

  • @gritsienkooleg3447
    @gritsienkooleg3447 2 роки тому

    Спасибо, полезнО!! Очень )

  • @space8143
    @space8143 2 роки тому

    Молодец. Полезная информация!

  • @Mike37373
    @Mike37373 2 роки тому

    у вас есть видео где display:none на чистом js анимируется ? при клике на чтото, появляется и исчезает квадратик например. в интернете есть подобное, но там если быстро нажимать плавность пропадает

  • @Владимир.П-е9о
    @Владимир.П-е9о 2 роки тому +1

    6:06 а это не совсем правда, все зависит от частоты развертки монитора и установок браузера. В хроме, например, на 144Гц мониторе так и будет 144 кадра в секунду, а следовательно функция raf тоже выполняется 144 раза. Это стоит учитывать, если скорость анимации зависит от числа прошедших кадров.
    10:34 понимаю, что background-color просто для примера, но просто замечу, что все его задачи решаются через анимацию opacity какого-то отдельного дива залитым цветом. Кстати даже box-shadow через opacity будет круче, но при условии, что таких элементов на странице будет мало, а то даже невидимые элементы с box-shadow потребляют ресурсы.
    13:37 про will-change, его лучше все таки использовать только в том случае, если действительно наблюдается на бенчмарках повышение производительности, иначе неправильное его использование сделает только хуже. Например, чтобы правильно его использовать, нужно добавлять это свойство не изначально, а за некоторое время до старта анимации (например, по ховеру, если анимация будет после клика. На тачах нет ховера, просто как пример), когда уверены, что анимация конкретного одного элемента точно будет. Если добавить по умолчанию, есть риск, что таких элементов будет много, да и браузер зря выделит ресурсы элементу, который не факт что будет анимироваться (про это вы добавили в конце).
    Я не придираюсь, просто решил дополнить :) Вы очень крутую тему поднимаете, спасибо большое! Очень мало фронтендеров заморачиваются по поводу плавности анимации, вешают transition: width и в путь. Анимации в вебе очень крутая задача для мозга, когда нужно с одной лишь парой transform+opacity реализовать сложные переходы.
    Привет от почти уже бывшего яндексоида бывшему яндексоиду :)

    • @webelart
      @webelart  2 роки тому +1

      1. По первому, что скажете относительно показателя fps в браузере у которого максимальное значение 60 кадров? Выше ни разу не видела. Следовательно и частота кадров в браузере не может превышать это значение. Либо вы не про браузер?
      2. Opacity классное свойство. Но background-color тоже иногда нужен, как вы через opacity цвет с красного на зелёный поменяете?
      3. Да will-change лучше использовать когда действительно активная анимация. Однако ваши примеры, что добавлять после клика, здесь вопрос почему? И есть ли доказательства из практики как влияло и как помогло?
      Привет, привет!! 😘

    • @Владимир.П-е9о
      @Владимир.П-е9о 2 роки тому

      @@webelart
      1) Решил перепроверить себя, и вот пруф) У меня 144Гц habrastorage.org/webt/rm/9z/ov/rm9zovbaa-0029ag9fl-erhknx4.png скрин сделан в хроме на винде, но на маке в хроме такой же результат я получал. Вот не уверен про сафари, надо будет проверить после отпуска.
      2) Во, собрал демку codepen.io/VladIT4/pen/bGLEOpx визуально разницы нет, т.к. тот же самый принцип интерполяции цвета. Но если цветов больше чем 2, будут сложности. Есть недостаток - дополнительный элемент, об этом надо помнить, если кнопок с такой анимацией много на странице.
      3) Наверное, примеров из практики у меня нет, мне ни разу не удалось его правильно заставить работать. И даже хуже, мои тезисы основаны на спецификации drafts.csswg.org/css-will-change/#give-time которая не факт что отражает действительное поведение в браузерах. т.е. я клоню к тому, что это свойство как черный ящик с некоторыми теоретическими рекомендациями, которые могут не работать в разных браузерах. Поэтому, если и использовать его, то после честного бенчмарка. Но если повесть его всего на один элемент на странице, думаю не страшно.

    • @webelart
      @webelart  2 роки тому +1

      @@Владимир.П-е9о
      1. Офигеть, я даже не знаю где на маке эти гц увидеть в основных настройках только базовая информация. Ну и процессор M1 у меня. Про то, что может быть 144гц для меня это новое.
      2. В демке вы по факту кладёте два элемента один с основным цветом, другой псевдо и сменяете. Мне нравится как анимация с opacity выглядит, даже взглядом заметно. Но да я поняла, не везде это можно сделать + даже если текст можно продублировать (допустим кнопка, то с иконками будет сложнее.) В общем интересный подход. Спасибо!
      По третьему - ок.

    • @webelart
      @webelart  2 роки тому +1

      ​@@Владимир.П-е9о Интересная тема ещё сколько кадров может воспринять человеческий глаз. И если даже комп позволяет больше, то нужно ли это.. Есть пороги что 48 кадров более чем достаточно. Однако есть индивидуальные особенности зрения и максимумы с кадрами это где-то 100-150, но даже сложно представить сколько там деталей будет в этой анимации и действительно ли нужно к этому стремиться... Хотелось бы посмотреть сравнение 24, 60, 100 каких нибудь примеров.
      Взять пример для сравнения, 24 и 60 довольно круто уже.
      ua-cam.com/video/9hVEaW0yHiw/v-deo.html
      На фильме и кол-ве деталей у меня даже голова кружится начинает :D

    • @Владимир.П-е9о
      @Владимир.П-е9о 2 роки тому

      @@webelart
      1) А нужно, чтобы монитор поддерживал выше частоту развертки. Вот скрин с моими мониторами, слева от ноутбука, справа внешний habrastorage.org/webt/82/td/nb/82tdnbh5zpaoe66d8llyfozint8.png монитор ноутбука только 60Гц рисует.
      2) А там даже с иконками ок, при условии что подложка будет позади иконки svg. Если иконка фоном у кнопки, то да, придется еще элемент создавать для иконки. Способ не беспроблемный, это правда. Не всегда нужно заморачиваться.

  • @dimape.4180
    @dimape.4180 Рік тому

    Спасибо!

  • @egoist2956
    @egoist2956 2 роки тому +1

    Лайк!

  • @СергейСульженко-ф9я

    Спасибо, очень познавательно

  • @СергейМаркелов-м7м
    @СергейМаркелов-м7м 2 роки тому +1

    А подскажи, пожалуйста, правда ли, что при анимации через js лучше анимировать значение css переменной, чем непосредственно element.style.property = `${value}` ?

    • @webelart
      @webelart  2 роки тому

      css переменный - это те которые используются непосредственно в css файле? Ого, мне кажется я только с вашим комментарием узнала, что можно изменять через js css переменные. Выглядит интересно. Но ответить не смогу на вопрос. Текущие анимации пишу с изменением element.style.property. Ваше предложение нужно тестировать :))

    • @Goodbish
      @Goodbish 2 роки тому

      @@webelart Насколько я знаю, через js менять правила css нельзя. Через js можно давать новые свойства, вставляя в сам элемент или вставлять в элемент класс с нужными свойствами. Обычно всегда можно обойтись этими путями

  • @hairy_nose
    @hairy_nose 2 роки тому +4

    Жаль не было примеров(

    • @webelart
      @webelart  2 роки тому +1

      Какие примеры были бы интересны для текущего видео?

    • @ПавелМинич
      @ПавелМинич 2 роки тому +1

      @@webelart Например, наглядно показать разницу в производительности при использовании разных способов анимации. Спасибо за полезный контент!

  • @AlekseyNaumov_734
    @AlekseyNaumov_734 2 роки тому +1

    В мультипликации используют 12 картинок в секунду. Просто каждую картинку повторяют 2 раза.

  • @AlexandraKapit
    @AlexandraKapit 2 роки тому

    Cпасибо, за хаки с GPU!

  • @ЕгорГречкинг
    @ЕгорГречкинг 2 роки тому +1

    Хороший канал. Кажется у вас раньше был другой. Вроде смотрел там ролики про git на несколько часов, а может мне кажется.

    • @webelart
      @webelart  2 роки тому

      Спасибо! Это мой первый канал на ютубе, про git точно не я рассказывала :)

  • @nikitasafonkin3077
    @nikitasafonkin3077 2 роки тому +1

    нехватка ссылки на бесплатную скачку книги )

    • @webelart
      @webelart  2 роки тому +2

      Любой труд всегда лучше оплачивать. Это как обмен энергией. ❤️ Вы же любите за свою работу деньги получать? 😉 Ссылка на книгу на Амазоне goo.su/bkPH, там же есть и веб-версия. Относительно России и русского варианта книги, погуглите. С англ версией проще, в Гугл книжках можно купить, погуглите в общем.

  • @agilkerimov
    @agilkerimov 2 роки тому

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

    • @webelart
      @webelart  2 роки тому +1

      Следующее видео я выпускала с большим кол-вом практики ua-cam.com/video/DZynQ-QYSJU/v-deo.html ❤️

    • @agilkerimov
      @agilkerimov 2 роки тому

      @@webelart отлично, спасибо за отклик. Так правда интересно и материалы усваиваются на порядок лучше. Удачи.