Блог/Элемент при прокрутке

Появление элемента на странице при прокрутке

Автор: Кудашев Сергей

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

Для решения этой задачи мы снова воспользуемся JS библиотекой Jquery. За прокрутку (скроллинг) в Jquery отвечает событие scroll(), а так же методы .scrollTop() .scrollLeft(), благодаря которым мы можем получить или изменить вертикальную или горизонтальную прокрутку элементов. В нашем случае нам понадобится метод .scrollTop(), которым мы воспользуемся для получения значения текущей позиции прокрутки и выполнения определенных действий при достижении определенного уровня.

Для воплощения задуманного воспользуемся следующим кодом:

$(document).ready(function(){
	$(window).scroll(function(){
		if($(window).scrollTop()>120){
			$('#top').fadeIn(900)
		}else{
			$('#top').fadeOut(700)
		}
	});
});

, т.е. мы отслеживаем окно браузера на событие прокрутки (скроллинга) ползунка, и после того, как ползунок преодолеет значение в 120 единиц по высоте, покажем элемент #top, воспользовавшись функцией fadeIn(), во всех остальных случаях данный элемент скрыт функцией fadeOut(). Теперь нам осталось задать для элемента стили, чтобы элемент был сразу невидимым на странице.

#top {display:none;position:fixed;right:1%;bottom:16px;width:48px;height:48px;background:#ff0000;}

Вот так просто можно показывать/скрывать элемент при прокрутке окна браузера. Единственное, на что рекомендовал бы обратить внимание, это скорость появления/сокрытия элемента (значения указанные в функциях fadeIn() и fadeOut()). В моем понимании они уникальны для каждого дизайна и зависят от размера и цвета появляющегося элемента, поэтому прежде чем оставить подобранные мною значения рекомендовал бы с ними какое-то время поиграться, чтобы анимация на вашем сайте смотрелась более гармонично.

Комментарии (11)

  1. followLex25 апреля 2017, 17:57#
    Хорошая штука, спасибо
    1. Кудашев Сергей11 мая 2017, 12:56#
      А в чем шутка то?
      1. Иван26 октября 2017, 03:55#
        Ни в чем. У него написано — «штУка».
        1. Кудашев Сергей28 октября 2017, 21:53(Комментарий был изменён)#
          Спасибо Иван. Не так прочитал :)
    2. АЛЕКСАНДР17 апреля 2019, 14:06#
      В (css) два раза высота (height)…
      1. Кудашев Сергей17 апреля 2019, 14:37#
        Александр, спасибо. Поправил.
      2. Денис16 ноября 2019, 19:25#
        А если у пользователя отключен js, как увидеть #top?
        1. Сергей Кудашев16 ноября 2019, 21:24#
          Убираете display none из CSS свойств и все будет показываться.
        2. Александр02 мая 2020, 21:49(Комментарий был изменён)#
          window.addEventListener('scroll',(event) => {
          var elem = document.getElementById('gotoptop');
          var y = scrollY;
          if (y<200) { elem.style.display = «block»}
          else { elem.style.display = «none»};
          });

          если нужно скрыть элемент при прокручивании без Jquery. можно воспользоваться этим кодом.
          реализовал на этом сайте — ураподарки.рф

          <div id="gotoptop" style="display: none;"><img src="top50.png" alt=""></div>
          1. Александр29 июня 2020, 08:19#
            Выходит, если где-то в конечном блоке есть якорь, то переход по ссылке на него невозможен ввиду свойства css dysplay:none? Или отработка будет?
            1. css10 марта 2021, 17:40#
              все работает и при обратной прокрутке исчезает