siyuan/app/src/assets/scss/component/_switch.scss

79 lines
1.7 KiB
SCSS

.b3-switch {
flex-shrink: 0;
-webkit-appearance: none;
box-sizing: border-box;
width: 28px;
height: 12px;
border: 1px solid transparent;
border-radius: var(--b3-border-radius-b);
margin: 0;
outline: none;
display: inline-block;
position: relative;
cursor: pointer;
background-color: var(--b3-theme-surface-lighter);
overflow: inherit;
user-select: none;
&:after {
border: 1px solid var(--b3-theme-surface-lighter);
box-shadow: var(--b3-point-shadow);
box-sizing: border-box;
width: 16px;
height: 16px;
border-radius: 50%;
pointer-events: none;
z-index: 1;
content: '';
background-color: #fff;
left: -4px;
top: -3px;
display: block;
position: absolute;
transition: transform .3s ease, opacity .2s;
}
&:before {
content: '';
left: -14px;
right: initial;
top: -13px;
width: 36px;
height: 36px;
background-color: rgba(158, 158, 158, .12);
display: none;
border-radius: 24px;
position: absolute;
transition: transform .3s ease, opacity .2s;
opacity: .54;
}
&:checked {
background-color: var(--b3-theme-primary-light);
&:after {
background-color: var(--b3-theme-primary);
border-color: var(--b3-theme-primary);
}
&:before,
&:after {
transform: translateX(19px);
transition: transform .6s cubic-bezier(.2, .85, .32, 1.2), opacity .3s;
}
}
&:disabled {
opacity: 0.38;
cursor: not-allowed;
}
&:hover:not(:disabled):before,
&:focus:not(:disabled):before {
display: inline-block;
}
&:focus:not(:disabled):before {
background-color: var(--b3-theme-primary-lightest);
}
}