ฉันลืมที่ฉันเห็นครั้งแรกที่กล่าวถึง แต่คุณสามารถฝังป้ายกำกับของคุณในภาชนะอื่น ๆ ตราบใดที่คุณมีfor=
ชุดคุณลักษณะ ดังนั้นลองตรวจสอบตัวอย่างจาก SO:
* {
padding: 0;
margin: 0;
background-color: #262626;
color: white;
}
.radio-button {
display: none;
}
#filter {
display: flex;
justify-content: center;
}
.filter-label {
display: inline-block;
border: 4px solid green;
padding: 10px 20px;
font-size: 1.4em;
text-align: center;
cursor: pointer;
}
main {
clear: left;
}
.content {
padding: 3% 10%;
display: none;
}
h1 {
font-size: 2em;
}
.date {
padding: 5px 30px;
font-style: italic;
}
.filter-label:hover {
background-color: #505050;
}
#featured-radio:checked~#filter .featured,
#personal-radio:checked~#filter .personal,
#tech-radio:checked~#filter .tech {
background-color: green;
}
#featured-radio:checked~main .featured {
display: block;
}
#personal-radio:checked~main .personal {
display: block;
}
#tech-radio:checked~main .tech {
display: block;
}
<input type="radio" id="featured-radio" class="radio-button" name="content-filter" checked="checked">
<input type="radio" id="personal-radio" class="radio-button" name="content-filter" value="Personal">
<input type="radio" id="tech-radio" class="radio-button" name="content-filter" value="Tech">
<header id="filter">
<label for="featured-radio" class="filter-label featured" id="feature-label">Featured</label>
<label for="personal-radio" class="filter-label personal" id="personal-label">Personal</label>
<label for="tech-radio" class="filter-label tech" id="tech-label">Tech</label>
</header>
<main>
<article class="content featured tech">
<header>
<h1>Cool Stuff</h1>
<h3 class="date">Today</h3>
</header>
<p>
I'm showing cool stuff in this article!
</p>
</article>
<article class="content personal">
<header>
<h1>Not As Cool</h1>
<h3 class="date">Tuesday</h3>
</header>
<p>
This stuff isn't nearly as cool for some reason :(;
</p>
</article>
<article class="content tech">
<header>
<h1>Cool Tech Article</h1>
<h3 class="date">Last Monday</h3>
</header>
<p>
This article has awesome stuff all over it!
</p>
</article>
<article class="content featured personal">
<header>
<h1>Cool Personal Article</h1>
<h3 class="date">Two Fridays Ago</h3>
</header>
<p>
This article talks about how I got a job at a cool startup because I rock!
</p>
</article>
</main>
ต๊าย นั่นเป็นจำนวนมากสำหรับ "ตัวอย่าง" แต่ฉันรู้สึกว่ามันส่งผลและจุดกลับบ้านอย่างแท้จริง: เราสามารถเลือกฉลากสำหรับการควบคุมอินพุตที่ตรวจสอบได้โดยไม่ต้องเป็นพี่น้อง ความลับอยู่ในการรักษาinput
แท็กเด็กที่จะเพียง แต่สิ่งที่พวกเขาจะต้อง (ในกรณีนี้ - เพียงbody
องค์ประกอบ)
เนื่องจากlabel
องค์ประกอบไม่จริงใช้เลือกหลอกมันไม่สำคัญว่าป้ายจะถูกเก็บไว้ใน:checked
header
มันมีประโยชน์เพิ่มเติมที่เนื่องจากheader
เป็นองค์ประกอบพี่น้องเราสามารถใช้~
ตัวเลือกพี่น้องทั่วไปเพื่อย้ายจากinput[type=radio]:checked
องค์ประกอบ DOM ไปยังheader
คอนเทนเนอร์แล้วใช้ตัวเลือกลูกหลาน / ลูกหลานเพื่อเข้าถึงlabel
ตัวเองทำให้พวกเขาสามารถจัดรูปแบบพวกเขาเมื่อพวกเขา กล่องวิทยุที่เกี่ยวข้อง / ช่องทำเครื่องหมายได้รับการคัดเลือก
ไม่เพียง แต่เราสามารถจัดรูปแบบป้าย แต่ยังเนื้อหาอื่น ๆ สไตล์ที่อาจจะเป็นลูกหลานของภาชนะพี่น้องญาติทั้งหมดของinput
s และตอนนี้คุณก็รอคอยJSFIDDLE ! ไปที่นั่นเล่นกับมันทำให้มันใช้ได้ผลสำหรับคุณค้นหาสาเหตุที่ใช้งานได้ทำลายมันทำสิ่งที่คุณทำ!
หวังว่าทุกคนจะสมเหตุสมผลและตอบคำถามได้อย่างเต็มที่และอาจมีการติดตามผลใด ๆ ที่อาจทำให้เกิดปัญหา
<label for="rad1">Radio 1</label><input id="rad1" type="radio" name="rad">