2014-05-13 1 views
0

나는 내 사이트 헤더에 사용할 프로토 타입을 만들었습니다. 기본적으로 스크롤 할 때 스크롤이 고정 된 위치 (끈끈한 탐색)의 화면에 다시 나타납니다. 먼저 마크 업에 두 개의 태그가 있음에도 불구하고 실현되었지만 이상적으로는 하나만 사용하여이 목표를 달성하는 것이 좋습니다.번역 된 애니메이션 끈적 헤더 번역본

은 여기 내 codepen

천천히 아래로 스크롤하면 내가 여기 달성하기 위해 노력하고있어 볼 수 있습니다. Heres 내 자바 스크립트 :

$(window).scroll(function() { 

    if ($(this).scrollTop() > 60){ 
     $('.main-header').addClass("sticky-header"); 
    } 
    else{ 
     $('.main-header').removeClass("sticky-header"); 
    } 

    if ($(this).scrollTop() > 160){ 
     $('.main-header').addClass("sticky"); 
    } 
    else{ 
     $('.main-header').removeClass("sticky"); 
    } 
}); 

아마도 약간 다른 접근 방식을 사용하여 이것을 달성하는 더 좋은 방법이 있을까요? 나는 스크롤 위의 두 인스턴스를 테스트하고 있다는 사실을 좋아하지 않는다. 첫 번째로 헤더의 위치를 ​​적용 할 방법이 필요하고 아래로 이동하는 것처럼 snazzy 전환을 수행하는 여백 값을 적용해야하기 때문에 이렇게했다. 페이지의 상단.

+0

이 no에 CSS를 사용할 수 있습니까? –

+0

아니, 당신은 꽤 좋은 해결책이 있다고 생각합니다. 당신은 jQuery CSS ('.css')를 사용할 수 있지만 똑같은 것을 할 것입니다. – ArtOfCode

+0

이 기사의 내용은 http://www.html5rocks.com/en/tutorials/speed/animations/에 나와 있습니다. 여기에 당신의 솔루션 http://jsfiddle.net/keypaul/uB4PL/23/의 간단한 바이올린이 잘 작동하고, 더 나은 성능을 얻을 수 있습니다. – keypaul

답변

1

하나 아래로 자바 스크립트를 교체 : 당신은 (() 함수 {

if ($(this).scrollTop() > 0){ 
    $('.main-header').addClass("sticky-header"); 
} 
else{ 
    $('.main-header').removeClass("sticky-header"); 
} 

if ($(this).scrollTop() > 160){ 
    $('.main-header').addClass("sticky"); 
} 
else{ 
    $('.main-header').removeClass("sticky"); 
} 

}) 좋은 스크롤에게

$ (창) .scroll를 얻을 것이다;

+0

고마워요. 또 다른 질문은 괜찮 으면, 나는이 멋진 끈끈한 nav를 오늘 발견했다. https://medium.com/@snookca/component-independence-1da9d5c9fc14 자바 스크립트가 여기에서 무엇을하고 있는지에 대한 아이디어? 내가 아는 전부는 스크롤 기능을 기반으로 한 클래스를 추가하는 것입니다. –