शुद्ध अर्थ HTML / CSS समाधान
यह अपने दम पर लागू करना आसान है, कोई पूर्व-निर्मित समाधान आवश्यक नहीं है। साथ ही यह आपको बहुत कुछ सिखाएगा क्योंकि आप सीएसएस के साथ बहुत आसान नहीं लगते हैं।
यह वह है जो आपको करना जरूरी है:
आपके चेकबॉक्स में अलग-अलग idगुण होने चाहिए। यह आपको <label>लेबल के for-attribute का उपयोग करके इसे कनेक्ट करने की अनुमति देता है ।
उदाहरण:
<input type="checkbox" id="myCheckbox1" />
<label for="myCheckbox1"><img src="http://someurl" /></label>
चेकबॉक्स पर लेबल संलग्न करना एक ब्राउज़र व्यवहार को ट्रिगर करेगा: जब भी कोई व्यक्ति लेबल (या इसके अंदर की छवि) पर क्लिक करता है, तो चेकबॉक्स को टॉगल किया जाएगा।
इसके बाद, आप उदाहरण के display: none;लिए आवेदन करके चेकबॉक्स छिपाते हैं ।
अब वह सब करना बाकी है जो शैली आप अपने label::beforeछद्म तत्व के लिए चाहते हैं (जिसे दृश्य चेकबॉक्स तत्वों के रूप में उपयोग किया जाएगा):
label::before {
background-image: url(../path/to/unchecked.png);
}
अंतिम ट्रिकी चरण में, आप :checkedचेकबॉक्स चेक होने पर छवि को बदलने के लिए CSS ' छद्म चयनकर्ता का उपयोग करते हैं :
:checked + label::before {
background-image: url(../path/to/checked.png);
}
+( आसन्न भाई चयनकर्ता ) सुनिश्चित करें कि आप केवल लेबल बदलने कि सीधे मार्कअप में छिपा चेकबॉक्स का पालन करता है।
आप दोनों छवियों को एक स्प्रीटेमैप में डालकर अनुकूलित कर सकते हैं और केवल background-positionछवि को स्वैप करने के बजाय एक परिवर्तन लागू कर सकते हैं ।
बेशक आपको लेबल को सही ढंग से display: block;लगाने और लागू करने और सही सेट करने की आवश्यकता है widthऔर height।
संपादित करें:
कोडपेन उदाहरण और स्निपेट, जो मैंने इन निर्देशों के बाद बनाया था, उसी तकनीक का उपयोग करते हैं , लेकिन चेकबॉक्स के लिए छवियों का उपयोग करने के बजाय, चेकबॉक्स के प्रतिस्थापन विशुद्ध रूप से सीएसएस के साथ किए जाते हैं , ::beforeलेबल पर एक बार बनाते हैं, जो एक बार जांचा जाता है content: "✓";। कुछ गोल बॉर्डर और मीठे संक्रमण जोड़ें और परिणाम वास्तव में पसंद है!
यहाँ एक काम करने वाला कोडपेन है जो तकनीक दिखाता है और चेकबॉक्स के लिए छवियों की आवश्यकता नहीं है:
http://codepen.io/anon/pen/wadwpx
यहाँ एक स्निपेट में समान कोड है:
ul {
list-style-type: none;
}
li {
display: inline-block;
}
input[type="checkbox"][id^="cb"] {
display: none;
}
label {
border: 1px solid #fff;
padding: 10px;
display: block;
position: relative;
margin: 10px;
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
label::before {
background-color: white;
color: white;
content: " ";
display: block;
border-radius: 50%;
border: 1px solid grey;
position: absolute;
top: -5px;
left: -5px;
width: 25px;
height: 25px;
text-align: center;
line-height: 28px;
transition-duration: 0.4s;
transform: scale(0);
}
label img {
height: 100px;
width: 100px;
transition-duration: 0.2s;
transform-origin: 50% 50%;
}
:checked+label {
border-color: #ddd;
}
:checked+label::before {
content: "✓";
background-color: grey;
transform: scale(1);
}
:checked+label img {
transform: scale(0.9);
box-shadow: 0 0 5px #333;
z-index: -1;
}
<ul>
<li><input type="checkbox" id="cb1" />
<label for="cb1"><img src="https://picsum.photos/seed/1/100" /></label>
</li>
<li><input type="checkbox" id="cb2" />
<label for="cb2"><img src="https://picsum.photos/seed/2/100" /></label>
</li>
<li><input type="checkbox" id="cb3" />
<label for="cb3"><img src="https://picsum.photos/seed/3/100" /></label>
</li>
<li><input type="checkbox" id="cb4" />
<label for="cb4"><img src="https://picsum.photos/seed/4/100" /></label>
</li>
</ul>