Update _checkboxes.scss

This commit is contained in:
2018-09-15 23:53:31 +08:00
parent 60b2b76e95
commit 7a987b2003
@@ -1,200 +1,200 @@
/* Checkboxes /* Checkboxes
========================================================================== */ ========================================================================== */
/* Remove default checkbox */ /* Remove default checkbox */
[type="checkbox"]:not(:checked), [type="checkbox"]:not(:checked),
[type="checkbox"]:checked { [type="checkbox"]:checked {
position: absolute; position: absolute;
opacity: 0; opacity: 0;
pointer-events: none; pointer-events: none;
} }
// Checkbox Styles // Checkbox Styles
[type="checkbox"] { [type="checkbox"] {
// Text Label Style // Text Label Style
+ span:not(.lever) { + span:not(.lever) {
position: relative; position: relative;
padding-left: 35px; padding-left: 35px;
cursor: pointer; cursor: pointer;
display: inline-block; display: inline-block;
height: 25px; height: 25px;
line-height: 25px; line-height: 25px;
font-size: 1rem; font-size: 0.8rem;
user-select: none; user-select: none;
} }
/* checkbox aspect */ /* checkbox aspect */
+ span:not(.lever):before, + span:not(.lever):before,
&:not(.filled-in) + span:not(.lever):after { &:not(.filled-in) + span:not(.lever):after {
content: ''; content: '';
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
width: 18px; width: 18px;
height: 18px; height: 18px;
z-index: 0; z-index: 0;
border: 2px solid $radio-empty-color; border: 2px solid $radio-empty-color;
border-radius: 1px; border-radius: 1px;
margin-top: 3px; margin-top: 3px;
transition: .2s; transition: .2s;
} }
&:not(.filled-in) + span:not(.lever):after { &:not(.filled-in) + span:not(.lever):after {
border: 0; border: 0;
transform: scale(0); transform: scale(0);
} }
&:not(:checked):disabled + span:not(.lever):before { &:not(:checked):disabled + span:not(.lever):before {
border: none; border: none;
background-color: $input-disabled-color; background-color: $input-disabled-color;
} }
// Focused styles // Focused styles
&.tabbed:focus + span:not(.lever):after { &.tabbed:focus + span:not(.lever):after {
transform: scale(1); transform: scale(1);
border: 0; border: 0;
border-radius: 50%; border-radius: 50%;
box-shadow: 0 0 0 10px rgba(0,0,0,.1); box-shadow: 0 0 0 10px rgba(0,0,0,.1);
background-color: rgba(0,0,0,.1); background-color: rgba(0,0,0,.1);
} }
} }
[type="checkbox"]:checked { [type="checkbox"]:checked {
+ span:not(.lever):before { + span:not(.lever):before {
top: -4px; top: -4px;
left: -5px; left: -5px;
width: 12px; width: 12px;
height: 22px; height: 22px;
border-top: 2px solid transparent; border-top: 2px solid transparent;
border-left: 2px solid transparent; border-left: 2px solid transparent;
border-right: $radio-border; border-right: $radio-border;
border-bottom: $radio-border; border-bottom: $radio-border;
transform: rotate(40deg); transform: rotate(40deg);
backface-visibility: hidden; backface-visibility: hidden;
transform-origin: 100% 100%; transform-origin: 100% 100%;
} }
&:disabled + span:before { &:disabled + span:before {
border-right: 2px solid $input-disabled-color; border-right: 2px solid $input-disabled-color;
border-bottom: 2px solid $input-disabled-color; border-bottom: 2px solid $input-disabled-color;
} }
} }
/* Indeterminate checkbox */ /* Indeterminate checkbox */
[type="checkbox"]:indeterminate { [type="checkbox"]:indeterminate {
+ span:not(.lever):before { + span:not(.lever):before {
top: -11px; top: -11px;
left: -12px; left: -12px;
width: 10px; width: 10px;
height: 22px; height: 22px;
border-top: none; border-top: none;
border-left: none; border-left: none;
border-right: $radio-border; border-right: $radio-border;
border-bottom: none; border-bottom: none;
transform: rotate(90deg); transform: rotate(90deg);
backface-visibility: hidden; backface-visibility: hidden;
transform-origin: 100% 100%; transform-origin: 100% 100%;
} }
// Disabled indeterminate // Disabled indeterminate
&:disabled + span:not(.lever):before { &:disabled + span:not(.lever):before {
border-right: 2px solid $input-disabled-color; border-right: 2px solid $input-disabled-color;
background-color: transparent; background-color: transparent;
} }
} }
// Filled in Style // Filled in Style
[type="checkbox"].filled-in { [type="checkbox"].filled-in {
// General // General
+ span:not(.lever):after { + span:not(.lever):after {
border-radius: 2px; border-radius: 2px;
} }
+ span:not(.lever):before, + span:not(.lever):before,
+ span:not(.lever):after { + span:not(.lever):after {
content: ''; content: '';
left: 0; left: 0;
position: absolute; position: absolute;
/* .1s delay is for check animation */ /* .1s delay is for check animation */
transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;
z-index: 1; z-index: 1;
} }
// Unchecked style // Unchecked style
&:not(:checked) + span:not(.lever):before { &:not(:checked) + span:not(.lever):before {
width: 0; width: 0;
height: 0; height: 0;
border: 3px solid transparent; border: 3px solid transparent;
left: 6px; left: 6px;
top: 10px; top: 10px;
transform: rotateZ(37deg); transform: rotateZ(37deg);
transform-origin: 100% 100%; transform-origin: 100% 100%;
} }
&:not(:checked) + span:not(.lever):after { &:not(:checked) + span:not(.lever):after {
height: 20px; height: 20px;
width: 20px; width: 20px;
background-color: transparent; background-color: transparent;
border: 2px solid $radio-empty-color; border: 2px solid $radio-empty-color;
top: 0px; top: 0px;
z-index: 0; z-index: 0;
} }
// Checked style // Checked style
&:checked { &:checked {
+ span:not(.lever):before { + span:not(.lever):before {
top: 0; top: 0;
left: 1px; left: 1px;
width: 8px; width: 8px;
height: 13px; height: 13px;
border-top: 2px solid transparent; border-top: 2px solid transparent;
border-left: 2px solid transparent; border-left: 2px solid transparent;
border-right: 2px solid $input-background; border-right: 2px solid $input-background;
border-bottom: 2px solid $input-background; border-bottom: 2px solid $input-background;
transform: rotateZ(37deg); transform: rotateZ(37deg);
transform-origin: 100% 100%; transform-origin: 100% 100%;
} }
+ span:not(.lever):after { + span:not(.lever):after {
top: 0; top: 0;
width: 20px; width: 20px;
height: 20px; height: 20px;
border: 2px solid $secondary-color; border: 2px solid $secondary-color;
background-color: $secondary-color; background-color: $secondary-color;
z-index: 0; z-index: 0;
} }
} }
// Focused styles // Focused styles
&.tabbed:focus + span:not(.lever):after { &.tabbed:focus + span:not(.lever):after {
border-radius: 2px; border-radius: 2px;
border-color: $radio-empty-color; border-color: $radio-empty-color;
background-color: rgba(0,0,0,.1); background-color: rgba(0,0,0,.1);
} }
&.tabbed:checked:focus + span:not(.lever):after { &.tabbed:checked:focus + span:not(.lever):after {
border-radius: 2px; border-radius: 2px;
background-color: $secondary-color; background-color: $secondary-color;
border-color: $secondary-color; border-color: $secondary-color;
} }
// Disabled style // Disabled style
&:disabled:not(:checked) + span:not(.lever):before { &:disabled:not(:checked) + span:not(.lever):before {
background-color: transparent; background-color: transparent;
border: 2px solid transparent; border: 2px solid transparent;
} }
&:disabled:not(:checked) + span:not(.lever):after { &:disabled:not(:checked) + span:not(.lever):after {
border-color: transparent; border-color: transparent;
background-color: $input-disabled-solid-color; background-color: $input-disabled-solid-color;
} }
&:disabled:checked + span:not(.lever):before { &:disabled:checked + span:not(.lever):before {
background-color: transparent; background-color: transparent;
} }
&:disabled:checked + span:not(.lever):after { &:disabled:checked + span:not(.lever):after {
background-color: $input-disabled-solid-color; background-color: $input-disabled-solid-color;
border-color: $input-disabled-solid-color; border-color: $input-disabled-solid-color;
} }
} }