mirror of
https://github.com/uiverse-io/galaxy.git
synced 2025-11-28 05:00:22 +08:00
182 lines
No EOL
3.8 KiB
HTML
182 lines
No EOL
3.8 KiB
HTML
<label class="checkbox__label" for="checkbox">
|
|
<span class="checkbox__container">
|
|
<input class="checkbox" id="checkbox" type="checkbox" />
|
|
|
|
<span class="checkbox__label--text"> Check box. </span>
|
|
</span>
|
|
</label>
|
|
|
|
<style>
|
|
/* From Uiverse.io by Timbar09 - Tags: checkbox */
|
|
.checkbox__container {
|
|
--primary-clr-1: #2bbee7;
|
|
--primary-clr-2: #0e728e;
|
|
--text-clr-1: #8f8f8f;
|
|
|
|
--checkbox-bg-clr: #33333367;
|
|
--checkbox-border-clr: #55555575;
|
|
|
|
color: var(--text-clr-1);
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5em;
|
|
}
|
|
|
|
.checkbox {
|
|
--dimension: 1.5em;
|
|
--tick-dimension: 0.15em;
|
|
|
|
appearance: none;
|
|
margin: 0;
|
|
position: relative;
|
|
width: var(--dimension);
|
|
height: var(--dimension);
|
|
border: 1px solid transparent;
|
|
border-radius: 50%;
|
|
cursor: pointer;
|
|
rotate: 45deg;
|
|
}
|
|
|
|
.checkbox:checked {
|
|
animation: shrink 0.5s ease forwards;
|
|
}
|
|
|
|
.checkbox:not(:checked) {
|
|
animation: grow 0.5s 0.75s ease forwards;
|
|
}
|
|
|
|
@keyframes shrink {
|
|
0% {
|
|
scale: 1;
|
|
background-color: var(--checkbox-bg-clr);
|
|
border: solid 1px var(--checkbox-border-clr);
|
|
}
|
|
50% {
|
|
scale: 0;
|
|
background-color: var(--checkbox-bg-clr);
|
|
border: solid 1px var(--checkbox-border-clr);
|
|
}
|
|
51% {
|
|
scale: 0;
|
|
background-color: transparent;
|
|
border: solid 1px transparent;
|
|
}
|
|
100% {
|
|
scale: 1;
|
|
background-color: transparent;
|
|
border: solid 1px transparent;
|
|
}
|
|
}
|
|
|
|
@keyframes grow {
|
|
0% {
|
|
scale: 0;
|
|
background-color: transparent;
|
|
border: solid 1px transparent;
|
|
}
|
|
|
|
100% {
|
|
scale: 1;
|
|
background-color: var(--checkbox-bg-clr);
|
|
border: solid 1px var(--checkbox-border-clr);
|
|
}
|
|
}
|
|
|
|
.checkbox:before,
|
|
.checkbox:after {
|
|
content: "";
|
|
position: absolute;
|
|
top: calc(50% - var(--tick-dimension) / 2);
|
|
left: calc(50% - var(--tick-dimension) / 2);
|
|
width: var(--tick-dimension);
|
|
height: var(--tick-dimension);
|
|
border-radius: 10rem;
|
|
}
|
|
|
|
.checkbox::before {
|
|
background-color: transparent;
|
|
top: calc(var(--dimension) * 0.65);
|
|
left: 0;
|
|
width: var(--tick-dimension);
|
|
}
|
|
|
|
.checkbox:not(:checked)::before {
|
|
transition: background-color 0.3s 0.5s ease-in-out, width 0.5s ease-in-out;
|
|
}
|
|
|
|
.checkbox:checked::before {
|
|
background-color: var(--primary-clr-1);
|
|
top: calc(var(--dimension) * 0.65);
|
|
left: 0;
|
|
width: calc(var(--dimension) / 2);
|
|
transition: background-color 0.3s 0.3s ease-in-out,
|
|
width 0.5s 0.75s ease-in-out;
|
|
}
|
|
|
|
.checkbox::after {
|
|
background-color: transparent;
|
|
top: 0;
|
|
left: calc((var(--dimension) * 0.5) - var(--tick-dimension));
|
|
height: var(--tick-dimension);
|
|
}
|
|
|
|
.checkbox:not(:checked)::after {
|
|
transition: background-color 0.3s 0.5s ease-in-out, height 0.5s ease-in-out;
|
|
}
|
|
|
|
.checkbox:checked::after {
|
|
background-color: var(--primary-clr-2);
|
|
top: 0;
|
|
left: calc((var(--dimension) * 0.5) - var(--tick-dimension));
|
|
height: calc(var(--dimension) * 0.75);
|
|
transition: background-color 0.3s 0.3s ease-in-out, height 0.5s 1s ease-in-out;
|
|
}
|
|
|
|
.checkbox__label {
|
|
--hover: #cdcdcd;
|
|
--checked: #8f8f8f49;
|
|
--stroke-dimension: 0.05em;
|
|
|
|
cursor: pointer;
|
|
user-select: none;
|
|
scale: 1.5;
|
|
transition: color 0.3s;
|
|
}
|
|
|
|
.checkbox__label:hover {
|
|
color: var(--hover);
|
|
}
|
|
|
|
.checkbox:checked + .checkbox__label--text {
|
|
color: var(--checked);
|
|
}
|
|
|
|
.checkbox__label--text {
|
|
position: relative;
|
|
}
|
|
|
|
.checkbox__label--text::before {
|
|
content: "";
|
|
position: absolute;
|
|
top: 50%;
|
|
left: calc(-1 * var(--stroke-dimension));
|
|
width: var(--stroke-dimension);
|
|
height: var(--stroke-dimension);
|
|
margin-right: 0.5em;
|
|
border-radius: 1em;
|
|
}
|
|
|
|
.checkbox__label--text::before {
|
|
background-color: var(--primary-clr-1);
|
|
width: 0;
|
|
transition: width 0.5s, background-color 0.3s 0.5s;
|
|
}
|
|
|
|
.checkbox:checked + .checkbox__label--text::before {
|
|
background-color: var(--checked);
|
|
width: calc(100% + var(--stroke-dimension));
|
|
transition: width 1.25s 0.75s, background-color 0.5s 2s;
|
|
}
|
|
|
|
</style>
|
|
|