별초롱언니 2025. 3. 27. 17:26

탭이란?

많은 양의 정보를 "카테고리"별로 나누어 보여줄 때, 여러 항목을 비교해야 할 때 주로 사용함

 

탭의 구성

- 탭박스 : 탭의 버튼부, 탭의 콘텐츠부를 묶어주는 역할

- 탭버튼 : 탭의 버튼부로, 라벨테그로 구성

- 탭콘텐츠 : 탭의 콘텐츠부

 

탭의 원리 (html)

1. 카테고리별 input:radio 만들기

2. 탭버튼, 탭콘텐츠를 포함하는 탭박스 만들기

3. 탭버튼 안에 input:radio 각각에 연결되는 label 만들기

4. 탭콘텐츠 안에 모든 콘텐츠들 작성하기

 

 

 

탭의 원리 (css)

1. 크기 지정

- 탭 박스 : 탭 라벨과 콘텐츠가 보여지는 상자의 크기 조정 (width)

- 라벨 크기 지정 : 균등하게 너비를 가지려면 (100/라벨갯수)%를 주면 됨 (width)

2. 기능 구현

- 콘텐츠 모두 없애기 display:none;

- 특정 콘텐츠 나타내기 : 특정 카테고리 input:radio가 checked 되었다면 특정 카테고리에 맞는 콘텐츠를 모두 display:block;으로 나타내기

- 라벨의 배경 색상 바꾸기 : 어떤 카테고리가 선택 되었는지 티가 안나므로 배경색상 변경할 것 , 특정 카테고리 input:radio가 checked 되었다면, 해당하는 라벨을 선택하여 background-color 변경 

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

#tab-box {
  width: 50%;
  margin: 30px auto;
  border: 1px solid red;
}

#tab-button {
  font-size: 0px;
}

#tab-button label {
  width: 25%;
  display: inline-block;
  font-size: 16px;
  color: white;
  background-color: rgb(89, 89, 245);
  padding: 20px 0;
}

.all {
  display: none;
}

#a:checked ~ #tab-box #tab-content .a, 
#b:checked ~ #tab-box #tab-content .b, 
#c:checked ~ #tab-box #tab-content .c,
#d:checked ~ #tab-box #tab-content .d{
  display: block;
}

#a:checked ~ #tab-box #tab-button .a,
#b:checked ~ #tab-box #tab-button .b,
#c:checked ~ #tab-box #tab-button .c,
#d:checked ~ #tab-box #tab-button .d {
  background-color: pink;
}

#a,#b,#c,#d {
  display: none;
}​
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="../../CSS/ch1006/tab.css">
  <title>Document</title>
</head>

<body>
  <input type="radio" name="tab-radio" id="a">
  <input type="radio" name="tab-radio" id="b">
  <input type="radio" name="tab-radio" id="c">
  <input type="radio" name="tab-radio" id="d">

  <div id="tab-box">
    <div id="tab-button">
      <label for="a" class="a">aaa</label>
      <label for="b" class="b">bbb</label>
      <label for="c" class="c">ccc</label>
      <label for="d" class="d">ddd</label>
    </div>

    <div id="tab-content">
      <div class="all a">첫번째 상자입니다.</div>
      <div class="all a">첫번째 상자입니다.</div>
      <div class="all a">첫번째 상자입니다.</div>
      <div class="all b">두번째 상자입니다.</div>
      <div class="all b">두번째 상자입니다.</div>
      <div class="all b">두번째 상자입니다.</div>
      <div class="all b">두번째 상자입니다.</div>
      <div class="all c">세번째 상자입니다.</div>
      <div class="all c">세번째 상자입니다.</div>
      <div class="all c">세번째 상자입니다.</div>
      <div class="all c">세번째 상자입니다.</div>
      <div class="all c">세번째 상자입니다.</div>
      <div class="all d">네번째 상자입니다.</div>
      <div class="all d">네번째 상자입니다.</div>
      <div class="all d">네번째 상자입니다.</div>
      <div class="all d">네번째 상자입니다.</div>
      <div class="all d">네번째 상자입니다.</div>
      <div class="all d">네번째 상자입니다.</div>
    </div>
  </div>
</body>

</html>

See the Pen Untitled by byeolchorong (@byeolchorong) on CodePen.