Создание крутого 3D сайта с анимацией прокрутки (HTML CSS JavaScript)

Поділитися
Вставка
  • Опубліковано 27 чер 2024
  • Все курсы в одном комплекте: wd-m.ru/bundle
    Создание сайта от А до Я: wd-m.ru/createsite
    В этом уроке мы рассмотрим создание сайта с потрясающей 3D анимацией скролла, используя возможности современного HTML, CSS и JavaScript. Мы разработаем модель движения слайдов в глубину, поработаем над кастомной анимацией, плавностью, красиво оформим композицию с помощью CSS, а также поработаем с аудио и видео контентом на странице.
    Страница урока (результат, исходники): webdesign-master.ru/blog/html...
    Таймкоды:
    00:00 Начало урока
    00:39 Обзор материалов урока
    04:18 Подготовка к верстке сайта
    05:25 Базовая HTML разметка и CSS стилизация
    08:31 Подключение и настройка шрифтов
    11:09 Стилизация контейнера и фреймов
    13:56 Пишем движок 3D скролла на JavaScript
    25:23 CSS анимация cubic-bezier
    27:26 Антиалиасинг через transform-style
    27:50 Верстка контента
    29:46 Верстка изображений
    35:18 Верстка видео (горизонтальный контент)
    38:13 Умный перенос min-content
    39:11 Оформление видео
    41:35 Расстояние между фреймами
    42:02 Верстка заголовков и текста
    44:09 Верстка остального контента
    48:52 Работа с аудио на странице
    56:30 Что ещё изучить?
    ВКонтакте: jediweb
    Телеграм: t.me/jediweb
    Дзен: dzen.ru/jediweb

