[JavaScript] 클릭 시 페이지 이동

김진평·2023년 1월 15일
0

JavaScript

목록 보기
2/6
post-thumbnail

자기소개 페이지를 제작하다가 네비게이션에 있는 섹션을 클릭하면 해당 섹션으로 이동하는 효과를 추가하고 싶어졌다.

index.html

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="style.css" />
    
    <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
    <title>포트폴리오</title>
  </head>
  <body>
    <nav>
      <span id="navHome">home</span>
      <span id="navAbout">about</span>
      <span id="navSkills">skills</span>
      <span id="navPortfolio">portfolio</span>
      <span id="navContact">contact</span>
    </nav>
    <section id="home">home</section>
    <section id="about" style="background-color: #2e2e30">about</section>
    <section id="skills">skills</section>
    <section id="portfolio" style="background-color: #2e2e30">
      portfolio
    </section>
    <section id="contact">contact</section>
    <script type="text/javascript" src="index.js"></script>
  </body>
</html>

먼저 네비게이션과 각각 하나의 페이지가 될 섹션을 준비한다.

style.css

/* 네비게이션 */
...
nav {
  z-index: 99;
  color: black;
  position: fixed;
  right: 2%;
  top: 40%;
  display: flex;
  flex-direction: column;
  font-size: 0.5em;
  font-weight: bold;
}
nav span {
  text-align: center;
  margin-top: 10px;
  border: 2px solid black;
  border-radius: 50px;
  padding: 10px;
  border-color: beige;
  background-color: beige;
}
nav span:hover {
  background-color: bisque;
  cursor: pointer;
}
...

네비게이션도 적당한 css를 입혀준다.
(제작 마무리단계에서 글을 작성하느라 앞뒤 css는 생략하고 네비게이션 부분만 잘라넣었다.)

index.js

//네비게이션 버튼 클릭시 화면 이동
document.querySelector("#navHome").addEventListener("click", (e) => {
  document.querySelector("#home").scrollIntoView({ behavior: "smooth" });
});
document.querySelector("#navAbout").addEventListener("click", (e) => {
  document.querySelector("#about").scrollIntoView({ behavior: "smooth" });
});
document.querySelector("#navSkills").addEventListener("click", (e) => {
  document.querySelector("#skills").scrollIntoView({ behavior: "smooth" });
});
document.querySelector("#navPortfolio").addEventListener("click", (e) => {
  document.querySelector("#portfolio").scrollIntoView({ behavior: "smooth" });
});
document.querySelector("#navContact").addEventListener("click", (e) => {
  document.querySelector("#contact").scrollIntoView({ behavior: "smooth" });
});

마지막으로 각각의 span 태그를 클릭했을 때 해당하는 페이지로 이동되도록 자바스크립트를 추가하였다.

id = navHome인 span을 클릭하면 scrollIntoView 함수를 통해 지정한 태그의 위치로 이동한다.

결과

0개의 댓글