react-simple-checkboxlist
Version:
A simple react checkbox-list component
112 lines (97 loc) • 2.08 kB
CSS
*::before,
*::after {
box-sizing: border-box;
}
html,
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
-webkit-font-smoothing: antialiased;
}
.search {
padding: 6px;
border: none;
border-bottom: 1px solid #ccc;
font-size: 17px;
margin-bottom: 4px;
width: 100%;
}
.search:focus-visible {
outline: none;
}
.container-checkbox {
max-height: inherit;
height: inherit;
height: 130px;
max-width: 100%;
min-width: 20%;
width: inherit;
overflow-y: scroll;
border: 1px solid #ccc;
border-radius: 3px;
}
.checkbox-wrapper {
display: block;
cursor: pointer;
position: relative;
margin: 10px;
}
.checkbox-wrapper input[type="checkbox"] {
display: none;
visibility: hidden;
}
.checkbox-wrapper .cbx {
margin: auto;
-webkit-user-select: none;
user-select: none;
cursor: pointer;
}
.checkbox-wrapper .cbx span {
display: inline-block;
vertical-align: middle;
transform: translate3d(0, 0, 0);
}
.checkbox-wrapper .cbx span:first-child {
position: relative;
width: 18px;
height: 18px;
border-radius: 3px;
transform: scale(1);
vertical-align: middle;
border: 1px solid #9098A9;
transition: all 0.2s ease;
}
.checkbox-wrapper .cbx span:first-child svg {
position: absolute;
top: 3px;
left: 2px;
fill: none;
stroke: #FFFFFF;
stroke-width: 2;
stroke-linecap: round;
stroke-linejoin: round;
stroke-dasharray: 16px;
stroke-dashoffset: 16px;
transition: all 0.3s ease;
transition-delay: 0.1s;
transform: translate3d(0, 0, 0);
}
.checkbox-wrapper .cbx span:last-child {
padding-left: 8px;
}
.checkbox-wrapper .inp-cbx:checked+.cbx span:first-child {
background: #506EEC;
border-color: #506EEC;
animation: wave 0.4s ease;
}
.checkbox-wrapper .inp-cbx:checked+.cbx span:first-child svg {
stroke-dashoffset: 0;
}
.checkbox-wrapper .inp-cbx:checked+.cbx span:first-child:before {
opacity: 0;
transition: all 0.6s ease;
}
@keyframes wave {
50% {
transform: scale(0.9);
}
}