Адаптивная masonry сетка на чистом JS | HTML, CSS, JS

Поделиться
HTML-код
  • Опубликовано: 3 авг 2024
  • В текущем примере создадим masonry сетку с динамическим контентом на чистом JavaScript.
    🍀 Поддержать канал: www.donationalerts.com/r/webe...
    ☕️ Купить кофе: buy.stripe.com/5kA7sL9574SG7x...
    🎨 Купить набор кистей Procreate: webelart.com/illustration.
    ✍️ Мой telegram channel: t.me/webelart
    🏰 Английский RUclips: @webelart_en
    💁🏼‍♀️ Инстаграм: / webelart
    🦄 LinkedIn: / webelart
    ❤️ Демо + исходники: webelart.com/lessons/masonry_...
    ❤️ Патреон: / webelart
    00:00 введение.
    01:14 уроки и patreon.
    01:55 разбираем html.
    05:53 разбираем css.
    14:57 разбираем js.
    33:57 фиксим багу.
    35:24 заключение.
    ССЫЛКИ
    - Статья про загрузку шрифтов: css-tricks.com/how-to-load-fo...
    На канале я рассматриваю различные темы веб-разработки, на текущий момент: веб-основы, веб-анимации, веб-дизайн.

Комментарии • 30

  • @ArabicLang.online
    @ArabicLang.online 2 года назад

    Елена, урок супер! Спасибо огромное! Не хотел использовать громоздкую библиотеку, а у Вас всё лаконично и самое необходимое.

  • @user-xy5vm6rv5r
    @user-xy5vm6rv5r Год назад

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

  • @mrhawking
    @mrhawking 8 месяцев назад

    Это то, что я искала, спасибо!!!!

  • @theoty-js
    @theoty-js 2 года назад +2

    Всем советую смотреть уроки от Елены!

    • @webelart
      @webelart  2 года назад

      Спасибо! ❤️

  • @Tavda
    @Tavda 2 года назад

    У нас в городе первая волна начиналась 13 июля 2020 года. А 4 октября главврач ЦРБ жаловалась, что у нас что-то много заболевших за последнюю неделю и они не понимают почему.

  • @sergeys4732
    @sergeys4732 2 года назад

    По поводу транзишена, там где ресайз метод в сеттаймаут нужно ставить время такое же как указано в транзишене, то есть не 100 мс, а 300

    • @webelart
      @webelart  2 года назад +1

      Если вы про debounce в событии resize, то 100мс не связаны с transition, поэтому нет необходимости указывать 300мс. По факту событие resize вызывается огромное количество раз, debounce делает так, чтобы если мы остановились по умолчанию на 100мс, то она сработает и вызовется перестройка, а в ней уже сработает transition.
      Это на практике очень хорошо видно если поставить побольше времени например 1000ms, со 100ms сложнее, т.к. любая небольшая задержка уже отрабатывает (мне кстати это нравится с практической стороны) :) Но если поставить допустим 1000мс и вертеть быстро браузером вызывая resize, то контент вообще не перестраивается и не меняется, оставаясь на тех же местах, как только мы отпускаем окно браузера, после задержки time происходит перестройка.

    • @sergeys4732
      @sergeys4732 2 года назад

      Так анимация сдвига элементов ещё не завершена к моменту останова ресайза окна, и функция setParameters как раз вызывается со старыми параметрами

    • @webelart
      @webelart  2 года назад

      ​@@sergeys4732 Насколько я поняла, вас беспокоит ситуация, когда допустим идёт анимация элементов 300мс, и мы за это время успели отресайзить остановить и ещё раз ресайзить. В целом если бы в коде были зависимости от прошлых позиций, то возможно это могло бы заафектиться.
      Но ширины высчитываются от ширины родительского элемента у него нет transition на ширину (и это актуальный параметр containerWidth(this.containerNode.offsetWidth)), высоты уже после ширин, и определяются новые позиции исходя из настроек и новых ширин, которые также рассчитываются от containerWidth. Т.е. никаких конфликтов с прошлыми значениями. Даже если анимация позиции прошлой не завершена, будет задана новая и элементы полетят в новых направлениях.
      Если ещё чувствуете конфликт, уточните, какой параметр смутил?

    • @sergeys4732
      @sergeys4732 2 года назад

      @@webelart с таким объяснением перестал чувствовать ))

  • @delosait
    @delosait Год назад

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

    • @webelart
      @webelart  Год назад

      Его можно просто удалить, где google.fonts загрузка и заиспользовать что-то другое. Например, arial или другой шрифт

    • @delosait
      @delosait Год назад

      @@webelart Лена, спасибо Вам огромное. Не получалось еще и потому что и в JS файле нужно было название шрифта сменить.

    • @webelart
      @webelart  Год назад

      @@delosait Давайте, я в вас верю!

  • @PS-tn6mc
    @PS-tn6mc 3 года назад

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

    • @webelart
      @webelart  3 года назад +2

      Сильна сделать, но это доп. услуга и подписка с колокольчиком мне никакой выгоды не даёт. 🙃 Я пока не зарабатываю с RUclips и снимаю ролики по своему намерению и вдохновению. Скоро на моём сайте появятся курсы и возможно доп. услуги по помощи, конечно за плату. Поэтому следите за новостями. 😘

    • @PS-tn6mc
      @PS-tn6mc 3 года назад

      @@webelart Вы молодец

    • @webelart
      @webelart  3 года назад

      @@PS-tn6mc Спасибо! ❤️

    • @PS-tn6mc
      @PS-tn6mc 3 года назад

      @@webelart У Вас все задатки успешного учителя 🚸

    • @webelart
      @webelart  3 года назад

      @@PS-tn6mc Вы меня захвалили, спасибо! ❤️

  • @sergeys4732
    @sergeys4732 2 года назад

    А в чем проблема задать высоту 75% вместо padding-bottom, ведь она берется от высоты родителя, то есть основного контейнера для карточки?

    • @webelart
      @webelart  2 года назад

      А на практике проверяли? Уверены, что работает? :)

    • @webelart
      @webelart  2 года назад +1

      По факту высота там немного странно исчисляется, если конкретная высота у родителя задана, то должно работать. Но такие динамические карточки поддерживаться не будут. Можете здесь ещё подробнее почитать stackoverflow.com/questions/5657964/css-why-doesn-t-percentage-height-work

    • @sergeys4732
      @sergeys4732 2 года назад

      @@webelart да спасибо, прочитал)

  • @joelfuertes2656
    @joelfuertes2656 3 года назад

    How did you learn to do this?

    • @webelart
      @webelart  3 года назад +2

      Just 10 years of web development experience. 😊

  • @drevitsky
    @drevitsky 2 года назад

    Херня! Написала что на чистом js а сама подключила библиотеку

    • @webelart
      @webelart  2 года назад

      Какую? Вы точно видео смотрели? Внутри библиотек нет, даже gulp для сборки не использовала.