как использовать scrollspy без использования bootstrap
кто-нибудь знает, как использовать scrollspy без использования Bootstrap? Я пытаюсь заставить это работать в одном из моих проектов, используя этот репозиторий:
https://github.com/sxalexander/jquery-scrollspy
но он просто не делает то, что делает bootstrap. The ли теги не помечены как активные :( Любая помощь будет оценена.
Я пробовал сделать это:
$('#intel_nav').scrollspy({
//n: $('#nav').offset().top,
onEnter: function (element, position) {
console.log(element);
$("#intel_nav").addClass('moo');
},
onLeave: function (element, position) {
$("#intel_nav").removeClass('out');
}
});
элемент кажется фактическим меню, поэтому я понятия не имею, как на самом деле получить идентификатор элемента, над которым я сейчас парю.
4 ответов
Если кто-то все еще заинтересован в этом, я не мог заставить bootstrap scrollspy работать достаточно быстро, поэтому я написал свое собственное (технически неэффективное, но простое) решение.
вот демо:
$(window).bind('scroll', function() {
var currentTop = $(window).scrollTop();
var elems = $('.scrollspy');
elems.each(function(index){
var elemTop = $(this).offset().top;
var elemBottom = elemTop + $(this).height();
if(currentTop >= elemTop && currentTop <= elemBottom){
var id = $(this).attr('id');
var navElem = $('a[href="#' + id+ '"]');
navElem.parent().addClass('active').siblings().removeClass( 'active' );
}
})
});
.active{
color: red;
background-color: red;
}
#nav{
position:fixed;
top:0;
right:50%;
}
section{
min-height: 500px;
}
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<nav id="nav" class="navbar navbar-template">
<div class="row col-xs-12 text-center">
<ul>
<li class="active">
<a href="#Home">Home</a>
</li>
<li>
<a href="#AboutUs">AboutUs</a>
</li>
<li>
<a href="#Images">Images</a>
</li>
<li>
<a href="#Contact">Contact</a>
</li>
</ul>
</div>
</nav>
<section class="scrollspy" id="Home">
Home
</section>
<section class="scrollspy" id="AboutUs">
AboutUs
</section>
<section class="scrollspy" id="Images">
Images
</section>
<section class="scrollspy" id="Contact">
Contact
</section>
</body>
вы можете использовать страницу настройки bootstrap для загрузки только scrollspy JS. Вам также понадобится css "nav". Эта ссылка должна быть именно тем, что вам нужно:http://getbootstrap.com/customize/?id=8f4a63b0157214af61c9ce380630a64d
загрузите файлы JS и CSS и добавьте их на свой сайт. Scrollspy должен работать в документах bootstrap (http://getbootstrap.com/javascript/#scrollspy)
github.com/sxalexander/jquery-scrollspy не делают <nav>
меню активны автоматически, как загрузочный плагин делает.
однако он предоставляет идентификатор элемента, который входит в поле зрения. См.это JSFiddle это печатает идентификаторы элементов в консоли.
вам нужно решить, как выделить пункт меню, соответствующий элементу, имеющему свой идентификатор. Например,