고유 참조가 없는 한 HTML 페이지의 여러 탭(ID 또는 클래스 없음) (Multiple tabs in one HTML page without unique reference (no ID or class))


문제 설명

고유 참조가 없는 한 HTML 페이지의 여러 탭(ID 또는 클래스 없음) (Multiple tabs in one HTML page without unique reference (no ID or class))

고유 참조 없이 하나의 HTML 페이지에 여러 탭을 가질 수 있습니까? 즉, 탭을 클릭할 때 표시될 콘텐츠에 대한 참조로 ID나 클래스가 없습니다. 아래 코드는 어떻게 생겼는지 시각화하기 위한 것입니다. 순수 CSS이며 ID를 사용합니다. 탭이 있는 여러 섹션이 하나의 HTML 페이지에 나타나야 합니다. 탭이 있는 이 코드 패턴은 여러 HTML 페이지에서 여러 번 재사용되어야 하므로 수동으로 미리 정의된 항목 없이 코드가 작동해야 하므로 일반적이어야 합니다. JS 및 nextElementSibling 등의 잠재적인 솔루션을 생각하고 있었습니다. 누구든지 솔루션을 지원하고 게시할 수 있습니까(예제에 반드시 있는 것은 아님, 이상적으로는 순수 JS, 라이브러리 없음)

참조 솔루션

방법 1:

If you insert your radio buttons inside <label> you don't have to use ids:

body {
  background: #e0e0e0;
}

* {
  transition: 0.5s ease‑in‑out;
  box‑sizing: border‑box;
}

.accordion {
  margin: 94px auto 0 auto;
  max‑width: 500px;
  height: 300px;
  position: relative;
}
.accordion input.tab‑toggle {
  position: absolute;
  opacity: 0;
}
.accordion label input.tab‑toggle:checked + .tab‑title {
  background: white;
}
.accordion label input.tab‑toggle:checked ~ .tab {
  visibility: visible;
  opacity: 1;
}
.accordion label {
  float: left;
  font‑size: 16px;
  line‑height: 16px;
  border‑radius: 3px 3px 0 0;
}
.accordion label:first‑of‑type .tab {
  border‑radius: 0 3px 3px 3px;
}
.accordion label .tab‑title {
  cursor: pointer;
  display: block;
  padding: 20px;
  border‑radius: 3px 3px 0 0;
}
.accordion label .tab‑title:hover {
  background: rgba(0, 0, 0, 0.1);
}
.accordion .tab {
  visibility: hidden;
  opacity: 0;
  position: absolute;
  padding: 20px;
  top: 56px;
  left: 0;
  min‑width: 100%;
  height: 244px;
  background: white;
  border‑radius: 3px;
}
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque felis mi, vulputate et lorem quis, blandit pharetra metus. Donec viverra accumsan velit at ullamcorper.
</p>
<div class="accordion">
  <label>
    <input class="tab‑toggle" type="radio" name="my_radio_group" checked/>
    <span class="tab‑title">Tab One</span>
    <div class="tab">
      <p>Hi. I'm tab one's content. Nice to meet you.</p>
    </div>
  </label>

  <label>
    <input class="tab‑toggle" type="radio" name="my_radio_group" />
    <span class="tab‑title">Tab Two</span>
    <div class="tab">
      <p>Hi. I'm tab two's content. Nice to meet you.</p>
    </div>
  </label>

  <label>
    <input class="tab‑toggle" type="radio" name="my_radio_group" />
    <span class="tab‑title">Tab Three</span>
    <div class="tab">
      <p>Hi. I'm tab three's content. Nice to meet you.</p>
    </div>
  </label>

  <label>
    <input class="tab‑toggle" type="radio" name="my_radio_group" />
    <span class="tab‑title">Tab Four</span>
    <div class="tab">
      <p>Hi. I'm tab four's content. Nice to meet you.</p>
    </div>
  </label>


</div>

<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque felis mi, vulputate et lorem quis, blandit pharetra metus. Donec viverra accumsan velit at ullamcorper.
</p>

<div class="accordion">

  <label>
    <input class="tab‑toggle" type="radio" name="my_radio_group" />
    <span class="tab‑title">Tab Five</span>
    <div class="tab">
      <p>Tab Five</p>
    </div>
  </label>

  <label>
    <input class="tab‑toggle" type="radio" name="my_radio_group"/>
    <span class="tab‑title">Tab Six</span>
    <div class="tab">
      <p>Six</p>
    </div>
  </label>

  <label>
    <input class="tab‑toggle" type="radio" name="my_radio_group" />
    <span class="tab‑title">Tab Seven</span>
    <div class="tab">
      <p>Seven</p>
    </div>
  </label>

  <label>
    <input class="tab‑toggle" type="radio" name="my_radio_group" />
    <span class="tab‑title">Tab Eight</span>
    <div class="tab">
      <p>Eight</p>
    </div>
  </label>
</div>

(by jennabvanowm)

참조 문서

  1. Multiple tabs in one HTML page without unique reference (no ID or class) (CC BY‑SA 2.5/3.0/4.0)

#tabs #css #html #javascript






관련 질문

양식 제출 후 현재 탭 유지 (Keeping the current tabs after submitting the form)

슬라이드다운 탭이 예상대로 작동하지 않음 (Slide-down tabs not working as expected)

일부 장치 Android에서 ViewPager가 작동하지 않음 (ViewPager not working on some devices Android)

ScrollView가 조각에서 작동하지 않습니다 (ScrollView doesn't work in fragment)

공백이 많은 줄을 읽고 출력에서 유지 (Reading lines with a lot of spaces and maintaining them in output)

Google지도 조각을 찾을 수 없습니다 (Can't find google maps fragment)

kaldi 설치 시 libmkl_tbb_thread.so sth 관련 문제 (A problem related to libmkl_tbb_thread.so sth when installing kaldi)

링크 클릭 시 새 탭 또는 창에서 특정 링크 열기 (Open specific link in new tab or window on link clicking)

Vue.js uiv 라이브러리의 Tab 구성 요소에 대한 클래스를 설정하는 방법은 무엇입니까? (How to set up classes for Vue.js uiv library's Tab component?)

Foundation 탭이 초기화되었는지 확인하는 방법은 무엇입니까? (How to check if Foundation tabs are initialized?)

고유 참조가 없는 한 HTML 페이지의 여러 탭(ID 또는 클래스 없음) (Multiple tabs in one HTML page without unique reference (no ID or class))

Angular Slickgrid 예제 24에서 Angular slickgrid 및 ngfor를 사용하여 동적으로 탭 만들기 (Dynamically create tabs with Angular slickgrid and ngfor in Angular Slickgrid Example 24)







코멘트