Skip to content

Instantly share code, notes, and snippets.

@arbales
Created September 22, 2010 19:29
Show Gist options
  • Select an option

  • Save arbales/592332 to your computer and use it in GitHub Desktop.

Select an option

Save arbales/592332 to your computer and use it in GitHub Desktop.
<html>
<head>
<title>Checkbox</title>
<style>
input[type=checkbox] {
display:none;
}
input[type=checkbox] + label
{
background: #999;
height: 16px;
width: 16px;
display:inline-block;
padding: 0 0 0 0px;
}
input[type=checkbox]:checked + label
{
background: #0080FF;
height: 16px;
width: 16px;
display:inline-block;
padding: 0 0 0 0px;
}
</style>
</head>
<body>
<p>
<input type='checkbox' name='thing' value='valuable' id="thing"/><label for="thing"></label>
</body>
</html>
@hootsieroll

Copy link
Copy Markdown

Have you been able to use this for image replacement?

@arbales

arbales commented Aug 25, 2011

Copy link
Copy Markdown
Author

You should be able to — just put an image in the label and style it however you like.

@parkerproject

Copy link
Copy Markdown

I guess is better to use image in css and not in the markup(label)

@gillguy81

Copy link
Copy Markdown

Hi this is not working in IE 8 7 can you help me what things i need so that it works in the ie as well

@Aelerion

Aelerion commented Jul 8, 2012

Copy link
Copy Markdown

to gillguy81:
you need to have a proper DOCTYPE declared. then it works in IE as well

@delatroy

Copy link
Copy Markdown

Are you sure? I also have the same issue in IE7 and 8 and tried many different DOCTYPES.

Please specify which DOCTYPE you are referring to.

@iboware

iboware commented Oct 22, 2012

Copy link
Copy Markdown

IE7 and 8 does not support :selected pseudo selector so you cannot use it. If you want to use, you have to write some javascript.

@iboware

iboware commented Oct 22, 2012

Copy link
Copy Markdown

Sorry, I made a mistake it is not :selected. it is :checked.

@michaelryancaputo

Copy link
Copy Markdown

Anyone have any success getting this working on IE7-8?

@vfonic

vfonic commented Aug 10, 2013

Copy link
Copy Markdown

If you're looking for a way to make CSS3 pseudo-classes work in IE6-8, try using selectivizr:
http://selectivizr.com/

@travisjtodd

Copy link
Copy Markdown

Using pseudo elements doesn't leave you with a tiny label:

input[type="checkbox"] { display: none; }
input[type="checkbox"] + label:before {
    content: "";
    background: #999;
    height: 16px;
    width: 16px;
    display: inline-block;
    padding: 0 0 0 0px;
}   
input[type="checkbox"]:checked + label:before {
    content: "";
    background: #0080FF;
}

@jupitercow

Copy link
Copy Markdown

Updated pseudo elements to add an "x" when checked. And using body:nth-of-type to hopefully make sure these only affect browers that support it.

body:nth-of-type(1) input[type="checkbox"] { display: none; }
body:nth-of-type(1) input[type="checkbox"] + label:before {
    content: "\00a0"; /* character: space */
    background: #999;
    height: 16px;
    width: 16px;
    display: inline-block;
    font-size: 14px;
    line-height: 16px;
    margin-right: 10px;
    padding: 0 0 0 0px;
    text-align: center;
}   
body:nth-of-type(1) input[type="checkbox"]:checked + label:before {
    content: "\00D7"; /* character: "times" symbol (and "x") */
}

@jaider

jaider commented Nov 12, 2013

Copy link
Copy Markdown

I created a demo with knockout, it works fine: http://jsfiddle.net/hM3s8/2/

@jglantonio

Copy link
Copy Markdown

thx , for this code.

@KingGeneral

KingGeneral commented Nov 11, 2016

Copy link
Copy Markdown

i made an update with jquery 1.x and fontawesome,
check this out https://jsfiddle.net/kinggeneral/evo3z6Lm/

@travisjtodd @jupitercow @jaider

@dom-void

Copy link
Copy Markdown

thank you, that was very helpful

@jornvandebeek

Copy link
Copy Markdown

The for attribute of a label should refer to the id of the checkbox, otherwise clicking the label does not toggle it.

@v-bezborodov

Copy link
Copy Markdown

I faced problem with LABEL FOR in case of dynamically generating content. Adding pair LABEL FOR+ INPUT doesn't work correctly due of all the generated blocks are contains LABELS with same id. So we have to use another identifier for LABEL instead of id. In other words that way doesn't fit for dynamically generated content.
7cefdf97a7

@Moonbird-IT

Copy link
Copy Markdown

@v-bezborodov sorry for gravedigging but I think that's important to keep in mind: IDs are not meant to be duplicate anywhere in the same document. They are like fingerprints and shouldn't be present on different peoples' hands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment