<div>
  <input type="checkbox" id="option"/>
  <label for="option"> <span></span> Check and Uncheck Me </label>
</div>
<div>
  <input type="radio" name="my-radio" id="radio-option-1"/>
  <label for="radio-option-1"> <span></span> Pick Me </label>
</div>
<div>
  <input type="radio" name="my-radio" id="radio-option-2"/>
  <label for="radio-option-2"> <span></span> Or Pick Me </label>
</div>
body {
  font-family: "Verdana", sans-serif;
  background-color: #eee;
  padding: 50px;
  font-size: 30px;
}
input[type="checkbox"], input[type="radio"] {
    display: none;
}
label {
  cursor:pointer;
  color: #555;
}
input[type="checkbox"]:checked + label, 
input[type="radio"]:checked + label {
  color: #FBAF29;
}
input[type="checkbox"] + label span,
input[type="radio"] + label span {
    display: inline-block;
    vertical-align: middle;
    width: 45px;
    height: 45px;
}
input[type="checkbox"] + label span {
  background: url(https://sarasoueidan.com/images/checkbox-radio-sprite.png) left center no-repeat;
}
input[type="radio"] + label span {
  background: url(https://sarasoueidan.com/images/checkbox-radio-sprite.png) -105px center no-repeat;
}

input[type="checkbox"]:checked + label span {
    background: url(https://sarasoueidan.com/images/checkbox-radio-sprite.png) -48px center no-repeat;
}
input[type="radio"]:checked + label span {
    background: url(https://sarasoueidan.com/images/checkbox-radio-sprite.png) -153px center no-repeat;
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js