diff --git a/frontend/App.vue b/frontend/App.vue
index a920dfa..5877788 100644
--- a/frontend/App.vue
+++ b/frontend/App.vue
@@ -58,11 +58,21 @@ export default {
font-display: swap;
}
+ /* 引入 ZaoZiGongFangJianHei-1 字体 */
+ @font-face {
+ font-family: 'JDLTYuanTiJian';
+ src: url('/static/fonts/JDLTYuanTiJian.ttf') format('truetype');
+ font-weight: normal;
+ font-style: normal;
+ font-display: swap;
+ }
+
/* 圆体 JDLTYuanTiJian.ttf 在部分 Android WebView 上报 OTS/cmap 解析失败,暂不 @font-face 加载,避免控制台告警与渲染异常 */
/* 全局字体设置 */
body {
font-family:
+ 'JDLTYuanTiJian',
-apple-system,
BlinkMacSystemFont,
'PingFang SC',
diff --git a/frontend/pages/components/BannerTop3.vue b/frontend/pages/components/BannerTop3.vue
index 793cff4..21afef3 100644
--- a/frontend/pages/components/BannerTop3.vue
+++ b/frontend/pages/components/BannerTop3.vue
@@ -110,7 +110,7 @@ defineExpose({ reload: loadTop3 });
position: absolute;
inset: 0;
width: 100%;
- height: 100%;
+ height: 328rpx;
}
/* 卡片层 */
@@ -131,20 +131,20 @@ defineExpose({ reload: loadTop3 });
}
.card-pos-0 {
- left: 50rpx;
- top: 40rpx;
- transform: rotate(-6deg);
- z-index: 3;
-}
-.card-pos-1 {
left: 140rpx;
top: -8rpx;
transform: rotate(6deg);
z-index: 4;
}
+.card-pos-1 {
+ left: 50rpx;
+ top: 40rpx;
+ transform: rotate(-6deg);
+ z-index: 3;
+}
.card-pos-2 {
left: 240rpx;
- top: 106rpx;
+ top: 72rpx;
transform: rotate(16deg);
z-index: 5;
}
diff --git a/frontend/pages/square/components/BannerCarousel.vue b/frontend/pages/square/components/BannerCarousel.vue
index 23ac666..f412f20 100644
--- a/frontend/pages/square/components/BannerCarousel.vue
+++ b/frontend/pages/square/components/BannerCarousel.vue
@@ -54,7 +54,7 @@ const onTop3DataLoaded = (items) => {
position: relative;
width: 100%;
z-index: 100;
- padding: 0 16rpx;
+ /* padding: 0 16rpx; */
box-sizing: border-box;
/* top:16rpx; */
}
@@ -69,7 +69,7 @@ const onTop3DataLoaded = (items) => {
.banner-activity-img {
width: 100%;
- height: 328rpx;
+ height: 296rpx;
display: block;
border-radius:24rpx;
position: relative;
diff --git a/frontend/pages/square/components/HotCategoryBlock.vue b/frontend/pages/square/components/HotCategoryBlock.vue
index 89952f1..1f04001 100644
--- a/frontend/pages/square/components/HotCategoryBlock.vue
+++ b/frontend/pages/square/components/HotCategoryBlock.vue
@@ -4,77 +4,54 @@
{{ title }}
-
-
-
+
+
+
+
-
-
-
+
+
-
-
-
-
-
-
-
- {{ item.owner_nickname || item.creator_name || item.name || '' }}
-
-
-
- {{ formatCount(item.likes || item.like_count || 0) }}
+ {{ index + 1 }}
+
+
+ {{ item.name || '' }}
+
+
+ {{ item.owner_nickname || '' }}
-
-
-
-
-
-
-
-
- 刷新
+
+
+ {{ formatCount(item.likes || 0) }}
-
- 查看更多
- ›
-
@@ -140,189 +98,144 @@ defineExpose({
}
/* 骨架屏 */
-.grid-skeleton {
+.ranking-skeleton {
display: flex;
- flex-wrap: wrap;
- justify-content: space-between;
+ flex-direction: column;
}
-.skeleton-card {
- width: calc(25% - 12rpx);
+.skeleton-item {
+ display: flex;
+ align-items: center;
margin-bottom: 16rpx;
- background: rgba(255, 255, 255, 0.1);
- border-radius: 16rpx;
- overflow: hidden;
}
-.skeleton-image {
- width: 100%;
- height: 320rpx;
+.skeleton-rank {
+ width: 48rpx;
+ height: 48rpx;
+ background: #3a3a4a;
+ border-radius: 8rpx;
+ margin-right: 16rpx;
+}
+
+.skeleton-cover {
+ width: 120rpx;
+ height: 120rpx;
background: linear-gradient(90deg, #3a3a4a 25%, #4a4a5a 50%, #3a3a4a 75%);
background-size: 200% 100%;
+ border-radius: 12rpx;
+ margin-right: 16rpx;
animation: shimmer 1.5s infinite;
}
.skeleton-info {
- display: flex;
- align-items: center;
- padding: 16rpx;
-}
-
-.skeleton-avatar {
- width: 40rpx;
- height: 40rpx;
- border-radius: 50%;
- background: #3a3a4a;
- margin-right: 8rpx;
+ flex: 1;
}
.skeleton-name {
- width: 100rpx;
- height: 24rpx;
+ width: 200rpx;
+ height: 32rpx;
background: #3a3a4a;
border-radius: 8rpx;
}
@keyframes shimmer {
- 0% {
- background-position: 200% 0;
- }
- 100% {
- background-position: -200% 0;
- }
+ 0% { background-position: 200% 0; }
+ 100% { background-position: -200% 0; }
}
-/* 内容网格 */
-.items-grid {
+/* 榜单列表 */
+.ranking-list {
display: flex;
- flex-wrap: wrap;
- justify-content: space-between;
+ flex-direction: column;
}
-.grid-card {
- width: calc(25% - 12rpx);
+.ranking-item {
+ display: flex;
+ align-items: center;
margin-bottom: 16rpx;
- background: rgba(255, 255, 255, 0.15);
- border-radius: 16rpx;
- overflow: hidden;
- position: relative;
-}
-
-.card-image {
- width: 100%;
- height: 320rpx;
-}
-
-.card-gradient {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- height: 120rpx;
- background: linear-gradient(to top, rgba(0, 0, 0, 0.6) 0%, transparent 100%);
-}
-
-.card-info {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- display: flex;
- justify-content: space-between;
- align-items: center;
+ background: rgba(255, 255, 255, 0.1);
+ border-radius: 12rpx;
padding: 16rpx;
- box-sizing: border-box;
}
-.user-info {
+.rank-number {
+ width: 48rpx;
+ height: 48rpx;
display: flex;
align-items: center;
-}
-
-.user-avatar {
- width: 40rpx;
- height: 40rpx;
- border-radius: 50%;
- margin-right: 8rpx;
-}
-
-.user-name {
- font-size: 22rpx;
+ justify-content: center;
+ font-size: 24rpx;
+ font-weight: 600;
color: #fff;
- max-width: 120rpx;
+ border-radius: 8rpx;
+ margin-right: 16rpx;
+}
+
+.rank-number.rank-1 {
+ background: linear-gradient(135deg, #ff6b6b 0%, #ffa502 100%);
+}
+
+.rank-number.rank-2 {
+ background: linear-gradient(135deg, #a0a0a0 0%, #c0c0c0 100%);
+}
+
+.rank-number.rank-3 {
+ background: linear-gradient(135deg, #cd7f32 0%, #e6a86e 100%);
+}
+
+.rank-cover {
+ width: 120rpx;
+ height: 120rpx;
+ border-radius: 12rpx;
+ margin-right: 16rpx;
+}
+
+.rank-info {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+}
+
+.rank-name {
+ font-size: 28rpx;
+ color: #fff;
+ margin-bottom: 8rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
-.like-info {
+.rank-creator {
display: flex;
align-items: center;
}
-.like-icon {
+.creator-avatar {
+ width: 32rpx;
+ height: 32rpx;
+ border-radius: 50%;
+ margin-right: 8rpx;
+}
+
+.creator-name {
+ font-size: 24rpx;
+ color: rgba(255, 255, 255, 0.7);
+}
+
+.rank-likes {
+ display: flex;
+ align-items: center;
+}
+
+.rank-like-icon {
width: 24rpx;
height: 24rpx;
margin-right: 4rpx;
}
-.like-count {
- font-size: 22rpx;
- color: #fff;
-}
-
-/* 操作按钮 */
-.block-actions {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-top: 16rpx;
- padding-top: 16rpx;
- border-top: 1rpx solid rgba(255, 255, 255, 0.1);
-}
-
-.action-left {
- display: flex;
- align-items: center;
-}
-
-.action-right {
- display: flex;
- align-items: center;
-}
-
-.refresh-btn {
- display: flex;
- align-items: center;
-}
-
-.refresh-icon {
- width: 28rpx;
- height: 28rpx;
- margin-right: 8rpx;
-}
-
-.refresh-icon.spinning {
- animation: spin 1s linear infinite;
-}
-
-@keyframes spin {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-}
-
-.action-text {
+.rank-like-count {
font-size: 24rpx;
color: rgba(255, 255, 255, 0.8);
}
-
-.arrow {
- font-size: 28rpx;
- color: rgba(255, 255, 255, 0.8);
- margin-left: 4rpx;
-}
diff --git a/frontend/pages/square/hot-category-more.vue b/frontend/pages/square/hot-category-more.vue
index 51c35dc..f103258 100644
--- a/frontend/pages/square/hot-category-more.vue
+++ b/frontend/pages/square/hot-category-more.vue
@@ -92,7 +92,6 @@