@switchPrefixCls:ant-switch; @switch-duration:.3s; .@{switchPrefixCls}{ position: relative; display: inline-block; box-sizing: border-box; width: 44px; height: 22px; line-height: 20px; vertical-align: middle; border-radius: 20px 20px; border: 1px solid #ccc; background-color: #ccc; cursor: pointer; transition: all @switch-duration cubic-bezier(0.35, 0, 0.25, 1); &-inner { color:#fff; font-size: 12px; position: absolute; left:24px; } &:after{ position: absolute; width: 18px; height: 18px; left: 2px; top:1px; border-radius: 100%; background-color: #ffffff; content: " "; cursor: pointer; transform: scale(1); transition: left @switch-duration cubic-bezier(0.35, 0, 0.25, 1); animation-timing-function: cubic-bezier(0.35, 0, 0.25, 1); animation-duration: @switch-duration; animation-name: rcSwitchOff; } &:hover:after{ transform: scale(1.1); animation-name: rcSwitchOn; } &-checked{ border: 1px solid @success-color; background-color: @success-color; .@{switchPrefixCls}-inner { left:6px; } &:after{ left: 22px; } } &-disabled{ cursor: no-drop; background: #f4f4f4; border-color:#f4f4f4; &:after{ background: #ccc; animation-name: none; cursor: no-drop; } &:hover:after{ transform: scale(1); animation-name: none; } &-inner { color:#ccc; } } } @keyframes rcSwitchOn { 0% { transform: scale(1); } 50% { transform: scale(1.25); } 100% { transform: scale(1.1); } } @keyframes rcSwitchOff { 0% { transform: scale(1.1); } 100% { transform: scale(1); } }