perf(stargalaxy): replace label JS constants with pure CSS classes (.podium-N .top-label)
This commit is contained in:
parent
7b7902bba6
commit
563969c4e0
@ -1,14 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<view
|
<view class="podium-card" :class="['podium-' + rank]" @click="handleClick">
|
||||||
class="podium-card"
|
|
||||||
:class="['podium-' + rank]"
|
|
||||||
@click="handleClick"
|
|
||||||
>
|
|
||||||
<!-- 相框(最底层) -->
|
|
||||||
<image class="podium-frame" :src="`/static/square/galaxy/LV${rank - 3}.png`" mode="aspectFit" />
|
|
||||||
|
|
||||||
<!-- 藏品主图(不规则圆角) -->
|
<!-- 藏品主图(不规则圆角) -->
|
||||||
<view class="cover-wrap">
|
<view class="cover-wrap">
|
||||||
|
<!-- 相框(最底层) -->
|
||||||
|
<image
|
||||||
|
class="podium-frame"
|
||||||
|
:src="`/static/square/galaxy/LV${rank - 3}.png`"
|
||||||
|
mode="aspectFit"
|
||||||
|
/>
|
||||||
<image
|
<image
|
||||||
class="cover-image"
|
class="cover-image"
|
||||||
:src="item.cover_url || item.cover_image || ''"
|
:src="item.cover_url || item.cover_image || ''"
|
||||||
@ -17,7 +16,7 @@
|
|||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- TOP N 标签(cover 下方居中) -->
|
<!-- TOP N 标签(cover 下方居中) -->
|
||||||
<view class="top-label" :style="labelStyle">TOP {{ rank - 3 }}</view>
|
<view class="top-label">TOP {{ rank - 3 }}</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -29,26 +28,6 @@ const props = defineProps({
|
|||||||
|
|
||||||
const emit = defineEmits(["cardClick"]);
|
const emit = defineEmits(["cardClick"]);
|
||||||
|
|
||||||
// 不同 rank 的标签渐变
|
|
||||||
const labelGradients = {
|
|
||||||
4: "radial-gradient(ellipse, #FFD700, #FFF6A8 30%, #DAA520 100%)", // 金
|
|
||||||
5: "radial-gradient(ellipse, #C0C0C0, #E8E8E8 50%, #7A7A7A)", // 银
|
|
||||||
6: "radial-gradient(ellipse, #CD7F32, #E8A45C 50%, #A0522D)", // 铜
|
|
||||||
};
|
|
||||||
|
|
||||||
const labelSizes = {
|
|
||||||
4: { w: 96, h: 22, font: 13 },
|
|
||||||
5: { w: 78, h: 18, font: 11 },
|
|
||||||
6: { w: 78, h: 18, font: 11 },
|
|
||||||
};
|
|
||||||
|
|
||||||
const labelStyle = {
|
|
||||||
width: labelSizes[props.rank].w + "rpx",
|
|
||||||
height: labelSizes[props.rank].h + "rpx",
|
|
||||||
fontSize: labelSizes[props.rank].font + "rpx",
|
|
||||||
background: labelGradients[props.rank],
|
|
||||||
};
|
|
||||||
|
|
||||||
function handleClick() {
|
function handleClick() {
|
||||||
emit("cardClick", props.item);
|
emit("cardClick", props.item);
|
||||||
}
|
}
|
||||||
@ -87,6 +66,26 @@ function handleClick() {
|
|||||||
height: 192rpx;
|
height: 192rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* TOP N 标签(按 rank 区分样式) */
|
||||||
|
.podium-4 .top-label {
|
||||||
|
width: 96rpx;
|
||||||
|
height: 22rpx;
|
||||||
|
font-size: 13rpx;
|
||||||
|
background: radial-gradient(ellipse, #ffd700, #fff6a8 30%, #daa520 100%);
|
||||||
|
}
|
||||||
|
.podium-5 .top-label,
|
||||||
|
.podium-6 .top-label {
|
||||||
|
width: 78rpx;
|
||||||
|
height: 18rpx;
|
||||||
|
font-size: 11rpx;
|
||||||
|
}
|
||||||
|
.podium-5 .top-label {
|
||||||
|
background: radial-gradient(ellipse, #c0c0c0, #e8e8e8 50%, #7a7a7a);
|
||||||
|
}
|
||||||
|
.podium-6 .top-label {
|
||||||
|
background: radial-gradient(ellipse, #cd7f32, #e8a45c 50%, #a0522d);
|
||||||
|
}
|
||||||
|
|
||||||
.podium-frame {
|
.podium-frame {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
inset: 0;
|
inset: 0;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user