CSS का उपयोग करके एक चेकबॉक्स कैसे स्टाइल करें


831

मैं निम्नलिखित का उपयोग करके एक चेकबॉक्स स्टाइल करने की कोशिश कर रहा हूं:

<input type="checkbox" style="border:2px dotted #00f;display:block;background:#ff0000;" />

लेकिन शैली लागू नहीं है। चेकबॉक्स अभी भी अपनी डिफ़ॉल्ट शैली प्रदर्शित करता है। मैं इसे निर्दिष्ट शैली कैसे दूं?



1
मुझे लगता है कि आप कुछ इस तरह की तलाश कर रहे हैं: asimishaq.com/myfiles/image-checkbox इस पोस्ट को देखें: stackoverflow.com/questions/16352864/…
asim-ishaq


1
लिंक ऊपर टिप्पणी में है। फिर भी: blog.felixhagspiel.de/index.php/posts/custom-inputs
Felix Hagspiel

1
वाह। इन सभी उत्तरों को देखते हुए मुझे सिर्फ इतना कहना है, यह सब सिर्फ स्क्रीन पर एक स्टाइल चेकबॉक्स लगाने के लिए है
माइकल

जवाबों:


784

अपडेट करें:

नीचे दिए गए उत्तर में सीएसएस की व्यापक उपलब्धता से पहले चीजों की स्थिति का संदर्भ दिया गया है। आधुनिक ब्राउज़रों में (इंटरनेट एक्सप्लोरर 9 और बाद में) जावास्क्रिप्ट का उपयोग किए बिना, अपने पसंदीदा स्टाइल के साथ चेकबॉक्स प्रतिस्थापन बनाने के लिए यह अधिक सीधा है।

यहां कुछ उपयोगी लिंक दिए गए हैं:

यह ध्यान देने योग्य है कि मूल मुद्दा नहीं बदला है। आप अभी भी शैलियों (सीमाओं, आदि) को सीधे चेकबॉक्स तत्व पर लागू नहीं कर सकते हैं और उन शैलियों को HTML चेकबॉक्स के प्रदर्शन को प्रभावित करते हैं। हालाँकि, जो बदल गया है, वह यह है कि अब वास्तविक चेकबॉक्स को छिपाना और कुछ भी नहीं - सीएसएस का उपयोग करके इसे अपने खुद के स्टाइल वाले तत्व से बदलना संभव है। विशेष रूप से, क्योंकि सीएसएस में अब एक व्यापक रूप से समर्थित :checkedचयनकर्ता है, आप बॉक्स के चेक किए गए स्टेटस को प्रतिबिंबित करने के लिए अपने प्रतिस्थापन को सही ढंग से कर सकते हैं।


पुराने ANSWER

यहाँ स्टाइलिंग चेकबॉक्स के बारे में एक उपयोगी लेख दिया गया है । मूल रूप से, उस लेखक ने पाया कि यह ब्राउज़र से ब्राउज़र में बहुत भिन्न होता है, और यह कि कई ब्राउज़र हमेशा डिफ़ॉल्ट चेकबॉक्स को प्रदर्शित करते हैं, भले ही आप इसे कैसे भी स्टाइल करें। तो वास्तव में एक आसान तरीका नहीं है।

ऐसे वर्कअराउंड की कल्पना करना मुश्किल नहीं है जहां आप चेकबॉक्स पर एक छवि को ओवरले करने के लिए जावास्क्रिप्ट का उपयोग करेंगे और उस छवि पर क्लिक करने से वास्तविक चेकबॉक्स की जाँच होगी। जावास्क्रिप्ट के बिना उपयोगकर्ताओं को डिफ़ॉल्ट चेकबॉक्स दिखाई देगा।

जोड़ने के लिए संपादित: यहाँ एक अच्छी स्क्रिप्ट है जो आपके लिए ऐसा करती है ; यह वास्तविक चेकबॉक्स तत्व को छुपाता है, इसे एक स्टाइल स्पैन के साथ बदल देता है, और क्लिक घटनाओं को रीडायरेक्ट करता है।


34
यह जवाब पुराना हो रहा है! प्राथमिक लिंक IE6 और IE7 शैलियों की तुलना करने वाली एक साइट की ओर जाता है ...
योनातन लिटके

7
मेला बिंदु - और मूल बिंदु आधुनिक ब्राउज़रों में अब और सच नहीं है। मैंने कुछ नए लिंक के साथ अपडेट किया है, लेकिन पुराने ब्राउज़रों के लिए संसाधन के रूप में मूल को छोड़ दिया है।
जैकब मैटिसन

3
आसान सीएसएस चेकबॉक्स जनरेटर , वास्तव में आसान और n00b अनुकूल था। अनुकूलित निर्माण के लिए भी जीयूआई के साथ आता है! खूब तारीफ हुई। :)
CZZ

मुझे पुराने उत्तर में दिलचस्पी है क्योंकि मैं चाहता हूं कि यह सुविधा IE8 + और अन्य ब्राउज़रों (क्रोम, फ़ायरफ़ॉक्स और सफारी) के साथ संगत हो। हालाँकि मैं आपको ryanfait.com/resources/custom-checkboxes-and-radio-buttons
Adrien Be

2
यह बहुत उपयोगी उत्तर नहीं है - यह सिर्फ लेखों की एक सूची है, जिनमें से अधिकांश अभी बहुत पुराने हैं।
स्टीव बेनेट

141

सिर्फ CSS का उपयोग करके ऐसा करने का एक तरीका है। हम (एब) labelउस तत्व की जगह तत्व और शैली का उपयोग कर सकते हैं । चेतावनी यह है कि यह इंटरनेट एक्सप्लोरर 8 और निचले संस्करणों के लिए काम नहीं करेगा।

.myCheckbox input {
  position: relative;
  z-index: -9999;
}

.myCheckbox span {
  width: 20px;
  height: 20px;
  display: block;
  background: url("link_to_image");
}

.myCheckbox input:checked + span {
  background: url("link_to_another_image");
}
<label for="test">Label for my styled "checkbox"</label>
<label class="myCheckbox">
  <input type="checkbox" name="test" />
  <span></span>
</label>


@GandalfStormCrow यह किसी भी ब्राउज़र के लिए काम करेगा जो समर्थन करता है: चेक किया गया छद्म वर्ग, जिसका IE8 समर्थन नहीं करता है। आप यह जांच सकते हैं कि क्या यह selectivizr.com के साथ काम करता है - जो इसके लिए समर्थन जोड़ता है: चेक किया गया और मित्र।
ब्लेक पेटर्सन

दूसरे शब्दों में, IE9 और बाद के संस्करण समर्थन करते हैं: जाँच की गई।
ब्लेक पेटरसन

1
IE8 और उससे नीचे के लिए एक पॉलीफ़िल है: github.com/rdebeasi/checked-polyfill
Tim

यह काम कर रहा है, लेकिन पहली बार यह टिमटिमाता है। क्यों हो रहा है?
टेकनोफाइल

मेरा मानना ​​है कि छिपा हुआ inputकभी भी कीबोर्ड का ध्यान नहीं रखता है, इसलिए ये कीबोर्ड द्वारा पहुंच से बाहर हैं।
सैम

139

आप नई क्षमताओं का उपयोग करके काफी शांत कस्टम चेकबॉक्स प्रभाव प्राप्त कर सकते हैं जो कि :afterऔर :beforeछद्म वर्गों के साथ आते हैं। इसका लाभ यह है: आपको DOM से अधिक कुछ भी जोड़ने की जरूरत नहीं है, बस मानक चेकबॉक्स है।

ध्यान दें कि यह केवल संगत ब्राउज़रों के लिए काम करेगा। मेरा मानना ​​है कि यह इस तथ्य से संबंधित है कि कुछ ब्राउज़र आपको इनपुट तत्वों को सेट :afterऔर :beforeऑन करने की अनुमति नहीं देते हैं । दुर्भाग्य से फिलहाल जिसका अर्थ है केवल WebKit ब्राउज़र समर्थित हैं। फ़ायरफ़ॉक्स + इंटरनेट एक्सप्लोरर अभी भी चेकबॉक्स को कार्य करने की अनुमति देगा, बस अस्थिर है, और यह भविष्य में उम्मीद के मुताबिक बदल जाएगा (कोड विक्रेता उपसर्ग का उपयोग नहीं करता है)।

यह केवल एक WebKit ब्राउज़र समाधान है (क्रोम, सफारी, मोबाइल ब्राउज़र)

उदाहरण देखें फिडल

$(function() {
  $('input').change(function() {
    $('div').html(Math.random());
  });
});
/* Main Classes */
.myinput[type="checkbox"]:before {
  position: relative;
  display: block;
  width: 11px;
  height: 11px;
  border: 1px solid #808080;
  content: "";
  background: #FFF;
}

