2 Commits

Author SHA1 Message Date
7e90289fdd chore(footer): 修改footer文字 2025-11-25 14:43:54 +08:00
2a9153217b chore: 调整虎狼之师、英雄榜图片 2025-11-25 13:47:36 +08:00
5 changed files with 60 additions and 116 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 253 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 472 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 508 KiB

View File

@@ -25,7 +25,7 @@
<!-- 页脚 --> <!-- 页脚 -->
<footer class="game-footer"> <footer class="game-footer">
<div class="footer-content"> <div class="footer-content">
<p>&copy; 2025-2026 聚上集团 | 云上企. 所有权利保留.</p> <p>&copy; 2025-2026 聚上集团 | 云上企 版权所有.</p>
</div> </div>
</footer> </footer>
</div> </div>
@@ -108,7 +108,28 @@
.footer-content { .footer-content {
font-size: 14px; font-size: 14px;
text-shadow: 1px 1px 10px black; /* 雕刻效果使用多层text-shadow创建凸起感 */
text-shadow:
-1px -1px 0 rgba(255, 255, 255, 0.3), /* 高光 - 左上 */
1px 1px 0 rgba(0, 0, 0, 0.5), /* 阴影 - 右下 */
0 0 5px rgba(17, 17, 17, 0.5); /* 光晕 */
/* 背景和内边距 */
padding: 8px 16px;
border-radius: 4px;
/* 添加轻微的3D效果 */
transform: perspective(1000px) rotateX(0deg);
transition: all 0.3s ease;
}
/* 鼠标悬停时增强3D效果 */
.footer-content:hover {
transform: perspective(1000px) rotateX(2deg) translateY(-2px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
text-shadow:
-1px -1px 0 rgba(255, 255, 255, 0.4),
1px 1px 0 rgba(0, 0, 0, 0.6),
0 0 8px rgba(15, 15, 15, 0.7);
} }
/* 针对1920x1080分辨率的banner精确定位 */ /* 针对1920x1080分辨率的banner精确定位 */
@@ -172,5 +193,20 @@
.app-logo { .app-logo {
width: 200px; /* 移动设备上设置固定宽度为200px */ width: 200px; /* 移动设备上设置固定宽度为200px */
} }
/* 移动设备上的页脚雕刻效果适配 */
.footer-content {
font-size: 12px;
padding: 6px 12px;
text-shadow:
-1px -1px 0 rgba(255, 255, 255, 0.2),
1px 1px 0 rgba(0, 0, 0, 0.4),
0 0 3px rgba(255, 215, 0, 0.4);
}
.footer-content:hover {
transform: none; /* 移动设备上禁用悬停效果 */
box-shadow: none;
}
} }
</style> </style>

View File

