스티키 네비게이션이 포함 된 페이지를 만들고 헤더 이미지가 사라진 직후에 스틱이 움직이지 않는 페이지를 만듭니다 (전체 페이지 크기보다 작음). 하나의 전체 페이지 이미지 크기가 지난 후에 만 붙습니다. 탐색 막대 안의 텍스트도 막대기 후에 움직입니다.스티키 네비게이션 스틱이 너무 늦음
당신은 여기에 코드를 볼 수 있습니다: 이것은 내 자바 스크립트입니다 https://jsfiddle.net/zinctan/7a436ojz/
:
$(function() {
// when we scroll down the window, do this:
$(window).scroll(function(){
//Getting the scroll percentage
var windowHeight = $(window).height();
var scrollHeight = $(window).scrollTop();
var scrollPercentage = (scrollHeight/windowHeight);
console.log(scrollPercentage);
// if we have scrolled past 200, add the alternate class to nav bar
if(scrollPercentage > 1) {
$('.navHighlighter').addClass('scrolling');
} else {
$('.navHighlighter').removeClass('scrolling');
}
});
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top - 80
}, 1000);
return false;
}
}
}); // code courtesy of CSS-Tricks
// apply the class of nav-active to the current nav link
$('a').on('click', function(e) {
e.preventDefault();
$('li.nav-active').removeClass('nav-active');
$(this).parent('li').addClass('nav-active');
});
// get an array of 'href' of each a tag
var navLink = $('ul.navHighlighter a');
console.log(navLink);
var aArray = [];
for(var i = 0; i < navLink.length; i++) {
console.log(i);
var aChild = navLink[i];
var navArray = $(aChild).attr('href');
console.log(navArray);
aArray.push(navArray);
console.log(aArray);
var selector = aArray.join(" , ");
console.log(selector);
}
$(window).scroll(function(){
var scrollTop = $(window).scrollTop();
var tops = [];
$(selector).each(function(){
var top = $(this).position().top - 90;
if(scrollTop > top) {
var id = $(this).attr('id');
$('.nav-active').removeClass('nav-active');
$('a[href="#'+id+'"]').parent().addClass('nav-active');
}
tops.push(top);
});
});
을});
도움이 될 것입니다. 당신의 스크립트 코드가 HTML 웹 페이지 다음에 실행되도록 보장하기 위해
$(document).ready(function(){
});
를 다음 순서로 그 기능에 jQuery 코드를 쓰기 : 그것을 사용하는 것이 좋습니다 당신 : 모든
코드에 들여 쓰기를 수정하십시오. – Soviut