112 lines
2.3 KiB
Plaintext
112 lines
2.3 KiB
Plaintext
/**
|
||
* Button 组件样式
|
||
* 引用全局 Design Token(addGlobalClass: true)
|
||
*/
|
||
.ui-btn {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
box-sizing: border-box;
|
||
border-radius: var(--radius-full);
|
||
font-family: var(--font-family-cn);
|
||
font-weight: var(--font-weight-medium);
|
||
text-align: center;
|
||
transition: opacity var(--motion-fast) var(--ease-standard),
|
||
transform var(--motion-fast) var(--ease-standard);
|
||
user-select: none;
|
||
line-height: 1;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
/* 尺寸 */
|
||
.ui-btn--sm {
|
||
padding: 14rpx 24rpx;
|
||
font-size: var(--font-size-sm);
|
||
min-height: 56rpx;
|
||
}
|
||
.ui-btn--md {
|
||
padding: 20rpx 36rpx;
|
||
font-size: var(--font-size-base);
|
||
min-height: 80rpx;
|
||
}
|
||
.ui-btn--lg {
|
||
padding: 26rpx 48rpx;
|
||
font-size: var(--font-size-lg);
|
||
min-height: 96rpx;
|
||
}
|
||
|
||
/* 撑满 */
|
||
.ui-btn--block {
|
||
display: flex;
|
||
width: 100%;
|
||
}
|
||
|
||
/* 变体 */
|
||
.ui-btn--primary {
|
||
background: var(--color-primary);
|
||
color: #FFFFFF;
|
||
}
|
||
.ui-btn--secondary {
|
||
background: var(--color-bg-card);
|
||
color: var(--color-primary);
|
||
border: 1rpx solid var(--color-primary);
|
||
}
|
||
.ui-btn--ghost {
|
||
background: transparent;
|
||
color: var(--color-text-primary);
|
||
border: 1rpx solid var(--color-border);
|
||
}
|
||
.ui-btn--danger {
|
||
background: var(--color-danger);
|
||
color: #FFFFFF;
|
||
}
|
||
.ui-btn--text {
|
||
background: transparent;
|
||
color: var(--color-primary);
|
||
padding-left: 0;
|
||
padding-right: 0;
|
||
min-height: auto;
|
||
}
|
||
|
||
/* 状态 */
|
||
.ui-btn--disabled,
|
||
.ui-btn--loading {
|
||
opacity: 0.55;
|
||
}
|
||
.ui-btn--disabled.ui-btn--primary,
|
||
.ui-btn--disabled.ui-btn--danger {
|
||
background: var(--color-text-disabled);
|
||
}
|
||
.ui-btn--disabled.ui-btn--secondary,
|
||
.ui-btn--disabled.ui-btn--ghost {
|
||
color: var(--color-text-disabled);
|
||
border-color: var(--color-text-disabled);
|
||
}
|
||
|
||
.ui-btn--hover {
|
||
opacity: 0.85;
|
||
transform: scale(0.98);
|
||
}
|
||
|
||
/* Loading spinner */
|
||
.ui-btn__spinner {
|
||
width: 28rpx;
|
||
height: 28rpx;
|
||
margin-right: 12rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
.ui-btn__spinner-dot {
|
||
width: 18rpx;
|
||
height: 18rpx;
|
||
border-radius: 50%;
|
||
border: 3rpx solid currentColor;
|
||
border-top-color: transparent;
|
||
animation: ui-btn-spin 0.7s linear infinite;
|
||
}
|
||
@keyframes ui-btn-spin {
|
||
from { transform: rotate(0deg); }
|
||
to { transform: rotate(360deg); }
|
||
}
|