चेकबॉक्स की जाँच होने पर लेबल हाइलाइट करें


110

क्या संबंधित चेकबॉक्स की जाँच करने पर लेबल का रंग बदलने का एक गैर-जावास्क्रिप्ट तरीका है?


जवाबों:


147

यदि आपके पास है

<div>
  <input type="checkbox" class="check-with-label" id="idinput" />
  <label class="label-for-check" for="idinput">My Label</label>
</div>

तुम कर सकते हो

.check-with-label:checked + .label-for-check {
  font-weight: bold;
}

इस काम को देखें । ध्यान दें कि यह गैर-आधुनिक ब्राउज़रों में काम नहीं करेगा।


2
यह IE 6-8 में काम नहीं करेगा, जब तक कि ओपी IE के बारे में परवाह नहीं करता है।
हुसैन

25
मुझे पता है, मैंने नोट किया कि यह केवल मेरे उत्तर में आधुनिक ब्राउज़रों में काम करेगा।
एंड्रयू मार्शल

4
@ inf3rno यह चाहिए। दोनों आसन्न सिलेक्टर और :checkedचयनकर्ता IE9 में समर्थित के रूप में सूचीबद्ध हैं। Microsoft के अपने डॉक्स इसकी पुष्टि करते हैं।
एंड्रयू मार्शल

3
अच्छा समाधान है, लेकिन यदि लेबल तत्व अगले पूर्वज नहीं है, तो आपको + चयनकर्ता 456bereastreet.com/archive/200601/css_3_selectors_explained (तालिका में अंतिम) के बजाय ~ चयनकर्ता का उपयोग करने का प्रयास करना चाहिए
कार्ल एडलर

@abimelex हालांकि आपके HTML पर निर्भर करता है जो <label>वांछित से कई गुना अधिक मेल खा सकता है ।
एंड्रयू मार्शल

101

मुझे एंड्रयू का सुझाव पसंद है, और वास्तव में सीएसएस नियम केवल होना चाहिए:

:checked + label {
   font-weight: bold;
}

मैं labelऔर inputतत्व के निहित संघ पर भरोसा करना पसंद करता हूं, इसलिए मैं इस तरह से कुछ करूंगा:

<label>
   <input type="checkbox"/>
   <span>Bah</span>
</label>

सीएसएस के साथ:

:checked + span {
    font-weight: bold;
}

उदाहरण: http://jsfiddle.net/wrumsby/vyP7c/


चेक किए गए चेकबॉक्स के मूल लेबल की पृष्ठभूमि का रंग बदलने के लिए एक चाल है । लेबल अतिप्रवाह करें: छिपा हुआ, तो चेकबॉक्स देना एक बहुत बड़ी dropshadow ... :checked { box-shadow: 0 0 0 500px orange; }। आपको यह सुनिश्चित करने के लिए z- इंडेक्स के साथ खेलने की आवश्यकता होगी कि कोई भी भ्रामक तत्व छिपा नहीं है।
आरोन सिकलि

8

यह :checkedरूपों को और अधिक सुलभ बनाने के लिए छद्म वर्ग का उपयोग करने का एक उदाहरण है । :checkedछद्म वर्ग जैसे छवि दीर्घाओं के रूप में इंटरएक्टिव विजेट, निर्माण करने के लिए छिपा हुआ आदानों और उनके दृश्यमान लेबल के साथ प्रयोग किया जा सकता है। मैंने उन लोगों के लिए स्निप बनाया, जो टेस्ट करना चाहते हैं।

input[type=checkbox] + label {
  color: #ccc;
  font-style: italic;
} 
input[type=checkbox]:checked + label {
  color: #f00;
  font-style: normal;
} 
<input type="checkbox" id="cb_name" name="cb_name"> 
<label for="cb_name">CSS is Awesome</label> 


-24

आप अकेले सीएसएस के साथ ऐसा नहीं कर सकते। JQuery का उपयोग करके आप कर सकते हैं

एचटीएमएल

<label id="lab">Checkbox</label>
<input id="check" type="checkbox" />

सीएसएस

.highlight{
    background:yellow;
}

jQuery

$('#check').click(function(){
    $('#lab').toggleClass('highlight')
})

यह सभी ब्राउज़रों में काम करेगा

Http://jsfiddle.net/LgADZ/ पर कार्यशील उदाहरण देखें


8
प्रश्न ने एक गैर-जावास्क्रिप्ट तरीका और जवाब दिया इससे पहले कि आप स्पष्ट करें कि एक तरीका है जो केवल सीएसएस का उपयोग करके काम करता है
केविन

2
स्वीकृत समाधान आसन्न सिबलिंग चयनकर्ता का उपयोग करता है जो वास्तव में CSS 2.1 की एक विशेषता है ।
वाल्टर रम्सबी

JQuery एकमात्र समाधान है जो क्रॉस ब्राउज़र समर्थन सुनिश्चित करेगा।
हुसैन

7
कृपया वहां हुसैन सावधान रहें। आप इंटरनेट एक्सप्लोरर 6 जैसे ब्राउज़रों के लिए समर्थन प्रदान कर सकते हैं जो कि जावास्क्रिप्ट का उपयोग करते हुए आसन्न सिबलिंग चयनकर्ता का समर्थन नहीं करते हैं । jQuery एक जावास्क्रिप्ट पुस्तकालय है जो आपको ऐसा करने में मदद करेगा; अन्य पुस्तकालय (या यहां तक ​​कि शुद्ध जावास्क्रिप्ट भी हैं!) जो आप इसके साथ कर सकते हैं।
साइमन लीशेके ने

पुन: मेरी पहले की टिप्पणी, मुझे महसूस नहीं हुआ कि :checkedछद्म चयनकर्ता CSS3 की विशेषता है।
वाल्टर रम्सबी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.