

// header scroll nav
let lastScroll = 0;
$(window).scroll(function () {
curr = $(this).scrollTop();
if(curr == 0){
$('#header').removeClass('white');
}
if(curr >= 50){
$('#header').addClass('white');
if (curr > lastScroll) {
$('#header').addClass('hide');
$('.sc-benefitprice .group-tabmenu').removeClass('up');
$('.sc-category .group-tabmenu').removeClass('up');
} else {
$('#header').removeClass('hide');
$('.sc-benefitprice .group-tabmenu').addClass('up');
$('.sc-category .group-tabmenu').addClass('up');
}
}
lastScroll = curr;
});
if(curr == 0){ $('#header').removeClass('white'); }
#header에게 .white를 제거해서 투명 배경, 흰색 로고 상태로 만들어준다.#header에게 .white를 추가해준다.#header 윗 부분을 사라지게 한다.#header가 온전히 다 보이도록 한다.lastScroll값이 curr값이랑 같게 만들어서 스크롤이 아래로 내려가고 있는지 방향을 확인하도록 도와주게 하면 된다.
🌟 header 스크롤 할때 사용한 상태 변경 가능한 코드를 사용해서 해당 섹션에 도달했을때 .on이 되도록 했다.
일단 tabmenu에 {position:sticky;top:0;}를 줘서 상단에 붙도록 했는데, 스크롤 내렸을 때의 header 높이가 50px;정도 되므로 top값을 50px;로 줬다.
여기서 문제점이 있는데, 스크롤을 올렸을때 header 높이가 좀더 커지기 때문에 tabmenu가 가려지게 된다.
if(curr >= 50){
$('#header').addClass('white');
if (curr > lastScroll) {
$('#header').addClass('hide');
$('.sc-benefitprice .group-tabmenu').removeClass('up');
$('.sc-category .group-tabmenu').removeClass('up');
} else {
$('#header').removeClass('hide');
$('.sc-benefitprice .group-tabmenu').addClass('up');
$('.sc-category .group-tabmenu').addClass('up');
}
}
🌟 그래서 아까 사용한 스크롤의 방향에 따라 #header의 높이가 달라지도록 만든 코드 밑에 한줄 추가하면 tabmenu도 #header 밑으로 붙게 된다.
.up {
top: 97px;
}
// sc-category tabmenu scroll active
const tabMenus2 = $('.sc-category .group-tabmenu .tabmenu');
const tabContents2 = $('.sc-category .group-tabcontent .con');
$(window).on('scroll', function () {
const scrollPosition = $(window).scrollTop();
tabContents2.each(function () {
const sectionTop = $(this).offset().top;
const sectionHeight = $(this).outerHeight();
if (scrollPosition >= sectionTop - 50 && scrollPosition < sectionTop + sectionHeight - 50) {
const targetId = $(this).attr('id');
const targetMenu = $(`.sc-category .group-tabmenu .tabmenu[href="#${targetId}"]`);
tabMenus2.removeClass('active');
targetMenu.addClass('active');
}
});
});
top, height를 구하고,.active를 추가하거나 제거하면 된다.-> 생각하는 거보단 쉬운 유형이었당 😆

// js
// sc-nav swiper slide
const navSlide = new Swiper('.sc-nav .swiper',{
slidesPerView: 'auto',
grid: {
rows: 2,
fill: 'row',
},
spaceBetween: 12,
});
slidesPerView: 'auto',grid: { rows: 2, fill: 'row', },spaceBetween: 12,slidesPerView : 한 줄에 표시할 슬라이드 개수grid.rows : 그리드의 행 개수 설정grid.fill : row 또는 column 방식으로 슬라이드를 채우는 방법 선택spaceBetween : 슬라이드 간 간격 설정pagination : ( . . . . . ) 페이지네이션 추가 가능