.myinput[type="checkbox"]:after {
  position: relative;
  display: block;
  left: 2px;
  top: -11px;
  width: 7px;
  height: 7px;
  border-width: 1px;
  border-style: solid;
  border-color: #B3B3B3 #dcddde #dcddde #B3B3B3;
  content: "";
  background-image: linear-gradient(135deg, #B1B6BE 0%, #FFF 100%);
  background-repeat: no-repeat;
  background-position: center;
}

.myinput[type="checkbox"]:checked:after {
  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAQAAABuW59YAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAB2SURBVHjaAGkAlv8A3QDyAP0A/QD+Dam3W+kCAAD8APYAAgTVZaZCGwwA5wr0AvcA+Dh+7UX/x24AqK3Wg/8nt6w4/5q71wAAVP9g/7rTXf9n/+9N+AAAtpJa/zf/S//DhP8H/wAA4gzWj2P4lsf0JP0A/wADAHB0Ngka6UmKAAAAAElFTkSuQmCC'), linear-gradient(135deg, #B1B6BE 0%, #FFF 100%);
}

.myinput[type="checkbox"]:disabled:after {
  -webkit-filter: opacity(0.4);
}

.myinput[type="checkbox"]:not(:disabled):checked:hover:after {
  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAQAAABuW59YAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAB2SURBVHjaAGkAlv8A3QDyAP0A/QD+Dam3W+kCAAD8APYAAgTVZaZCGwwA5wr0AvcA+Dh+7UX/x24AqK3Wg/8nt6w4/5q71wAAVP9g/7rTXf9n/+9N+AAAtpJa/zf/S//DhP8H/wAA4gzWj2P4lsf0JP0A/wADAHB0Ngka6UmKAAAAAElFTkSuQmCC'), linear-gradient(135deg, #8BB0C2 0%, #FFF 100%);
}

.myinput[type="checkbox"]:not(:disabled):hover:after {
  background-image: linear-gradient(135deg, #8BB0C2 0%, #FFF 100%);
  border-color: #85A9BB #92C2DA #92C2DA #85A9BB;
}

.myinput[type="checkbox"]:not(:disabled):hover:before {
  border-color: #3D7591;
}

/* Large checkboxes */
.myinput.large {
  height: 22px;
  width: 22px;
}

.myinput.large[type="checkbox"]:before {
  width: 20px;
  height: 20px;
}

.myinput.large[type="checkbox"]:after {
  top: -20px;
  width: 16px;
  height: 16px;
}

/* Custom checkbox */
.myinput.large.custom[type="checkbox"]:checked:after {
  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGHRFWHRBdXRob3IAbWluZWNyYWZ0aW5mby5jb23fZidLAAAAk0lEQVQ4y2P4//8/AyUYwcAD+OzN/oMwshjRBoA0Gr8+DcbIhhBlAEyz+qZZ/7WPryHNAGTNMOxpJvo/w0/uP0kGgGwGaZbrKgfTGnLc/0nyAgiDbEY2BCRGdCDCnA2yGeYVog0Aae5MV4c7Gzk6CRqAbDM2w/EaQEgzXgPQnU2SAcTYjNMAYm3GaQCxNuM0gFwMAPUKd8XyBVDcAAAAAElFTkSuQmCC'), linear-gradient(135deg, #B1B6BE 0%, #FFF 100%);
}

.myinput.large.custom[type="checkbox"]:not(:disabled):checked:hover:after {
  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGHRFWHRBdXRob3IAbWluZWNyYWZ0aW5mby5jb23fZidLAAAAk0lEQVQ4y2P4//8/AyUYwcAD+OzN/oMwshjRBoA0Gr8+DcbIhhBlAEyz+qZZ/7WPryHNAGTNMOxpJvo/w0/uP0kGgGwGaZbrKgfTGnLc/0nyAgiDbEY2BCRGdCDCnA2yGeYVog0Aae5MV4c7Gzk6CRqAbDM2w/EaQEgzXgPQnU2SAcTYjNMAYm3GaQCxNuM0gFwMAPUKd8XyBVDcAAAAAElFTkSuQmCC'), linear-gradient(135deg, #8BB0C2 0%, #FFF 100%);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<table style="width:100%">
  <tr>
    <td>Normal:</td>
    <td><input type="checkbox" /></td>
    <td><input type="checkbox" checked="checked" /></td>
    <td><input type="checkbox" disabled="disabled" /></td>
    <td><input type="checkbox" disabled="disabled" checked="checked" /></td>
  </tr>
  <tr>
    <td>Small:</td>
    <td><input type="checkbox" class="myinput" /></td>
    <td><input type="checkbox" checked="checked" class="myinput" /></td>
    <td><input type="checkbox" disabled="disabled" class="myinput" /></td>
    <td><input type="checkbox" disabled="disabled" checked="checked" class="myinput" /></td>
  </tr>
  <tr>
    <td>Large:</td>
    <td><input type="checkbox" class="myinput large" /></td>
    <td><input type="checkbox" checked="checked" class="myinput large" /></td>
    <td><input type="checkbox" disabled="disabled" class="myinput large" /></td>
    <td><input type="checkbox" disabled="disabled" checked="checked" class="myinput large" /></td>
  </tr>
  <tr>
    <td>Custom icon:</td>
    <td><input type="checkbox" class="myinput large custom" /></td>
    <td><input type="checkbox" checked="checked" class="myinput large custom" /></td>
    <td><input type="checkbox" disabled="disabled" class="myinput large custom" /></td>
    <td><input type="checkbox" disabled="disabled" checked="checked" class="myinput large custom" /></td>
  </tr>
</table>

बोनस वेबकिट शैली फ्लिपस्विच फ़िडल

$(function() {
  var f = function() {
    $(this).next().text($(this).is(':checked') ? ':checked' : ':not(:checked)');
  };
  $('input').change(f).trigger('change');
});
body {
  font-family: arial;
}

.flipswitch {
  position: relative;
  background: white;
  width: 120px;
  height: 40px;
  -webkit-appearance: initial;
  border-radius: 3px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  outline: none;
  font-size: 14px;
  font-family: Trebuchet, Arial, sans-serif;
  font-weight: bold;
  cursor: pointer;
  border: 1px solid #ddd;
}

.flipswitch:after {
  position: absolute;
  top: 5%;
  display: block;
  line-height: 32px;
  width: 45%;
  height: 90%;
  background: #fff;
  box-sizing: border-box;
  text-align: center;
  transition: all 0.3s ease-in 0s;
  color: black;
  border: #888 1px solid;
  border-radius: 3px;
}

.flipswitch:after {
  left: 2%;
  content: "OFF";
}

.flipswitch:checked:after {
  left: 53%;
  content: "ON";
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

<h2>Webkit friendly mobile-style checkbox/flipswitch</h2>
<input type="checkbox" class="flipswitch" /> &nbsp;
<span></span>
<br>
<input type="checkbox" checked="checked" class="flipswitch" /> &nbsp;
<span></span>


9
फ़ायरफ़ॉक्स 33.1 / लिनक्स: फ़िडल बस डिफ़ॉल्ट चेकबॉक्स दिखाता है। कुछ भी अलग नहीं दिखता।
robsch

1
@robsch यह मूल पोस्ट में स्पष्ट रूप से बताया गया है। फायरफॉक्स या ओएस का संस्करण अप्रासंगिक है, यह फ़ायरफ़ॉक्स में काम नहीं करता है। "एफएफ + आईई अभी भी चेक-बॉक्स को कार्य करने की अनुमति देगा, बस अन-स्टाइल ..."
जोश मैक

एक अच्छा तरीका। लेकिन सभी ब्राउज़र इसे अच्छा नहीं कर रहे हैं। जहां तक ​​मैंने जांच की है, केवल क्रोम का सबसे अच्छा आउटपुट है।
ईए

बहुत अच्छा। हालांकि ... यह फिर से एक IE 5.x दृष्टिकोण है। केवल वेबकिट। क्योंकि यह हमेशा नियमों का पालन नहीं करता है ... यह वेबकिट ब्राउज़र के साथ पूरी समस्या है।
एलेक्स

1
सबसे अच्छा उपाय! +1 लेकिन मैं इतना बड़ा उदाहरण लिखने का कारण नहीं देखता। विचार का वर्णन करने के लिए 30 लाइनें पर्याप्त होंगी।
एंड्री बोगाचेंको

136

शुरू करने से पहले (जनवरी 2015 तक)

मूल प्रश्न और उत्तर अब ~ 5 वर्ष के हैं। जैसे, यह थोड़ी अपडेट है।

सबसे पहले, चेकबॉक्स को स्टाइल करने की बात आती है। मूल सिद्धांत है:

  1. आपको डिफ़ॉल्ट चेकबॉक्स नियंत्रण को छिपाने की आवश्यकता होगी जो आपके ब्राउज़र द्वारा स्टाइल किया गया है, और सीएसएस का उपयोग करके किसी भी सार्थक तरीके से ओवरराइड नहीं किया जा सकता है।

  2. छिपे हुए नियंत्रण के साथ, आपको अभी भी इसकी जांच की गई स्थिति का पता लगाने और टॉगल करने में सक्षम होना चाहिए

  3. चेकबॉक्स की जांच की गई स्थिति को एक नए तत्व को स्टाइल करके प्रतिबिंबित करने की आवश्यकता होगी

समाधान (सिद्धांत में)

उपरोक्त को कई माध्यमों से पूरा किया जा सकता है - और आप अक्सर सुनेंगे CSS3 छद्म तत्वों का सही तरीका है। वास्तव में, कोई वास्तविक सही या गलत तरीका नहीं है, यह उस दृष्टिकोण के लिए सबसे उपयुक्त है जो उस संदर्भ के लिए उपयुक्त है जो आप इसका उपयोग कर रहे हैं। उस ने कहा, मेरे पास एक पसंदीदा है।

  1. अपने चेकबॉक्स को एक labelतत्व में लपेटें । इसका मतलब यह होगा कि जब यह छिपा हुआ है, तब भी आप लेबल के भीतर कहीं भी क्लिक करने पर इसकी जाँच की गई स्थिति को टॉगल कर सकते हैं।

  2. अपना चेकबॉक्स छिपाएँ

  3. चेकबॉक्स के बाद एक नया तत्व जोड़ें , जिसे आप तदनुसार शैली देंगे। यह चेकबॉक्स के बाद दिखाई देना चाहिए, ताकि इसे सीएसएस और :checkedराज्य पर निर्भर स्टाइल का उपयोग करके चुना जा सके । CSS 'बैकवर्ड' का चयन नहीं कर सकता है।

समाधान (कोड में)

शोधन (आइकन का उपयोग करके)

लेकिन नमसते! मैं तुम्हें चिल्लाते सुना। अगर मैं बॉक्स में एक अच्छा सा टिक या क्रॉस दिखाना चाहता हूं तो क्या होगा? और मैं पृष्ठभूमि छवियों का उपयोग नहीं करना चाहता!

खैर, यह वह जगह है जहां CSS3 के छद्म तत्व खेल में आ सकते हैं। ये उस contentसंपत्ति का समर्थन करते हैं जो आपको या तो राज्य का प्रतिनिधित्व करने वाले यूनिकोड आइकन को इंजेक्ट करने की अनुमति देता है । वैकल्पिक रूप से, आप किसी तीसरे पक्ष के फ़ॉन्ट आइकन स्रोत का उपयोग कर सकते हैं जैसे कि फ़ॉन्ट भययोग्य (हालांकि सुनिश्चित करें कि आपने प्रासंगिक भी सेट किया है font-family, जैसे FontAwesome)

label input {
  display: none; /* Hide the default checkbox */
}

/* Style the artificial checkbox */
label span {
  height: 10px;
  width: 10px;
  border: 1px solid grey;
  display: inline-block;
  position: relative;
}

/* Style its checked state...with a ticked icon */
[type=checkbox]:checked + span:before {
  content: '\2714';
  position: absolute;
  top: -5px;
  left: 0;
}
<label>
  <input type='checkbox'>
  <span></span>
  Checkbox label text
</label>


14
को छोड़कर: सरलीकृत HTML, सरलीकृत CSS, विस्तृत विवरण।
SW4

4
@AnthonyHayward - अद्यतित उत्तर, यह डिस्प्ले का उपयोग करने के कारण था: कोई भी जो नियंत्रण योग्य तरीके से नियंत्रण को तुरंत नहीं करता है, मैंने बदल दिया है
SW4

1
मैं एक उदाहरण खोजने के लिए संघर्ष कर रहा था जिसमें चेकबॉक्स लेबल के अंदर / उसके पहले के बजाय था। यह एक बहुत अच्छी तरह से प्रलेखित और समझाया गया समाधान है। जनवरी 2016 के लिए अपडेट किए गए इस उत्तर को देखना बहुत अच्छा होगा।
क्लारस डिग्नस

1
अभी भी साथ नहीं display: none
सैम

2
बदलें visibility: hidden;के साथ opacity: 0 !important;अगर आप अभी भी टैब के साथ समस्या हो।
jabacchetta

40

मैं SW4 के उत्तर की सलाह का पालन करूंगा - चेकबॉक्स को छुपाने और एक कस्टम स्पैन के साथ कवर करने के लिए, इस HTML का सुझाव देते हुए:

<label>
  <input type="checkbox">
  <span>send newsletter</span>
</label>

लेबल में लपेट "करीबी" विशेषता लिंकिंग की आवश्यकता के बिना पाठ को बड़े करीने से क्लिक करने की अनुमति देता है। तथापि,

इसे का उपयोग कर छिपा नहीं है visibility: hiddenयाdisplay: none

यह क्लिक या टैप करके काम करता है, लेकिन यह चेकबॉक्स का उपयोग करने के लिए एक लंगड़ा तरीका है। कुछ लोग अभी भी Tabफ़ोकस को ले जाने के Spaceलिए, सक्रिय करने के लिए, और उस पद्धति के साथ छुपाने के लिए बहुत अधिक प्रभावी का उपयोग करते हैं जो इसे निष्क्रिय कर देता है। यदि फ़ॉर्म लंबा है, तो कोई किसी की कलाई को उपयोग tabindexया accesskeyविशेषताओं के लिए सहेजेगा । और यदि आप सिस्टम चेकबॉक्स व्यवहार का निरीक्षण करते हैं, तो होवर पर एक सभ्य छाया है। अच्छी तरह से स्टाइल किए गए चेकबॉक्स को इस व्यवहार का पालन करना चाहिए।

cobberboy के जवाब की सिफारिश की फ़ॉन्ट बहुत बढ़िया जो आम तौर पर बिटमैप से बेहतर है के बाद से फोंट स्केलेबल वैक्टर हैं। उपरोक्त HTML के साथ काम करना, मैं इन सीएसएस नियमों का सुझाव दूंगा:

  1. चेकबॉक्स छिपाएँ

    input[type="checkbox"] {
      position: absolute;
      opacity: 0;
      z-index: -1;
    }

    मैं सिर्फ नकारात्मक z-indexका उपयोग करता हूं क्योंकि मेरा उदाहरण पूरी तरह से कवर करने के लिए बड़ी पर्याप्त चेकबॉक्स त्वचा का उपयोग करता है। मैं अनुशंसा नहीं करता left: -999pxक्योंकि यह हर लेआउट में पुन: प्रयोज्य नहीं है। बुशन वाघ का जवाब इसे छिपाने के लिए एक बुलेटप्रूफ तरीका प्रदान करता है और ब्राउज़र को टैबइंडेक्स का उपयोग करने के लिए मनाता है, इसलिए यह एक अच्छा विकल्प है। वैसे भी, दोनों सिर्फ एक हैक है। आज उचित तरीका है appearance: none, देखें जोस्ट का जवाब :

    input[type="checkbox"] {
      appearance: none;
      -webkit-appearance: none;
      -moz-appearance: none;
    }
  2. स्टाइल चेकबॉक्स लेबल

    input[type="checkbox"] + span {
      font: 16pt sans-serif;
      color: #000;
    }
  3. चेकबॉक्स त्वचा जोड़ें

    input[type="checkbox"] + span:before {
      font: 16pt FontAwesome;
      content: '\00f096';
      display: inline-block;
      width: 16pt;
      padding: 2px 0 0 3px;
      margin-right: 0.5em;
    }

    \00f096फ़ॉन्ट विस्मयकारी है square-o, फ़ोकसिंग को फ़ोकस पर भी डॉटेड आउटलाइन प्रदान करने के लिए समायोजित किया गया है (नीचे देखें)।

  4. चेकबॉक्स चेक की हुई त्वचा जोड़ें

    input[type="checkbox"]:checked + span:before {
      content: '\00f046';
    }

    \00f046फ़ॉन्ट विस्मयकारी है check-square-o, जो कि उतनी चौड़ाई नहीं है square-o, जो ऊपर की चौड़ाई शैली का कारण है।

  5. फ़ोकस रूपरेखा जोड़ें

    input[type="checkbox"]:focus + span:before {
      outline: 1px dotted #aaa;
    }

    सफारी यह सुविधा प्रदान नहीं करता है (देखें @Jason Sankey की टिप्पणी), आपको window.navigatorब्राउज़र का पता लगाने के लिए उपयोग करना चाहिए और यदि यह सफारी है तो इसे छोड़ दें।

  6. अक्षम चेकबॉक्स के लिए ग्रे रंग सेट करें

    input[type="checkbox"]:disabled + span {
      color: #999;
    }
  7. गैर-अक्षम चेकबॉक्स पर हॉवर छाया सेट करें

    input[type="checkbox"]:not(:disabled) + span:hover:before {
      text-shadow: 0 1px 2px #77F;
    }

डेमो फिडल

चेकबॉक्स पर माउस को मंडराने की कोशिश करें और उपयोग करें Tabऔर स्थानांतरित करने और टॉगल करने के लिए Shift+ ।TabSpace


3
फ़ोकस समस्या को कवर करने के लिए अपवोट: इस तरह के कस्टमाइज़ेशन को बुनियादी कार्यक्षमता को नहीं हटाना चाहिए। ध्यान दें कि सफारी कीबोर्ड को चेकबॉक्स (यहां तक ​​कि डिफ़ॉल्ट वाले) पर ध्यान केंद्रित नहीं करता है, जो कि समाधान को लागू करते समय मुझे पल-पल भ्रमित करता है जिसमें फोकस हैंडलिंग शामिल है।
जेसन सेंके

यह लगता है स्निपेट में चेक बॉक्स अब और काम नहीं कर रहे? क्रोम खिड़कियों पर 10
फेलिक्स गगनोन-ग्रेनियर

1
अच्छा उत्तर। मेरे समाधान के लिए आधार प्रदान किया- मैंने मौजूदा लेबल का उपयोग उस इनपुट के बाद किया है जहाँ आपने एक अतिरिक्त अवधि का उपयोग किया है और मुझे Edge & FF का समर्थन प्राप्त है।
Jono

2
इनमें से अधिकांश जवाब पहुंच को नजरअंदाज करते हैं। मैं प्यार करता हूँ कि यह जवाब है कि चातुर्य में रहता है।
मैक्सशूट

1
@ मैक्सशूट मुझे आपका दृष्टिकोण पसंद है, भी: जब कोई पुस्तकालय बनाता है, तो अक्सर यह सिर्फ एक स्वीकारोक्ति है कि वह अपनी पसंद की मूल भाषा में सरलता से कोड नहीं कर सकता है। IMHO FontAwesome ने फ़ॉन्ट लोड करने के लिए जावास्क्रिप्ट का उपयोग करके अपनी नि: शुल्क योजना के साथ खराब कर दिया है, लेकिन मैं अभी भी उन्हें पसंद करता हूं क्योंकि वे खुले स्रोत और मुफ्त लाइसेंस रहते हैं। मैं आमतौर पर विशेष प्रोजेक्ट में (आमतौर पर अधिकतम 5kB) की आवश्यकता वाले मुफ्त आइकन के फ़ॉन्ट-फोर्जिंग सबसेट को समाप्त करता हूं। मैं ख़ुशी से भुगतान करूंगा अगर उन्होंने मुझे प्रयास करने से बचाया, लेकिन प्रति वर्ष 99 $ पागल नहीं, जैसा कि वे अपनी प्रो योजना में प्रस्तावित करते हैं।
जन तुरु

30

आप labelएक उदाहरण के नीचे दिए गए तत्व का उपयोग करके एक छोटी सी प्रवंचना के साथ चेकबॉक्स को स्टाइल कर सकते हैं:

.checkbox > input[type=checkbox] {
  visibility: hidden;
}

.checkbox {
  position: relative;
  display: block;
  width: 80px;
  height: 26px;
  margin: 0 auto;
  background: #FFF;
  border: 1px solid #2E2E2E;
  border-radius: 2px;
  -webkit-border-radius: 2px;
  -moz-border-radius: 2px;
}

.checkbox:after {
  position: absolute;
  display: inline;
  right: 10px;
  content: 'no';
  color: #E53935;
  font: 12px/26px Arial, sans-serif;
  font-weight: bold;
  text-transform: capitalize;
  z-index: 0;
}

.checkbox:before {
  position: absolute;
  display: inline;
  left: 10px;
  content: 'yes';
  color: #43A047;
  font: 12px/26px Arial, sans-serif;
  font-weight: bold;
  text-transform: capitalize;
  z-index: 0;
}

.checkbox label {
  position: absolute;
  display: block;
  top: 3px;
  left: 3px;
  width: 34px;
  height: 20px;
  background: #2E2E2E;
  cursor: pointer;
  transition: all 0.5s linear;
  -webkit-transition: all 0.5s linear;
  -moz-transition: all 0.5s linear;
  border-radius: 2px;
  -webkit-border-radius: 2px;
  -moz-border-radius: 2px;
  z-index: 1;
}

.checkbox input[type=checkbox]:checked + label {
  left: 43px;
}
<div class="checkbox">
  <input id="checkbox1" type="checkbox" value="1" />
  <label for="checkbox1"></label>
</div>

और उपरोक्त कोड के लिए एक FIDDLE । ध्यान दें कि कुछ CSS ब्राउज़र के पुराने संस्करणों में काम नहीं करते हैं, लेकिन मुझे यकीन है कि वहाँ कुछ फैंसी जावास्क्रिप्ट उदाहरण हैं!


28

लागू करने के लिए सरल और आसानी से अनुकूलन योग्य समाधान

बहुत सारे खोज और परीक्षण के बाद मुझे यह समाधान मिला जो लागू करने के लिए सरल है और अनुकूलित करना आसान है। इस समाधान में :

  1. आप बाहरी पुस्तकालयों और फ़ाइलों की जरूरत नहीं है
  2. आपको अपने पृष्ठ में अतिरिक्त HTML जोड़ने की आवश्यकता नहीं है
  3. आपको चेकबॉक्स के नाम और आईडी बदलने की आवश्यकता नहीं है

सरल अपने पृष्ठ के शीर्ष पर बहने वाली सीएसएस डालें और सभी चेकबॉक्स शैली इस तरह से बदल जाएगी:

यहां छवि विवरण दर्ज करें

input[type=checkbox] {
  transform: scale(1.5);
}

input[type=checkbox] {
  width: 30px;
  height: 30px;
  margin-right: 8px;
  cursor: pointer;
  font-size: 17px;
  visibility: hidden;
}

input[type=checkbox]:after {
  content: " ";
  background-color: #fff;
  display: inline-block;
  margin-left: 10px;
  padding-bottom: 5px;
  color: #00BFF0;
  width: 22px;
  height: 25px;
  visibility: visible;
  border: 1px solid #00BFF0;
  padding-left: 3px;
  border-radius: 5px;
}

input[type=checkbox]:checked:after {
  content: "\2714";
  padding: -5px;
  font-weight: bold;
}

1
सरल बेहतर है!
एड्रियन मोइसा

यह एक महान जवाब है, यह सिर्फ कुछ अतिरिक्त की आवश्यकता के बिना काम करता है
हैवीहेड

अच्छा एक और बहुत ही सरल
khalidh

अच्छा समाधान है। लेकिन मैं इसे फ़ायरफ़ॉक्स, IE या एज पर काम नहीं करता (कोई चेकबॉक्स नहीं है)
जॉनो

20

आप अतिरिक्त मार्कअप जोड़ने से बच सकते हैं। यह डेस्कटॉप के लिए IE (लेकिन विंडोज फोन और माइक्रोसॉफ्ट एज के लिए IE में काम करता है) की स्थापना के माध्यम से सीएसएस को छोड़कर हर जगह काम करता है appearance:

input[type="checkbox"] {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;

  /* Styling checkbox */
  width: 16px;
  height: 16px;
  background-color: red;
}

input[type="checkbox"]:checked {
  background-color: green;
}
<input type="checkbox" />


3
मैं इस दृष्टिकोण को पसंद करता हूं - यह थोड़ा हैक है क्योंकि आपको कभी भी सीएसएस में उपस्थिति का उपयोग नहीं करना चाहिए, लेकिन यह पहले और बाद में उपयोग करने वाले कुछ अन्य उत्तरों की तुलना में बहुत साफ है। और कुछ इस तरह से मुझे लगता है कि जावास्क्रिप्ट पूरा ओवरकिल है।
Sprose

18

मैं आइकन फोंट (जैसे कि FontAwesome) का उपयोग करना पसंद करता हूं, क्योंकि सीएसएस के साथ अपने रंगों को संशोधित करना आसान है, और वे उच्च पिक्सेल-घनत्व वाले उपकरणों पर वास्तव में अच्छी तरह से स्केल करते हैं। तो यहाँ एक और शुद्ध सीएसएस संस्करण है, जो उपरोक्त तकनीकों के समान है।

(नीचे एक स्थिर छवि है, ताकि आप परिणाम की कल्पना कर सकें; एक इंटरैक्टिव संस्करण के लिए JSFiddle देखें ।)

चेकबॉक्स का उदाहरण

अन्य समाधानों की तरह, यह labelतत्व का उपयोग करता है । एक आसन्न spanहमारे चेकबॉक्स चरित्र रखता है।

span.bigcheck-target {
  font-family: FontAwesome; /* Use an icon font for the checkbox */
}

input[type='checkbox'].bigcheck {
  position: relative;
  left: -999em; /* Hide the real checkbox */
}

input[type='checkbox'].bigcheck + span.bigcheck-target:after {
  content: "\f096"; /* In fontawesome, is an open square (fa-square-o) */
}

input[type='checkbox'].bigcheck:checked + span.bigcheck-target:after {
  content: "\f046"; /* fontawesome checked box (fa-check-square-o) */
}

/* ==== Optional - colors and padding to make it look nice === */
body {
  background-color: #2C3E50;
  color: #D35400;
  font-family: sans-serif;
  font-weight: 500;
  font-size: 4em; /* Set this to whatever size you want */
}

span.bigcheck {
  display: block;
  padding: 0.5em;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />

<span class="bigcheck">
  <label class="bigcheck">
    Cheese
    <input type="checkbox" class="bigcheck" name="cheese" value="yes" />
    <span class="bigcheck-target"></span>
  </label>
</span>

यहाँ इसके लिए JSFiddle है।


.... आपने जो वर्णन किया है, वह भूषण वाघ, जेक, जोनाथन हॉजसन और ब्लेक;) से पिछले उत्तर के समान ही है;
SW4

7
@ SW4 मैंने इस तथ्य का संदर्भ दिया है, सिवाय इस उत्तर के कि आइकन फोंट का उपयोग किया जाता है (जो पिछले उत्तरों में से कोई भी नहीं था)। पहला पैराग्राफ उस बहुत स्पष्ट बनाता है।
कोबर्बॉय

यदि आप इसे नए संस्करण में काम करना चाहते हैं, तो आपको यूनिकोड की सामग्री के font-family: FontAwesome;साथ प्रतिस्थापित करना होगा font-family: 'Font Awesome\ 5 Free';और अपडेट करना होगा।
SuN

12

हाल ही में मुझे समस्या का काफी दिलचस्प समाधान मिला।

आप appearance: none;चेकबॉक्स की डिफ़ॉल्ट शैली को बंद करने के लिए उपयोग कर सकते हैं और फिर अपना स्वयं का लिख ​​सकते हैं जैसे कि यहां वर्णित है (उदाहरण 4)

उदाहरण का बेड़ा

दुर्भाग्य से ब्राउज़र समर्थन appearanceविकल्प के लिए काफी खराब है । अपने व्यक्तिगत परीक्षण से मुझे केवल ओपेरा और क्रोम सही ढंग से काम कर रहे थे। लेकिन बेहतर तरीका आने पर इसे सरल रखने का तरीका होगा या आप केवल क्रोम / ओपेरा का उपयोग करना चाहते हैं।

"क्या में उपयोग कर सकता हूँ?" संपर्क


वास्तव appearanceमें बस इसके लिए हमें क्या चाहिए; बस यह ध्यान में रखना "गैर-मानक है और एक मानक ट्रैक पर नहीं है"
सैम

12

शुद्ध सीएसएस के साथ, कुछ भी नहीं के साथ फैंसी :beforeऔर :after, कोई रूपांतरित नहीं करता है, आप डिफ़ॉल्ट उपस्थिति को बंद कर सकते हैं और फिर निम्न उदाहरण की तरह इनलाइन पृष्ठभूमि छवि के साथ इसे स्टाइल कर सकते हैं। यह क्रोम, फ़ायरफ़ॉक्स, सफारी और अब एज (क्रोमियम एज) में काम करता है।

INPUT[type=checkbox]:focus
{
    outline: 1px solid rgba(0, 0, 0, 0.2);
}

INPUT[type=checkbox]
{
    background-color: #DDD;
    border-radius: 2px;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    width: 17px;
    height: 17px;
    cursor: pointer;
    position: relative;
    top: 5px;
}

INPUT[type=checkbox]:checked
{
    background-color: #409fd6;
    background: #409fd6 url("data:image/gif;base64,R0lGODlhCwAKAIABAP////3cnSH5BAEKAAEALAAAAAALAAoAAAIUjH+AC73WHIsw0UCjglraO20PNhYAOw==") 3px 3px no-repeat;
}
<form>
  <label><input type="checkbox">I Agree To Terms &amp; Conditions</label>
</form>


1
हाँ! केवल एक ही वास्तव में सभ्य है।
ओडिन्हो - वेलमॉन्ट

10

मेरा समाधान

input[type="checkbox"] {
  cursor: pointer;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  outline: 0;
  background: lightgray;
  height: 16px;
  width: 16px;
  border: 1px solid white;
}

input[type="checkbox"]:checked {
  background: #2aa1c0;
}

input[type="checkbox"]:hover {
  filter: brightness(90%);
}

input[type="checkbox"]:disabled {
  background: #e6e6e6;
  opacity: 0.6;
  pointer-events: none;
}

input[type="checkbox"]:after {
  content: '';
  position: relative;
  left: 40%;
  top: 20%;
  width: 15%;
  height: 40%;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
  display: none;
}

input[type="checkbox"]:checked:after {
  display: block;
}

input[type="checkbox"]:disabled:after {
  border-color: #7b7b7b;
}
<input type="checkbox"><br>
<input type="checkbox" checked><br>
<input type="checkbox" disabled><br>
<input type="checkbox" disabled checked><br>


अगर कोई सलाह दे सकता है कि मेरे पाठ के बाद संरेखित क्यों नहीं किया गया है, तो मुझे जानना अच्छा लगेगा! सीएसएस शुरुआत यहाँ।
agirault

8

आप बस appearance: noneआधुनिक ब्राउज़रों पर उपयोग कर सकते हैं, ताकि कोई डिफ़ॉल्ट स्टाइल न हो और आपकी सभी शैलियाँ ठीक से लागू हों:

input[type=checkbox] {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  display: inline-block;
  width: 2em;
  height: 2em;
  border: 1px solid gray;
  outline: none;
  vertical-align: middle;
}

input[type=checkbox]:checked {
  background-color: blue;
}

1
यह एक विशेष रूप से न्यूनतावादी उदाहरण है जिसने मेरे मामले के लिए काम किया, धन्यवाद!
जेसन आर स्टीवंस CFA

8

कोई जावास्क्रिप्ट, कोई बाहरी पुस्तकालयों, अभिगम्यता अनुपालन, और चेकबॉक्स और रेडियो बटन दोनों चाहते हैं?

मैं स्क्रॉल किया गया है और स्क्रॉल और टन इन उत्तरों की बस बाहर दरवाजे पहुंच फेंक और डब्लुसीएजी का उल्लंघन एक से अधिक तरीके से। जब आप कस्टम चेकबॉक्स का उपयोग कर रहे हैं, तब से अधिकांश समय मैं रेडियो बटन में फेंक देता हूं, आप कस्टम रेडियो बटन भी चाहते हैं।

फ़िडल्स :

  • चेकबॉक्स - शुद्ध सीएसएस - 3 पार्टी पुस्तकालयों से मुक्त
  • रेडियो बटन - शुद्ध सीएसएस - 3 पार्टी पुस्तकालयों से मुक्त
  • चेकबॉक्स * जो FontAwesome का उपयोग करता है, लेकिन आसानी से ग्लिफ़िकॉन आदि के साथ स्वैप किया जा सकता है

पार्टी के लिए देर हो चुकी है लेकिन किसी तरह 2019 2020 में यह अभी भी मुश्किल है इसलिए मैंने अपने तीन समाधान जोड़े हैं जो सुलभ हैं और ड्रॉप करना आसान है।

ये सभी जावास्क्रिप्ट मुक्त , बाहरी पुस्तकालय मुक्त * , और सुलभ हैं ...

यदि आप इनमें से किसी के साथ प्लग-एन-प्ले करना चाहते हैं, तो फ़िडल्स से स्टाइल शीट को कॉपी करें, अपनी आवश्यकताओं को पूरा करने के लिए सीएसएस में रंग कोड संपादित करें, और अपने रास्ते पर रहें। यदि आप चेकबॉक्स के लिए चाहें तो आप एक कस्टम svg चेकमार्क आइकन जोड़ सकते हैं। मैंने उन गैर-सीएसएस लोगों के लिए बहुत सारी टिप्पणियाँ जोड़ी हैं।

यदि आपके पास लंबा पाठ या एक छोटा कंटेनर है और चेकबॉक्स या रेडियो बटन इनपुट के नीचे पाठ रैपिंग का सामना कर रहे हैं, तो बस इस तरह से divs में कनवर्ट करें

लंबे समय तक स्पष्टीकरण: मुझे एक ऐसे समाधान की आवश्यकता थी जो WCAG का उल्लंघन न करे, जावास्क्रिप्ट या बाहरी पुस्तकालयों पर निर्भर न हो, और जो चयन करने के लिए टैबिंग या स्पेसबार की तरह कीबोर्ड नेविगेशन को नहीं तोड़ता है, जो फोकस घटनाओं की अनुमति देता है, एक समाधान जो विकलांग चेकबॉक्स की अनुमति देता है दोनों जाँच कर रहे हैं और अनियंत्रित, और अंत में एक समाधान है, जहां मैं चेकबॉक्स का रूप कस्टमाइज़ कर सकते हैं लेकिन मैं अलग से चाहते हैं background-colorकी, border-radius, svgपृष्ठभूमि, आदि

मैंने अपने जवाब के साथ आने के लिए @Jan Turo come के इस संयोजन के कुछ संयोजन का उपयोग किया जो कि काफी अच्छा काम करता है। मैंने एक रेडियो बटन फिडेल किया है जो रेडियो बटन के साथ इस कार्य को करने के लिए चेकबॉक्स से एक ही कोड का बहुत उपयोग करता है।

मैं अभी भी एक्सेसिबिलिटी सीख रहा हूं इसलिए अगर मुझे कुछ याद आया तो कृपया एक टिप्पणी छोड़ दें और मैं इसे सही करने की कोशिश करूंगा यहां मेरे बॉक्सबॉक्स का एक कोड उदाहरण है:

input[type="checkbox"] {
  position: absolute;
  opacity: 0;
  z-index: -1;
}

/* Text color for the label */
input[type="checkbox"]+span {
  cursor: pointer;
  font: 16px sans-serif;
  color: black;
}

/* Checkbox un-checked style */
input[type="checkbox"]+span:before {
  content: '';
  border: 1px solid grey;
  border-radius: 3px;
  display: inline-block;
  width: 16px;
  height: 16px;
  margin-right: 0.5em;
  margin-top: 0.5em;
  vertical-align: -2px;
}

/* Checked checkbox style (in this case the background is red) */
input[type="checkbox"]:checked+span:before {
  /* NOTE: Replace the url with a path to an SVG of a checkmark to get a checkmark icon */
  background-image: url('https://cdnjs.cloudflare.com/ajax/libs/ionicons/4.5.6/collection/build/ionicons/svg/ios-checkmark.svg');
  background-repeat: no-repeat;
  background-position: center;
  /* The size of the checkmark icon, you may/may not need this */
  background-size: 25px;
  border-radius: 2px;
  background-color: #e7ffba;
  color: white;
}

/* Adding a dotted border around the active tabbed-into checkbox */
input[type="checkbox"]:focus+span:before,
input[type="checkbox"]:not(:disabled)+span:hover:before {
  /* Visible in the full-color space */
  box-shadow: 0px 0px 0px 2px rgba(0, 150, 255, 1);

  /* Visible in Windows high-contrast themes
     box-shadow will be hidden in these modes and
     transparency will not be hidden in high-contrast
     thus box-shadow will not show but the outline will
     providing accessibility */
  outline-color: transparent; /*switch to transparent*/
  outline-width: 2px;
  outline-style: dotted;
  }


/* Disabled checkbox styles */
input[type="checkbox"]:disabled+span {
  cursor: default;
  color: black;
  opacity: 0.5;
}

/* Styles specific to this fiddle that you do not need */
body {
  padding: 1em;
}
h1 {
  font-size: 18px;
}
<h1>
  NOTE: Replace the url for the background-image in CSS with a path to an SVG in your solution or CDN. This one was found from a quick google search for a checkmark icon cdn
</h1>

<label>
  <input type="checkbox">
  <span>Try using tab and space</span>
</label>

<br>

<label>
  <input type="checkbox" checked disabled>
  <span>Disabled Checked Checkbox</span>
</label>

<br>

<label>
  <input type="checkbox" disabled>
  <span>Disabled Checkbox</span>
</label>
<br>

<label>
  <input type="checkbox">
  <span>Normal Checkbox</span>
</label>

<br>

<label>
  <input type="checkbox">
  <span>Another Normal Checkbox</span>
</label>


मैंने अपना जवाब यहाँ भी जोड़ा , उम्मीद है कि यह किसी की मदद करे। मैंने उनका इस्तेमाल किया। :) उम्मीद है कि कोई इसे देखे।
श्री पॉलीविरल

6

यहाँ किसी भी jQuery या जावास्क्रिप्ट कोड के बिना एक सरल सीएसएस समाधान है।

मैं FontAwseome आइकन का उपयोग कर रहा हूं, लेकिन आप किसी भी छवि का उपयोग कर सकते हैं

input[type=checkbox] {
  display: inline-block;
  font-family: FontAwesome;
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  visibility: hidden;
  font-size: 14px;
}

input[type=checkbox]:before {
  content: @fa-var-square-o;
  visibility: visible;
  /*font-size: 12px;*/
}

input[type=checkbox]:checked:before {
  content: @fa-var-check-square-o;
}

1
अधिकांश अन्य उत्तरों के विपरीत, इस अतिरिक्त labelया spanतत्वों के निर्माण की आवश्यकता नहीं है । यह सिर्फ काम करता है!
कर्टप्रिस्टन

क्या आप एक उदाहरण या एक डेमो या कम से कम HTML भाग दिखा सकते हैं, जिसके साथ यह सीएसएस कोड काम कर रहा है? @aWebDeveloper
Sándor Zuboly

@AWebDeveloper होम पेज पर एक उत्तर या प्रश्न को टक्कर देने के लिए अयोग्य संपादन करना नियमों के विरुद्ध है।
टाइलेर

@aWebDeveloper आपने एक निष्क्रिय प्रश्न पर एक पुराना उत्तर संपादित किया है, जो इसे फ्रंट पेज पर ले जाता है और आपके उत्तर के लिए एक लिंक प्रदान करता है। यदि आप किसी उत्तर में जोड़ने या बदलने के लिए उचित जानकारी रखते हैं तो यह ठीक है। आपके द्वारा किया गया एक उद्धरण ब्लॉक में आपके एक वाक्य को एम्बेड करता है, जो किसी के लिए उपयोगी नहीं है।
टायलरएच

काम करना चाहिए @VadimOvchinnikov ... यहाँ कुछ भी क्रोम विशिष्ट नहीं है
aWebDeveloper

6

मेरे googling से, यह चेकबॉक्स स्टाइलिंग का सबसे आसान तरीका है। बस अपने डिजाइन के आधार पर जोड़ें :afterऔर :checked:afterसीएसएस।

body{
  background: #DDD;
}
span{
  margin-left: 30px;
}
input[type=checkbox] {
    cursor: pointer;
    font-size: 17px;
    visibility: hidden;
    position: absolute;
    top: 0;
    left: 0;
    transform: scale(1.5);
}

input[type=checkbox]:after {
    content: " ";
    background-color: #fff;
    display: inline-block;
    color: #00BFF0;
    width: 14px;
    height: 19px;
    visibility: visible;
    border: 1px solid #FFF;
    padding: 0 3px;
    margin: 2px 0;
    border-radius: 8px;
    box-shadow: 0 0 15px 0 rgba(0,0,0,0.08), 0 0 2px 0 rgba(0,0,0,0.16);
}

input[type=checkbox]:checked:after {
    content: "\2714";
    display: unset;
    font-weight: bold;
}
<input type="checkbox"> <span>Select Text</span>


ब्राउज़रों के लिए बहुत अच्छा समाधान जो छद्म तत्वों का समर्थन करते हैं। :)
जीन-फ्रांकोइस ब्यूचैम्प

6

सादे CSS3 के साथ चेकबॉक्स शैली को संशोधित करें, जेएस और HTML हेरफेर की आवश्यकता नहीं है

.form input[type="checkbox"]:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  content: "\f096";
  opacity: 1 !important;
  margin-top: -25px;
  appearance: none;
  background: #fff;
}

.form input[type="checkbox"]:checked:before {
  content: "\f046";
}

.form input[type="checkbox"] {
  font-size: 22px;
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />

<form class="form">
  <input type="checkbox" />
</form>


@VadimOvchinnikov हमारे पास एक समाधान है जिसमें कुछ html संरचना का पालन करने की आवश्यकता है .. stackoverflow.com/questions/23305780/…
BEJGAM SHIVA PRASAD

4

एक सरल और हल्का टेम्प्लेट:

input[type=checkbox] {
  cursor: pointer;
}

input[type=checkbox]:checked:before {
  content: "\2713";
  background: #fffed5;
  text-shadow: 1px 1px 1px rgba(0, 0, 0, .2);
  font-size: 20px;
  text-align: center;
  line-height: 8px;
  display: inline-block;
  width: 13px;
  height: 15px;
  color: #00904f;
  border: 1px solid #cdcdcd;
  border-radius: 4px;
  margin: -3px -3px;
  text-indent: 1px;
}

input[type=checkbox]:before {
  content: "\202A";
  background: #ffffff;
  text-shadow: 1px 1px 1px rgba(0, 0, 0, .2);
  font-size: 20px;
  text-align: center;
  line-height: 8px;
  display: inline-block;
  width: 13px;
  height: 15px;
  color: #00904f;
  border: 1px solid #cdcdcd;
  border-radius: 4px;
  margin: -3px -3px;
  text-indent: 1px;
}
<input type="checkbox" checked="checked">checked1<br>
<input type="checkbox">unchecked2<br>
<input type="checkbox" checked="checked" id="id1">
<label for="id1">checked2+label</label><br>
<label for="id2">unchecked2+label+rtl</label>
<input type="checkbox" id="id2">
<br>

https://jsfiddle.net/rvgccn5b/


1
S के लिए छद्म नाम inputकेवल Chrome में समर्थित हैं, आपका कोड प्रत्येक ब्राउज़र में समान काम नहीं करता है।
वादिम ओविचनिकोव

4

मुझे लगता है कि इसे करने का सबसे आसान तरीका है स्टाइल labelऔर checkboxअदृश्य बनाना।

एचटीएमएल

<input type="checkbox" id="first" />
<label for="first">&nbsp;</label>

सीएसएस

checkbox {
  display: none;
}

checkbox + label {
  /* Style for checkbox normal */
  width: 16px;
  height: 16px;
}

checkbox::checked + label,
label.checked {
  /* Style for checkbox checked */
}

checkboxहालांकि यह छिपा हुआ है, अभी भी पहुंचा जा सकेगा, और जब एक फ़ॉर्म सबमिट किया जाता अपने मूल्य भेजा जाएगा। पुराने ब्राउज़रों के लिए आपको labelजावास्क्रिप्ट का उपयोग करके जाँच करने के लिए वर्ग बदलना पड़ सकता है क्योंकि मुझे नहीं लगता कि इंटरनेट एक्सप्लोरर के पुराने संस्करण समझ ::checkedमें नहीं आते checkbox


4
आपके उत्तर और मेरे बीच का अंतर क्या है?
ब्लेक पेटर्सन

@BlakePettersson तुम्हारा सही है, :: चेक किया गया सिर्फ गलत है (मैं भी सिर्फ मामले में इसकी अनुमति दी है) की कोशिश की;)
esp

7
यह एक बुरा जवाब है। (ए) ::checkedगलत है — यह होना चाहिए :checked। (बी) checkboxगलत है — यह होना चाहिए[type=checkbox]
क्रिस मॉर्गन

4

ओह! इन सभी वर्कअराउंड ने मुझे इस निष्कर्ष पर पहुंचा दिया है कि यदि आप इसे स्टाइल करना चाहते हैं तो HTML चेकबॉक्स किस तरह का बेकार है।

एक पूर्वाभास के रूप में, यह एक सीएसएस कार्यान्वयन नहीं है। मैंने सोचा था कि मैं किसी और के उपयोगी होने के मामले में मेरे साथ आया वर्कअराउंड साझा करूंगा।


मैंने HTML5 canvasतत्व का उपयोग किया ।

इसका उल्टा यह है कि आपको बाहरी छवियों का उपयोग करने की आवश्यकता नहीं है और संभवतः कुछ बैंडविड्थ को बचा सकता है।

नकारात्मक पक्ष यह है कि अगर किसी कारण से कोई ब्राउज़र इसे सही तरीके से प्रस्तुत नहीं कर सकता है, तो कोई गिरावट नहीं है। हालांकि यह 2017 में मुद्दा बना रहा या नहीं, यह बहस का मुद्दा है।

अपडेट करें

मुझे पुराना कोड काफी बदसूरत लगा, इसलिए मैंने इसे फिर से लिखने का फैसला किया।

Object.prototype.create = function(args){
    var retobj = Object.create(this);

    retobj.constructor(args || null);

    return retobj;
}

var Checkbox = Object.seal({
    width: 0,
    height: 0,
    state: 0,
    document: null,
    parent: null,
    canvas: null,
    ctx: null,

    /*
     * args:
     * name      default             desc.
     *
     * width     15                  width
     * height    15                  height
     * document  window.document     explicit document reference
     * target    this.document.body  target element to insert checkbox into
     */
    constructor: function(args){
        if(args === null)
            args = {};

        this.width = args.width || 15;
        this.height = args.height || 15;
        this.document = args.document || window.document;
        this.parent = args.target || this.document.body;
        this.canvas = this.document.createElement("canvas");
        this.ctx = this.canvas.getContext('2d');

        this.canvas.width = this.width;
        this.canvas.height = this.height;
        this.canvas.addEventListener("click", this.ev_click(this), false);
        this.parent.appendChild(this.canvas);
        this.draw();
    },

    ev_click: function(self){
        return function(unused){
            self.state = !self.state;
            self.draw();
        }
    },

    draw_rect: function(color, offset){
        this.ctx.fillStyle = color;
        this.ctx.fillRect(offset, offset,
                this.width - offset * 2, this.height - offset * 2);
    },

    draw: function(){
        this.draw_rect("#CCCCCC", 0);
        this.draw_rect("#FFFFFF", 1);

        if(this.is_checked())
            this.draw_rect("#000000", 2);
    },

    is_checked: function(){
        return !!this.state;
    }
});

यहाँ एक कार्यशील डेमो है

नया संस्करण चेकबॉक्स बनाने के लिए एक कुशल प्रणाली बनाने के लिए प्रोटोटाइप और डिफरेंशियल इनहेरिटेंस का उपयोग करता है। एक चेकबॉक्स बनाने के लिए:

var my_checkbox = Checkbox.create();

यह तुरंत DOM में चेकबॉक्स जोड़ देगा और घटनाओं को हुक कर देगा। क्वेरी करने के लिए कि क्या एक चेकबॉक्स चेक किया गया है:

my_checkbox.is_checked(); // True if checked, else false

यह भी ध्यान रखना महत्वपूर्ण है कि मैंने लूप से छुटकारा पा लिया।

अपडेट २

अंतिम अद्यतन में उल्लेख करने के लिए मैंने कुछ उपेक्षा की है कि कैनवास का उपयोग करने से चेकबॉक्स बनाने की तुलना में अधिक फायदे हैं जो दिखता है कि आप इसे देखना चाहते हैं। यदि आप चाहते हैं तो आप मल्टी-स्टेट चेकबॉक्स भी बना सकते हैं ।

Object.prototype.create = function(args){
    var retobj = Object.create(this);

    retobj.constructor(args || null);

    return retobj;
}

Object.prototype.extend = function(newobj){
    var oldobj = Object.create(this);

    for(prop in newobj)
        oldobj[prop] = newobj[prop];

    return Object.seal(oldobj);
}

var Checkbox = Object.seal({
    width: 0,
    height: 0,
    state: 0,
    document: null,
    parent: null,
    canvas: null,
    ctx: null,

    /*
     * args:
     * name      default             desc.
     *
     * width     15                  width
     * height    15                  height
     * document  window.document     explicit document reference
     * target    this.document.body  target element to insert checkbox into
     */
    constructor: function(args){
        if(args === null)
            args = {};

        this.width = args.width || 15;
        this.height = args.height || 15;
        this.document = args.document || window.document;
        this.parent = args.target || this.document.body;
        this.canvas = this.document.createElement("canvas");
        this.ctx = this.canvas.getContext('2d');

        this.canvas.width = this.width;
        this.canvas.height = this.height;
        this.canvas.addEventListener("click", this.ev_click(this), false);
        this.parent.appendChild(this.canvas);
        this.draw();
    },

    ev_click: function(self){
        return function(unused){
            self.state = !self.state;
            self.draw();
        }
    },

    draw_rect: function(color, offsetx, offsety){
        this.ctx.fillStyle = color;
        this.ctx.fillRect(offsetx, offsety,
                this.width - offsetx * 2, this.height - offsety * 2);
    },

    draw: function(){
        this.draw_rect("#CCCCCC", 0, 0);
        this.draw_rect("#FFFFFF", 1, 1);
        this.draw_state();
    },

    draw_state: function(){
        if(this.is_checked())
            this.draw_rect("#000000", 2, 2);
    },

    is_checked: function(){
        return this.state == 1;
    }
});

var Checkbox3 = Checkbox.extend({
    ev_click: function(self){
        return function(unused){
            self.state = (self.state + 1) % 3;
            self.draw();
        }
    },

    draw_state: function(){
        if(this.is_checked())
            this.draw_rect("#000000", 2, 2);

        if(this.is_partial())
            this.draw_rect("#000000", 2, (this.height - 2) / 2);
    },

    is_partial: function(){
        return this.state == 2;
    }
});

मैंने Checkboxअंतिम स्निपेट में उपयोग किए गए थोड़ा संशोधित किया ताकि यह अधिक सामान्य हो, जिससे 3 राज्यों वाले चेकबॉक्स के साथ इसे "विस्तारित" करना संभव हो सके। यहाँ एक डेमो है । जैसा कि आप देख सकते हैं, इसमें पहले से निर्मित चेकबॉक्स की तुलना में अधिक कार्यक्षमता है।

जब आप जावास्क्रिप्ट और सीएसएस के बीच चयन कर रहे हों, तो कुछ विचार करें।

पुराना, खराब तरीके से बनाया गया कोड

वर्किंग डेमो

सबसे पहले, एक कैनवास सेट करें

var canvas = document.createElement('canvas'),
    ctx = canvas.getContext('2d'),
    checked = 0; // The state of the checkbox
canvas.width = canvas.height = 15; // Set the width and height of the canvas
document.body.appendChild(canvas);
document.body.appendChild(document.createTextNode(' Togglable Option'));

इसके बाद, कैनवास को अपडेट करने का एक तरीका तैयार करें।

(function loop(){
  // Draws a border
  ctx.fillStyle = '#ccc';
  ctx.fillRect(0,0,15,15);
  ctx.fillStyle = '#fff';
  ctx.fillRect(1, 1, 13, 13);
  // Fills in canvas if checked
  if(checked){
    ctx.fillStyle = '#000';
    ctx.fillRect(2, 2, 11, 11);
  }
  setTimeout(loop, 1000/10); // Refresh 10 times per second
})();

अंतिम भाग इसे संवादात्मक बनाना है। सौभाग्य से, यह बहुत आसान है:

canvas.onclick = function(){
  checked = !checked;
}

यह वह जगह है जहां आपको IE में समस्याएं हो सकती हैं, जावास्क्रिप्ट में उनके अजीब घटना हैंडलिंग मॉडल के कारण।


मुझे उम्मीद है इससे किसी को सहायता मिलेगी; यह निश्चित रूप से मेरी जरूरतों के अनुकूल है।


ध्यान दें कि चेकबॉक्स के अनुकरण के रूप में कैनवस कार्यान्वयन, अंतर्निहित चेकबॉक्स की तुलना में अधिक कार्यक्षमता के लिए अनुमति देता है। उदाहरण के लिए, फैंसी सामान जैसे "मल्टी-स्टेट" चेकबॉक्स (जैसे unchecked (e.g. unchecked -> checked -> "kinda" checked -> unchecked, राज्य "स्पष्ट झूठ", "स्पष्ट सत्य", "डिफ़ॉल्ट का उपयोग करें", उदाहरण के लिए) का प्रतिनिधित्व कर सकते थे। मैं उत्तर में एक उदाहरण जोड़ने पर विचार कर रहा हूं।
ब्रैडेन बेस्ट

मेरी राय में भयानक विचार।

@ नील कृपया विस्तृत करें
ब्रैडन बेस्ट

पहिया को क्यों मजबूत करें?

@ क्यों पहिया को सुदृढ़ नहीं किया ? NIH हमेशा एक बुरी चीज नहीं है, खासकर जब यह उन लाभों की पुष्टि करता है जो मौजूदा तकनीक के साथ लागू करने के लिए अन्यथा असंभव या मूर्खतापूर्ण जटिल होंगे। तो यह एक सवाल है कि क्या आप बिल्ट-इन चेक बॉक्स से निपटने के लिए तैयार हैं। और अगर मैं उन्हें अपनी वेबसाइट या ऐप की दृश्य भाषा के साथ मिश्रण करने के लिए थीम देना चाहता हूं, तो मैं पूर्ण नियंत्रण चाहता हूं। इसलिए जब तक कोई स्टैंडअलोन यूआई लाइब्रेरी नहीं बनाता है जो हल्का और उपयोग में आसान है, मैं व्यक्तिगत रूप से अपने पहियों का आविष्कार करना पसंद करता हूं। कोई और नहीं हो सकता है, लेकिन यह मेरे जवाब को अमान्य नहीं करता है।
ब्रैडेन बेस्ट

3

यह सबसे सरल तरीका है और आप इस शैली को देने के लिए कौन से चेकबॉक्स चुन सकते हैं।

सीएसएस:

.check-box input {
  display: none;
}

.check-box span:before {
  content: ' ';
  width: 20px;
  height: 20px;
  display: inline-block;
  background: url("unchecked.png");
}

.check-box input:checked + span:before {
  background: url("checked.png");
}

HTML:

<label class="check-box">
  <input type="checkbox">
  <span>Check box Text</span>
</label>

3

कोई जावास्क्रिप्ट या jQuery की आवश्यकता नहीं है

अपनी चेकबॉक्स शैली को सरल तरीके से बदलें।

input[type="checkbox"] {
  display: none;
  border: none !important;
  box-shadow: none !important;
}

input[type="checkbox"] + label span {
  background: url(http://imgh.us/uncheck.png);
  width: 49px;
  height: 49px;
  display: inline-block;
  vertical-align: middle;
}

input[type="checkbox"]:checked + label span {
  background: url(http://imgh.us/check_2.png);
  width: 49px;
  height: 49px;
  vertical-align: middle;
}
<input type="checkbox" id="option" />
<label for="option"> <span></span> Click me </label>

यहाँ JsFiddle लिंक है


चेकबॉक्स दिखाई नहीं दे रहा है, क्योंकि यह छवि फ़ाइलों के बाहरी लिंक imgh.us/uncheck.png और imgh.us/check_2.png पर निर्भर करता है जो अब ऑनलाइन उपलब्ध नहीं हैं।
jkdev

2

यहाँ एक CSS / HTML-only संस्करण है, कोई jQuery या JavaScript की आवश्यकता नहीं है, सरल और साफ HTML और वास्तव में सरल और छोटा CSS।

यहाँ JSFiddle है

http://jsfiddle.net/v71kn3pr/

यहाँ HTML है:

<div id="myContainer">
    <input type="checkbox" name="myCheckbox" id="myCheckbox_01_item" value="red" />
    <label for="myCheckbox_01_item" class="box"></label>
    <label for="myCheckbox_01_item" class="text">I accept the Terms of Use.</label>
</div>

यहाँ सीएसएस है

#myContainer {
    outline: black dashed 1px;
    width: 200px;
}
#myContainer input[type="checkbox"][name="myCheckbox"] {
    display: none;
}
#myContainer input[type="checkbox"][name="myCheckbox"]:not(:checked) + label.box {
    display: inline-block;
    width: 25px;
    height: 25px;
    border: black solid 1px;
    background: #FFF ;
    margin: 5px 5px;
}
#myContainer input[type="checkbox"][name="myCheckbox"]:checked + label.box {
    display: inline-block;
    width: 25px;
    height: 25px;
    border: black solid 1px;
    background: #F00;
    margin: 5px 5px;
}
#myContainer input[type="checkbox"][name="myCheckbox"] + label + label.text {
    font: normal 12px arial;
    display: inline-block;
    line-height: 27px;
    vertical-align: top;
    margin: 5px 0px;
}

