Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

CSS와 JavaScript로 전체 페이지 탭(Tab) 만드는 방법 완벽 가이드

웹 페이지에서 여러 콘텐츠 섹션을 하나의 화면 안에서 전환하며 보여주고 싶다면 전체 페이지 탭(Full-page Tabs) 기능이 유용합니다. 이 글에서는 CSS와 JavaScript만을 사용하여 화면 전체를 채우는 탭 인터페이스를 구현하는 방법을 단계별로 살펴보겠습니다.

전체 페이지 탭의 동작 원리

전체 페이지 탭은 크게 두 부분으로 구성됩니다.

  • 탭 버튼(tablink): 상단에 배치되어 각 콘텐츠 페이지로 이동할 수 있는 버튼
  • 탭 콘텐츠(tabcontent): 버튼을 클릭했을 때 화면 전체에 표시되는 실제 내용 영역

JavaScript가 각 버튼의 클릭 이벤트를 감지하여, 해당하는 콘텐츠 div만 화면에 표시(display: block)하고 나머지는 숨김(display: none) 처리하는 방식으로 동작합니다.

전체 예제 코드

아래는 HTML, CSS, JavaScript를 모두 포함한 완전한 예제 코드입니다.

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {box-sizing: border-box}
body, html {
    height: 100%;
    margin: 0;
}
.tablink {
    background-color: #555;
    color: white;
    float: left;
    border: none;
    outline: none;
    cursor: pointer;
    padding: 10px 14px;
    font-size: 15px;
    width:33.33%;
}
.tablink:hover {
    background-color: black;
}
.tabcontent {
    color: white;
    display: none;
    padding: 100px 20px;
    height: 100%;
}
#Home {background-color: blue;}
#About {background-color: gray;}
#Contact {background-color: orange;}
</style>
</head>
<body>
<button class="tablink" onclick="demo('Home', this, 'blue')">Home</button>
<button class="tablink" onclick="demo('About', this, 'gray')" id="clickme">About</button>
<button class="tablink" onclick="demo('Contact', this, 'orange')">ContactUs</button>
<div id="Home" class="tabcontent">
    <h3>Home</h3>
    <p>This is the Home page.</p>
</div>
<div id="About" class="tabcontent">
    <h3>About</h3>
    <p>This is information about the company.</p>
</div>
<div id="Contact" class="tabcontent">
    <h3>ContactUs</h3>
    <p>Contact us for any feedback, query and complaints.</p>
</div>
<script>
function demo(pageName,elmnt,color) {
    var i, tabcontent, tablinks;
    tabcontent = document.getElementsByClassName("tabcontent");
    for (i = 0; i < tabcontent.length; i++) {
        tabcontent[i].style.display = "none";
    }
    tablinks = document.getElementsByClassName("tablink");
    for (i = 0; i < tablinks.length; i++) {
        tablinks[i].style.backgroundColor = "";
    }
    document.getElementById(pageName).style.display = "block";
    elmnt.style.backgroundColor = color;
}
document.getElementById("clickme").click();
</script>
</body>
</html>

코드 주요 부분 설명

1. CSS 스타일링

.tablink 클래스는 상단 탭 버튼의 스타일을 정의합니다. width: 33.33%를 지정하여 세 개의 버튼이 화면 너비를 균등하게 나누어 차지하도록 했습니다. 마우스를 올리면(:hover) 버튼 색상이 검정으로 변경되어 시각적인 피드백을 제공합니다.

.tabcontent 클래스는 콘텐츠 영역의 스타일을 담당합니다. height: 100% 덕분에 각 탭의 내용이 브라우저 화면 전체를 꽉 채우게 되며, 기본값인 display: none으로 설정되어 있어 처음에는 보이지 않습니다.

2. JavaScript 함수(demo)

demo() 함수는 세 가지 작업을 수행합니다.

  1. 모든 .tabcontent 요소를 숨겨 이전에 열려 있던 탭을 닫습니다.
  2. 모든 탭 버튼의 배경색을 초기화합니다.
  3. 클릭된 버튼에 해당하는 콘텐츠만 표시하고, 해당 버튼의 배경색을 지정된 색상으로 변경합니다.

마지막 줄의 document.getElementById("clickme").click();은 페이지가 로드되자마자 'About' 탭을 자동으로 클릭하여 초기 화면이 비어 보이지 않도록 하는 역할을 합니다.

실행 결과

위 코드를 실행하면 다음과 같은 화면이 출력됩니다. 페이지 로드 시 'About' 탭이 자동으로 활성화됩니다.

CSS와 JavaScript로 전체 페이지 탭(Tab) 만드는 방법 완벽 가이드

이제 'ContactUs' 탭을 클릭하면 아래와 같이 주황색 배경의 연락처 페이지로 전환됩니다.

CSS와 JavaScript로 전체 페이지 탭(Tab) 만드는 방법 완벽 가이드

마무리

이처럼 CSS와 JavaScript만으로도 별도의 라이브러리 없이 화면 전체를 활용하는 탭 내비게이션을 손쉽게 구현할 수 있습니다. 탭의 개수를 늘리고 싶다면 버튼의 width 값을 조정하고(예: 4개 탭이면 25%), 새로운 tabcontent div와 버튼을 추가하기만 하면 됩니다. 다양한 색상과 콘텐츠를 적용하여 자신만의 스타일로 응용해 보시기 바랍니다.