/* PC端等比例缩放,根字号固定 */ html { font-size: 16px; } /* 移动端基础字号 */ @media screen and (max-width: 768px) { html { font-size: 14px; } } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Microsoft YaHei', Arial, sans-serif; color: #fff; min-width: 320px; overflow-x: hidden; margin: 0; padding: 0; } .container { width: 100%; min-height: 100vh; height: auto; display: flex; flex-direction: column; background: #000; } .cont{ width: 90%; max-width: 1600px; margin: 0 auto; /* padding: clamp(0.5rem, 1.5vw, 2rem); */ } /* 移动端下调整宽度 */ /* 移动端优化 (768px及以下) */ @media screen and (max-width: 768px) { .cont { width: 95%; max-width: 100%; padding: 0.5rem; } } /* 顶部标题 */ .header { text-align: center; margin-bottom: clamp(1rem, 2vw, 2rem); } .header h1 { font-size: clamp(1.5rem, 3vw, 3rem); color: #fff; font-weight: bold; text-shadow: 0 0 20px rgba(255, 102, 0, 0.8); margin-bottom: 0.5rem; line-height: 1.2; } .header p { font-size: clamp(0.875rem, 1.5vw, 1.5rem); color: #ff6600; letter-spacing: clamp(1px, 0.1vw, 2px); } /* 顶部数据区域 */ .top-data { display: grid; grid-template-columns: 2fr 1fr; gap: clamp(6px, 1.5vw, 14px); margin-bottom: clamp(10px, 1.5vw, 20px); min-height: 0; /* 允许grid子项收缩 */ } .sales-info { background: url(../img/hicon.png); background-repeat: no-repeat; background-size: 100% 100%; border-radius: clamp(4px, 0.5vw, 8px); padding: clamp(10px, 1.5vw, 20px); display: flex; flex-direction: column; gap: clamp(10px, 1.5vw, 15px); } .sales-info-top { display: flex; justify-content: space-around; align-items: center; flex-wrap: wrap; gap: 1rem; } .target-info, .total-info { text-align: center; } .target-info h3,.total-info h3{ font-size: clamp(0.75rem, 1vw, 1rem); color: #fff; margin-bottom: clamp(5px, 0.8vw, 8px); font-weight: normal; } .target-amount { font-size: clamp(1.25rem, 2.5vw, 2.25rem); font-weight: bold; color: #F77436; margin-bottom: clamp(5px, 0.8vw, 10px); line-height: 1.2; } .total-amount { font-size: clamp(1.25rem, 2.5vw, 2.25rem); font-weight: bold; color: #FA551F; margin-bottom: clamp(5px, 0.8vw, 10px); line-height: 1.2; } .sales-info-cont{ display: flex; justify-content: space-around; align-items: center; flex-wrap: wrap; gap: 0.5rem; } .sales-info-bottom { width: 90%; flex: 1; } .progress-container { width: 100%; height: clamp(20px, 2.5vw, 30px); padding: 3px; border-radius: 20px; background: linear-gradient(180deg, #FF923C, #FF923C); box-shadow: 0px 0px 8px rgb(255 255 255 / 80%); overflow: hidden; position: relative; } .progress-bg { position: relative; width: 100%; height: 100%; background: #DC7439; border-radius: 16px; overflow: hidden; display: flex; align-items: center; } .progress-bar { position: relative; height: 100%; width: 0%; border-radius: 16px; background: repeating-linear-gradient(45deg,rgba(255, 255, 255, 0.25) 0,rgba(255, 255, 255, 0.25) 8px,rgba(255, 255, 255, 0.12) 8px,rgba(255, 255, 255, 0.12) 16px),linear-gradient(180deg, #FFD85E, #FFBE25); animation: move 1.2s linear infinite; box-shadow: inset 0 0 6px rgba(255, 255, 255, 0.6); will-change: width; transition: width 0.3s ease; } .progress-info { position: absolute; right: 0px; top: 50%; transform: translateY(-50%); display: flex; align-items: center; gap: 6px; color: #fff; font-size: clamp(10px, 1.2vw, 13px); font-weight: 600; white-space: nowrap; z-index: 1; } .play-btn { width: clamp(18px, 2vw, 24px); height: clamp(18px, 2vw, 24px); border-radius: 50%; background: #DC7439; border: 2px solid #FFBE25; display: flex; align-items: center; justify-content: center; } .play-btn::before { content: ''; margin-left: 2px; width: 0; height: 0; border-top: 5px solid transparent; border-bottom: 5px solid transparent; border-left: 7px solid #fff; } .progress-text { color: #fff; font-weight: bold; font-size: clamp(10px, 1.2vw, 13px); white-space: nowrap; display: inline-block; } .progress-label { color: #DC7439; font-weight: bold; font-size: clamp(10px, 1.2vw, 13px); white-space: nowrap; } /* 进度条加载动画 */ @keyframes progressLoad { 0% { width: 0; } 100% { width: 77.05%; } } /* 条纹滚动动画 */ @keyframes move { from { background-position: 0 0; } to { background-position: 40px 0; } } .completion-rate { display: none; } .countdown { border: 1px solid #523A14; border-radius: 8px; padding: clamp(8px, 1.5vw,10px); display: flex; flex-direction: column; align-items: center; justify-content: center; overflow: hidden; /* 防止溢出 */ } .countdown h3 { font-size: clamp(0.875rem, 1.25vw, 1.25rem); color: #e7552f; margin-bottom: clamp(10px, 1.5vw, 15px); font-weight: bold; white-space: nowrap; /* 标题不换行 */ } /* 季度容器 */ .quarters-container { display: flex; flex-direction: column; gap: clamp(5px, 1.5vw, 5px); width: 100%; } /* 单个季度 */ .quarter-item { display: flex; align-items: center; gap: clamp(5px, 1vw, 8px); flex: 1; min-width: 0; border-bottom: 1px solid #523A14; padding-bottom: 8px; overflow: hidden; /* PC端防止内容溢出 */ } .last-quarter{ border-bottom: none; padding-bottom: 0px; } .quarter-label { background: #e7552f; color: #fff; font-size: clamp(0.875rem, 1.2vw, 1rem); font-weight: bold; padding: clamp(3px, 0.5vw, 5px) clamp(8px, 1vw, 12px); border-radius: 4px; min-width: clamp(35px, 5vw, 45px); text-align: center; box-shadow: 0 0 10px rgba(255, 102, 0, 0.5); flex-shrink: 0; } /* 周数圆圈容器 */ .weeks-container { display: flex; flex-wrap: nowrap; /* PC端不换行 */ gap: clamp(2px, 0.4vw, 5px); flex: 1; overflow-x: hidden; /* 隐藏溢出内容 */ overflow-y: hidden; min-width: 0; /* 允许flex子项缩小 */ justify-content: flex-start; /* 从左侧开始排列 */ } /* 单个周数圆圈 */ .week-circle { width: clamp(12px, 2.5vw, 24px); height: clamp(12px, 2.5vw, 24px); border-radius: 50%; border: 2px solid #815B37; background: rgba(129, 91, 55, 0.2); display: flex; align-items: center; justify-content: center; font-size: clamp(0.5rem, 1vw, 0.75rem); color: #f5bbab; font-weight: bold; cursor: pointer; transition: all 0.3s ease; flex-shrink: 1; /* PC端允许周圈缩小以适应容器 */ min-width: 10px; /* 最小尺寸 */ min-height: 10px; flex-basis: clamp(12px, 2.5vw, 24px); /* 弹性基础尺寸 */ } .week-circle:hover { background: rgba(231, 85, 47, 0.4); border-color: #e7552f; transform: scale(1.1); } /* 当前周高亮 */ .week-circle.current { background: #e7552f; border-color: #ff6600; box-shadow: 0 0 10px rgba(255, 102, 0, 0.8); animation: pulse 2s infinite; } /* 已过去的周 */ .week-circle.passed { background: #e7552f; border-color: #ff6600; box-shadow: 0 0 10px rgba(255, 102, 0, 0.8); /* opacity: 0.6; */ } @keyframes pulse { 0%, 100% { box-shadow: 0 0 10px rgba(255, 102, 0, 0.8); } 50% { box-shadow: 0 0 20px rgba(255, 102, 0, 1); } } .countdown-label { font-size: clamp(0.875rem, 1.25vw, 1.25rem); color: #ff6600; margin-top: 8px; font-weight: bold; } /* 小组排名区域 */ .group-ranking { border: 1px solid #523A14; border-radius: 8px; padding: clamp(10px, 1.5vw, 20px); margin-bottom: clamp(10px, 1.5vw, 20px); } .section-title { font-size: clamp(0.875rem, 1.25vw, 1rem); color: #fff; background: #ff6600; padding: clamp(5px, 0.8vw, 5px) clamp(10px, 1.5vw, 15px); display: inline-block; font-weight: bold; } .ranking-content { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(10px, 1.5vw, 20px); } .ranking-list { display: flex; flex-direction: column; gap: clamp(8px, 1vw, 10px); } .ranking-item { display: flex; align-items: center; padding: clamp(8px, 1.2vw, 12px) clamp(10px, 1.5vw, 15px); border-radius: 4px; font-size: clamp(0.75rem, 1vw, 0.875rem); background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); } .ranking-item.top-1 { background: linear-gradient(90deg, rgba(199, 173, 61, 0.4), rgba(199, 173, 61, 0.1)); border: 1px solid rgba(199, 173, 61, 0.4); } .ranking-item.top-2 { background: linear-gradient(90deg, rgba(136, 136, 135, 0.5), rgba(136, 136, 135, 0.1)); border: 1px solid rgba(136, 136, 135, 0.4); } .ranking-item.top-3 { background: linear-gradient(90deg, rgba(59, 96, 93, 0.6), rgba(59, 96, 93,0.1)); border: 1px solid rgba(59, 96, 93, 0.4); } .ranking-item.other { background: linear-gradient(90deg, rgba(100, 100, 100, 0.3), rgba(100, 100, 100, 0.1)); border: 1px solid rgba(100, 100, 100, 0.4); } .rank-number { font-size: clamp(0.875rem, 1.25vw, 1.25rem); font-weight: bold; margin-right: clamp(10px, 1.5vw, 15px); min-width: 20px; width: clamp(20px, 3vw, 25px); height: clamp(20px, 3vw, 25px); display: flex; align-items: center; justify-content: center; border-radius: 50%; } .ranking-item.top-1 .rank-number { background: #C7AD3D; color: #000; box-shadow: 0 0 8px rgba(255, 204, 0, 0.8); } .ranking-item.top-2 .rank-number { background: #888887; color: #000; box-shadow: 0 0 8px rgba(192, 192, 192, 0.8); } .ranking-item.top-3 .rank-number { background: #3B605D; color: #fff; box-shadow: 0 0 8px rgba(205, 127, 50, 0.8); } .ranking-item.other .rank-number { background: #815B37; color: #fff; } .rank-name { font-weight: bold; margin-right: clamp(10px, 1.5vw, 20px); min-width: clamp(60px, 8vw, 90px); color: #fff; font-size: clamp(0.75rem, 1.1vw, 0.875rem); } .rank-sales { flex: 1; margin-right: clamp(10px, 1.5vw, 20px); color: #F77436; font-size: clamp(0.6875rem, 1vw, 0.8125rem); } .rank-rate { font-weight: bold; color: #FA3925; font-size: clamp(0.6875rem, 1vw, 0.8125rem); } .chart-container { height: 100%; min-height: clamp(250px, 30vw, 300px); } .ranking-content { align-items: stretch; } /* 个人排名区域 */ .person-ranking { border: 1px solid #523A14; border-radius: 8px; padding: 20px; } /* 响应式设计 */ /* 移动端优化 (768px及以下) */ @media (max-width: 768px) { .top-data { grid-template-columns: 1fr; } .ranking-content { grid-template-columns: 1fr; } .sales-info { flex-direction: column; gap: 1rem; text-align: center; } .sales-info-top { flex-direction: column; gap: 1rem; } .sales-info-cont { flex-direction: column; gap: 0.5rem; } .sales-info-bottom { width: 100%; } .section-title { font-size: clamp(0.875rem, 2.5vw, 1.125rem); } /* 移动端年度进度允许换行 */ .countdown { overflow: visible; /* 移动端允许溢出换行 */ } .quarter-item { overflow: visible; /* 移动端允许内容换行 */ } .weeks-container { flex-wrap: wrap; /* 移动端允许换行 */ overflow-x: visible; overflow-y: visible; } .quarter-label { font-size: clamp(0.75rem, 2vw, 0.875rem); padding: clamp(2px, 0.5vw, 4px) clamp(6px, 1.5vw, 10px); min-width: clamp(30px, 5vw, 40px); } .week-circle { width: clamp(16px, 4vw, 20px); height: clamp(16px, 4vw, 20px); font-size: clamp(0.5rem, 1.5vw, 0.625rem); flex-shrink: 0; /* 移动端不缩小 */ min-width: auto; min-height: auto; flex-basis: auto; } .ranking-item { display: grid; grid-template-columns: auto 1fr auto; grid-template-rows: auto auto; gap: clamp(5px, 1vw, 8px); font-size: clamp(0.6875rem, 2vw, 0.875rem); padding: clamp(10px, 2vw, 15px); align-items: center; } .ranking-item .rank-number { grid-column: 1; grid-row: 1 / 3; font-size: clamp(0.875rem, 2.5vw, 1.125rem); width: clamp(18px, 5vw, 25px); height: clamp(18px, 5vw, 25px); min-width: 18px; margin-right: 0; } .ranking-item .rank-name { grid-column: 2; grid-row: 1; margin-bottom: 0; margin-right: 0; font-size: clamp(0.75rem, 2.2vw, 0.875rem); text-align: left; } .ranking-item .rank-sales { grid-column: 2; grid-row: 2; margin-right: 0; margin-bottom: 0; margin-left: 0; margin-top: 0; font-size: clamp(0.625rem, 1.8vw, 0.75rem); text-align: left; } .ranking-item .rank-rate { grid-column: 3; grid-row: 1 / 3; margin-left: 0; flex-shrink: 0; font-size: clamp(0.6875rem, 2vw, 0.8125rem); align-self: center; text-align: right; } .chart-container { min-height: clamp(200px, 40vw, 250px); } } /* 超小屏幕优化 (480px及以下) */ @media (max-width: 480px) { .header h1 { font-size: clamp(1.25rem, 5vw, 1.5rem); } .header p { font-size: clamp(0.75rem, 3vw, 1rem); } .quarters-container { gap: clamp(5px, 2vw, 8px); } .quarter-label { font-size: clamp(0.625rem, 2.5vw, 0.75rem); padding: clamp(2px, 0.5vw, 3px) clamp(5px, 1.5vw, 8px); min-width: clamp(25px, 6vw, 35px); } .week-circle { width: clamp(14px, 4.5vw, 18px); height: clamp(14px, 4.5vw, 18px); font-size: clamp(0.4375rem, 2vw, 0.5625rem); gap: clamp(2px, 0.5vw, 3px); } } /* 笔记本小屏幕特别优化 (1024px - 1366px) */ @media screen and (min-width: 1024px) and (max-width: 1366px) { /* 年度进度区域紧凑显示 */ .countdown { padding: clamp(6px, 1vw, 8px); } .countdown h3 { font-size: clamp(0.7rem, 1vw, 0.9rem); margin-bottom: clamp(6px, 1vw, 10px); } .quarters-container { gap: clamp(3px, 0.8vw, 4px); } .quarter-item { gap: clamp(3px, 0.6vw, 5px); padding-bottom: clamp(5px, 0.7vw, 6px); } .quarter-label { font-size: clamp(0.7rem, 1vw, 0.85rem); padding: clamp(2px, 0.3vw, 3px) clamp(5px, 0.8vw, 8px); min-width: clamp(28px, 4vw, 35px); } .week-circle { width: clamp(14px, 2vw, 18px); height: clamp(14px, 2vw, 18px); font-size: clamp(0.5rem, 0.8vw, 0.625rem); border-width: 1px; } .weeks-container { gap: clamp(1px, 0.3vw, 3px); } } /* 高分辨率小笔记本优化 (125%-200% DPI缩放) 比如:13寸1920x1080 (150%缩放实际约1280px), 14寸2560x1440 (200%缩放实际约1280px) */ @media screen and (min-width: 1280px) and (max-width: 1600px) { /* 当年度进度容器宽度不足时的自动缩放 */ .countdown { padding: clamp(6px, 1vw, 10px); /* 使用容器查询的方式,如果内容太多则整体缩小 */ min-width: 0; } .countdown h3 { font-size: clamp(0.75rem, 1.1vw, 1.1rem); margin-bottom: clamp(8px, 1.2vw, 12px); } .quarters-container { gap: clamp(4px, 0.9vw, 6px); } .quarter-item { gap: clamp(4px, 0.7vw, 7px); padding-bottom: clamp(6px, 0.8vw, 8px); } .quarter-label { font-size: clamp(0.72rem, 1.05vw, 0.9rem); padding: clamp(2px, 0.35vw, 4px) clamp(6px, 0.85vw, 10px); min-width: clamp(30px, 4.2vw, 38px); } .week-circle { width: clamp(15px, 2.1vw, 20px); height: clamp(15px, 2.1vw, 20px); font-size: clamp(0.5rem, 0.85vw, 0.65rem); border-width: 1.5px; } .weeks-container { gap: clamp(2px, 0.35vw, 4px); } } /* 极致紧凑模式 - 高DPI小屏幕 (13-14寸高分辨率笔记本) 检测16:9或16:10宽高比 + 中等分辨率 */ @media screen and (min-width: 1200px) and (max-width: 1440px) and (min-aspect-ratio: 16/10) { .countdown { padding: clamp(5px, 0.9vw, 8px); } .countdown h3 { font-size: clamp(0.7rem, 1vw, 0.95rem); margin-bottom: clamp(6px, 1vw, 10px); } .quarters-container { gap: clamp(3px, 0.7vw, 5px); } .quarter-item { gap: clamp(3px, 0.6vw, 6px); padding-bottom: clamp(5px, 0.7vw, 7px); } .quarter-label { font-size: clamp(0.68rem, 1vw, 0.82rem); padding: clamp(2px, 0.3vw, 4px) clamp(5px, 0.8vw, 9px); min-width: clamp(28px, 4vw, 35px); } .week-circle { width: clamp(14px, 2vw, 18px); height: clamp(14px, 2vw, 18px); font-size: clamp(0.48rem, 0.8vw, 0.6rem); border-width: 1px; } .weeks-container { gap: clamp(1.5px, 0.3vw, 3px); } } /* 头部和尾部图片 */ .header-image { margin-bottom: clamp(10px, 1.5vw, 20px); text-align: center; width: 100%; } .footer-image { margin-top: clamp(10px, 1.5vw, 20px); text-align: center; width: 100%; } .header-image img, .footer-image img { width: 100%; height: auto; display: block; margin: 0 auto; object-fit: contain; } /* 排名数字内联样式替代 */ .ranking-item .rank-number { color: #000; } /* 窄容器优化 - 适配所有高DPI小笔记本 当容器宽度小于400px时(比如高分辨率小笔记本的系统缩放) */ @media screen and (min-width: 769px) and (max-width: 1400px) { .top-data { /* 如果年度进度区域太窄,调整比例 */ grid-template-columns: 2fr minmax(280px, 1fr); } } /* 极窄容器优化 - 当容器实际显示宽度很小 */ @media screen and (min-width: 769px) and (max-width: 1200px) { .top-data { grid-template-columns: 1fr 1fr; } } /* ========== 响应式布局 - 不同屏幕尺寸优化 ========== */ /* 小屏幕笔记本 (1366x768, 1440x900) */ @media screen and (min-width: 769px) and (max-width: 1600px) { .cont { width: 95%; /* padding: clamp(0.5rem, 1.5vw, 1.5rem); */ } .section-title { font-size: clamp(0.8rem, 1.1vw, 0.95rem); } .chart-container { min-height: clamp(220px, 28vw, 280px); } /* 年度进度区域优化 */ .countdown { padding: clamp(6px, 1vw, 10px); } .countdown h3 { font-size: clamp(0.75rem, 1.1vw, 1.1rem); margin-bottom: clamp(8px, 1.2vw, 12px); } .quarter-item { gap: clamp(4px, 0.8vw, 6px); padding-bottom: clamp(6px, 0.8vw, 8px); } .quarter-label { font-size: clamp(0.75rem, 1.1vw, 0.95rem); padding: clamp(2px, 0.4vw, 4px) clamp(6px, 0.9vw, 10px); min-width: clamp(32px, 4.5vw, 40px); } .week-circle { width: clamp(16px, 2.2vw, 22px); height: clamp(16px, 2.2vw, 22px); font-size: clamp(0.5625rem, 0.9vw, 0.6875rem); border-width: 1.5px; } .weeks-container { gap: clamp(2px, 0.4vw, 4px); } } /* 标准全高清 (1920x1080) */ @media screen and (min-width: 1601px) and (max-width: 2100px) { .cont { width: 90%; max-width: 1700px; } .chart-container { min-height: clamp(250px, 28vw, 320px); } } /* 2K 屏幕 (2560x1440) */ @media screen and (min-width: 2101px) and (max-width: 3200px) { .cont { width: 85%; max-width: 2200px; } .section-title { font-size: clamp(0.9rem, 1.2vw, 1.1rem); padding: clamp(6px, 0.9vw, 8px) clamp(12px, 1.6vw, 18px); } .top-data { gap: clamp(10px, 1.5vw, 18px); margin-bottom: clamp(15px, 1.8vw, 25px); } .chart-container { min-height: clamp(280px, 28vw, 380px); } .ranking-item { padding: clamp(10px, 1.3vw, 14px) clamp(12px, 1.6vw, 18px); font-size: clamp(0.8rem, 1.1vw, 0.95rem); } .header-image, .footer-image { margin: clamp(12px, 1.8vw, 25px) auto; } } /* 4K 屏幕 (3840x2160 及以上) */ @media screen and (min-width: 3201px) { .cont { width: 80%; max-width: 3000px; padding: clamp(1.5rem, 2vw, 3rem); } .section-title { font-size: clamp(1rem, 1.5vw, 1.3rem); padding: clamp(8px, 1vw, 10px) clamp(15px, 2vw, 25px); } .top-data { gap: clamp(15px, 2vw, 25px); margin-bottom: clamp(20px, 2.5vw, 30px); } .sales-info { padding: clamp(15px, 2vw, 25px); gap: clamp(15px, 2vw, 20px); } .countdown { padding: clamp(12px, 1.8vw, 15px); } .group-ranking, .person-ranking { padding: clamp(15px, 2vw, 30px); margin-bottom: clamp(15px, 2vw, 25px); } .chart-container { min-height: clamp(350px, 30vw, 500px); } .ranking-item { padding: clamp(12px, 1.5vw, 18px) clamp(15px, 2vw, 22px); font-size: clamp(0.85rem, 1.2vw, 1rem); } .rank-number { width: clamp(22px, 3.5vw, 28px); height: clamp(22px, 3.5vw, 28px); } .header-image, .footer-image { margin: clamp(15px, 2.5vw, 30px) auto; } /* 4K屏幕下的文字大小优化 */ .target-amount, .total-amount { font-size: clamp(1.5rem, 3vw, 2.5rem); } }