tdesign-mobile-vue
Version:
tdesign-mobile-vue
270 lines (216 loc) • 6.71 kB
text/less
@import "../../base.less";
@import "./_var.less";
@import "./_mixin.less";
.button-attr-color(@theme, @attr, @attr-prepend: "", @ghost: false) {
&:active {
@{attr}: e(@attr-prepend) @@theme-active;
}
&.@{prefix}-is-disabled {
@{attr}: e(@attr-prepend) @@theme-disabled;
}
@theme-default: e("btn-color-@{theme}");
@theme-active: e("btn-color-@{theme}-active");
@theme-disabled: e("btn-color-@{theme}-disabled");
@{attr}: e(@attr-prepend) @@theme-default;
}
.@{prefix}-button {
border-radius: 4px;
.button();
.@{prefix}-button__text,
.@{prefix}-icon {
position: relative;
z-index: 1;
line-height: @btn-line-height-default;
}
.@{prefix}-icon + .@{prefix}-button__text:not(:empty),
.@{prefix}-loading + .@{prefix}-button__text:not(:empty) {
margin-left: calc(@spacer / 2);
}
// 主要按钮
&--base {
color: @btn-text-variant-base-color;
.button-size(@btn-height-default, @btn-font-default, @btn-icon-size-default, @btn-padding-horizontal, 0);
.button-attr-color("gray-bg", background-color);
.button-attr-color("text-gray", color);
&.@{prefix}-button--primary {
color: @text-color-anti;
.button-attr-color("primary", background-color);
}
&.@{prefix}-button--success {
color: @text-color-anti;
.button-attr-color("success", background-color);
}
&.@{prefix}-button--warning {
color: @text-color-anti;
.button-attr-color("warning", background-color);
}
&.@{prefix}-button--danger {
color: @text-color-anti;
.button-attr-color("danger", background-color);
}
&.@{prefix}-button--ghost {
background-color: transparent;
&.@{prefix}-button--primary {
.button-attr-color("primary", border, "1px solid", true);
}
&.@{prefix}-button--success {
.button-attr-color("success", color, "", true);
.button-attr-color("success", border, "1px solid", true);
}
&.@{prefix}-button--warning {
.button-attr-color("warning", color, "", true);
.button-attr-color("warning", border, "1px solid", true);
}
&.@{prefix}-button--danger {
.button-attr-color("danger", color, "", true);
.button-attr-color("danger", border, "1px solid", true);
}
}
}
// 次要按钮
&--outline {
// .button-size(@btn-height-default, @btn-font-default, @btn-padding-horizontal, @btn-border-width);
.button-attr-color("text-gray", color);
.button-attr-color("text-bg", background-color);
.button-attr-color("border-gray", border, "1px solid");
&.@{prefix}-button--primary {
.button-attr-color("primary", color);
.button-attr-color("primary", border, "1px solid");
}
&.@{prefix}-button--success {
.button-attr-color("success", color);
.button-attr-color("success", border, "1px solid");
}
&.@{prefix}-button--warning {
.button-attr-color("warning", color);
.button-attr-color("warning", border, "1px solid");
}
&.@{prefix}-button--danger {
.button-attr-color("danger", color);
.button-attr-color("danger", border, "1px solid");
}
&.@{prefix}-button--ghost {
.button-attr-color("none", background-color, "", true);
.button-attr-color("white-ghost", color, "", true);
.button-attr-color("white-ghost", border, "1px solid", true);
&.@{prefix}-button--primary {
.button-attr-color("primary", color, "", true);
.button-attr-color("primary", border, "1px solid", true);
}
&.@{prefix}-button--success {
.button-attr-color("success", color, "", true);
.button-attr-color("success", border, "1px solid", true);
}
&.@{prefix}-button--warning {
.button-attr-color("warning", color, "", true);
.button-attr-color("warning", border, "1px solid", true);
}
&.@{prefix}-button--danger {
.button-attr-color("danger", color, "", true);
.button-attr-color("danger", border, "1px solid", true);
}
}
}
// 文字按钮
&--text {
border: 0;
// .button-size(@btn-height-default, @btn-font-default, @btn-padding-horizontal, 0);
.button-attr-color("text-gray", color);
.button-attr-color("text-bg", background-color);
&.@{prefix}-button--primary {
.button-attr-color("primary", color);
}
&.@{prefix}-button--success {
.button-attr-color("success", color);
}
&.@{prefix}-button--warning {
.button-attr-color("warning", color);
}
&.@{prefix}-button--danger {
.button-attr-color("danger", color);
}
&.@{prefix}-button--ghost {
background: transparent;
.button-attr-color("white-ghost", color, "", true);
&.@{prefix}-button--primary {
.button-attr-color("primary", color, "", true);
}
&.@{prefix}-button--success {
.button-attr-color("success", color, "", true);
}
&.@{prefix}-button--warning {
.button-attr-color("warning", color, "", true);
}
&.@{prefix}-button--danger {
.button-attr-color("danger", color, "", true);
}
}
}
&.@{prefix}-is {
&-block {
display: block;
width: 100%;
}
&-disabled {
cursor: not-allowed;
}
}
&.@{prefix}-size-s {
line-height: @btn-line-height-s;
.button-size(@btn-height-s, @btn-font-small, @btn-icon-size-small, @btn-padding-horizontal, 0);
}
&.@{prefix}-size-l {
// width: 100%;
line-height: @btn-line-height-l;
.button-size(@btn-height-l , @btn-font-large, @btn-icon-size-large, @btn-padding-horizontal, 0);
}
&--icon-only:not(&--round) {
width: @btn-height-default;
padding: 0;
&.@{prefix}-size-s {
width: @btn-height-s;
}
&.@{prefix}-size-l {
width: @btn-height-l;
}
}
&--shape {
// 正方形
&-square {
padding: 0;
width: @btn-height-default;
&.@{prefix}-size-s {
padding: 0;
width: @btn-height-s;
}
&.@{prefix}-size-l {
padding: 0;
width: @btn-height-l;
}
}
// 圆角长方形
&-round {
border-radius: @btn-shape-border-radius-default;
&.@{prefix}-size-s {
border-radius: @btn-shape-border-radius-s;
}
&.@{prefix}-size-l {
border-radius: @btn-shape-border-radius-l;
}
}
// 圆形
&-circle {
border-radius: 50%;
padding: 0;
width: @btn-height-default;
&.@{prefix}-size-s {
padding: 0;
width: @btn-height-s;
}
&.@{prefix}-size-l {
padding: 0;
width: @btn-height-l;
}
}
}
}