यह अलग-अलग रेडियो या चेकबॉक्स, चेकबॉक्स के ग्रूप और रेडियो बटन के समूहों के साथ-साथ सक्षम होने के लिए अनुकूलित किया जा सकता है।

यह html / css, आपको लेबल पर क्लिक करने की अनुमति देगा, इसलिए चेकबॉक्स की जाँच की जाएगी और अनचेक किया जाएगा भले ही आप केवल लेबल पर क्लिक करें।

इस प्रकार का चेकबॉक्स / रेडियो बटन किसी भी रूप में पूरी तरह से काम करता है, कोई समस्या नहीं है। PHP, ASP.NET (.aspx), JavaServer Faces और ColdFusion का उपयोग करके भी परीक्षण किया गया है।


2
**Custom checkbox with css**  (WebKit browser solution only Chrome, Safari, Mobile browsers)

    <input type="checkbox" id="cardAccptance" name="cardAccptance" value="Yes">
    <label for="cardAccptance" class="bold"> Save Card for Future Use</label>

    /* The checkbox-cu */

    .checkbox-cu {
        display: block;
        position: relative;
        padding-left: 35px;
        margin-bottom: 0;
        cursor: pointer;
        font-size: 16px;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
    }


    /* Hide the browser's default checkbox-cu */

    .checkbox-cu input {
        position: absolute;
        opacity: 0;
        cursor: pointer;
        height: 0;
        width: 0;
    }


    /* Create a custom checkbox-cu */

    .checkmark {
        position: absolute;
        top: 4px;
        left: 0;
        height: 20px;
        width: 20px;
        background-color: #eee;
        border: 1px solid #999;
        border-radius: 0;
        box-shadow: none;
    }


    /* On mouse-over, add a grey background color */

    .checkbox-cu:hover input~.checkmark {
        background-color: #ccc;
    }


    /* When the checkbox-cu is checked, add a blue background */

    .checkbox-cu input:checked~.checkmark {
        background-color: transparent;
    }


    /* Create the checkmark/indicator (hidden when not checked) */

    .checkmark:after {
        content: "";
        position: absolute;
        display: none;
    }


    /* Show the checkmark when checked */

    .checkbox-cu input:checked~.checkmark:after {
        display: block;
    }


    /* Style the checkmark/indicator */

    .checkbox-cu .checkmark::after {
        left: 7px;
        top: 3px;
        width: 6px;
        height: 9px;
        border: solid #28a745;
        border-width: 0 2px 2px 0;
        -webkit-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
        transform: rotate(45deg);
        z-index: 100;
    }

