@import "../../style/mixins/index"; .antCheckboxFn(@checkbox-prefix-cls: ~"@{ant-prefix}-checkbox") { @checkbox-inner-prefix-cls: ~"@{checkbox-prefix-cls}-inner"; // 一般状态 .@{checkbox-prefix-cls} { white-space: nowrap; cursor: pointer; outline: none; display: inline-block; line-height: 1; position: relative; vertical-align: text-bottom; .@{checkbox-prefix-cls}-wrapper:hover &-inner, &:hover &-inner, &-input:focus + &-inner { border-color: @primary-color; } &-checked:after { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: @border-radius-sm; border: 1px solid @primary-color; content: ''; animation: antCheckboxEffect 0.36s ease-in-out; animation-fill-mode: both; visibility: hidden; } &:hover:after, .@{checkbox-prefix-cls}-wrapper:hover &:after { visibility: visible; } &-inner { position: relative; top: 0; left: 0; display: block; width: @checkbox-size; height: @checkbox-size; border: @border-width-base @border-style-base @border-color-base; border-radius: @border-radius-sm; background-color: #fff; transition: all .3s; &:after { @check-width: (@checkbox-size / 14) * 5px; @check-height: (@checkbox-size / 14) * 8px; transform: rotate(45deg) scale(0); position: absolute; left: (@checkbox-size - @check-width) / 2 - 0.5px * (@checkbox-size / 14); top: (@checkbox-size - @check-height) / 2 - 2px * (@checkbox-size / 14); display: table; width: @check-width; height: @check-height; border: 2px solid #fff; border-top: 0; border-left: 0; content: ' '; transition: all .1s @ease-in-back; } } &-input { position: absolute; left: 0; z-index: 1; cursor: pointer; .opacity(0); top: 0; bottom: 0; right: 0; width: 100%; height: 100%; } } // 半选状态 .@{checkbox-prefix-cls}-indeterminate .@{checkbox-inner-prefix-cls}:after { @indeterminate-width: (@checkbox-size / 14) * 8px; @indeterminate-height: (@checkbox-size / 14) * 1px; content: ' '; transform: scale(1); position: absolute; left: (@checkbox-size - 2 - @indeterminate-width) / 2; top: (@checkbox-size - 3 - @indeterminate-height) / 2; width: @indeterminate-width; height: @indeterminate-height; } .@{checkbox-prefix-cls}-indeterminate.@{checkbox-prefix-cls}-disabled .@{checkbox-inner-prefix-cls}:after { border-color: @disabled-color; } // 选中状态 .@{checkbox-prefix-cls}-checked .@{checkbox-inner-prefix-cls}:after { transform: rotate(45deg) scale(1); position: absolute; display: table; border: 2px solid #fff; border-top: 0; border-left: 0; content: ' '; transition: all .2s @ease-out-back .1s; } .@{checkbox-prefix-cls}-checked, .@{checkbox-prefix-cls}-indeterminate { .@{checkbox-inner-prefix-cls} { background-color: @primary-color; border-color: @primary-color; } } .@{checkbox-prefix-cls}-disabled { cursor: not-allowed; &.@{checkbox-prefix-cls}-checked { .@{checkbox-inner-prefix-cls}:after { animation-name: none; border-color: @disabled-color; } } .@{checkbox-prefix-cls}-input { cursor: not-allowed; } .@{checkbox-inner-prefix-cls} { border-color: @border-color-base !important; background-color: @input-disabled-bg; &:after { animation-name: none; border-color: @input-disabled-bg; } } & + span { color: @disabled-color; cursor: not-allowed; } } .@{checkbox-prefix-cls}-wrapper { cursor: pointer; font-size: @font-size-base; display: inline-block; & + & { margin-left: 8px; } } .@{checkbox-prefix-cls}-wrapper + span, .@{checkbox-prefix-cls} + span { padding-left: 8px; padding-right: 8px; } .@{checkbox-prefix-cls}-group { font-size: @font-size-base; &-item { display: inline-block; } } @ie8: \0screen; // IE8 hack for https://github.com/ant-design/ant-design/issues/2148 @media @ie8 { .@{checkbox-prefix-cls}-checked .@{checkbox-prefix-cls}-inner:before, .@{checkbox-prefix-cls}-checked .@{checkbox-prefix-cls}-inner:after { .iconfont-font("\e632"); font-weight: bold; font-size: 8px; border: 0; color: #fff; left: 2px; top: 3px; position: absolute; } } } @keyframes antCheckboxEffect { 0% { transform: scale(1); opacity: 0.5; } 100% { transform: scale(1.6); opacity: 0; } }