@@ -41,7 +41,19 @@
< / div >
< / div >
< / section >
< / section >
<!-- 第四部分 : 排名明细 -- >
<!-- 第四部分 : 总战绩 -- >
< section class = "total-score-section card-game" >
< div class = "total-score-container" >
< h2 class = "game-subtitle" > 总战绩 < / h2 >
< div class = "total-score-content" >
< div class = "total-score-item" >
< span class = "score-value" > { { localDisplayConfig . team ? . totalScoreColumn ? . displayStyle === 'amount' ? '¥' : '' } } { { totalTeamScore } } < / span >
< / div >
< / div >
< / div >
< / section >
<!-- 第五部分 : 排名明细 -- >
< section class = "rankings-section card-game" >
< section class = "rankings-section card-game" >
< div class = "rankings-container" >
< div class = "rankings-container" >
@@ -49,10 +61,21 @@
< div class = "team-rankings" >
< div class = "team-rankings" >
<!-- 战区冠军 -- >
<!-- 战区冠军 -- >
< div class = "team-champion" >
< div class = "team-champion" >
< div class = "team-logo" >
< div class = "team-logo" : class = "{ 'photo-container': localDisplayConfig.championLogos?.teamChampionType === 'photo' }" >
< img v-if = "localDisplayConfig.championLogos?.teamChampion"
< img v-if = "localDisplayConfig.championLogos?.teamChampion"
:src = "localDisplayConfig.championLogos.teamChampion" alt = "战区冠军" class = "champion-logo"
:src = "localDisplayConfig.championLogos.teamChampion" alt = "战区冠军"
: style = "{ width: localDisplayConfig.championLogos?.teamChampionSize + 'px', height: localDisplayConfig.championLogos?.teamChampionSize + 'px' }" >
class = "champion-logo"
: style = "localDisplayConfig.championLogos?.teamChampionType === 'photo'
? {
width: localDisplayConfig.championLogos?.teamChampionPhotoWidth + 'px',
height: localDisplayConfig.championLogos?.teamChampionPhotoHeight + 'px',
objectFit: 'cover'
}
: {
width: localDisplayConfig.championLogos?.teamChampionSize + 'px',
height: localDisplayConfig.championLogos?.teamChampionSize + 'px'
}
" >
< img v-else src = "/crown.png" alt = "战区冠军" class = "champion-logo" / >
< img v-else src = "/crown.png" alt = "战区冠军" class = "champion-logo" / >
< / div >
< / div >
< div class = "champion-name" >
< div class = "champion-name" >
@@ -60,14 +83,14 @@
< / div >
< / div >
< / div >
< / div >
< div class = "team-rankings-container" >
< div class = "team-rankings-container" >
< h2 class = "game-subtitle" > 👥 战区排名 < / h2 >
< h2 class = "game-subtitle" > 战区排名 < / h2 >
< div class = "rank-table" >
< div class = "rank-table" >
< div class = "table-header" : style = "{ 'grid-template-columns': teamGridTemplate }" >
< div class = "table-header" : style = "{ 'grid-template-columns': teamGridTemplate }" >
< span class = "rank-col" : style = "{ textAlign: localDisplayConfig.team?.columnAlignments?.rank || 'left' }" > 排名 < / span >
< span class = "rank-col" : style = "{ textAlign: localDisplayConfig.team?.columnAlignments?.rank || 'left' }" > 排名 < / span >
< span class = "name-col" : style = "{ textAlign: localDisplayConfig.team?.columnAlignments?.name || 'left' }" > 战区名称 < / span >
< span class = "name-col" : style = "{ textAlign: localDisplayConfig.team?.columnAlignments?.name || 'left' }" > 战区名称 < / span >
< span class = "score-col" : style = "{ textAlign: localDisplayConfig.team?.columnAlignments?.score || 'left' }" > { { localDisplayConfig . team ? . totalScoreColumn ? . displayName || '业绩' } } < / span >
< span class = "score-col" : style = "{ textAlign: localDisplayConfig.team?.columnAlignments?.score || 'left' }" > { { localDisplayConfig . team ? . totalScoreColumn ? . displayName || '业绩' } } < / span >
< span v-if = "localDisplayConfig.team?.showMemberCount" class="member-col" :style="{ textAlign: localDisplayConfig.team?.columnAlignments?.memberCount || 'left' }" > 人数 < / span >
< span v-if = "localDisplayConfig.team?.showMemberCount" class="member-col" :style="{ textAlign: localDisplayConfig.team?.columnAlignments?.memberCount || 'left' }" > 人数 < / span >
< span v-if = "localDisplayConfig.team?.showLeader" class="leader-col" :style="{ textAlign: localDisplayConfig.team?.columnAlignments?.leader || 'left' }" > 队长 < / span >
< span v-if = "localDisplayConfig.team?.showLeader" class="leader-col" :style="{ textAlign: localDisplayConfig.team?.columnAlignments?.leader || 'left' }" > 将军 < / span >
< span v-if = "localDisplayConfig.team?.showBonus" class="bonus-col" :style="{ textAlign: localDisplayConfig.team?.columnAlignments?.bonus || 'left' }" > 奖金 < / span >
< span v-if = "localDisplayConfig.team?.showBonus" class="bonus-col" :style="{ textAlign: localDisplayConfig.team?.columnAlignments?.bonus || 'left' }" > 奖金 < / span >
< / div >
< / div >
< div v-for = "(item, index) in filteredTeamRankings" :key="item.id" class="table-row"
< div v-for = "(item, index) in filteredTeamRankings" :key="item.id" class="table-row"
@@ -77,8 +100,7 @@
}" >
}" >
< span class = "rank-col" : style = "{ textAlign: localDisplayConfig.team?.columnAlignments?.rank || 'left' }" > { { index + 1 } } < / span >
< span class = "rank-col" : style = "{ textAlign: localDisplayConfig.team?.columnAlignments?.rank || 'left' }" > { { index + 1 } } < / span >
< span class = "name-col" : style = "{ textAlign: localDisplayConfig.team?.columnAlignments?.name || 'left' }" > { { item . name } } < / span >
< span class = "name-col" : style = "{ textAlign: localDisplayConfig.team?.columnAlignments?.name || 'left' }" > { { item . name } } < / span >
< span class = "score-col" : style = "{ textAlign: localDisplayConfig.team?.columnAlignments?.score || 'left' }" > { { localDisplayConfig . team ? . totalScoreColumn ? . displayStyle === 'amount' ? '¥' +
< span class = "score-col" : style = "{ textAlign: localDisplayConfig.team?.columnAlignments?.score || 'left' }" > { { localDisplayConfig . team ? . totalScoreColumn ? . displayStyle === 'amount' ? '¥' : '' } } { { formatNumber ( item . totalScore ) } } < / span >
item . totalScore : item . totalScore } } < / span >
< span v-if = "localDisplayConfig.team?.showMemberCount" class="member-col" :style="{ textAlign: localDisplayConfig.team?.columnAlignments?.memberCount || 'left' }" > {{ item.memberCount }} 人 < / span >
< span v-if = "localDisplayConfig.team?.showMemberCount" class="member-col" :style="{ textAlign: localDisplayConfig.team?.columnAlignments?.memberCount || 'left' }" > {{ item.memberCount }} 人 < / span >
< span v-if = "localDisplayConfig.team?.showLeader" class="leader-col" :style="{ textAlign: localDisplayConfig.team?.columnAlignments?.leader || 'left' }" > {{ item.leader }} < / span >
< span v-if = "localDisplayConfig.team?.showLeader" class="leader-col" :style="{ textAlign: localDisplayConfig.team?.columnAlignments?.leader || 'left' }" > {{ item.leader }} < / span >
< span v-if = "localDisplayConfig.team?.showBonus" class="bonus-col" :style="{ textAlign: localDisplayConfig.team?.columnAlignments?.bonus || 'left' }" > ¥ {{ item.bonus }} < / span >
< span v-if = "localDisplayConfig.team?.showBonus" class="bonus-col" :style="{ textAlign: localDisplayConfig.team?.columnAlignments?.bonus || 'left' }" > ¥ {{ item.bonus }} < / span >
@@ -91,6 +113,8 @@
< div class = "individual-rankings" >
< div class = "individual-rankings" >
<!-- 英雄冠军 -- >
<!-- 英雄冠军 -- >
< div class = "individual-champion" >
< div class = "individual-champion" >
< div class = "hero-ranking-text left-hero-ranking-text" > 英雄榜 < / div >
< div class = "champion-content" >
< div class = "individual-avatar champion-container" >
< div class = "individual-avatar champion-container" >
< div class = "crown-animation" : class = "{'crown-animation-run': localDisplayConfig.crown?.animationEnabled}" v-if = "filteredIndividualRankings.length > 0" : style = "{
< div class = "crown-animation" : class = "{'crown-animation-run': localDisplayConfig.crown?.animationEnabled}" v-if = "filteredIndividualRankings.length > 0" : style = "{
fontSize: (localDisplayConfig.crown?.size || localDisplayConfig.championLogos?.individualChampionSize * 0.8) + 'px'
fontSize: (localDisplayConfig.crown?.size || localDisplayConfig.championLogos?.individualChampionSize * 0.8) + 'px'
@@ -110,14 +134,15 @@
< / span >
< / span >
< / div >
< / div >
< / div >
< / div >
<!-- 确保名字容器不被遮挡 , 样式已在下方优化 -- >
< div class = "champion-name" >
< div class = "champion-name" >
{ { filteredIndividualRankings [ 0 ] ? . name || '暂无冠军' } }
{ { filteredIndividualRankings [ 0 ] ? . name || '暂无冠军' } }
< / div >
< / div >
< / div >
< / div >
< div class = "hero-ranking-text right-hero-ranking-text" > 英雄榜 < / div >
< / div >
<!-- 英雄排名 -- >
<!-- 英雄排名 -- >
< div class = "individual-rankings-container" >
< div class = "individual-rankings-container" >
< h2 class = "game-subtitle" > 👤 英雄排名 < / h2 >
< h2 class = "game-subtitle" > 英雄排名 < / h2 >
< div class = "rank-table" >
< div class = "rank-table" >
< div class = "table-header" : style = "{ 'grid-template-columns': individualGridTemplate }" >
< div class = "table-header" : style = "{ 'grid-template-columns': individualGridTemplate }" >
< span class = "rank-col" : style = "{ textAlign: localDisplayConfig.individual?.columnAlignments?.rank || 'left' }" > 排名 < / span >
< span class = "rank-col" : style = "{ textAlign: localDisplayConfig.individual?.columnAlignments?.rank || 'left' }" > 排名 < / span >
@@ -143,8 +168,7 @@
< / span >
< / span >
< span class = "name-col" : style = "{ textAlign: localDisplayConfig.individual?.columnAlignments?.name || 'left' }" > { { item . name || '-' } } < / span >
< span class = "name-col" : style = "{ textAlign: localDisplayConfig.individual?.columnAlignments?.name || 'left' }" > { { item . name || '-' } } < / span >
< span v-if = "localDisplayConfig.individual?.showTeam" class="team-col" :style="{ textAlign: localDisplayConfig.individual?.columnAlignments?.team || 'left' }" > {{ item.team | | ' - ' }} < / span >
< span v-if = "localDisplayConfig.individual?.showTeam" class="team-col" :style="{ textAlign: localDisplayConfig.individual?.columnAlignments?.team || 'left' }" > {{ item.team | | ' - ' }} < / span >
< span class = "score-col" : style = "{ textAlign: localDisplayConfig.individual?.columnAlignments?.score || 'left' }" > { { localDisplayConfig . individual ? . scoreColumn ? . displayStyle === 'amount' ? '¥' +
< span class = "score-col" : style = "{ textAlign: localDisplayConfig.individual?.columnAlignments?.score || 'left' }" > { { localDisplayConfig . individual ? . scoreColumn ? . displayStyle === 'amount' ? '¥' : '' } } { { formatNumber ( item . score ) } } < / span >
item . score : item . score } } < / span >
< span v-if = "localDisplayConfig.individual?.showLevel" class="level-col" :style="{ textAlign: localDisplayConfig.individual?.columnAlignments?.level || 'left' }"
< span v-if = "localDisplayConfig.individual?.showLevel" class="level-col" :style="{ textAlign: localDisplayConfig.individual?.columnAlignments?.level || 'left' }"
:class = "`level-${item.level}`" > { { item . level } } < / span >
:class = "`level-${item.level}`" > { { item . level } } < / span >
< span v-if = "localDisplayConfig.individual?.showDepartment" class="dept-col" :style="{ textAlign: localDisplayConfig.individual?.columnAlignments?.department || 'left' }" > {{ item.department }} < / span >
< span v-if = "localDisplayConfig.individual?.showDepartment" class="dept-col" :style="{ textAlign: localDisplayConfig.individual?.columnAlignments?.department || 'left' }" > {{ item.department }} < / span >
@@ -196,6 +220,9 @@ function createDefaultDisplayConfig() {
championLogos : {
championLogos : {
teamChampion : '' ,
teamChampion : '' ,
teamChampionSize : 60 ,
teamChampionSize : 60 ,
teamChampionType : 'avatar' , // 'avatar' 或 'photo'
teamChampionPhotoWidth : 120 ,
teamChampionPhotoHeight : 80 ,
individualChampion : '' ,
individualChampion : '' ,
individualChampionSize : 60
individualChampionSize : 60
} ,
} ,
@@ -302,6 +329,29 @@ const filteredTeamRankings = computed(() => {
}
}
return filtered ;
return filtered ;
} ) ;
} ) ;
// 格式化数字为中国人习惯的金额表达方式(使用万分位分隔符)
function formatNumber ( num ) {
if ( num === null || num === undefined || isNaN ( num ) ) return '0' ;
const numStr = num . toString ( ) ;
// 先处理小数部分
const parts = numStr . split ( '.' ) ;
let integerPart = parts [ 0 ] ;
const decimalPart = parts . length > 1 ? '.' + parts [ 1 ] : '' ;
// 对于整数部分,从右往左每四位添加一个逗号(万分位分隔)
const formattedInteger = integerPart . replace ( /\B(?=(\d{4})+(?!\d))/g , ',' ) ;
return formattedInteger + decimalPart ;
}
// 计算属性 - 所有战区业绩总和
const totalTeamScore = computed ( ( ) => {
const total = teamRankings . value . reduce ( ( total , team ) => {
return total + ( team . totalScore || 0 ) ;
} , 0 ) ;
return formatNumber ( total ) ;
} ) ;
// 确保即使displayConfig存在, 也要和默认配置合并, 保证结构完整性
// 确保即使displayConfig存在, 也要和默认配置合并, 保证结构完整性
const localDisplayConfig = ref ( ( ) => {
const localDisplayConfig = ref ( ( ) => {
if ( displayConfig ) {
if ( displayConfig ) {
@@ -972,8 +1022,7 @@ onUnmounted(() => {
border - radius : 50 % ;
border - radius : 50 % ;
}
}
/* 冠军模块样式(已修改:统一两个冠军区高度) */
/* 冠军模块样式 */
/* 冠军模块样式(修改后:统一两个冠军区高度,确保名字显示) */
. champion - section {
. champion - section {
display : flex ;
display : flex ;
justify - content : space - between ;
justify - content : space - between ;
@@ -981,7 +1030,6 @@ onUnmounted(() => {
gap : 20 px ;
gap : 20 px ;
}
}
/* 核心修改:固定两个冠军区高度,确保对齐+名字不被遮挡 */
. team - champion ,
. team - champion ,
. individual - champion {
. individual - champion {
display : flex ;
display : flex ;
@@ -989,73 +1037,71 @@ onUnmounted(() => {
align - items : center ;
align - items : center ;
justify - content : center ;
justify - content : center ;
text - align : center ;
text - align : center ;
padding : 15 px 15 px 10 px ; /* 优化内边距,底部留足名字空间 */
padding : 15 px ;
margin - bottom : 10 px ;
margin - bottom : 10 px ;
height : 130 px ; /* 固定总高度,两个区域完全一致 */
box - sizing : border - box ; /* 确保padding不撑高容器 */
}
}
. team - logo {
. team - logo {
font - size : 2 rem ;
font - size : 2 rem ;
margin - bottom : 8 px ; /* 增加与名字的间距 */
margin - bottom : 5 px ;
display : inline - flex ; /* 改为flex确保居中 */
display : inline - block ;
align - items : center ;
justify - content : center ;
color : gold ;
color : gold ;
width : 80 px ; /* 与英雄头像容器宽度一致 */
height : 80 px ; /* 与英雄头像容器高度一致 */
}
}
/* 核心修改:统一英雄头像容器尺寸,不遮挡名字 */
. individual - avatar {
. individual - avatar {
font - size : 2 rem ;
font - size : 2 rem ;
margin - bottom : 8 px ; /* 增加与名字的间距,关键! */
margin - bottom : 5 px ;
display : inline - flex ; /* 改为flex确保居中 */
display : inline - block ;
align - items : center ;
justify - content : center ;
width : 80 px ; /* 与战区logo宽度一致 */
height : 80 px ; /* 与战区logo高度一致 */
}
}
/* 冠军头像容器 */
/* 冠军头像容器 */
. champion - container {
. champion - container {
position : relative ;
position : relative ;
display : inline - flex ; /* 改为flex, 确保头像居中 */
display : inline - block ;
align - items : center ;
justify - content : center ;
width : 100 % ;
height : 100 % ;
}
}
/* 核心修改:优化王冠位置,不占用额外高度,不遮挡名字 */
/* 皇冠动画效果 */
. crown - animation {
. crown - animation {
position : absolute ;
position : absolute ;
left : 50 % ;
left : 50 % ;
top : - 18 px ; /* 向上偏移,远离头像和名字 */
transform : translateX ( - 50 % ) ;
transform : translateX ( - 50 % ) ;
z - index : 10 ;
z - index : 10 ;
text - shadow : 0 0 10 px var ( -- gold - primary ) , 0 0 20 px var ( -- gold - secondary ) ;
text - shadow : 0 0 10 px var ( -- gold - primary ) , 0 0 20 px var ( -- gold - secondary ) ;
<< << << < HEAD
font - size : 3 rem ; /* 改大: 从2rem改为3rem */
font - size : 3 rem ; /* 改大: 从2rem改为3rem */
=== === =
>>> >>> > 5 a48653be089c47d923681c42164b2d4fb60c341
}
}
. crown - animation - run {
. crown - animation - run {
animation : crownFloat 2 s ease - in - out infinite , crownGlow 3 s ease - in - out infinite ;
animation : crownFloat 2 s ease - in - out infinite , crownGlow 3 s ease - in - out infinite ;
}
}
/* 皇冠浮动动画(保留原有,优化偏移) */
/* 皇冠浮动动画 */
@ keyframes crownFloat {
@ keyframes crownFloat {
0 % {
0 % {
transform : translateX ( - 50 % ) translateY ( 0 ) rotate ( - 10 deg ) ;
transform : translateX ( - 50 % ) translateY ( 0 ) rotate ( - 10 deg ) ;
}
}
50 % {
50 % {
transform : translateX ( - 50 % ) translateY ( - 3 px ) rotate ( 10 deg ) ; /* 减小上下浮动幅度,避免遮挡 */
transform : translateX ( - 50 % ) translateY ( - 5 px ) rotate ( 10 deg ) ;
}
}
100 % {
100 % {
transform : translateX ( - 50 % ) translateY ( 0 ) rotate ( - 10 deg ) ;
transform : translateX ( - 50 % ) translateY ( 0 ) rotate ( - 10 deg ) ;
}
}
}
}
/* 皇冠发光效果动画(去重,保留一个) */
/* 皇冠发光效果动画 */
@ keyframes crownGlow {
0 % , 100 % {
text - shadow : 0 0 10 px var ( -- gold - primary ) , 0 0 20 px var ( -- gold - secondary ) ;
}
50 % {
text - shadow : 0 0 15 px var ( -- gold - primary ) , 0 0 30 px var ( -- gold - secondary ) , 0 0 40 px var ( -- gold - tertiary ) ;
}
}
@ keyframes crownGlow {
@ keyframes crownGlow {
0 % , 100 % {
0 % , 100 % {
text - shadow : 0 0 10 px var ( -- gold - primary ) , 0 0 20 px var ( -- gold - secondary ) ;
text - shadow : 0 0 10 px var ( -- gold - primary ) , 0 0 20 px var ( -- gold - secondary ) ;
@@ -1065,18 +1111,18 @@ onUnmounted(() => {
}
}
}
}
/* 核心修改: 统一冠军logo/头像尺寸,不遮挡名字 */
. champion - logo {
. champion - logo ,
. avatar - image - champion {
width : 80 px ;
height : 80 px ;
object - fit : cover ;
object - fit : cover ;
max - width : 120 px ;
border - radius : 50 % ;
border - radius : 50 % ;
margin : 0 ; /* 清除额外边距 */
position : relative ;
z - index : 5 ; /* 确保头像在王冠下方,不被遮挡 */
}
}
. photo - container . champion - logo {
max - width : unset ! important ;
border - radius : 0 ! important ;
}
. avatar - image {
. avatar - image {
width : 30 px ;
width : 30 px ;
height : 30 px ;
height : 30 px ;
@@ -1091,18 +1137,12 @@ onUnmounted(() => {
margin - bottom : 3 px ;
margin - bottom : 3 px ;
}
}
/* 核心修改:强化名字显示,确保不被截断/遮挡 */
. champion - name {
. champion - name {
font - size : 1.2 rem ; /* 增大字体,更醒目 */
font - size : 1.1 rem ;
font - weight : bold ;
font - weight : bold ;
color : gold ;
color : gold ;
margin : 5 px 0 0 0 ; /* 清除默认margin, 顶部留小间距 */
line - height : 1.3 ; /* 固定行高 */
white - space : nowrap ; /* 强制单行,避免换行撑高 */
text - shadow : 0 1 px 3 px rgba ( 0 , 0 , 0 , 0.5 ) ; /* 增加阴影,提升可读性 */
z - index : 20 ; /* 确保名字在最上层,不被任何元素遮挡 */
position : relative ;
}
}
/* 基础样式 */
/* 基础样式 */
: root {
: root {
-- gold - primary : # ffd700 ;
-- gold - primary : # ffd700 ;
@@ -1111,6 +1151,7 @@ onUnmounted(() => {
-- purple - secondary : # a29bfe ;
-- purple - secondary : # a29bfe ;
}
}
/* 主题容器样式 - 添加居中对齐 */
/* 主题容器样式 - 添加居中对齐 */
. theme - container {
. theme - container {
text - align : center ;
text - align : center ;
@@ -1157,8 +1198,10 @@ onUnmounted(() => {
/* box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15); */
/* box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15); */
}
}
/* 响应式设计 */
/* 响应式设计 */
@ media ( max - width : 768 px ) {
@ media ( max - width : 768 px ) {
<< << << < HEAD
/** 皇冠动画(还原原始大小) */
/** 皇冠动画(还原原始大小) */
. crown - animation {
. crown - animation {
top : - 60 px ! important ; /* 移动端向上偏移,避免遮挡 */
top : - 60 px ! important ; /* 移动端向上偏移,避免遮挡 */
@@ -1186,6 +1229,13 @@ onUnmounted(() => {
/* 其他原有移动端样式保持不变... */
/* 其他原有移动端样式保持不变... */
}
}
=== === =
/** 皇冠动画 */
. crown - animation {
top : - 120 px ;
}
>>> >>> > 5 a48653be089c47d923681c42164b2d4fb60c341
/* 隐藏倒计时模块 */
/* 隐藏倒计时模块 */
. timer - float {
. timer - float {
display : none ! important ;
display : none ! important ;
@@ -1198,7 +1248,9 @@ onUnmounted(() => {
/* 奖金模块垂直居中显示, 两侧20px间距 */
/* 奖金模块垂直居中显示, 两侧20px间距 */
. bonus - section {
. bonus - section {
/* 背景全部取消设置 **/
background : none ! important ;
background : none ! important ;
position : static ! important ;
position : static ! important ;
margin : 20 px auto ;
margin : 20 px auto ;
width : calc ( 100 % - 40 px ) ;
width : calc ( 100 % - 40 px ) ;
@@ -1225,6 +1277,7 @@ onUnmounted(() => {
. timer - float . countdown {
. timer - float . countdown {
gap : 8 px ;
gap : 8 px ;
}
}
}
@ media ( max - width : 480 px ) {
@ media ( max - width : 480 px ) {
. banner - image {
. banner - image {
@@ -1564,24 +1617,19 @@ onUnmounted(() => {
}
}
. rankings - container {
. rankings - container {
display : flex ! important ;
display : flex ;
flex - direction : row ! important ; /* 明确指定为水平排列 */
gap : 15 px ;
gap : 15 px ;
flex - wrap : no wrap; /* 禁止换行,强制水平并列 */
flex - wrap : wrap ;
justify - content : center ;
justify - content : center ;
align - items : stretch ; /* 强制两个排名框高度一致 */
background : none ;
background : none ;
border : none ;
border : none ;
/* 移除max-width和margin, 让App.vue的rank-wrapper控制容器 */
width : 100 % ;
}
}
. individual - rankings ,
. individual - rankings ,
. team - rankings {
. team - rankings {
flex : none ; /* 取消平分宽度 */
flex : 1 ;
width : 5 50px ; /* 固定宽度,两个框完全一致 */
min - width: 3 50px ;
display : fle x;
max - width : 550 p x;
flex - direction : column ;
}
}
/* 为指定的容器添加背景和边框 */
/* 为指定的容器添加背景和边框 */
@@ -1774,7 +1822,144 @@ onUnmounted(() => {
/* 针对高度大于1080分辨率的精确优化 */
/* 针对高度大于1080分辨率的精确优化 */
/* 移动端背景图片设置 - 全局样式 */
/* 移动端背景图片设置 - 全局样式 */
/* 总战绩部分样式 */
. total - score - section {
margin : 20 px auto ;
max - width : 1200 px ;
padding : 20 px ;
box - shadow : 0 8 px 32 px rgba ( 0 , 0 , 0 , 0.1 ) ;
animation : fadeIn 0.5 s ease - in - out ;
}
. total - score - container {
display : flex ;
flex - direction : column ;
gap : 15 px ;
}
. total - score - content {
}
. total - score - item {
display : flex ;
justify - content : center ; /* 水平居中 */
align - items : center ; /* 垂直居中 */
padding : 10 px ;
min - height : 60 px ; /* 确保有足够的高度来展示垂直居中效果 */
}
. score - value {
font - size : 1.5 rem ;
font - weight : bold ;
color : var ( -- gold - primary ) ;
text - shadow : 0 0 10 px rgba ( 255 , 215 , 0 , 0.5 ) ;
}
/* 照片容器样式 */
. team - logo . photo - container {
overflow : hidden ;
}
. individual - champion {
display : flex ;
flex - direction : row ;
align - items : center ;
justify - content : center ;
margin - bottom : 20 px ;
gap : 30 px ;
}
. hero - ranking - text {
font - size : 2.8 rem ;
font - weight : 300 ;
color : # ffd700 ;
writing - mode : vertical - rl ;
text - orientation : mixed ;
letter - spacing : 10 px ;
position : relative ;
text - shadow :
0 0 5 px rgba ( 255 , 215 , 0 , 0.8 ) ,
0 0 10 px rgba ( 255 , 215 , 0 , 0.6 ) ,
0 0 15 px rgba ( 255 , 215 , 0 , 0.4 ) ,
2 px 2 px 2 px rgba ( 0 , 0 , 0 , 0.8 ) ;
/* 3D立体效果 */
text - stroke : 1 px rgba ( 255 , 255 , 255 , 0.2 ) ;
- webkit - text - stroke : 1 px rgba ( 255 , 255 , 255 , 0.2 ) ;
/* 金色渐变背景 */
background : linear - gradient ( 135 deg , # ffd700 , # ffc107 , # ffd700 ) ;
- webkit - background - clip : text ;
- webkit - text - fill - color : transparent ;
background - clip : text ;
/* 发光效果动画 */
animation : glow - hero 2 s infinite alternate ease - in - out ;
}
/* 发光效果动画 */
@ keyframes glow - hero {
0 % {
text - shadow :
0 0 5 px rgba ( 255 , 215 , 0 , 0.8 ) ,
0 0 10 px rgba ( 255 , 215 , 0 , 0.6 ) ,
0 0 15 px rgba ( 255 , 215 , 0 , 0.4 ) ,
2 px 2 px 2 px rgba ( 0 , 0 , 0 , 0.8 ) ;
}
100 % {
text - shadow :
0 0 10 px rgba ( 255 , 215 , 0 , 1 ) ,
0 0 20 px rgba ( 255 , 215 , 0 , 0.8 ) ,
0 0 30 px rgba ( 255 , 215 , 0 , 0.6 ) ,
3 px 3 px 3 px rgba ( 0 , 0 , 0 , 0.8 ) ;
}
}
/* 为容器添加旋转光环效果 */
. hero - ranking - decoration : : before {
content : '' ;
position : absolute ;
width : 180 % ;
height : 180 % ;
top : - 40 % ;
left : - 40 % ;
background : radial - gradient ( circle , transparent 50 % , rgba ( 255 , 215 , 0 , 0.4 ) 70 % , transparent 90 % ) ;
border - radius : 50 % ;
animation : rotate - hero - ranking - decoration 8 s linear infinite ;
z - index : - 1 ;
filter : blur ( 3 px ) ;
}
/* 添加第二层光环效果 */
. hero - ranking - decoration : : after {
content : '' ;
position : absolute ;
width : 140 % ;
height : 140 % ;
top : - 20 % ;
left : - 20 % ;
background : radial - gradient ( circle , transparent 60 % , rgba ( 255 , 140 , 0 , 0.3 ) 80 % , transparent 100 % ) ;
border - radius : 50 % ;
animation : rotate - hero - ranking - decoration 12 s linear infinite reverse ;
z - index : - 2 ;
filter : blur ( 2 px ) ;
}
@ keyframes rotate - hero - ranking - decoration {
from { transform : rotate ( 0 deg ) ; }
to { transform : rotate ( 360 deg ) ; }
}
. champion - content {
display : flex ;
flex - direction : column ;
align - items : center ;
}
@ media ( max - width : 768 px ) {
@ media ( max - width : 768 px ) {
/* 战区排名容器设置 - 根据配置决定显示行数和滚动行为 */
/* 战区排名容器设置 - 根据配置决定显示行数和滚动行为 */
@@ -1983,21 +2168,17 @@ onUnmounted(() => {
}
}
. rankings - container {
. rankings - container {
display : flex ! important ;
flex - direction : column ;
flex - direction : column ! important ;
gap : 10 px ;
gap : 20 px ; /* 增大垂直间距,避免拥挤 */
align - items : stretch ; /* 移动端也让两个框体宽度占满 */
width : 100 % ;
}
}
. individual - rankings ,
. individual - rankings ,
. team - rankings {
. team - rankings {
width : 550 px ; /* 移动端也保持固定宽度 */
min - width : auto ;
max - width : 100 % ; /* 在小屏幕上可以自适应 */
width : 100 % ;
/* 调整顺序,确保倒计时在冠军上方 */
/* 调整顺序,确保倒计时在冠军上方 */
display : flex ;
display : flex ;
flex - direction : column ;
flex - direction : column ;
margin : 0 auto ; /* 居中显示 */
}
}
/* 将倒计时移动到冠军上方的位置 */
/* 将倒计时移动到冠军上方的位置 */
@@ -2083,7 +2264,6 @@ onUnmounted(() => {
/* 冠军部分调整 */
/* 冠军部分调整 */
. team - champion ,
. team - champion ,
. individual - champion {
. individual - champion {
transform : scale ( 0.9 ) ;
margin : 5 px 0 ;
margin : 5 px 0 ;
}
}
@@ -2204,6 +2384,7 @@ onUnmounted(() => {
}
}
}
}
@ media ( min - width : 2000 px ) {
@ media ( min - width : 2000 px ) {
. bonus - section {
. bonus - section {
position : fixed ;
position : fixed ;