@import '../../style/themes/index'; @import '../../style/mixins/index'; @import './mixin'; @btn-prefix-cls: ~'@{ant-prefix}-btn'; // for compatible @btn-ghost-color: @text-color; @btn-ghost-bg: transparent; @btn-ghost-border: @border-color-base; // Button styles // ----------------------------- .@{btn-prefix-cls} { // Fixing https://github.com/ant-design/ant-design/issues/12978 // Fixing https://github.com/ant-design/ant-design/issues/20058 // Fixing https://github.com/ant-design/ant-design/issues/19972 // Fixing https://github.com/ant-design/ant-design/issues/18107 // Fixing https://github.com/ant-design/ant-design/issues/13214 // It is a render problem of chrome, which is only happened in the codesandbox demo // 0.001px solution works and I don't why line-height: @line-height-base; .btn; .btn-default; &-rtl { direction: rtl; } // Make sure that the target of Button's click event always be `button` // Ref: https://github.com/ant-design/ant-design/issues/7034 > i, > span { display: inline-block; transition: margin-left 0.3s @ease-in-out; pointer-events: none; } &-primary { .btn-primary; .@{btn-prefix-cls}-group &:not(:first-child):not(:last-child) { border-right-color: @btn-group-border; border-left-color: @btn-group-border; &:disabled { border-color: @btn-default-border; } } .@{btn-prefix-cls}-group &:first-child { &:not(:last-child) { border-right-color: @btn-group-border; &[disabled] { border-right-color: @btn-default-border; } } } .@{btn-prefix-cls}-group &:last-child:not(:first-child), .@{btn-prefix-cls}-group & + & { border-left-color: @btn-group-border; .@{btn-prefix-cls}-group-rtl& { border-right-color: @btn-group-border; border-left-color: @btn-default-border; } &[disabled] { border-left-color: @btn-default-border; .@{btn-prefix-cls}-group-rtl& { border-right-color: @btn-default-border; border-left-color: @btn-group-border; } } } } &-ghost { .btn-ghost; } &-dashed { .btn-dashed; } // type="danger" will deprecated // use danger instead &-danger { .btn-danger; } &-link { .btn-link; } &-dangerous { .btn-danger-default; } &-dangerous&-primary { .btn-danger; } &-dangerous&-link { .btn-danger-link; } &-icon-only { .btn-square(@btn-prefix-cls); > i { vertical-align: middle; } } &-round { .btn-round(@btn-prefix-cls); &.@{btn-prefix-cls}-icon-only { width: auto; } } &-circle, &-circle-outline { .btn-circle(@btn-prefix-cls); } &::before { position: absolute; top: -1px; right: -1px; bottom: -1px; left: -1px; z-index: 1; display: none; background: @component-background; border-radius: inherit; opacity: 0.35; transition: opacity 0.2s; content: ''; pointer-events: none; } .@{iconfont-css-prefix} { transition: margin-left 0.3s @ease-in-out; // Follow icon blur under windows. Change the render. // https://github.com/ant-design/ant-design/issues/13924 &.@{iconfont-css-prefix}-plus, &.@{iconfont-css-prefix}-minus { > svg { shape-rendering: optimizeSpeed; } } } &&-loading { position: relative; &:not([disabled]) { pointer-events: none; } } &&-loading::before { display: block; } &&-loading:not(&-circle):not(&-circle-outline):not(&-icon-only) { padding-left: 29px; .@{btn-prefix-cls}-rtl& { padding-right: 29px; padding-left: @padding-md - 1px; } .@{iconfont-css-prefix}:not(:last-child) { margin-left: -14px; .@{btn-prefix-cls}-rtl& { margin-right: -14px; margin-left: 0; } } } &-sm&-loading:not(&-circle):not(&-circle-outline):not(&-icon-only) { padding-left: 24px; .@{btn-prefix-cls}-rtl& { padding-right: 24px; padding-left: @padding-xs - 1px; } .@{iconfont-css-prefix} { margin-left: -17px; .@{btn-prefix-cls}-rtl& { margin-right: -17px; margin-left: 0; } } } &-group { .btn-group(@btn-prefix-cls); } // http://stackoverflow.com/a/21281554/3040605 &:focus > span, &:active > span { position: relative; } // To ensure that a space will be placed between character and `Icon`. > .@{iconfont-css-prefix} + span, > span + .@{iconfont-css-prefix} { margin-left: 8px; .@{btn-prefix-cls}-rtl& { margin-right: 8px; margin-left: 0; } } &-background-ghost { color: @btn-default-ghost-color; background: @btn-default-ghost-bg !important; border-color: @btn-default-ghost-border; } &-background-ghost&-primary { .button-variant-ghost(@btn-primary-bg); } &-background-ghost&-danger { .button-variant-ghost(@btn-danger-border); } &-background-ghost&-dangerous { .button-variant-ghost(@btn-danger-border); } &-background-ghost&-dangerous&-link { .button-variant-ghost(@btn-danger-border, transparent); } &-background-ghost&-link { .button-variant-ghost(@link-color; transparent); color: @btn-link-ghost-color; } &-two-chinese-chars::first-letter { letter-spacing: 0.34em; } &-two-chinese-chars > *:not(.@{iconfont-css-prefix}) { margin-right: -0.34em; letter-spacing: 0.34em; } &-block { width: 100%; } // https://github.com/ant-design/ant-design/issues/12681 &:empty { vertical-align: top; } } a.@{btn-prefix-cls} { // Fixing https://github.com/ant-design/ant-design/issues/12978 // It is a render problem of chrome, which is only happened in the codesandbox demo // 0.1px for padding-top solution works and I don't why padding-top: 0.1px; line-height: @btn-height-base - 2px; &-lg { line-height: @btn-height-lg - 2px; } &-sm { line-height: @btn-height-sm - 2px; } }