КАК сделать плавающую/прилипающую шапку (или меню)?

Поделиться
HTML-код
  • Опубликовано: 13 май 2020
  • При вёрстке сайтов очень часто приходится делать шапку или блок с навигацией (меню), который при скролле остаётся в зоне видимости. Такое поведение называют по-разному: плавающая шапка, прилипающая шапка (и то же самое про другие элементы - плавающее/прилипающее меню). Иногда эта шапка изначально прибита к верхней границе экрана, а иногда бывает так, что нужный блок идёт вторым или третьим по счёту.
    В этом видео я покажу несколько вариантов того, как это можно реализовать, а так же, покажу какие бывают подводные камни и как их обойти.
    Мы рассмотрим реализацию с помощью position: sticky, а так же с помощью position: fixed. Ну и нам понадобиться немножко JavaScript. Я буду использовать jQuery, потому что на нём продемонстрировать буду проще и быстрее, но при желании это можно будет написать и на чистом JS, логика останется такой же.
    =======================================
    Записаться на консультацию:
    prosto-razrabotka.ru/
    Стать спонсором канала:
    / @prosto_razrabotka
    =======================================
    Telegram
    Канал - t.me/prostorazrabotka
    Чат - t.me/prostorazrabotkachat
    =======================================
    Подписывайтесь в соц. сетях:
    Facebook - / vitaliy.kirenkov
    VKontakte - vitaliy.kirenkov
    LinkedIn - / kirenkov
    Twitter - / vitaliykirenkov
    Instagram - / vitaliy.kirenkov
    =======================================
    Мой второй канал:
    / @ladevega
    =======================================
    • КАК сделать плавающую/...
    Привет, меня зовут Виталий Киренков, и я занимаюсь веб-разработкой с 2007 года. За это время я сверстал более 200 сайтов (как минимум, половина из них с JavaScript), разработал с коллегами 2 интернет-банка на React + Redux + Typescript. И на этом канале я делюсь своим опытом в части вёрстки, javascript, и делаю всякие полезные видео для новичков и не только.
    Больше информации обо мне: kirenkov.me/

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

  • @prosto_razrabotka
    @prosto_razrabotka  3 года назад +1

    😎 Получить исходники и другие преимущества - boosty.to/prostorazrabotka
    ❓ Запись на консультацию - prosto-razrabotka.ru/
    ✨ Telegram канал - t.me/prostorazrabotka/
    🔥 Telegram чат - t.me/prostorazrabotkachat/
    Можете добавиться в друзья:
    📷 Instagram - instagram.com/vitaliy.kirenkov/
    📘 ВКонтакте - vk.com/vitaliy.kirenkov/
    📗 Facebook - facebook.com/vitaliy.kirenkov/
    📙 LinkedIn - www.linkedin.com/in/kirenkov/
    ✏️ Twitter - twitter.com/VitaliyKirenkov/
    А так же, подписаться на страницы:
    📘 ВКонтакте - vk.com/public195137161/
    📗 Facebook - facebook.com/prostorazrabotka/

  • @user-nn7so9gv7y
    @user-nn7so9gv7y 4 года назад +1

    Хорошее видео. Когда начал верстать, возникало (да и сейчас возникает) много затыков, которые не знал как разрулить чистым CSS. А на JS эти проблемы решаются легко, просто, а главное - логично и понятно. Спасибо за видео! JavaScript - это мощь и сила!

  • @ThisFrontend
    @ThisFrontend 4 года назад +5

    Очень полезное видео, спасибо за работу 👍 как всегда лайк!

  • @prosto_razrabotka
    @prosto_razrabotka  4 года назад +34

    Как вам видос?))

    • @dandcubes
      @dandcubes 4 года назад +1

      четкий видосик)) Классный амбиентик на фоне, так вообще лампово смотреть-) Молодец😊

    • @prosto_razrabotka
      @prosto_razrabotka  4 года назад +1

      Спасибо -)

    • @lackevil3730
      @lackevil3730 4 года назад

      Круто!

    • @Polihut1
      @Polihut1 4 года назад

      Как всегда очень к месту! Каждый видос залетает только так😉

    • @amirych
      @amirych 4 года назад

      Нормально. Только без jquery надо.

  • @jurgena.2160
    @jurgena.2160 3 года назад

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

  • @alcacademy_it
    @alcacademy_it 4 года назад

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

  • @zvo1989
    @zvo1989 4 года назад +1

    Отличная практика. Спасибо большое. Недавно задавался этим вопросом, как будто мысли мои прочитали))) Еще раз спасибо)

    • @prosto_razrabotka
      @prosto_razrabotka  4 года назад +1

      Не, мысли пока читать не умею -)

  • @tonichopper5808
    @tonichopper5808 4 года назад +1

    Спасибо, очень полезно. Нужно больше js!))

  • @daymaker_bybit
    @daymaker_bybit 4 года назад

    Большое спасибо! Очень круто объясняешь.

  • @gio2156
    @gio2156 4 года назад +1

    Супер как раз то что надо для начальной практики jquery пойду делать)

  • @user-pn2ev2je2l
    @user-pn2ev2je2l 4 года назад

    Благодарю Вас за видео.

  • @TheTexPro
    @TheTexPro 4 года назад

    Просто, доступно, актуально - спасибо))

    • @prosto_razrabotka
      @prosto_razrabotka  4 года назад +1

      Звучит как слоган -)

    • @TheTexPro
      @TheTexPro 4 года назад

      @@prosto_razrabotka быстро ты ответил))

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

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

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

      const nav = document.querySelector('.nav');
      const navHeight = nav.clientHeight;
      const head = document.querySelector('.header');
      const wr = document.querySelector('.wrapper');
      window.addEventListener('scroll', () => {
      if (window.scrollY > head.scrollHeight) {
      wr.classList.add('navFixed');
      head.style.marginBottom = navHeight + 'px';
      } else if (window.scrollY < head.scrollHeight) {
      wr.classList.remove('navFixed');
      head.style.marginBottom = '0px';
      }
      });

  • @user-lz2co7te4y
    @user-lz2co7te4y 4 года назад

    Спасибо за полезное видео!😃

  • @user-lb3xq1ob2c
    @user-lb3xq1ob2c 4 года назад +6

    Можно не приклеивать шапку (навигацию), ломая верстку, танцуя на костылях, а просто показывать/скрывать копию навигации которая вечно приклеена к топу. Но это на вкус и цвет конечно.

  • @user-bp5rh1wb2i
    @user-bp5rh1wb2i 4 года назад +1

    Спасибо,не всё понял,но концепция ясна,крут и весел как всегда!)

    • @prosto_razrabotka
      @prosto_razrabotka  4 года назад

      Так это... не стесняемся, спрашиваем чего непонятно -)

    • @user-bp5rh1wb2i
      @user-bp5rh1wb2i 4 года назад

      @@prosto_razrabotkaпересмотрел ,понял,принял!)
      Жаль нельзя второй раз лайк поставить)

  • @shazplay8878
    @shazplay8878 4 года назад

    Обожаю твои видео! ❤️❤️❤️

  • @user-zq3zp1gq4k
    @user-zq3zp1gq4k 4 года назад

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

  • @dmitriidmitriev4708
    @dmitriidmitriev4708 4 года назад

    Добрый день!
    Подскажите пожалуйста не очень понимаю.
    В какой тег правильнее будет обернуть элементы меню ?
    То есть в html ecть теги и какой из них лучше использовать для меню в хедере и футере?

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

    Спасибо.

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

    спасибо!

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

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

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

      Это сложный вопрос и стоит подбирать под рост и вес. У меня Samurai

  • @ilya_ptrv
    @ilya_ptrv 4 года назад +1

    Классный видос про шапку, было бы круто увидеть про "умную" шапку,
    которая сворачивается при сколле вниз, а при скролле вверх - показывалась.
    Пример - сайт Чулакова chulakov.ru
    Когда идет изменение движения, шапка замирает, нет резкого появления.

  • @squarl5922
    @squarl5922 4 года назад

    Круто! Когда нибудь будешь разбирать скрипт, при котором что-то меняется при скролле? Допустим со скроллом проходит анимация

    • @prosto_razrabotka
      @prosto_razrabotka  4 года назад

      Подумываю, но это непростая тема. Как правило подобные штуки делаются на библиотеке ScrollMagic

  • @user-hc5ul3ds5u
    @user-hc5ul3ds5u 4 года назад +1

    Лучший)

  • @evgnows8275
    @evgnows8275 4 года назад

    спасибо! а как сделать смену двух css файлов чтобы показать клиенту разные цветовые схемы?

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

    Cool

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

    спасибо

  • @user-zi2iu5ep4l
    @user-zi2iu5ep4l 2 года назад

    а как сделать липкий header ,если есть фоновая картинка в хедере. т,к если я ставлю какой-то цвет на header__top,то он закрашивает вверх самого фонового изображения

  • @ChungaChanga03
    @ChungaChanga03 4 года назад

    Зачёт бро.

  • @lackevil3730
    @lackevil3730 4 года назад

    Ставлю колокольчик!

  • @profesor08
    @profesor08 4 года назад

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

  • @andriyromankiv7287
    @andriyromankiv7287 4 года назад

    Привет, если верхняя шапка с лого, поиском и навигационная горизонтальное меню (кнопки) тоже такой же принцип?
    надо логотип и поиск отдельно зафиксировать и отдельно навигационное меню прилипнуть к шапке?

    • @prosto_razrabotka
      @prosto_razrabotka  4 года назад +1

      Я тут показал сам принцип работы. Содержимое же уникально для каждого сайта. Например шапка может сразу включать в себя навигацию...
      Суть в том, что вы получаете класс (информацию о том, что Точка прилипания достигнута), а дальше уже отталкиваясь от класса стилизуете то, что прилипло.

    • @andriyromankiv7287
      @andriyromankiv7287 4 года назад

      @@prosto_razrabotka
      я понял, уже попробовал, все норм. спасибо за подсказку

    • @prosto_razrabotka
      @prosto_razrabotka  4 года назад +1

      Отлично

  • @user-ss1vo7ul4h
    @user-ss1vo7ul4h 4 года назад

    Можно разобрать скрол а-ля вертикальный слайдер? При скроле меняются блоки сайта.

  • @_barracuda_5202
    @_barracuda_5202 4 года назад

    есть кокой-то канал, который в подобном стиле преподаёт java?

  • @maxlevashov3855
    @maxlevashov3855 4 года назад

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

    • @prosto_razrabotka
      @prosto_razrabotka  4 года назад

      Горизонтальном?! Точно? Может всё же вертикальном?

    • @maxlevashov3855
      @maxlevashov3855 4 года назад

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

  • @user-qo5sq4me6k
    @user-qo5sq4me6k 4 года назад +1

    Привет,спасибо за видео.А как сделать прилипающий к низу подвал(чтоб независимо от размера документа он был всегда в самом низу)?Спасибо большое заранее автору за ответ, он мне очень нужен.

    • @prosto_razrabotka
      @prosto_razrabotka  4 года назад

      ruclips.net/video/fK70h0CXNsU/видео.html
      Тут, как раз делается такой подвал

    • @ROMAN-KVAS
      @ROMAN-KVAS Год назад

      Для создайте class="main" и в CSS для .main { flex-grow: 1;} Всё, футер прибит.

  • @reygasai
    @reygasai 4 года назад

    Годнота, больше ничего не скажешь ;)

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

    Для саморазвития ето конечно плюс но не проще position: fixed;

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

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

  • @user-ri1ry7sx6p
    @user-ri1ry7sx6p 4 года назад

    Первый лайк 😎😎😎😎

  • @aikkku
    @aikkku 4 года назад +1

    Первый😎😎😎

    • @prosto_razrabotka
      @prosto_razrabotka  4 года назад +1

      Еее!!))

    • @aikkku
      @aikkku 4 года назад +1

      @@prosto_razrabotka люблю твой контент

  • @user-vg1sr9ye5s
    @user-vg1sr9ye5s 3 года назад +1

    Ошибка: оffset is not a function. Что с ней делать?

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

    Я сегодня видел очень короткий вариант на чистом css

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

      А, тут сказали о нем

  • @Alexandr_Zavgorodniy
    @Alexandr_Zavgorodniy 4 года назад

    Зачем загрязнять код и делать лишний контейнер в nav, если при фиксировании можно было просто задать центрирование для самого nav? Да и в случае с шапкой проще фиксировать и центрировать сам header чем плодить ненужный код

  • @kirillriman3611
    @kirillriman3611 4 года назад

    не знал про sticky, всегда писал через js
    даже ютуб скоро уже не будет поддерживать IE, кому он нужен?

    • @shazplay8878
      @shazplay8878 4 года назад

      Сайтам типа одноклассников нужен

  • @user-fu2cv9xl7p
    @user-fu2cv9xl7p 4 года назад

  • @ChreesWoods
    @ChreesWoods 4 года назад

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

  • @privet_baget
    @privet_baget 4 года назад

    Хейтерам jQuery посвящается. Использовал и буду использовать jQuery толоко ради того чтобы позлить этих людей, хы))

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

    ой а кто это на xhtml пишет в 2020?

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

    Я ни чего не понял....Да и фиг с ним...Я вообще мало что понимаю)

  • @user-bq6jv3cd4g
    @user-bq6jv3cd4g 2 года назад

    через жопу к звёздам

  • @boldureans
    @boldureans 4 года назад +1

    Видео обман! В описании шапка, а на видео - шляпа!