/* 多主题音乐应用 - 默认变量 */ :root { /* 组件尺寸 */ --tabbar-height: 49px; --mini-player-height: 64px; --list-item-height: 64px; --touch-target: 44px; --sidebar-width: 280px; /* PC端组件尺寸 */ --pc-list-item-height: 80px; --pc-touch-target: 48px; /* 圆角 */ --radius-small: 12px; --radius-card: 20px; /* 动画 */ --transition-fast: 0.3s ease; --transition-slow: 0.5s ease; /* 默认主题色彩(白色炫彩) */ --bg-primary: #f8f9fa; --bg-card: rgba(255, 255, 255, 0.9); --bg-secondary: rgba(255, 255, 255, 0.85); --bg-overlay: rgba(255, 255, 255, 0.95); --bg-gradient-1: #e3f2fd; --bg-gradient-2: #f3e5f5; --bg-gradient-3: #fff3e0; --bg-gradient-4: #e8f5e8; /* 新主题色变量 */ --primary-color: #ff6b6b; --primary-color-hover: #ff5252; --primary-color-active: #ff4444; --primary-color-pressed: #ff3333; /* 兼容性变量 */ --accent-red: var(--primary-color); --accent-red-hover: var(--primary-color-hover); /* 文字颜色 */ --text-primary: #2c3e50; --text-secondary: rgba(44, 62, 80, 0.8); --text-tertiary: rgba(44, 62, 80, 0.6); --text-disabled: rgba(44, 62, 80, 0.5); /* 边框颜色 */ --border-light: rgba(44, 62, 80, 0.2); --border-lighter: rgba(44, 62, 80, 0.1); --border-card: rgba(44, 62, 80, 0.15); --border-strong: rgba(44, 62, 80, 0.3); /* 状态颜色 */ --success-color: #4CAF50; --warning-color: #ed8936; --error-color: #ff4444; --info-color: #3182ce; /* 特殊效果 */ --shadow-color: rgba(0, 0, 0, 0.12); --glow-color: rgba(255, 107, 107, 0.35); --overlay-dark: rgba(0, 0, 0, 0.6); --overlay-light: rgba(255, 255, 255, 0.1); --overlay-lighter: rgba(255, 255, 255, 0.05); /* 兼容性阴影 */ --shadow-card: 0 8px 25px var(--shadow-color); --shadow-button: 0 4px 12px var(--glow-color); } /* 黑色朦胧主题 */ [data-theme="dark"] { /* 背景色 */ --bg-primary: #0c0c0c; --bg-card: rgba(30, 30, 30, 0.85); --bg-secondary: rgba(25, 25, 25, 0.9); --bg-overlay: rgba(0, 0, 0, 0.9); --bg-gradient-1: #1a1a2e; --bg-gradient-2: #16213e; --bg-gradient-3: #0f3460; --bg-gradient-4: #1a1a2e; /* 文字颜色 */ --text-primary: #ffffff; --text-secondary: rgba(255, 255, 255, 0.85); --text-disabled: rgba(255, 255, 255, 0.5); --text-tertiary: rgba(255, 255, 255, 0.65); /* 边界和分隔线 - 黑色朦胧主题 */ --border-light: rgba(255, 255, 255, 0.2); --border-lighter: rgba(255, 255, 255, 0.1); --border-card: rgba(255, 255, 255, 0.15); --border-strong: rgba(255, 255, 255, 0.3); /* 阴影 - 黑色朦胧主题 */ --shadow-card: 0 8px 25px rgba(0, 0, 0, 0.4); --shadow-button: 0 4px 12px rgba(255, 107, 107, 0.5); --overlay-lighter: rgba(255, 255, 255, 0.05); } /* 全局重置 */ * { margin: 0; padding: 0; box-sizing: border-box; /* 禁用双击缩放和选择 */ -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; } /* 全局禁用缩放和双击 */ html, body { touch-action: manipulation; -ms-touch-action: manipulation; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } /* 允许输入框和文本区域选择文本 */ input, textarea, [contenteditable="true"] { -webkit-user-select: text; -khtml-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; } html, body { height: 100%; overflow-x: hidden; /* 纯Meta方案:确保没有默认间距影响viewport-fit=cover */ margin: 0; padding: 0; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif; background: var(--bg-primary); color: var(--text-primary); line-height: 1.4; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; position: relative; } /* 白色炫彩主题背景 */ body::before { content: ''; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(-45deg, var(--bg-gradient-1), var(--bg-gradient-2), var(--bg-gradient-3), var(--bg-gradient-4)); background-size: 400% 400%; animation: gradientBG 15s ease infinite; opacity: 0.4; z-index: -2; pointer-events: none; } /* 黑色朦胧主题背景 */ [data-theme="dark"] body::before { background: linear-gradient(-45deg, var(--bg-gradient-1), var(--bg-gradient-2), var(--bg-gradient-3), var(--bg-gradient-4)); opacity: 0.2; } @keyframes gradientBG { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } #app { height: 100vh; display: flex; flex-direction: column; } /* 滚动条样式 - 白色主题 */ ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(44, 62, 80, 0.3); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: rgba(44, 62, 80, 0.5); } /* 滚动条样式 - 黑色主题 */ [data-theme="dark"] ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.4); } [data-theme="dark"] ::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.6); } /* 通用类 */ .container { max-width: 100%; margin: 0 auto; padding: 0 16px; } .flex { display: flex; } .flex-center { display: flex; align-items: center; justify-content: center; } .flex-between { display: flex; align-items: center; justify-content: space-between; } .text-ellipsis { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .text-center { text-align: center; } /* 响应式隐藏 */ @media (max-width: 768px) { .hidden-mobile { display: none !important; } } @media (min-width: 769px) { .hidden-desktop { display: none !important; } } /* 动画效果 */ .fade-enter-active, .fade-leave-active { transition: opacity var(--transition-fast); } .fade-enter-from, .fade-leave-to { opacity: 0; } .slide-up-enter-active, .slide-up-leave-active { transition: transform var(--transition-fast); } .slide-up-enter-from, .slide-up-leave-to { transform: translateY(100%); }