html 粘滞标题 - 向下滚动隐藏,向上滚动显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html 粘滞标题 - 向下滚动隐藏,向上滚动显示相关的知识,希望对你有一定的参考价值。

body{
	height: 10000px;
	margin: 0;
	padding: 0;
}
#header{
	position: fixed;
	top: 0px;
	background-color: red;
	width: 100%;
	height: 100px;
}

.header__background{
	background-color: blue !important;
}
.header__background_top{
	background-color: transparent;
}
.header__background,
.header__background_top{
	-webkit-transition: .5s;
	-moz-transition: .5s;
	-ms-transition: .5s;
	-o-transition: .5s;
	transition: .5s;
}


var header = document.getElementById('header');
	var scrollPrev = 0 // Предыдущее значение скролла
	
	window.onscroll = function() {
		var scrolled = window.pageYOffset || document.documentElement.scrollTop;
		var firstScrollUp = false; // Параметр начала сколла вверх
		var firstScrollDown = false; // Параметр начала сколла вниз
		
		// Стили для начального состояния хедера
		header.classList.remove("header__background");
		header.classList.add("header__background_top");
		
		// Если скроллим
		if ( scrolled > 0 ) {
			
			// Если текущее значение скролла > предыдущего, т.е. скроллим вниз
			if ( scrolled > scrollPrev ) {
				firstScrollUp = false; // Обнуляем параметр начала скролла вверх
				// Если меню видно
				if ( scrolled < header.clientHeight + header.offsetHeight ) {
					// Если только начали скроллить вниз
					if ( firstScrollDown === false ) {
						var topPosition = header.offsetTop; // Фиксируем текущую позицию меню
						// header.style.top = topPosition + "px";
						firstScrollDown = true;
					}
				// Убираем меню - НЕ видно
				} else {
					// Позиционируем меню вне экрана
					// header.style.position = "absolute";
					// header.style.top = topPosition + "px";
					header.style.opacity = "0";
					
				}
				
			// Если текущее значение скролла < предыдущего, т.е. скроллим вверх
			}
			
			else {
				firstScrollDown = false; // Обнуляем параметр начала скролла вниз
				// Если меню не видно
				if ( scrolled > header.offsetTop ) {
					// Если только начали скроллить вверх
					if ( firstScrollUp === false ) {
						var topPosition = header.offsetTop; // Фиксируем текущую позицию меню
						header.style.top = topPosition + "px";
						firstScrollUp = true;
						header.classList.add("header__background");
						header.style.opacity = "1";
					}
					// Позиционируем меню фиксированно
					header.style.position = "fixed";
					
				}
				
			}
			
			// Присваеваем текущее значение скролла предыдущему
			scrollPrev = scrolled;
			
		}	
	};			
	

<div id="header"></div>

以上是关于html 粘滞标题 - 向下滚动隐藏,向上滚动显示的主要内容,如果未能解决你的问题,请参考以下文章

Listview setOnScrollListener 向上向下滚动

向下滚动时隐藏标题,向上滚动时显示

向下滚动以逐渐隐藏菜单栏或视图并向上滚动

滚动按钮 jQuery 用于向上滚动和向下滚动

为啥我的导航栏在向下滚动时不隐藏而在向上滚动时出现?

Android:向上滚动时显示工具栏(向上拖动),向下滚动时隐藏(向下拖动)