响应式

This commit is contained in:
浅念
2026-02-13 14:22:40 +08:00
parent 2bb619ddf7
commit 7624633183
2 changed files with 131 additions and 76 deletions
-50
View File
@@ -5,7 +5,6 @@ const RESIZE_DEBOUNCE_TIME = 300; // 防抖时间(毫秒)
const PROGRESS_STEP = 0.4; // 进度条每帧增量
const PROGRESS_INTERVAL = 20; // 进度条更新间隔(毫秒)
const MOBILE_BREAKPOINT = 768; // 移动端断点(px)
const DESIGN_WIDTH = 1920; // 设计稿宽度(px)
// 年度销售数据(可通过API动态获取)
let yearData = {
@@ -13,49 +12,6 @@ let yearData = {
actual: 231154000 // 年度实际销售额(万元)
};
// PC端等比例缩放函数
function setScale() {
const screenWidth = window.innerWidth;
// 移动端不缩放,保持响应式布局
if (screenWidth <= MOBILE_BREAKPOINT) {
document.body.style.transform = 'none';
document.body.style.transformOrigin = 'left top';
document.body.style.marginLeft = '0px';
document.body.style.width = '100%';
document.body.style.minWidth = '320px';
document.body.style.height = 'auto';
document.body.style.overflowX = 'hidden';
return;
}
// PC端等比例缩放
const scale = screenWidth / DESIGN_WIDTH;
// 只限制最小缩放比例,允许放大
// 最小缩放到60%,最大可以放大填满屏幕
const finalScale = Math.max(scale, 0.6);
// 重置样式以获取真实内容高度
document.body.style.transform = 'none';
document.body.style.height = 'auto';
// 获取真实内容高度
const contentHeight = document.body.scrollHeight;
// 计算缩放后的高度
const scaledHeight = Math.ceil(contentHeight * finalScale);
// 应用缩放
document.body.style.transform = `scale(${finalScale})`;
document.body.style.transformOrigin = 'left top';
document.body.style.width = `${DESIGN_WIDTH}px`;
document.body.style.minWidth = `${DESIGN_WIDTH}px`;
document.body.style.height = `${scaledHeight}px`;
document.body.style.marginLeft = '0px';
document.body.style.overflowX = 'hidden';
}
// 模拟数据 - 小组排名
const groupData = [
{ name: '华东一组', target: 50000000000, actual: 62000000000 },
@@ -556,9 +512,6 @@ function renderPersonChart() {
// 初始化
document.addEventListener('DOMContentLoaded', async () => {
// PC端等比例缩放
setScale();
// 获取年度数据并更新顶部显示
yearData = await fetchYearData();
const progressRate = updateTopData();
@@ -591,9 +544,6 @@ document.addEventListener('DOMContentLoaded', async () => {
// 响应式调整 - 使用防抖优化性能
window.addEventListener('resize', () => {
// 立即更新缩放(不防抖,保证视觉效果流畅)
setScale();
// 图表重新渲染使用防抖
clearTimeout(resizeTimer);
resizeTimer = setTimeout(() => {