javascript Меняемактивныйпунктменюприпрокруткестраницы

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript Меняемактивныйпунктменюприпрокруткестраницы相关的知识,希望对你有一定的参考价值。

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

## HTML
### Структура меню

    <header class="sticky-header">
        <nav class="top-menu">
            <ul>
                <li><a class="active" href="#home">Главная</a></li>
                <li><a href="#about">О нас</a></li>
                <li><a href="#service">Услуги</a></li>
                <li><a href="#contact">Контакты</a></li>
            </ul>
        </nav>
    </header>
    
### Структура страницы

    <section id="home">
    Здесь любой контент...
    </section>
    <section id="about">
    Здесь любой контент...
    </section>
    <section id="service">
    Здесь любой контент...
    </section>
    <section id="contact"> Здесь любой контент... </section>
    
## CSS
    
    .sticky-header {
    	position: fixed;
    	top: 0;
    	left: 0;
    	width: 100%;
    	background: rgba(0, 0, 0, .8);
    }
    .top-menu ul {
    	margin: 20px 0;
    	text-align: center;
    }
    .top-menu ul li {
    	list-style: none;
    	display: inline-block;
    	margin: 0 15px;
    }
    .top-menu a {
    	color: #fff;
    	-webkit-transition: .5s;
    	-moz-transition: .5s;
    	transition: .5s;
    }
    .top-menu a:hover,
    .top-menu a.active {
    	color: #e0a2a2;
    }
$(document).ready(function () {
		$(document).on("scroll", onScroll);
 
		$('a[href^="#"]').on('click', function (e) {
			e.preventDefault();
			$(document).off("scroll");
 
			$('a').each(function () {
				$(this).removeClass('active');
			})
			$(this).addClass('active');
 
			var target = this.hash;
			$target = $(target);
			$('html, body').stop().animate({
				'scrollTop': $target.offset().top+2
			}, 500, 'swing', function () {
				window.location.hash = target;
				$(document).on("scroll", onScroll);
			});
		});
	});
 
	function onScroll(event){
		var scrollPosition = $(document).scrollTop();
		$('nav a').each(function () {
			var currentLink = $(this);
			var refElement = $(currentLink.attr("href"));
			if (refElement.position().top <= scrollPosition && refElement.position().top + refElement.height() > scrollPosition) {
				$('nav ul li a').removeClass("active");
				currentLink.addClass("active");
			}
			else{
				currentLink.removeClass("active");
			}
		});
	}

以上是关于javascript Меняемактивныйпунктменюприпрокруткестраницы的主要内容,如果未能解决你的问题,请参考以下文章

php Кастомныйконтролдлядобавленияслайдеракартиноквкастомайзер

php Выводитвадмин-сайдбарпунктыменюдлякаждойнепустойрубрики

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

比特币不能购买特斯拉了!今日比特币狂跌背后的原因……

xml Выводэлементов,исключаяуказанный

php Загрузкафайлов,проверяемвременныйпуть,еслинеок - делаемправильнымего