Решение, как сделать оригинальное оформление checkbox без применения JavaScrpt, используя только CSS
Демонстрация
HTML
<label class="wds_chkbox_container">Click me <input type="checkbox"> <span class="wds_chkbox_checkmark"></span> </label>
CSS
/* label контейнер */
.wds_chkbox_container {
display: block;
position: relative;
padding-left: 35px;
margin-bottom: 12px;
cursor: pointer;
font-size: 22px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* Скрываем штатный checkbox */
.wds_chkbox_container input {
position: absolute;
opacity: 0;
cursor: pointer;
height: 0;
width: 0;
}
/* Создаём свой checkbox */
.wds_chkbox_checkmark {
position: absolute;
top: 0;
left: 0;
height: 25px;
width: 25px;
border:2px solid #ccc;
}
/* При наведении мышкой, добавим background */
.wds_chkbox_container:hover input ~ .wds_chkbox_checkmark {
background-color: #ccc;
}
/* Когда checkbox отмечен, добавим синий background */
.wds_chkbox_container input:checked ~ .wds_chkbox_checkmark {
background-color: #2196F3;
border:2px solid #2196F3;
}
/* Создадим индикатор, который скрыт, если не отмечен */
.wds_chkbox_checkmark:after {
content: "";
position: absolute;
display: none;
}
/* Покажем индикатор, когда отмечен */
.wds_chkbox_container input:checked ~ .wds_chkbox_checkmark:after {
display: block;
}
/* Оформление индикатора */
.wds_chkbox_container .wds_chkbox_checkmark:after {
left: 9px;
top: 5px;
width: 5px;
height: 10px;
border: solid white;
border-width: 0 3px 3px 0;
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}