मैं भूल जाता हूं कि मैंने पहली बार इसका उल्लेख कहां देखा था, लेकिन जब तक आपके पास 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
डोम तत्व से header
कंटेनर में जाने के लिए कर सकते हैं और फिर वंशज / बच्चे के चयनकर्ताओं का उपयोग label
स्वयं करने के लिए कर सकते हैं, जिससे शैली की क्षमता की अनुमति मिलती है। संबंधित रेडियो बॉक्स / चेकबॉक्स चुने गए हैं ।
न केवल हम लेबल को स्टाइल कर सकते हैं, बल्कि अन्य सामग्री को भी स्टाइल कर सकते हैं जो सभी के सापेक्ष एक सिबलिंग कंटेनर के वंशज हो सकते हैं input
। और अब इस पल का आप सभी को इंतजार है, JSFIDDLE ! वहां जाओ, इसके साथ खेलो, इसे तुम्हारे लिए काम करो, पता करो कि यह क्यों काम करता है, इसे तोड़ो, तुम क्या करते हो!
उम्मीद है कि सभी समझ में आता है और पूरी तरह से सवाल का जवाब देता है और संभवतः कोई भी अनुवर्ती फसल हो सकती है।
<label for="rad1">Radio 1</label><input id="rad1" type="radio" name="rad">