JAVASCRIPT/자바스크립트

parallaxEffect02 - 사이드 메뉴

(*ᴗ͈ˬᴗ͈)ꕤ*.゚ 2022. 3. 10. 16:04

개요

오른쪽 중간에 사이드 동그라미가 있는데,

클릭하면 자연스럽게(smooth하게) 이동하고, 또 스크롤함으로써 동그라미 모양이 바뀌도록 하였다

 

HTML 구성

<nav id="parallax__dot">
    <ul>
        <li class="active"><a href="#section1"><span>s1</span></a></li>
        <li><a href="#section2"><span>s2</span></a></li>
        <li><a href="#section3"><span>s3</span></a></li>
        <li><a href="#section4"><span>s4</span></a></li>
        <li><a href="#section5"><span>s5</span></a></li>
        <li><a href="#section6"><span>s6</span></a></li>
        <li><a href="#section7"><span>s7</span></a></li>
        <li><a href="#section8"><span>s8</span></a></li>
        <li><a href="#section9"><span>s9</span></a></li>
    </ul>
</nav>

active가 붙으면 css효과를 주었다 

css는 그저 생략했을 거지만 이 방법은 조금 독특해서 소개하고자 한다.

CSS 구성

#parallax__dot {
    position: fixed;
}

#parallax__dot li {
    box-shadow: 0 0 0 2px rgba(255,255,255,0);
    transition: box-shadow .2 ease;
}

#parallax__dot li a {
    position: absolute;
    top: 0; left: 0; 
    border-radius: 50%;
    transition: all .2s ease;
}

#parallax__dot li.active {
    box-shadow: 0 0 0 2px rgba(255,255,255,1);
}

#parallax__dot li.active a {
    transform: scale(0.4);
}

 

* box-shadow(수평수직 거리, 흐릿함과 확산 정도, 색상)

box-shadow는 테두리를 감싼 그림자 효과를 추가한다

 

li 태그에 클래스 active가 붙으면 박스쉐도우의 투명도를 0에서 1로 바꾸어 주어서 효과를 준다

투명도 조절로 무언가를 표현하는 게 참 신기하다

JS 구성 - 1. 스무스 효과

document.querySelectorAll("#parallax__dot a").forEach(el => {
    el.addEventListener("click", e => {
        e.preventDefault();
        document.querySelector(el.getAttribute("href")).scrollIntoView({behavior: "smooth"});
    });
})

JS 구성 - 2. active 바꿔주기

document.querySelectorAll(".content__item").forEach((element,index) => {
    if(scrollTop >= element.offsetTop - 2 ){
        document.querySelectorAll("#parallax__dot ul li").forEach(li => {
            li.classList.remove("active");
        });
    document.querySelector(`#parallax__dot ul li:nth-child(${index + 1})`).classList.add("active");
    }
})

 

링크 https://sungilryuu.github.io/webs_class/javascript/effect/parallaxEffect02.html