amis2/scss/components/form/_switch.scss
吴多益 33686a375e
SCSS 基于 CSS custom properties 重构,支持通过配置来控制展现风格 (#1190)
* 使用自定义 css 属性初步,支持大部分组件的展现

* button 大部分可以看了

* cxd 和 dark 大部分正常

* 修复一些细节样式错误;补充 css 变量的文档

* 修复几个脚本发现的错误

* 完善一下注释

* 修复一些样式不一致问题

* 修复可能存在的 css xss

* 恢复 font-variant 功能

* 修复绝大部分 @if 相关的问题

* 恢复之前的注释

* 修复小错误,并将所有 background-color 改成 background,这样就能设置渐变色

* 修复 button group 在 cxd 下不一致问题

* 缩小查看配置和复制配置的宽度,留出更多空间

* 修复一些潜在的错误

* 恢复 utilities 中 label 背景色的设置

* 修复错误的 css 变量

* 补充 IE11 Variables Polyfill
2020-12-21 10:08:40 +08:00

119 lines
2.6 KiB
SCSS

.#{$ns}Switch {
cursor: pointer;
position: relative;
display: inline-block;
width: var(--Switch-width);
height: var(--Switch-height);
overflow: hidden;
border-radius: px2rem(30px);
background: var(--Switch-onActive-bgColor);
margin: 0;
vertical-align: middle;
text-align: left;
&.is-disabled {
background: var(--Switch-onDisabled-bgColor);
}
i {
&:before {
content: '\5173';
color: var(--Switch-valueColor);
text-indent: calc(var(--Switch-width) / 2);
text-transform: uppercase;
font-size: var(--fontSizeSm);
line-height: var(--Switch-height);
font-style: normal;
font-weight: bold;
position: absolute;
top: px2rem(-1px);
bottom: px2rem(-1px);
left: px2rem(-1px);
right: px2rem(-1px);
background: var(--Switch-bgColor);
border: px2rem(1px) solid var(--Switch-borderColor);
border-radius: px2rem(30px);
transition: all 0.2s;
}
&:after {
content: '';
position: absolute;
background: var(--white);
width: calc(var(--Switch-height) - #{px2rem(2px)});
top: px2rem(1px);
bottom: px2rem(1px);
left: px2rem(1px);
border-radius: 50%;
// box-shadow: px2rem(1px) px2rem(1px) px2rem(3px) rgba(0, 0, 0, 0.25);
transition: margin-left 0.3s;
}
}
input {
position: absolute;
opacity: 0;
&:disabled,
&:disabled:checked {
& + i {
&:before {
color: var(--Switch-onDisabled-color);
background: var(--Switch-onDisabled-bgColor);
cursor: not-allowed;
}
&:after {
background: var(--Switch-onDisabled-circle-BackgroundColor);
color: var(--Switch-onDisabled-color);
}
}
}
&:checked {
& + i {
&:before {
left: 100%;
border-width: 0;
}
&:after {
margin-left: calc(var(--Switch-width) - var(--Switch-height));
content: '\5f00';
color: var(--white);
text-indent: px2rem(-18px); // todo
text-transform: uppercase;
font-size: var(--fontSizeSm);
font-weight: bold;
font-style: normal;
line-height: var(--Switch-height);
}
}
}
}
}
.#{$ns}Switch-option {
vertical-align: middle;
margin-left: var(--Switch-gap);
&:first-child {
margin-left: 0;
margin-right: var(--Switch-gap);
}
&:empty {
display: none;
}
}
.#{$ns}SwitchControl {
padding-top: calc((var(--Form-input-height) - var(--Switch-height)) / 2);
&.is-inline {
display: inline-block;
}
}