<div class="ul-title-section">type-a</div>
<!-- Type A: 余额卡片 -->
<div class="ul-card-data-a type-a" data-repeat="2">
<div class="ul-card-data-a__title">509,778.80</div>
<div class="ul-card-data-a__options">
<div class="ul-card-data-a__item"><i class="ul-card-data-a__icon fa fa-wallet"></i> 余额</div>
<div class="ul-card-data-a__item"><button class="ul-btn ul-btn-sm">充值</button> <button class="ul-btn ul-btn-sm">提现</button> <button class="ul-btn ul-btn-sm">记录</button></div>
</div>
</div>
<div class="ul-title-section">type-b</div>
<!-- Type B: 数据卡片 -->
<div class="ul-card-data-a type-b" data-repeat="2">
<div class="ul-card-data-a__main">
<div class="ul-card-data-a__icon fa fa-chart-line"></div>
<div class="ul-card-data-a__info">
<div class="ul-card-data-a__subtitle">盈亏总额(元) </div>
<div class="ul-card-data-a__value">0.00</div>
</div>
</div>
</div>
<div class="ul-title-section">type-c</div>
<!-- Type C: 统计卡片 -->
<div class="ul-card-data-a type-c">
<div class="ul-card-data-a__stat-item" data-repeat="3">
<div class="ul-card-data-a__stat-value">0</div>
<div class="ul-card-data-a__stat-title">余额</div>
</div>
</div>
<div class="ul-title-section">紧凑模式</div>
<!-- 紧凑模式示例 -->
<div class="ul-card-data-a type-b compact">
<div class="ul-card-data-a__main">
<div class="ul-card-data-a__icon fa fa-chart-bar"></div>
<div class="ul-card-data-a__info">
<div class="ul-card-data-a__subtitle">紧凑模式</div>
<div class="ul-card-data-a__value">1,234.56</div>
</div>
</div>
</div>
<div class="ul-title-section">主题色变体</div>
<!-- 主题色变体 -->
<div class="ul-card-data-a type-b success">
<div class="ul-card-data-a__main">
<div class="ul-card-data-a__icon fa fa-check-circle"></div>
<div class="ul-card-data-a__info">
<div class="ul-card-data-a__subtitle">Success</div>
<div class="ul-card-data-a__value">100%</div>
</div>
</div>
</div>
<div class="ul-card-data-a type-b danger">
<div class="ul-card-data-a__main">
<div class="ul-card-data-a__icon fa fa-times-circle"></div>
<div class="ul-card-data-a__info">
<div class="ul-card-data-a__subtitle">Danger</div>
<div class="ul-card-data-a__value">-5.2%</div>
</div>
</div>
</div>
<div class="ul-card-data-a type-b warning">
<div class="ul-card-data-a__main">
<div class="ul-card-data-a__icon fa fa-exclamation-triangle"></div>
<div class="ul-card-data-a__info">
<div class="ul-card-data-a__subtitle">Warning</div>
<div class="ul-card-data-a__value">3 Alerts</div>
</div>
</div>
</div>
<div class="ul-card-data-a type-b info">
<div class="ul-card-data-a__main">
<div class="ul-card-data-a__icon fa fa-info-circle"></div>
<div class="ul-card-data-a__info">
<div class="ul-card-data-a__subtitle">Info</div>
<div class="ul-card-data-a__value">Updated</div>
</div>
</div>
</div>
// 重新设计卡片组件样式
.ul-card-data-a {
display: inline-flex;
border: 1px solid $color-border;
border-radius: $radius-lg;
padding: $space-lg;
margin-right: $space-md;
margin-bottom: $space-md;
background: $color-white;
box-shadow: $shadow-sm;
transition: all 0.3s ease;
&:hover {
box-shadow: $shadow-base;
}
// 响应式设计
@include media-breakpoint-down(md) {
display: block;
margin-right: 0;
padding: $space-md;
}
&__title {
padding-bottom: $space-md;
color: $color-primary-base;
font-size: $font-size-xxl;
font-weight: $font-weight-bold;
line-height: 1.1;
letter-spacing: -0.5px;
}
&__options {
@include flex(space-between, center);
gap: $space-sm;
width: 100%;
}
&__item {
@include flex(center, center);
gap: $space-xs;
&:not(:last-child) {
margin-right: $space-sm;
}
}
// 重新设计图标样式 - 确保完美居中
&__icon {
@include flex(center, center);
margin-right: $space-md;
font-size: 1.8rem;
background: linear-gradient(135deg, $color-primary-hover, $color-primary-base);
padding: $space-md;
color: $color-white;
border-radius: $radius-lg;
box-shadow: 0 4px 8px rgba($color-primary-base, 0.2);
// 确保图标在容器中完美居中
&::before {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
}
&__info {
flex: 1;
min-width: 0;
}
&__value {
font-size: $font-size-xxl;
color: $color-primary-base;
font-weight: $font-weight-bold;
margin-top: $space-xs;
line-height: 1.1;
letter-spacing: -0.5px;
}
&__main {
@include flex(flex-start, center);
width: 100%;
}
&__subtitle {
line-height: $line-height-base;
color: $color-text-secondary;
font-size: $font-size-sm;
font-weight: $font-weight-medium;
}
&__stat-item {
@include flex(center, center, column);
padding: $space-lg $space-xl;
text-align: center;
color: $color-text-secondary;
position: relative;
flex: 1;
text-align: center;
&:not(:last-child) {
border-right: 1px solid $color-border;
}
@include media-breakpoint-down(sm) {
padding: $space-md $space-lg;
}
}
&__stat-value {
font-size: $font-size-xl;
line-height: 1.3;
font-weight: $font-weight-bold;
color: $color-text;
margin-bottom: $space-xs;
}
&__stat-title {
font-size: $font-size-sm;
color: $color-text-secondary;
font-weight: $font-weight-normal;
}
// 主题色变体
@each $name, $color in $theme-colors {
&.#{$name} {
.ul-card-data-a__icon {
$hover-color: var(--ul-color-#{$name}-hover);
background: linear-gradient(135deg, $hover-color, $color);
box-shadow: 0 4px 8px rgba($color, 0.2);
}
}
}
// 变体样式
&.type-a {
flex-direction: column;
min-width: 240px;
}
&.type-b {
min-width: 300px;
@include media-breakpoint-down(sm) {
min-width: auto;
}
}
&.type-c {
display: flex;
justify-content: space-around;
padding: $space-md 0;
@include media-breakpoint-down(sm) {
min-width: auto;
}
}
&.compact {
padding: $space-md;
#{&}__title {
font-size: $font-size-xl;
padding-bottom: $space-sm;
}
#{&}__value {
font-size: $font-size-xl;
}
#{&}__icon {
width: 48px;
height: 48px;
min-width: 48px;
min-height: 48px;
font-size: 1.4rem;
padding: $space-sm;
}
}
}
.ul-card-data-a {
display: inline-flex;
border: 1px solid var(--ul-color-border);
border-radius: 8px;
padding: 24px;
margin-right: 16px;
margin-bottom: 16px;
background: var(--ul-color-white);
box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.08);
transition: all 0.3s ease;
}
.ul-card-data-a:hover {
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}
@media (max-width: 767.98px) {
.ul-card-data-a {
display: block;
margin-right: 0;
padding: 16px;
}
}
.ul-card-data-a__title {
padding-bottom: 16px;
color: var(--ul-color-primary-base);
font-size: 20px;
font-weight: 700;
line-height: 1.1;
letter-spacing: -0.5px;
}
.ul-card-data-a__options {
display: flex;
justify-content: space-between;
align-items: center;
flex-direction: row;
gap: 8px;
width: 100%;
}
.ul-card-data-a__item {
display: flex;
justify-content: center;
align-items: center;
flex-direction: row;
gap: 4px;
}
.ul-card-data-a__item:not(:last-child) {
margin-right: 8px;
}
.ul-card-data-a__icon {
display: flex;
justify-content: center;
align-items: center;
flex-direction: row;
margin-right: 16px;
font-size: 1.8rem;
background: linear-gradient(135deg, var(--ul-color-primary-hover), var(--ul-color-primary-base));
padding: 16px;
color: var(--ul-color-white);
border-radius: 8px;
box-shadow: 0 4px 8px rgba(var(--ul-color-primary-base), 0.2);
}
.ul-card-data-a__icon::before {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
.ul-card-data-a__info {
flex: 1;
min-width: 0;
}
.ul-card-data-a__value {
font-size: 20px;
color: var(--ul-color-primary-base);
font-weight: 700;
margin-top: 4px;
line-height: 1.1;
letter-spacing: -0.5px;
}
.ul-card-data-a__main {
display: flex;
justify-content: flex-start;
align-items: center;
flex-direction: row;
width: 100%;
}
.ul-card-data-a__subtitle {
line-height: 1.5;
color: var(--ul-color-text-secondary);
font-size: 12px;
font-weight: 500;
}
.ul-card-data-a__stat-item {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
padding: 24px 32px;
text-align: center;
color: var(--ul-color-text-secondary);
position: relative;
flex: 1;
text-align: center;
}
.ul-card-data-a__stat-item:not(:last-child) {
border-right: 1px solid var(--ul-color-border);
}
@media (max-width: 575.98px) {
.ul-card-data-a__stat-item {
padding: 16px 24px;
}
}
.ul-card-data-a__stat-value {
font-size: 18px;
line-height: 1.3;
font-weight: 700;
color: var(--ul-color-text);
margin-bottom: 4px;
}
.ul-card-data-a__stat-title {
font-size: 12px;
color: var(--ul-color-text-secondary);
font-weight: 400;
}
.ul-card-data-a.primary .ul-card-data-a__icon {
background: linear-gradient(135deg, var(--ul-color-primary-hover), var(--ul-color-primary-base));
box-shadow: 0 4px 8px rgba(var(--ul-color-primary-base), 0.2);
}
.ul-card-data-a.success .ul-card-data-a__icon {
background: linear-gradient(135deg, var(--ul-color-success-hover), var(--ul-color-success-base));
box-shadow: 0 4px 8px rgba(var(--ul-color-success-base), 0.2);
}
.ul-card-data-a.danger .ul-card-data-a__icon {
background: linear-gradient(135deg, var(--ul-color-danger-hover), var(--ul-color-danger-base));
box-shadow: 0 4px 8px rgba(var(--ul-color-danger-base), 0.2);
}
.ul-card-data-a.warning .ul-card-data-a__icon {
background: linear-gradient(135deg, var(--ul-color-warning-hover), var(--ul-color-warning-base));
box-shadow: 0 4px 8px rgba(var(--ul-color-warning-base), 0.2);
}
.ul-card-data-a.info .ul-card-data-a__icon {
background: linear-gradient(135deg, var(--ul-color-info-hover), var(--ul-color-info-base));
box-shadow: 0 4px 8px rgba(var(--ul-color-info-base), 0.2);
}
.ul-card-data-a.dark .ul-card-data-a__icon {
background: linear-gradient(135deg, var(--ul-color-dark-hover), var(--ul-color-dark-base));
box-shadow: 0 4px 8px rgba(var(--ul-color-dark-base), 0.2);
}
.ul-card-data-a.light .ul-card-data-a__icon {
background: linear-gradient(135deg, var(--ul-color-light-hover), var(--ul-color-light-base));
box-shadow: 0 4px 8px rgba(var(--ul-color-light-base), 0.2);
}
.ul-card-data-a.gray .ul-card-data-a__icon {
background: linear-gradient(135deg, var(--ul-color-gray-hover), var(--ul-color-gray-base));
box-shadow: 0 4px 8px rgba(var(--ul-color-gray-base), 0.2);
}
.ul-card-data-a.type-a {
flex-direction: column;
min-width: 240px;
}
.ul-card-data-a.type-b {
min-width: 300px;
}
@media (max-width: 575.98px) {
.ul-card-data-a.type-b {
min-width: auto;
}
}
.ul-card-data-a.type-c {
display: flex;
justify-content: space-around;
padding: 16px 0;
}
@media (max-width: 575.98px) {
.ul-card-data-a.type-c {
min-width: auto;
}
}
.ul-card-data-a.compact {
padding: 16px;
}
.ul-card-data-a.compact__title {
font-size: 18px;
padding-bottom: 8px;
}
.ul-card-data-a.compact__value {
font-size: 18px;
}
.ul-card-data-a.compact__icon {
width: 48px;
height: 48px;
min-width: 48px;
min-height: 48px;
font-size: 1.4rem;
padding: 8px;
}
<view class="ul-title-section">type-a</view>
<!-- Type A: 余额卡片 -->
<view class="ul-card-data-a type-a" data-repeat="2">
<view class="ul-card-data-a__title">509,778.80</view>
<view class="ul-card-data-a__options">
<view class="ul-card-data-a__item"><i class="ul-card-data-a__icon fa fa-wallet"></i> 余额</view>
<view class="ul-card-data-a__item"><button class="ul-btn ul-btn-sm">充值</button> <button class="ul-btn ul-btn-sm">提现</button> <button class="ul-btn ul-btn-sm">记录</button></view>
</view>
</view>
<view class="ul-title-section">type-b</view>
<!-- Type B: 数据卡片 -->
<view class="ul-card-data-a type-b" data-repeat="2">
<view class="ul-card-data-a__main">
<view class="ul-card-data-a__icon fa fa-chart-line"></view>
<view class="ul-card-data-a__info">
<view class="ul-card-data-a__subtitle">盈亏总额(元) </view>
<view class="ul-card-data-a__value">0.00</view>
</view>
</view>
</view>
<view class="ul-title-section">type-c</view>
<!-- Type C: 统计卡片 -->
<view class="ul-card-data-a type-c">
<view class="ul-card-data-a__stat-item" data-repeat="3">
<view class="ul-card-data-a__stat-value">0</view>
<view class="ul-card-data-a__stat-title">余额</view>
</view>
</view>
<view class="ul-title-section">紧凑模式</view>
<!-- 紧凑模式示例 -->
<view class="ul-card-data-a type-b compact">
<view class="ul-card-data-a__main">
<view class="ul-card-data-a__icon fa fa-chart-bar"></view>
<view class="ul-card-data-a__info">
<view class="ul-card-data-a__subtitle">紧凑模式</view>
<view class="ul-card-data-a__value">1,234.56</view>
</view>
</view>
</view>
<view class="ul-title-section">主题色变体</view>
<!-- 主题色变体 -->
<view class="ul-card-data-a type-b success">
<view class="ul-card-data-a__main">
<view class="ul-card-data-a__icon fa fa-check-circle"></view>
<view class="ul-card-data-a__info">
<view class="ul-card-data-a__subtitle">Success</view>
<view class="ul-card-data-a__value">100%</view>
</view>
</view>
</view>
<view class="ul-card-data-a type-b danger">
<view class="ul-card-data-a__main">
<view class="ul-card-data-a__icon fa fa-times-circle"></view>
<view class="ul-card-data-a__info">
<view class="ul-card-data-a__subtitle">Danger</view>
<view class="ul-card-data-a__value">-5.2%</view>
</view>
</view>
</view>
<view class="ul-card-data-a type-b warning">
<view class="ul-card-data-a__main">
<view class="ul-card-data-a__icon fa fa-exclamation-triangle"></view>
<view class="ul-card-data-a__info">
<view class="ul-card-data-a__subtitle">Warning</view>
<view class="ul-card-data-a__value">3 Alerts</view>
</view>
</view>
</view>
<view class="ul-card-data-a type-b info">
<view class="ul-card-data-a__main">
<view class="ul-card-data-a__icon fa fa-info-circle"></view>
<view class="ul-card-data-a__info">
<view class="ul-card-data-a__subtitle">Info</view>
<view class="ul-card-data-a__value">Updated</view>
</view>
</view>
</view>