일정 scroll 이상일때 menu 를 고정시키는 방법
상단 menu 위로 banner 등을 넣어놓고, 아래로 scroll 을 하면 배너는 사라지고, 메뉴가 고정되는 메뉴를 만드는 법.
여기서 동작을 확인할 수 있다.
- https://codepen.io/senff/pen/ayGvD : 이 방법은 2개를 만들고, scroll 위치에 따라 하나는 보여주고, 하나는 감추고 하는 방법이다. 이방법은 '사파리 safari' 나 삼성인터넷 에서 계속 깜빡거리는 문제가 있다.
- How to keep a part of a page fixed on top when scroling: 이방법이 간단하고 가장 알맞다. 여기서는 다만 jquery 로 되어 있어서 이것을 typescript 로 수정했다.
class StickyTopWithBanner{
header:any;
topBannerHeight: number;
constructor(){
this.header = document.querySelector('.js-top-header');
}
run(){
let header = this.header;
const el: HTMLElement = document.querySelector('.js-loanCompanySignBox');
const rect = el.getBoundingClientRect();
el.style.display = 'block';
this.topBannerHeight = rect.height;
window.addEventListener('scroll', this.onScroll.bind(this));
return;
}
onScroll (e: any) {
if (window.pageYOffset > this.topBannerHeight) {
this.header.classList.add('fix-top');
}else{
this.header.classList.remove('fix-top');
}
}
}
댓글 없음:
댓글 쓰기