1
input[type=checkbox].css-checkbox {
    position: absolute;
    overflow: hidden;
    clip: rect(0 0 0 0);
    height: 1px;
    width: 1px;
    margin: -1px;
    padding: 0;
    border: 0;
}

input[type=checkbox].css-checkbox + label.css-label {
    padding-left: 20px;
    height: 15px;
    display: inline-block;
    line-height: 15px;
    background-repeat: no-repeat;
    background-position: 0 0;
    font-size: 15px;
    vertical-align: middle;
    cursor: pointer;
}

input[type=checkbox].css-checkbox:checked + label.css-label {
    background-position: 0 -15px;
}

.css-label{
    background-image:url(http://csscheckbox.com/checkboxes/dark-check-green.png);
}

एक स्पष्टीकरण क्रम में होगा।
पीटर मोर्टेंसन

1

नहीं, आप अभी भी चेकबॉक्स को स्टाइल नहीं कर सकते हैं, लेकिन मैं (अंत में) यह पता लगाता हूं कि कार्यक्षमता को बनाए रखते हुए भ्रम को कैसे स्टाइल करें चेकबॉक्स पर क्लिक करने को । इसका मतलब है कि आप इसे टॉगल कर सकते हैं, भले ही कर्सर पूरी तरह से अभी भी बिना टेक्स्ट का चयन किए या ड्रैग-एंड-ड्रॉप को ट्रिगर किए बिना न हो!

यह समाधान शायद रेडियो बटन भी फिट बैठता है।

इंटरनेट एक्सप्लोरर 9, फ़ायरफ़ॉक्स 30.0 और क्रोम 40.0.2214.91 में निम्नलिखित काम करता है और यह केवल एक मूल उदाहरण है। आप इसे अभी भी पृष्ठभूमि छवियों और छद्म तत्वों के संयोजन में उपयोग कर सकते हैं।

http://jsfiddle.net/o0xo13yL/1/

label {
    display: inline-block;
    position: relative; /* Needed for checkbox absolute positioning */
    background-color: #eee;
    padding: .5rem;
    border: 1px solid #000;
    border-radius: .375rem;
    font-family: "Courier New";
    font-size: 1rem;
    line-height: 1rem;
}

label > input[type="checkbox"] {
    display: block;
    position: absolute; /* Remove it from the flow */
    width: 100%;
    height: 100%;
    margin: -.5rem; /* Negative the padding of label to cover the "button" */
    cursor: pointer;
    opacity: 0; /* Make it transparent */
    z-index: 666; /* Place it on top of everything else */
}

label > input[type="checkbox"] + span {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    border: 1px solid #000;
    margin-right: .5rem;
}

label > input[type="checkbox"]:checked + span {
    background-color: #666;
}

<label>
    <input type="checkbox" />
    <span>&nbsp;</span>Label text
</label>

1

चूंकि एज और फ़ायरफ़ॉक्स जैसे ब्राउज़र समर्थन नहीं करते हैं: इससे पहले: चेकबॉक्स इनपुट टैग के बाद, यहां HTML और CSS के साथ शुद्ध रूप से एक विकल्प है। बेशक आपको अपनी आवश्यकताओं के अनुसार सीएसएस को संपादित करना चाहिए।

इस तरह से चेकबॉक्स के लिए HTML बनाएं:

<div class='custom-checkbox'>
    <input type='checkbox' />
    <label>
        <span></span>
        Checkbox label
    </label>
</div>

रंग लेबल बदलने के लिए चेकबॉक्स के लिए इस शैली को लागू करें

<style>
    .custom-checkbox {
        position: relative;
    }
    .custom-checkbox input{
        position: absolute;
        left: 0;
        top: 0;
        height:15px;
        width: 50px;    /* Expand the checkbox so that it covers */
        z-index : 1;    /* the label and span, increase z-index to bring it over */
        opacity: 0;     /* the label and set opacity to 0 to hide it. */
    }
    .custom-checkbox input+label {
        position: relative;
        left: 0;
        top: 0;
        padding-left: 25px;
        color: black;
    }
    .custom-checkbox input+label span {
        position: absolute;  /* a small box to display as checkbox */
        left: 0;
        top: 0;
        height: 15px;
        width: 15px;
        border-radius: 2px;
        border: 1px solid black;
        background-color: white;
    }
    .custom-checkbox input:checked+label { /* change label color when checked */
        color: orange;
    }
    .custom-checkbox input:checked+label span{ /* change span box color when checked */
        background-color: orange;
        border: 1px solid orange;
    }
</style>

1

ऐसा लगता है कि आप केवल CSS का उपयोग करके ग्रेस्केल में चेकबॉक्स का रंग बदल सकते हैं।

निम्नलिखित चेकबॉक्स को काले से ग्रे में परिवर्तित करता है (जो मैं चाहता था, उसके बारे में):

input[type="checkbox"] {
    opacity: .5;
}

यह सीमा को हल्का भी बनाता है। इसके अलावा, यदि आप इसे चेक करते हैं तो आप वास्तव में चेक नहीं देख सकते हैं।
राचेल एस

1

SCSS / SASS कार्यान्वयन

अधिक आधुनिक दृष्टिकोण

SCSS (या आसानी से SASS में परिवर्तित) का उपयोग करने वालों के लिए, निम्नलिखित उपयोगी होगा। प्रभावी रूप से, चेकबॉक्स के बगल में एक तत्व बनाएं, जो एक है जिसे आप स्टाइल करेंगे। जब चेकबॉक्स पर क्लिक किया जाता है, तो सीएसएस बहन तत्व (आपकी नई, जाँच की गई शैली) को पुनर्स्थापित करता है। कोड नीचे है:

label.checkbox {
  input[type="checkbox"] {
    visibility: hidden;
    display: block;
    height: 0;
    width: 0;
    position: absolute;
    overflow: hidden;

    &:checked + span {
      background: $accent;
    }
  }

  span {
    cursor: pointer;
    height: 15px;
    width: 15px;
    border: 1px solid $accent;
    border-radius: 2px;
    display: inline-block;
    transition: all 0.2s $interpol;
  }
}
<label class="checkbox">
    <input type="checkbox" />
    <span></span>
    Label text
</label>


0

चेतावनी : लेखन के समय निम्नलिखित सही था, लेकिन इस बीच चीजें आगे बढ़ी हैं।

AFAIK आधुनिक ब्राउज़र देशी OS नियंत्रण का उपयोग करके चेकबॉक्स प्रदर्शित करते हैं, इसलिए उन्हें स्टाइल करने का कोई तरीका नहीं है।


30
यह '10 में सही हो सकता है, लेकिन अभी नहीं, आपको इस उत्तर को हटा देना चाहिए।
मिशेल के

3
यह अभी भी सच है - सभी आधुनिक ब्राउज़र देशी ओएस नियंत्रण का उपयोग करके चेकबॉक्स प्रदर्शित करते हैं। इसका सिर्फ इतना है कि इस सीमा के आसपास काम करने के लिए कुछ नई नई तकनीकें हैं।
गाल

हां, मैं "भाग शैली के लिए कोई रास्ता नहीं है" का उल्लेख कर रहा था ^ ^
Joril
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.