@@ -14,10 +14,10 @@
<!-- 战鼓动画在上面 --> <!-- 战鼓动画在上面 -->
<div class="drums-animation"> <div class="drums-animation">
<div class="drum glow-border" :class="{ beating: isBeating }">🥁</div> <div class="drum glow-border" :class="{ beating: isBeating }">🥁</div>
<div class="drum" :class="{ beating: isBeating }"></div> <div class="drum" :class="{ beating: isBeating }">🥁</div>
<div class="trophy" style="font-size: 2.5rem; filter: drop-shadow(0 0 10px var(--gold-primary));">🏆</div> <div class="trophy" style="font-size: 2.5rem; filter: drop-shadow(0 0 10px var(--gold-primary));">🏆</div>
<div class="drum" :class="{ beating: isBeating }"></div> <div class="drum" :class="{ beating: isBeating }">🥁</div>
<div class="drum" :class="{ beating: isBeating }"></div> <div class="drum" :class="{ beating: isBeating }">🥁</div>
</div> </div>
</div> </div>
</section> </section>
@@ -32,11 +32,8 @@
</section> </section>
<!-- 第三部分奖金设置图片形式 --> <!-- 第三部分奖金设置图片形式 -->
<section v-if="localDisplayConfig.showBonusModule" class="bonus-section card-game" <section v-if="localDisplayConfig.showBonusModule" class="bonus-section card-game" @mousedown="startBonusDrag"
@mousedown="startBonusDrag" @click.stop>
@touchstart="startBonusDrag"
@click.stop
:style="{ left: bonusPosition.x + 'px', top: bonusPosition.y + 'px' }">
<div class="bonus-awards-container"> <div class="bonus-awards-container">
<div><img src="/award1.png" alt="一等奖" class="award-image"></div> <div><img src="/award1.png" alt="一等奖" class="award-image"></div>
<div><img src="/award2.png" alt="二等奖" class="award-image"></div> <div><img src="/award2.png" alt="二等奖" class="award-image"></div>
@@ -701,7 +698,7 @@ const isPlayingSound = ref(false);
const drumsPosition = ref({ x: 20, y: 20 }); const drumsPosition = ref({ x: 20, y: 20 });
// 倒计时位置状态已移除,直接在模板中使用固定位置 // 倒计时位置状态已移除,直接在模板中使用固定位置
// 奖金设置模块位置状态 - 使用reactive存储实际定位值 // 奖金设置模块位置状态 - 使用reactive存储实际定位值
const bonusPosition = reactive({ x: 320, y: 360 }); const bonusPosition = reactive({ x: 'auto', y: 'auto' });
let isDragging = false; let isDragging = false;
let isBonusDragging = false; let isBonusDragging = false;
@@ -734,20 +731,12 @@ const startDrag = (e) => {
const startBonusDrag = (e) => { const startBonusDrag = (e) => {
e.stopPropagation(); // 阻止事件冒泡 e.stopPropagation(); // 阻止事件冒泡
isBonusDragging = true; isBonusDragging = true;
// 计算鼠标相对于元素左上角的偏移量
// 根据事件类型处理拖动偏移量 const rect = e.currentTarget.getBoundingClientRect();
if (e.type === 'touchstart') { bonusDragOffset.x = e.clientX - rect.left;
const touch = e.touches[0]; bonusDragOffset.y = e.clientY - rect.top;
bonusDragOffset.x = touch.clientX - bonusPosition.x;
bonusDragOffset.y = touch.clientY - bonusPosition.y;
} else {
bonusDragOffset.x = e.clientX - bonusPosition.x;
bonusDragOffset.y = e.clientY - bonusPosition.y;
}
// 提高拖动时的性能,临时禁用动画效果 // 提高拖动时的性能,临时禁用动画效果
const bonusElement = e.currentTarget; e.currentTarget.style.transition = 'none';
bonusElement.style.transition = 'none';
e.preventDefault(); e.preventDefault();
}; };
@@ -772,22 +761,9 @@ const drag = throttle((e) => {
drumsPosition.value.y = e.clientY - dragOffset.y; drumsPosition.value.y = e.clientY - dragOffset.y;
} }
if (isBonusDragging) { if (isBonusDragging) {
// 根据事件类型处理拖动位置
let clientX, clientY;
if (e.type === 'mousemove') {
clientX = e.clientX;
clientY = e.clientY;
} else if (e.type === 'touchmove') {
const touch = e.touches[0];
clientX = touch.clientX;
clientY = touch.clientY;
} else {
return; // 如果不是鼠标或触摸事件,直接返回
}
// 计算新的位置 // 计算新的位置
const newX = clientX - bonusDragOffset.x; const newX = e.clientX - bonusDragOffset.x;
const newY = clientY - bonusDragOffset.y; const newY = e.clientY - bonusDragOffset.y;
// 确保元素不会被拖出视口 // 确保元素不会被拖出视口
const windowWidth = window.innerWidth; const windowWidth = window.innerWidth;
@@ -1036,8 +1012,7 @@ const startDrumAnimation = () => {
drum.style.setProperty('--drum-translate-y', isStrongBeat ? drum.style.setProperty('--drum-translate-y', isStrongBeat ?
`${(animationConfig.beatTranslateY || -15) * (1 + (patternConfig.accentAnimation || 0) / 100)}px` : `${(animationConfig.beatTranslateY || -15) * (1 + (patternConfig.accentAnimation || 0) / 100)}px` :
`${animationConfig.beatTranslateY || -15}px`); `${animationConfig.beatTranslateY || -15}px`);
drum.style.setProperty('--drum-rotate', `${animationConfig.beatRotate || 5}deg`); drum.style.setProperty('--drum-rotate', `${animationConfig.beatRotate || 5}deg`);
drum.style.setProperty('--drum-brightness', isStrongBeat ? '1.4' : '1.3'); drum.style.setProperty('--drum-brightness', isStrongBeat ? '1.4' : '1.3');
drum.style.setProperty('--drum-saturation', isStrongBeat ? '1.3' : '1.2'); drum.style.setProperty('--drum-saturation', isStrongBeat ? '1.3' : '1.2');
}); });
@@ -1116,8 +1091,6 @@ onMounted(async () => {
// 添加拖放相关的事件监听 // 添加拖放相关的事件监听
document.addEventListener('mousemove', drag); document.addEventListener('mousemove', drag);
document.addEventListener('mouseup', endDrag); document.addEventListener('mouseup', endDrag);
document.addEventListener('touchmove', drag);
document.addEventListener('touchend', endDrag);
}); });
// 监听结束时间变化在真实环境中可能需要通过props或store来监听 // 监听结束时间变化在真实环境中可能需要通过props或store来监听
@@ -1142,8 +1115,6 @@ onUnmounted(() => {
// 移除拖放相关的事件监听 // 移除拖放相关的事件监听
document.removeEventListener('mousemove', drag); document.removeEventListener('mousemove', drag);
document.removeEventListener('mouseup', endDrag); document.removeEventListener('mouseup', endDrag);
document.removeEventListener('touchmove', drag);
document.removeEventListener('touchend', endDrag);
// 清理音频资源 // 清理音频资源
if (audioContext) { if (audioContext) {
@@ -1165,43 +1136,11 @@ onUnmounted(() => {
transform: translateY(0px) rotate(0deg); transform: translateY(0px) rotate(0deg);
} }
} }
.team-rankings-propagation-image {
width: 360px;
height: auto;
max-width: 100%;
}
.individual-rankings-propagation-image {
width: 360px;
height: auto;
max-width: 100%;
}
.avatar-image-champion {
object-fit: cover;
border-radius: 50%;
}
.avatar-image-champion { .avatar-image-champion {
object-fit: cover; object-fit: cover;
border-radius: 50%; border-radius: 50%;
} }
/* 新增:电脑端「已完成业绩」图片居中 */
.total-score-total-title {
display: flex;
justify-content: center; /* 水平居中 */
}
.total-score-total-image {
width: 780px; /* 电脑端图片宽度可按需调小比如160px/200px */
height: auto; /* 保持宽高比不变形 */
}
.score-value {
font-size: 10rem; /* 电脑端所有业绩数字大小 */
}
.total-score-total-value {
font-size: 10rem;
margin-top: -40px;
}
/* 冠军模块样式 */ /* 冠军模块样式 */
.champion-section { .champion-section {
display: flex; display: flex;
@@ -1356,13 +1295,6 @@ onUnmounted(() => {
position: fixed; position: fixed;
cursor: move; cursor: move;
transition: transform 0.2s ease; transition: transform 0.2s ease;
background: rgba(255, 255, 255, 0.95);
border-radius: 15px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
border: 2px solid rgba(255, 215, 0, 0.5);
padding: 15px;
z-index: 100;
} }
/* 奖金图片容器样式 - Flex布局居中且保持一行 */ /* 奖金图片容器样式 - Flex布局居中且保持一行 */
@@ -1378,13 +1310,14 @@ onUnmounted(() => {
.award-image { .award-image {
width: auto; width: auto;
height: 120px; height: 120px;
border-radius: 8px; /* border-radius: 8px; */
transition: transform 0.2s ease, box-shadow 0.2s ease; /* box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); */
/* transition: transform 0.2s ease, box-shadow 0.2s ease; */
} }
.award-image:hover { .award-image:hover {
transform: translateY(-5px); transform: translateY(-5px);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15); /* box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15); */
} }
@@ -1396,11 +1329,11 @@ onUnmounted(() => {
} }
.team-rankings-propagation-image { .team-rankings-propagation-image {
width: 320px; width: 220px;
} }
.individual-rankings-propagation-image { .individual-rankings-propagation-image {
width: 320px; width: 220px;
} }
/* 隐藏倒计时模块 */ /* 隐藏倒计时模块 */
@@ -1845,8 +1778,6 @@ onUnmounted(() => {
overflow-y: auto; overflow-y: auto;
position: relative; position: relative;
margin-top: 0.8rem; margin-top: 0.8rem;
max-height: 480px;
min-height: 480px;
} }
.table-header { .table-header {
@@ -2007,14 +1938,10 @@ onUnmounted(() => {
font-size: calc(var(--individual-champion-font-size, 2.4rem) * 2); font-size: calc(var(--individual-champion-font-size, 2.4rem) * 2);
font-weight: bold; font-weight: bold;
color: #fff2c4; color: #fff2c4;
text-shadow: text-shadow: 0 0 10px rgba(0, 0, 0, .8), 0 0 20px rgb(16 16 16 / 30%), 1px 1px 2px rgba(0, 0, 0, .8);
0 0 10px rgba(255, 215, 0, 0.5),
0 0 20px rgba(255, 215, 0, 0.3),
1px 1px 2px rgba(0, 0, 0, 0.8);
} }
.total-score-total-value { .total-score-total-value {
margin-top: -40px; margin-top: -40px;
} }
@@ -2038,7 +1965,7 @@ onUnmounted(() => {
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
margin-bottom: 100px; margin-bottom: 20px;
gap: 30px; gap: 30px;
} }
@@ -2520,23 +2447,4 @@ onUnmounted(() => {
transition: transform 0.2s ease; transition: transform 0.2s ease;
} }
} }
/* ========== 新增的电脑端总业绩样式(放在最底部) ========== */
/* 电脑端769px以上总业绩字体样式 - 不影响移动端 */
@media (min-width: 769px) {
/* 总战绩大数字(核心修改项) */
.total-score-total-value {
font-size: 10rem !important; /* 电脑端字体大小默认10rem可按需调整 */
font-weight: 900 !important; /* 字体粗细(加粗) */
color: #ffd700 !important; /* 字体颜色(金色) */
text-shadow: 0 0 20px rgba(255, 215, 0, 0.8) !important; /* 发光效果 */
}
/* 兜底:确保所有电脑端业绩数值样式统一 */
.score-value {
font-size: 10rem !important; /* 与总战绩数值保持一致 */
font-weight: 900 !important;
color:#fff2c4 !important;
text-shadow: 0 0 20px rgba(255, 215, 0, 0.8) !important;
}
}
</style> </style>