Files
vs100/src/style.css

719 lines
16 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* 全局样式重置 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* 图片预加载 - 提升移动端加载性能 */
body::before {
content: "";
display: none;
background-image: url(/battle-background.jpg);
}
/* 根元素样式 */
:root {
/* 王者荣耀风格字体 - 使用系统默认字体但设置更多样化 */
font-family: 'Microsoft YaHei', 'PingFang SC', 'SimHei', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
line-height: 1.5;
font-weight: 500;
/* 王者荣耀风格配色方案 */
/* 主色调:金色、红色、黑色 */
--primary-color: #ffc107; /* 王者荣耀金色 */
--secondary-color: #e74c3c; /* 王者荣耀红色 */
--accent-color: #f39c12; /* 亮金色 */
--success-color: #27ae60; /* 成功绿色 */
--warning-color: #e67e22; /* 警告橙色 */
--danger-color: #c0392b; /* 危险深红色 */
--info-color: #3498db; /* 信息蓝色 */
--dark-color: #1a1a1a; /* 几乎黑色 */
--light-color: #f5f5f5; /* 浅灰色背景 */
--white-color: #ffffff;
--text-color: #333333;
--text-light: #666666;
/* 王者荣耀特有颜色 */
--gold-primary: #ffd700; /* 纯金色 */
--gold-secondary: #ffc700; /* 次级金色 */
--gold-tertiary: #ffb700; /* 三级金色 */
--red-primary: #e74c3c; /* 主红色 */
--red-secondary: #c0392b; /* 次级红色 */
--black-primary: #1a1a1a; /* 主黑色 */
--black-secondary: #2c2c2c; /* 次级黑色 */
/* 边框发光效果 */
--glow-primary: 0 0 10px rgba(255, 215, 0, 0.5);
--glow-secondary: 0 0 15px rgba(231, 76, 60, 0.4);
/* 渐变背景 */
--gradient-primary: linear-gradient(135deg, #ffd700, #ffc700, #ffb700);
--gradient-secondary: linear-gradient(135deg, #e74c3c, #c0392b, #a93226);
--gradient-background: linear-gradient(135deg, #1a1a1a, #2c2c2c, #1a1a1a);
--gradient-card: linear-gradient(145deg, #ffffff, #f0f0f0);
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* 全局元素样式 */
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
color: var(--text-color);
background-color: var(--dark-color);
background-image: url(/battle-background.jpg);
background-size: auto;
background-position: top center;
background-repeat: revert;
background-attachment: fixed;
}
#app {
width: 100%;
min-height: 100vh;
display: flex;
justify-content: center;
}
/* 主内容容器 - 适配1920x1080分辨率 */
.content-container {
width: 100%;
max-width: 1920px;
min-height: 100vh;
padding: 0 20px;
position: relative;
box-sizing: border-box;
}
/* 当屏幕宽度超过1920px时保持内容居中且大小不变 */
@media (min-width: 1921px) {
.content-container {
width: 1920px;
margin: 0 auto;
/* box-shadow: 0 0 50px rgba(0, 0, 0, 0.5); */
}
}
/* 当屏幕高度超过1080px时保持内容垂直对齐 */
@media (min-height: 1081px) {
#app {
align-items: flex-start;
}
}
/* 针对1920x1080分辨率的精确调整 */
@media (width: 1920px) and (height: 1080px) {
.content-container {
padding: 0;
}
}
/* 游戏化标题样式 */
h1, h2, h3, h4, h5, h6 {
font-weight: 700;
line-height: 1.2;
color: var(--gold-primary);
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
letter-spacing: 0.5px;
}
/* 游戏化主标题 */
h1.game-title {
color: black;
font-size: 3.5rem;
font-weight: 800;
letter-spacing: 1px;
text-transform: uppercase;
text-shadow: 0 0 10px rgba(255, 215, 0, 0.5);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}
/* 游戏化次级标题 */
h2.game-subtitle {
color: var(--gold-secondary);
font-size: 1.8rem;
font-weight: 700;
letter-spacing: 0.5px;
text-align: center;
}
/* 游戏化链接样式 */
a {
color: var(--gold-primary);
text-decoration: none;
transition: all 0.3s ease;
font-weight: 500;
position: relative;
}
a:hover {
color: var(--gold-tertiary);
text-decoration: none;
}
a::after {
content: '';
position: absolute;
width: 0;
height: 2px;
bottom: -2px;
left: 0;
background-color: var(--gold-primary);
transition: width 0.3s ease;
}
a:hover::after {
width: 100%;
box-shadow: 0 0 5px var(--gold-primary);
}
/* 游戏化按钮样式 */
button {
font-family: inherit;
font-size: inherit;
line-height: inherit;
cursor: pointer;
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
button:focus {
outline: none;
}
/* 游戏化主按钮 */
.btn-game {
background: var(--gradient-primary);
color: var(--black-primary);
border: 2px solid var(--gold-primary);
padding: 10px 20px;
border-radius: 30px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
box-shadow: 0 4px 15px rgba(255, 215, 0, 0.3), var(--glow-primary);
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.btn-game:hover {
transform: translateY(-3px);
box-shadow: 0 6px 20px rgba(255, 215, 0, 0.4), var(--glow-primary);
background: var(--gold-tertiary);
}
.btn-game:active {
transform: translateY(-1px);
box-shadow: 0 2px 10px rgba(255, 215, 0, 0.3), var(--glow-primary);
}
/* 按钮波纹效果 */
.btn-game::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 0;
height: 0;
border-radius: 50%;
background: rgba(255, 255, 255, 0.3);
transform: translate(-50%, -50%);
transition: width 0.6s, height 0.6s;
}
.btn-game:active::before {
width: 300px;
height: 300px;
}
/* 游戏化次要按钮 */
.btn-game-secondary {
background: var(--gradient-secondary);
color: var(--white-color);
border: 2px solid var(--red-primary);
padding: 10px 20px;
border-radius: 30px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
box-shadow: 0 4px 15px rgba(231, 76, 60, 0.3), var(--glow-secondary);
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.btn-game-secondary:hover {
transform: translateY(-3px);
box-shadow: 0 6px 20px rgba(231, 76, 60, 0.4), var(--glow-secondary);
background: var(--red-secondary);
animation: borderGlow 1.5s ease-in-out infinite alternate;
}
.btn-game-secondary:active {
transform: translateY(-1px);
box-shadow: 0 2px 10px rgba(231, 76, 60, 0.3), var(--glow-secondary);
}
/* 次要按钮波纹效果 */
.btn-game-secondary::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 0;
height: 0;
border-radius: 50%;
background: rgba(255, 255, 255, 0.2);
transform: translate(-50%, -50%);
transition: width 0.6s, height 0.6s;
}
.btn-game-secondary:active::before {
width: 300px;
height: 300px;
}
/* 游戏化输入框样式 */
input, select, textarea {
font-family: inherit;
font-size: inherit;
line-height: inherit;
background: rgba(0, 0, 0, 0.8);
border: 2px solid var(--gold-primary);
border-radius: 8px;
padding: 10px 15px;
color: var(--gold-primary);
transition: all 0.3s ease;
box-shadow: 0 0 5px rgba(255, 215, 0, 0.3);
font-weight: 600;
letter-spacing: 0.5px;
}
/* 登录表单输入框增强 */
.form-input {
background: rgba(0, 0, 0, 0.9);
border-color: var(--gold-secondary);
color: var(--gold-primary);
font-size: 1.1rem;
padding: 12px 15px;
width: 100%;
box-shadow: 0 0 10px rgba(255, 215, 0, 0.3), inset 0 0 10px rgba(0, 0, 0, 0.5);
}
.form-input:focus {
border-color: var(--gold-tertiary);
box-shadow: 0 0 15px rgba(255, 215, 0, 0.5), inset 0 0 10px rgba(0, 0, 0, 0.5);
background: rgba(0, 0, 0, 0.85);
}
/* 表单标签增强 */
.form-group label {
color: var(--gold-primary);
font-weight: 700;
font-size: 1.1rem;
margin-bottom: 8px;
display: block;
text-shadow: 0 0 10px rgba(255, 215, 0, 0.3);
}
/* 占位符文本颜色 */
input::placeholder {
color: rgba(255, 215, 0, 0.6);
font-style: italic;
}
/* 登录表单容器增强 */
.login-form {
background: rgba(0, 0, 0, 0.85);
padding: 30px;
border-radius: 15px;
box-shadow: 0 0 30px rgba(255, 215, 0, 0.4);
}
/* 错误信息增强 */
.error-message {
color: var(--red-primary);
font-weight: 600;
text-align: center;
margin-top: 15px;
padding: 10px;
border: 1px solid var(--red-primary);
border-radius: 5px;
background: rgba(231, 76, 60, 0.1);
}
input:focus, select:focus, textarea:focus {
outline: none;
border-color: var(--gold-tertiary);
box-shadow: 0 0 15px rgba(255, 215, 0, 0.4), var(--glow-primary);
background: rgba(255, 255, 255, 0.15);
}
/* 游戏化表格样式 */
table {
border-collapse: collapse;
width: 100%;
border: 2px solid var(--gold-primary);
box-shadow: 0 0 20px rgba(255, 215, 0, 0.2);
border-radius: 10px;
overflow: hidden;
animation: tableGlow 2s ease-in-out infinite alternate;
}
/* 表格发光动画 */
@keyframes tableGlow {
from { box-shadow: 0 0 20px rgba(255, 215, 0, 0.2); }
to { box-shadow: 0 0 30px rgba(255, 215, 0, 0.4); }
}
/* 游戏化卡片样式 */
.card-game {
background: transparent;
border: 0;
/* padding: 20px; */
transition: all 0.3s ease;
position: relative;
overflow: hidden;
animation: float 3s ease-in-out infinite;
}
.card-game::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: linear-gradient(45deg, transparent, rgba(255, 215, 0, 0.1), transparent);
transform: rotate(45deg);
animation: shine 6s infinite;
}
.card-game:hover {
transform: translateY(-5px);
/* box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4), var(--glow-primary); */
/* border-color: var(--gold-tertiary); */
}
@keyframes shine {
0% { transform: rotate(45deg) translate(-100%, -100%); }
100% { transform: rotate(45deg) translate(100%, 100%); }
}
/* 卡片浮动动画 */
@keyframes float {
0% { transform: translateY(0px); }
50% { transform: translateY(-5px); }
100% { transform: translateY(0px); }
}
/* 游戏化边框发光效果 */
.glow-border {
border: 2px solid var(--gold-primary);
box-shadow: 0 0 15px var(--gold-primary), 0 0 30px var(--gold-secondary), inset 0 0 15px var(--gold-primary);
border-radius: 10px;
transition: all 0.3s ease;
animation: glowPulse 2s ease-in-out infinite alternate;
}
.glow-border:hover {
box-shadow: 0 0 20px var(--gold-primary), 0 0 40px var(--gold-secondary), inset 0 0 20px var(--gold-primary);
border-color: var(--gold-tertiary);
animation: glowPulse 1s ease-in-out infinite alternate;
}
/* 发光脉动动画 */
@keyframes glowPulse {
from {
box-shadow: 0 0 10px var(--gold-primary), 0 0 20px var(--gold-secondary), inset 0 0 10px var(--gold-primary);
}
to {
box-shadow: 0 0 20px var(--gold-primary), 0 0 40px var(--gold-secondary), inset 0 0 20px var(--gold-primary);
}
}
/* 游戏化徽章样式 */
.badge-game {
background: var(--gradient-primary);
color: var(--black-primary);
padding: 5px 12px;
border-radius: 20px;
font-weight: 700;
font-size: 0.85rem;
text-transform: uppercase;
letter-spacing: 0.5px;
box-shadow: 0 2px 8px rgba(255, 215, 0, 0.3);
}
/* 滚动条样式 */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: #f1f1f1;
border-radius: 4px;
}
::-webkit-scrollbar-thumb {
background: #c1c1c1;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #a1a1a1;
}
/* 工具类 */
.text-center {
text-align: center;
}
.text-left {
text-align: left;
}
.text-right {
text-align: right;
}
.mt-1 { margin-top: 0.25rem; }
.mt-2 { margin-top: 0.5rem; }
.mt-3 { margin-top: 1rem; }
.mt-4 { margin-top: 1.5rem; }
.mt-5 { margin-top: 3rem; }
.mb-1 { margin-bottom: 0.25rem; }
.mb-2 { margin-bottom: 0.5rem; }
.mb-3 { margin-bottom: 1rem; }
.mb-4 { margin-bottom: 1.5rem; }
.mb-5 { margin-bottom: 3rem; }
/* 表格行样式增强 */
.table-row {
/* color: var(--gold-secondary); */
font-weight: 600;
font-size: 1rem;
transition: all 0.3s ease;
}
.table-row:hover {
color: var(--gold-primary);
background: rgba(255, 215, 0, 0.1);
}
.table-header {
color: var(--gold-primary);
font-weight: 700;
font-size: 1.1rem;
}
/* 表格单元格样式增强 */
.rank-col, .score-col, .bonus-col {
/* color: var(--gold-tertiary); */
font-weight: 700;
}
.name-col, .dept-col, .level-col {
/* color: var(--gold-secondary); */
font-weight: 600;
}
/* 响应式断点 */
@media (max-width: 768px) {
:root {
font-size: 14px;
}
/* 移动端背景图片优化:保留图片但优化加载性能 */
html, body {
background-color: var(--dark-color);
background-image: url(/battle-background.jpg);
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-attachment: scroll;
/* 预加载优化 */
background-attachment: scroll !important;
}
.content-container {
padding: 0;
}
}
@media (max-width: 480px) {
:root {
font-size: 13px;
}
/* 小屏幕手机背景图片优化 */
html, body {
background-color: var(--dark-color);
background-image: url(/battle-background.jpg);
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-attachment: scroll;
}
.content-container {
padding: 0;
}
}
/* 游戏化标题发光动画 */
.game-title {
animation: titleGlow 3s ease-in-out infinite alternate;
text-stroke: 1px var(--gold-tertiary);
-webkit-text-stroke: 1px var(--gold-tertiary);
}
@keyframes titleGlow {
from {
text-shadow:
0 0 1px rgba(0, 0, 0, 0.9), /* 提高清晰度的细影 */
0 0 10px rgba(255, 215, 0, 0.5);
}
to {
text-shadow:
0 0 1px rgba(0, 0, 0, 0.9), /* 提高清晰度的细影 */
0 0 15px rgba(255, 215, 0, 0.7),
0 0 25px rgba(255, 215, 0, 0.5);
}
}
/* 游戏化副标题发光动画 */
.game-subtitle {
animation: subtitleGlow 2s ease-in-out infinite alternate;
}
@keyframes subtitleGlow {
from {
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8), 0 0 15px rgba(255, 193, 7, 0.4);
}
to {
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8), 0 0 25px rgba(255, 193, 7, 0.6);
}
}
/* 数字滚动动画 */
@keyframes countUp {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
/* 数字滚动效果类 */
.count-animation {
animation: countUp 0.8s ease-out;
font-weight: bold;
color: var(--gold-primary);
}
/* 鼠标悬停缩放效果 */
.hover-scale {
transition: transform 0.3s ease;
}
.hover-scale:hover {
transform: scale(1.05);
}
/* 游戏化滚动条样式 */
::-webkit-scrollbar {
width: 12px;
height: 12px;
}
::-webkit-scrollbar-track {
background: var(--dark-bg);
border-radius: 6px;
}
::-webkit-scrollbar-thumb {
background: linear-gradient(var(--gold-primary), var(--gold-secondary));
border-radius: 6px;
border: 2px solid var(--dark-bg);
}
::-webkit-scrollbar-thumb:hover {
background: linear-gradient(var(--gold-secondary), var(--gold-tertiary));
box-shadow: 0 0 10px rgba(255, 193, 7, 0.5);
}
/* 渐变背景动画 */
.gradient-bg {
background-size: 400% 400%;
animation: gradient 15s ease infinite;
}
@keyframes gradient {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
/* 内容区域渐入动画 */
.content {
animation: fadeIn 0.8s ease-out;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* 排名前三名特殊发光动画 */
.rank-1 {
animation: championGlow 2s ease-in-out infinite alternate;
}
.rank-2 {
animation: championGlow 2.5s ease-in-out infinite alternate;
}
.rank-3 {
animation: championGlow 3s ease-in-out infinite alternate;
}
@keyframes championGlow {
from {
transform: scale(1);
}
to {
transform: scale(1.05);
}
}
/* 金色文本悬停效果增强 */
.text-gold {
transition: all 0.3s ease;
}
.text-gold:hover {
color: var(--gold-secondary);
text-shadow: 0 0 10px rgba(255, 193, 7, 0.7);
}