КОМЕНТАРІ • 115

  • @wdm
    @wdm  8 днів тому +1

    💥 Все курсы в одном комплекте 👇👇👇
    webdesign-master.ru/bundle_courses

  • @user-rr1ju1ck2u
    @user-rr1ju1ck2u Рік тому +10

    Побольше бы, таких уроков, со сложной анимацией, скроллом и так далее. Спасибо

  • @verbs-otier-ru
    @verbs-otier-ru 2 роки тому +9

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

  • @igorsenichev3779
    @igorsenichev3779 2 роки тому +8

    Шикарный урок! 👍👏💪
    Огромнейшее спасибо 🙏
    Больше таких сногсшибательных уроков!!!! 😇🥳

  • @user-kh7fv5rn1g
    @user-kh7fv5rn1g 2 роки тому +16

    Вы и так для верстальщиков - номер 1‼️ и каждым новым видео, эта ступень все выше и выше! Супер!

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

    просто космос!!! Очень красиво. Спасибо за урок

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

    Круто👍👍🔥. Ждём продолжения вёрстки коммерческого сайта

  • @riticnergy7174
    @riticnergy7174 Рік тому +2

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

  • @au7219
    @au7219 2 роки тому +3

    Я сам сисадмин! Впервые понравился подача урока! Автор делай еще!
    Поставил лайк и подписался! Колокольчик включил!

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

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

  • @user-sp9nw4bd5z
    @user-sp9nw4bd5z Рік тому

    Это очень круто! Давно искала нечто подобное, спасибо огромное за такой подробный урок!

  • @kirill-eremin
    @kirill-eremin Рік тому

    Очень красиво и просто! Класс! Спасибо за урок ❤

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

    Спасибо Вас за Урок! Познавательно! Настоящий Необычный САЙТ!

  • @user-jk4fv5qm7g
    @user-jk4fv5qm7g 2 роки тому +2

    Ты красавчик!! Реально круто выглядит! Спасибо тебе!)

  • @fain.5700
    @fain.5700 2 роки тому +15

    Просто нет слов, спасибо что существуют такие туториалы

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

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

  • @refbelholodserviceminsk8410
    @refbelholodserviceminsk8410 2 роки тому +3

    Cпасибо Вам огромное! Это бесценные, знания

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

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

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

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

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

    Очень здорово! Спасибо за видео!

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

    топ контент!! буду по ночам заниматься))

  • @Mistrdoro
    @Mistrdoro 2 роки тому +9

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

  • @makssokolov130
    @makssokolov130 11 місяців тому +1

    Это лучшее что я видел как и все твои видео

  • @FifaKisaKittens
    @FifaKisaKittens 2 роки тому +39

    ООО.... Это уроки которые ЖДАЛ ВЕСЬ ЮТУБ!!!! Это те штуки, которые ты обещал 4 года назад!!! Когда говорил про следующий джедай!!! Именно этого мы ждали!!! Именно про это ты говорил, про классные крутые ништяки, которые делаются с Гренсокс!!!
    Алексей - ты Супер!!! Спасибо тебе друг!!! Я думаю, что только ТЫ ОДИН - ДВИЖЕШЬ РУССКИМ ВЕБМАСТЕРИНГОМ!!! Ну или процентов на 90!!!!! Мое глубочайшее убеждение.... А я могу про это рассуждать... Я с тобой уже 7 лет!!!!!!!!!!!!!!!!!!!!!!!
    И лучше тебя нет никого в отечественном нете!!!!

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

      А что за гренсокс?

    • @FifaKisaKittens
      @FifaKisaKittens 2 роки тому +3

      @@bitrix34 Библиотека анимаций ТвинМакс

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

      Не преувеличивайте, каждый крут по своему... В этом и фишка

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

      @@draftermyself Не будем спорить! Я озвучил свое мнение... Всем удачи в делах!!!

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

    Очень круто!

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

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

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

    Рідко пишу коменти, але ти того вартий, красава)

  • @user-cu5qy1gj3i
    @user-cu5qy1gj3i 2 роки тому

    Шикарно!!!

  • @user-so2be4rp7d
    @user-so2be4rp7d Рік тому

    Круто!!!! Супер урок!!!

  • @user-jv4px9cu3e
    @user-jv4px9cu3e 2 роки тому +3

    спасибо бро!запиши ещё про пиксель перфект ролик, не бросай это дело, побольше верстки богу верстки:))

  • @PIXELSCYBERCAT
    @PIXELSCYBERCAT 5 місяців тому

    Сколько лет смотрю и только сейчас заметил что не подписан,один из самых полезных каналов для меня

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

    Подписка лайк колокольчик поделиться с друзьями
    никогда не думал что я когда нибудь это сделаю, но это видео того заслужило

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

    Самые крутые уроки. Я пользуюсь твоей темой винтерцмс

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

    i don't understand russian but still managed to complete it with subtitles...........thx for this amazing content bro

  • @mava_20
    @mava_20 7 місяців тому +1

    Такой видео-урок заслуживает 1млн просмотров

  • @patriklovkach
    @patriklovkach 2 роки тому +8

    Кто хочет чтобы с блоками frame можно было взаимодействовать, то пропишите вот этот код в блоке forEach
    if (opacity == 0) {
    setTimeout(() => {
    frame.style.visibility = 'collapse'
    }, 300)
    } else if(opacity == 1) {
    setTimeout(() => {
    frame.style.visibility = 'visible'
    }, 300)
    }

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

      Спасибо огромное )))

    • @user-tf4pr2lt1g
      @user-tf4pr2lt1g Рік тому

      Чувак, ты гений, спасибо огромное

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

    Супер!

  • @user-tx2ym7iq5u
    @user-tx2ym7iq5u 2 роки тому +1

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

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

    фига так круто выглядит 👍👍👍👍

  • @irynav-n6370
    @irynav-n6370 Рік тому +1

    Дякую! Неймовірно красиво і зрозуміло! Підписалась, лайк і дзвіночок! 🥰

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

    Оо господи как круто ! )

  • @BaDBoY-rt2jo
    @BaDBoY-rt2jo 2 роки тому

    Классно , спасибо

  • @basketball_bro
    @basketball_bro 11 місяців тому +1

    ты лучший бро!!!

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

    Amazing job

  • @user-xd7vj5cf9f
    @user-xd7vj5cf9f 2 роки тому +1

    супер..отличное решение

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

    Merci beaucoup !!!

  • @user-dp8xc9tx8n
    @user-dp8xc9tx8n 10 місяців тому +1

    отличный урок

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

    Смотрю Вас капец как радуете, будем делать !! Ах и еще спросить хотел, где порог ребят когда самостоятельно чтоб не повторять за кем то можно будет делать крутой проект ? А то я уже пол года в движухе знаю html, css, js basic и вот что надо чтобы самому без копипаста раскидать свой проект ?

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

    Добрый день спасибо за видос очень крутая подача побольше бы таких видео 🐻‍❄

  • @marchwebTec
    @marchwebTec 9 місяців тому +1

    you are incredible!!!!

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

    Афигеть!

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

    ааааа, красатэ

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

    Ждал больше месяца) круто спасибо... я попробую сделать задний фон и что бы углубление было на заднем фоне при прокрутке

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

      Крутая идея!)

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

    красиво сделано! небольшой апгрейд движка, чтобы при скролле zVals ограничивался только фактическим числом слайдов, иначе массив растет в геометрической прогрессии и будет есть много памяти
    в функцию скролла перед циклом добавить zVals = zVals.slice(0, frames.length);

  • @sweetmilk-shake4238
    @sweetmilk-shake4238 2 роки тому

    Лучший

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

    Это сильно.

  • @user-sv1ze9gk3b
    @user-sv1ze9gk3b 2 роки тому +1

    Wow!

  • @user-cp4wf4xy1g
    @user-cp4wf4xy1g Рік тому

    Чёртов гений

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

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

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

    🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥

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

    awesome

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

    Привет, хотел спросить, а делаются ли сейчас сайты просто на css, html, js, php просто в редакторе, без штук по типу вордпресса или каких-то конструкторов?
    Только начал изучать веб и просто не понятно это немного

  • @user-gg1fn1yh3e
    @user-gg1fn1yh3e 2 роки тому

    💣💣💣💣💣

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

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

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

    Здравствуйте, у меня вопрос. Как сделать что бы не было видно текс и картинки позади текущего текста?

  • @makson7151
    @makson7151 8 місяців тому

    Здравствуйте, подскажите пожалуйста, как лучше реализовать слайды с hover эффектом вместот фото и видео материалов? Буду очень благодарен за информацию

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

    А получится ли если добавить 3 д модели() в место фотографий , видео

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

      Да без проблем, думаю если вставить во фреймы подготовленные 3D модели, будет очень круто смотреться.

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

    итс амазинг кул бро

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

    Как заказать у Вас сайт?

  • @user-tx2ym7iq5u
    @user-tx2ym7iq5u Рік тому

    Подскажите пожалуйста, в Вашем видео​ скролл происходит при прокрутки колесика мышки от себя, а как изменить, сделать скролл при прокрутки колесика мышки на себя? Обычно скролят вращая колёсико на себя.

    • @user-tx2ym7iq5u
      @user-tx2ym7iq5u Рік тому

      Извиняюсь, что то не доглядел - скролл работает штатно, всё замечательно. Осталось понять как увеличить количество слайдов. У меня нужно показывать тридцать слайдов, а показывается только десять.

    • @user-tx2ym7iq5u
      @user-tx2ym7iq5u Рік тому +2

      Нашел, то что искал. Что бы увеличить количество обрабатываемых слайдов слайдов требуется увеличить значение переменной --depth: 8000px;

  • @amvfromken6645
    @amvfromken6645 11 місяців тому

    а что за редактор видео использован?

    • @wdm
      @wdm  11 місяців тому +1

      Для подготовки видео в этом уроке и базовой цветокоррекции использовали Premiere Pro.

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

    Добрый день, урок супер. Интерисует лишь один вопрос, как убрать вертикальный скролинг. Открыл ваш пример но он все равно присудствует

    • @wdm
      @wdm  2 роки тому +3

      body {
      scrollbar-width: none; /* Firefox */
      }
      body::-webkit-scrollbar {
      display: none; /* Safari and Chrome */
      }

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

      @@wdm Спасибо

  • @amvfromken6645
    @amvfromken6645 7 місяців тому

    Кто знает, резиновая вёрстка работает на список меню?

    • @wdm
      @wdm  7 місяців тому +1

      Здравствуйте. Да без проблем. Но чаще всего, мобильное меню верстается через медиа запросы. Хотя, резиновость тоже может использоваться, зависит от кейса.

    • @amvfromken6645
      @amvfromken6645 7 місяців тому +1

      @@wdm понял спасибо

  • @user-cm6op9ev6r
    @user-cm6op9ev6r Рік тому

    Очень круто получилось !!!

  • @first.cerberus8118
    @first.cerberus8118 2 роки тому +1

    круто! только я очень ленивый!

  • @_-_-beast-_7207
    @_-_-beast-_7207 Рік тому

    Очень интересный видио ролик), а как сделать чтобы скролл работал только в одном контейнере? Чтобы был контейнер который не крутится а следом этот которы с такой анимацией?

    • @wdm
      @wdm  Рік тому +3

      Попробуйте использовать GSAP ScrollTriger и стартуйте эту анимацию, когда сайт будет доскроллен до нужной секции) Или можно самостоятельно вычислить текущий отступ сверху и запустить скрипт.

  • @amvfromken6645
    @amvfromken6645 9 місяців тому

    такой вопрос я в frame поместил ссылку, как сделать, чтобы она заработала, уже всю голову изломал z-index и обработчик события на js не помогает, может кто знает

    • @wdm
      @wdm  9 місяців тому +2

      Здравствуйте.
      Найдите frames.forEach(function(n, i) {
      В перечислении let после очередной запятой добавьте
      pointer = zVals[i] < Math.abs(zSpacing) / 1.8 ? 'inherit' : 'none'
      Здесь мы определяем pointer, если за экраном, то 'none', если в поле видимости, то 'inherit'
      Далее нам необходимо определить pointerEvents свойство для фреймов. Нужно перез закрывающей фигурной скобкой добавить:
      frame.style.pointerEvents = `${pointer}`
      В итоге получится такая функция:
      frames.forEach(function(n, i) {
      zVals.push((i * zSpacing) + zSpacing)
      zVals[i] += delta * -5.5
      let frame = frames[i],
      transform = `translateZ(${zVals[i]}px)`,
      opacity = zVals[i] < Math.abs(zSpacing) / 1.8 ? 1 : 0,
      pointer = zVals[i] < Math.abs(zSpacing) / 1.8 ? 'inherit' : 'none'
      frame.setAttribute('style', `transform: ${transform}; opacity: ${opacity}`)
      frame.style.pointerEvents = `${pointer}`
      })

    • @amvfromken6645
      @amvfromken6645 9 місяців тому

      спасибо, попробую, позже напишу результат@@wdm

    • @amvfromken6645
      @amvfromken6645 9 місяців тому +1

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

  • @laura.hofmann
    @laura.hofmann 7 місяців тому +1

    The tutorial is amazing! I know tried that I can klick on a play button that the video plays. Unfortunately I can't interact with video. Can you maybe help me? :)

    • @wdm
      @wdm  7 місяців тому +1

      Здравствуйте.
      Найдите frames.forEach(function(n, i) {
      В перечислении let после очередной запятой добавьте
      pointer = zVals[i] < Math.abs(zSpacing) / 1.8 ? 'inherit' : 'none'
      Здесь мы определяем pointer, если за экраном, то 'none', если в поле видимости, то 'inherit'
      Далее нам необходимо определить pointerEvents свойство для фреймов. Нужно перез закрывающей фигурной скобкой добавить:
      frame.style.pointerEvents = `${pointer}`
      В итоге получится такая функция:
      frames.forEach(function(n, i) {
      zVals.push((i * zSpacing) + zSpacing)
      zVals[i] += delta * -5.5
      let frame = frames[i],
      transform = `translateZ(${zVals[i]}px)`,
      opacity = zVals[i] < Math.abs(zSpacing) / 1.8 ? 1 : 0,
      pointer = zVals[i] < Math.abs(zSpacing) / 1.8 ? 'inherit' : 'none'
      frame.setAttribute('style', `transform: ${transform}; opacity: ${opacity}`)
      frame.style.pointerEvents = `${pointer}`
      })

    • @laurahofmann3356
      @laurahofmann3356 7 місяців тому

      Thank you very much - it was incredibly helpful. @@wdm

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

    А что за тема у тебя в редакторе ?

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

      Atom one dark вроде бы

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

      One Dark Pro

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

    как при такой анимации добавить рабочую кнопку? добавил в «text_right” кнопку, но она не работает

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

      Поищите ответ в комментариях, я отвечал на подобный вопрос. Нужно поработать над свойством display, когда фрейм уходит из поля видимости (opacity).

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

      @@wdm Нашёл, благодарю. Но не могли бы вы немного проще описать процедуру? style.display: none присваивается $frames?

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

      @@ilinoys3555 if (opacity == 0) {
      setTimeout(() => {
      frame.style.display = 'none'
      }, 300)
      } else {
      setTimeout(() => {
      frame.style.display = 'flex'
      }, 300)
      }
      попробуй что нибудь тип такого

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

      @@ilinoys3555 sorry, if (opacity == 0) {
      setTimeout(() => {
      frame.style.visibility = 'collapse'
      }, 300)
      } else if(opacity == 1) {
      setTimeout(() => {
      frame.style.visibility = 'visible'
      }, 300)
      },
      этот код должен работать

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

    Сколько нужно лет практики, чтоб так уверенно все реализовывать?

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

      Вряд ли вам кто-то даст однозначный ответ на этот вопрос. Всё зависит от времени, желания, действий. В серднем - от года.

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

      Можно за год многого добиться, а можно за 5 лет на том же месте остаться)))

  • @user-gr7hb2ko9m
    @user-gr7hb2ko9m 2 роки тому

    какой механизм расчета глубины --depth ?

    • @user-mw7fm4ec5p
      @user-mw7fm4ec5p 2 роки тому

      Фактически, depth - высота body, то есть - блока, который мы прокручиваем. Чем больше depth - тем дальше (глубже) мы можем скролить.
      Зависит от количества фреймов и расстояния между ними

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

    I love his work but can't understand Russian 😭

  • @ninja-lq4df
    @ninja-lq4df 2 роки тому

    А сколько вам лет?)

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

    Привет. Захожу в Ютуб пролистываю и вижу такой классный видос зашёл и сразу же подписался. Спасибо за классный видос причём полезный и нужный