UNPKG

tdesign-react

Version:
143 lines (126 loc) 3.01 kB
@import "../../base.less"; @import "./_var.less"; .link-attr-color(@theme) { // 状态 - 主题 颜色 @theme-default: e("link-color-@{theme}"); @theme-hover: e("link-color-@{theme}-hover"); @theme-active: e("link-color-@{theme}-active"); @theme-disabled: e("link-color-@{theme}-disabled"); @theme-focus: e("link-color-@{theme}-focus"); color: @@theme-default; // active 相关样式 &:active { color: @@theme-active; } // hover - underline &.@{prefix}-link--hover-underline { &::after { content: ""; position: absolute; left: 0; right: 0; height: 0; bottom: 0; border-bottom: 1px solid @@theme-default; // 下划线动画 opacity: 0; transition: all @anim-duration-base linear; } &:hover::after { opacity: 1; } &:active::after { opacity: 1; border-color: @@theme-active; } } // hover - color &.@{prefix}-link--hover-color { &:hover { color: @@theme-hover; } // 下划线场景 hover active时 需要改动颜色 &.@{prefix}-is-underline:hover::after { border-color: @@theme-hover; } &.@{prefix}-is-underline:active::after { border-color: @@theme-active; } &:active { color: @@theme-active; } } // 下划线样式 优先级高于 t-link--hover-underline 需要放在后面 否则opacity 被覆盖 无法显示下划线 &.@{prefix}-is-underline { &::after { content: ""; position: absolute; left: 0; right: 0; height: 0; bottom: 0; opacity: 1; border-bottom: 1px solid @@theme-default; transition: all @anim-duration-base linear; } } // 禁用样式 优先级最高 所以放在最后 &.@{prefix}-is-disabled { cursor: not-allowed; color: @@theme-disabled; &:hover, &:active { color: @@theme-disabled; } &.@{prefix}-is-underline::after { border-color: @@theme-disabled; } } } // size 相关样式 .link-attr-size(@size) { @font-size: e("link-font-@{size}"); @icon-margin-size: e("link-icon-margin-@{size}"); font: @@font-size; .@{prefix}-link__prefix-icon { margin-right: @@icon-margin-size; display: flex; } .@{prefix}-link__suffix-icon { margin-left: @@icon-margin-size; display: flex; } } .@{prefix}-link { display: inline-flex; cursor: pointer; align-items: center; position: relative; text-decoration: none; outline: none; padding: 0; transition: all @anim-duration-base linear; // size 相关样式 .link-attr-size("default"); &.@{prefix}-size-s { .link-attr-size("s"); } &.@{prefix}-size-l { .link-attr-size("l"); } &--theme-default { .link-attr-color("default"); } &--theme-primary { .link-attr-color("primary"); } &--theme-success { .link-attr-color("success"); } &--theme-danger { .link-attr-color("danger"); } &--theme-warning { .link-attr-color("warning"); } }