<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;
}
div {
  margin-bottom: 1em;
}
input[type="checkbox"], input[type="radio"] {
    display: none;
}
label {
  cursor:pointer;
  color: #555;
}
input[type="checkbox"]:checked + label, 
input[type="radio"]:checked + label {
  color: deepPink;
}
input[type="checkbox"] + label span,
input[type="radio"] + label span {
    display: inline-block;
    vertical-align: middle;
    width: 45px;
    height: 45px;
    border: 2px solid #888;
    border-radius: 10px;
    background: radial-gradient(#eee, #aaa);
}
input[type="radio"] + label span  {
  border-radius: 50%;
}
input[type="checkbox"] + label span::before {
  content: "";
  display: block;
}

input[type="checkbox"]:checked + label span::before {
   content: "✓";
   color: deepPink;
   text-align: center;
   font-size: 40px;
}
input[type="radio"]:checked + label span {
    background-image: radial-gradient(#FF5ABA, deepPink);
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

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