190 lines
5.3 KiB
SCSS

@charset "UTF-8";
@import '../core/index-noreset';
@import 'scss/variable';
@import './rtl.scss';
/* stylelint-disable max-nesting-depth */
#{$checkbox-prefix}-wrapper {
@include box-sizing;
#{$checkbox-prefix} {
display: inline-block;
position: relative;
line-height: 1;
vertical-align: middle;
}
input[type="checkbox"] {
opacity: 0;
position: absolute;
top: 0;
left: 0;
width: $checkbox-size;
height: $checkbox-size;
margin: 0;
cursor: pointer;
}
#{$checkbox-prefix}-inner {
display: block;
width: $checkbox-size;
height: $checkbox-size;
background: $checkbox-bg-color;
border-radius: $checkbox-border-radius;
border: $checkbox-border-width solid $checkbox-border-color;
transition: all $motion-duration-immediately $motion-linear;
text-align: left; /* 防止继承父级 */
box-shadow: $checkbox-shadow;
/* box-sizing: content-box; */
> .#{$css-prefix}icon {
transform: scale(0);
position: absolute;
top: 0;
opacity: 0;
line-height: $checkbox-size;
transition: all $motion-duration-immediately $motion-linear;
color: $checkbox-checked-circle-color;
left: ($checkbox-size - $checkbox-circle-size) / 2;
@if ($checkbox-circle-size == 12) {
margin-top: 1px;
}
@include icon-size($checkbox-circle-size, 0);
}
> .#{$css-prefix}icon::before {
vertical-align: top;
margin-top: 0;
}
}
&.checked,
&.checked.focused {
> #{$checkbox-prefix} {
> #{$checkbox-prefix}-inner {
border-color: $checkbox-checked-border-color;
background-color: $checkbox-checked-bg-color;
&:hover,
&.hovered {
border-color: $checkbox-checked-border-color;
}
> .#{$css-prefix}icon {
opacity: 1;
transform: scale(1);
@include icon-size($checkbox-circle-size, 0); /* font-size < 12px的时候进行覆盖。 */
}
}
}
}
&.indeterminate,
&.indeterminate.focused {
> #{$checkbox-prefix} {
> #{$checkbox-prefix}-inner {
border-color: $checkbox-checked-border-color;
background-color: $checkbox-checked-bg-color;
&:hover,
&.hovered {
border-color: $checkbox-checked-border-color;
}
> .#{$css-prefix}icon {
opacity: 1;
transform: scale3d(1, 1, 1);
@include icon-size($checkbox-circle-size, 0); /* font-size < 12px的时候进行覆盖。 */
}
}
}
}
&:not(.disabled):hover,
&.hovered,
&.focused {
> #{$checkbox-prefix} {
> #{$checkbox-prefix}-inner {
border-color: $checkbox-hovered-border-color;
background-color: $checkbox-hovered-bg-color;
}
}
#{$checkbox-prefix}-label {
cursor: pointer;
}
}
&.indeterminate:not(.disabled):hover,
&.indeterminate:not(.disabled).hovered,
&.checked:not(.disabled):hover,
&.checked:not(.disabled).hovered {
> #{$checkbox-prefix} {
#{$checkbox-prefix}-inner {
border-color: $checkbox-checked-hovered-border-color;
background-color: $checkbox-checked-hovered-bg-color;
> .#{$css-prefix}icon {
color: $checkbox-checked-hovered-circle-color;
opacity: 1;
}
}
}
}
&.disabled {
input[type="checkbox"] {
cursor: not-allowed;
}
#{$checkbox-prefix}-inner {
border-color: $checkbox-disabled-border-color;
background: $checkbox-disabled-bg-color;
}
&.checked,
&.indeterminate {
#{$checkbox-prefix}-inner {
border-color: $checkbox-disabled-border-color;
background: $checkbox-disabled-bg-color;
&:hover, &.hovered {
border-color: $checkbox-disabled-border-color;
}
> .#{$css-prefix}icon {
color: $checkbox-disabled-circle-color;
opacity: 1;
}
}
}
#{$checkbox-prefix}-label {
color: $checkbox-disabled-label-color;
}
}
}
#{$checkbox-prefix}-group {
#{$checkbox-prefix}-wrapper {
display: inline-block;
margin-left: 8px;
&:first-child {
margin-left: 0;
}
}
&-ver {
#{$checkbox-prefix}-wrapper {
display: block;
margin-left: 0;
margin-right: 0;
margin-bottom: 8px;
}
}
}
#{$checkbox-prefix}-label {
font-size: $checkbox-font-size;
color: $checkbox-label-color;
vertical-align: middle;
margin: 0;
margin-left: $checkbox-margin-left;
line-height: 1;
}