JSFiddle - React, Tailwind, and code Playground
HTML
<div class="checkbox">
<label class="i-checks">
<input type="checkbox" value=""> <i></i>
Option one</label>
</div>
<div class="checkbox">
<label class="i-checks">
<input type="checkbox" checked="" value=""> <i></i>
Option two checked</label>
</div>
SCSS
$brand-info: #46b9d8 !default;
$input-border: #ccc !default;
@mixin transition($transition...) {
-webkit-transition: $transition;
transition: $transition;
}
.checkbox {
position: relative;
display: block;
margin-top: 10px;
margin-bottom: 10px;
label {
min-height: 20px;
padding-left: 20px;
margin-bottom: 0;
font-weight: normal;
cursor: pointer
}
input[type="checkbox"] {
position: absolute;
margin-top: 4px \9;
margin-left: -20px
}
}
.i-checks {
padding-left: 20px;
cursor: pointer;
input {
opacity: 0;
position: absolute;
margin-left: -20px;
&:checked + i {
border-color: $brand-info;
&:before {
left: 5px;
top: 5px;
width: 10px;
height: 10px;
background-color: $brand-info;
}
}
&:checked + span .active {
display: inherit;
}
&[type="radio"] + i {
&, &:before {
border-radius: 50%;
}
}
&[type="checkbox"]:checked + i:before {
}
&[type="radio"]:checked + i:before {
}
&[disabled], fieldset[disabled] & {
& + i {
border-color: lighten($input-border, 5%);
&:before {
background-color: lighten($input-border, 5%);
}
}
}
}
> i {
width: 20px;
height: 20px;
line-height: 1;
border: 1px solid $input-border;
background-color: #fff;
margin-left: -20px;
margin-top: -2px;
display: inline-block;
vertical-align: middle;
margin-right: 4px;
position: relative;
&:before {
content:"";
position: absolute;
left: 50%;
top: 50%;
width: 0px;
...