非特权阶层 發表於 2025-6-22 10:10:00

数据可视化大屏(html + js + css)

<h1 id="数据可视化大屏">数据可视化大屏</h1>
<blockquote>
<p>作为大数据的学生,每次想实现前端数据可视化大屏就头疼,不会前端就很烦,所以这次特定不断调教AI,再加上自己不断的改改改,终于花了一个下午改成了一个还过得去的可视化大屏,所以直接把源码分享在这里了,但是要自己导入echarts组件</p>
</blockquote>
<p>index.html页面</p>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="zh-CN"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;title&gt;电商数据可视化大屏&lt;/title&gt;
    &lt;script src="./StyleUtils/js/utils/echarts.min.js"&gt;&lt;/script&gt;
    &lt;script src="./StyleUtils/map/china.js"&gt;&lt;/script&gt;
    &lt;script src="./StyleUtils/js/utils/jQuery.js"&gt;&lt;/script&gt;
    &lt;link rel="stylesheet" href="style.css"&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class="decoration decoration-1"&gt;&lt;/div&gt;
&lt;div class="decoration decoration-2"&gt;&lt;/div&gt;
&lt;div class="grid-line"&gt;&lt;/div&gt;

&lt;div class="dashboard"&gt;
    &lt;div class="header"&gt;
      &lt;h1&gt;电商数据智能分析平台&lt;/h1&gt;
      &lt;div id="timeDisplay"&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 第二行 --&gt;
    &lt;div class="card"&gt;
      &lt;div class="card-title"&gt;
            &lt;i&gt;📊&lt;/i&gt; 商品销售排行
      &lt;/div&gt;
      &lt;div class="chart-container" id="barChart1"&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="card"&gt;
      &lt;div class="card-title"&gt;
            &lt;i&gt;📈&lt;/i&gt; 核心数据指标
      &lt;/div&gt;
      &lt;div class="stats-container"&gt;
            &lt;div class="stat-card"&gt;
                &lt;h3&gt;今日销售额&lt;/h3&gt;
                &lt;div class="stat-value"&gt;¥ 1,248,560&lt;/div&gt;
                &lt;div class="stat-trend trend-up"&gt;↑ 12.5% 较昨日&lt;/div&gt;
            &lt;/div&gt;
            &lt;!--      &lt;div class="stat-card"&gt;--&gt;
            &lt;!--      &lt;h3&gt;订单完成量&lt;/h3&gt;--&gt;
            &lt;!--      &lt;div class="stat-value"&gt;24,856&lt;/div&gt;--&gt;
            &lt;!--      &lt;div class="stat-trend trend-up"&gt;↑ 8.3% 较昨日&lt;/div&gt;--&gt;
            &lt;!--      &lt;/div&gt;--&gt;
            &lt;!--      &lt;div class="stat-card"&gt;--&gt;
            &lt;!--      &lt;h3&gt;用户访问量&lt;/h3&gt;--&gt;
            &lt;!--      &lt;div class="stat-value"&gt;186,423&lt;/div&gt;--&gt;
            &lt;!--      &lt;div class="stat-trend trend-down"&gt;↓ 3.2% 较昨日&lt;/div&gt;--&gt;
            &lt;!--      &lt;/div&gt;--&gt;
            &lt;!--      &lt;div class="stat-card"&gt;--&gt;
            &lt;!--      &lt;h3&gt;转化率&lt;/h3&gt;--&gt;
            &lt;!--      &lt;div class="stat-value"&gt;13.4%&lt;/div&gt;--&gt;
            &lt;!--      &lt;div class="stat-trend trend-up"&gt;↑ 1.7% 较昨日&lt;/div&gt;--&gt;
            &lt;!--      &lt;/div&gt;--&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="card"&gt;
      &lt;div class="card-title"&gt;
            &lt;i&gt;📊&lt;/i&gt; 品类销售占比
      &lt;/div&gt;
      &lt;div class="chart-container" id="barChart2"&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 第三行 --&gt;
    &lt;div class="card"&gt;
      &lt;div class="card-title"&gt;
            &lt;i&gt;📈&lt;/i&gt; 销售趋势分析
      &lt;/div&gt;
      &lt;div class="chart-container" id="lineChart1"&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="card map-container"&gt;
      &lt;div class="card-title"&gt;
            &lt;i&gt;🗺️&lt;/i&gt; 全国销售热力图
      &lt;/div&gt;
      &lt;div class="chart-container" id="mapChart"&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="card"&gt;
      &lt;div class="card-title"&gt;
            &lt;i&gt;📈&lt;/i&gt; 用户活跃趋势
      &lt;/div&gt;
      &lt;div class="chart-container" id="lineChart2"&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 第四行 --&gt;
    &lt;div class="card"&gt;
      &lt;div class="card-title"&gt;
            &lt;i&gt;🍰&lt;/i&gt; 用户年龄分布
      &lt;/div&gt;
      &lt;div class="chart-container" id="pieChart1"&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="card"&gt;
      &lt;div class="card-title"&gt;
            &lt;i&gt;🍰&lt;/i&gt; 支付方式占比
      &lt;/div&gt;
      &lt;div class="chart-container" id="pieChart2"&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="footer"&gt;
      &lt;p&gt;数据更新时间: 2023年11月15日 14:28:35 | © 2023 电商数据平台 版权所有&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;script src="style.js"&gt;&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>index.css</p>
<pre><code class="language-css">* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: 'Microsoft YaHei', sans-serif;
}

body {
    background: linear-gradient(135deg, #0f172a, #1e293b);
    color: #e2e8f0;
    min-height: 100vh;
    padding: 20px;
    overflow-x: hidden;
}

.dashboard {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: auto;
    gap: 20px;
    max-width: 1920px;
    margin: 0 auto;
}

.header {
    grid-column: 1 / span 3;
    background: rgba(15, 23, 42, 0.8);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    border: 1px solid rgba(100, 116, 139, 0.3);
    box-shadow: 0 10px 25px rgba(0, 0, 0, 0.4);
    backdrop-filter: blur(10px);
    margin-bottom: 20px;
}

.header h1 {
    font-size: 2.8rem;
    margin-bottom: 10px;
    background: linear-gradient(90deg, #38bdf8, #818cf8);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    letter-spacing: 2px;
}

.header p {
    font-size: 1.2rem;
    color: #94a3b8;
    max-width: 800px;
    margin: 0 auto;
}

.card {
    background: rgba(15, 23, 42, 0.7);
    border-radius: 16px;
    border: 1px solid rgba(100, 116, 139, 0.3);
    padding: 20px;
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.3);
    backdrop-filter: blur(10px);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    height: 100%;
    display: flex;
    flex-direction: column;
}

.card:hover {
    transform: translateY(-5px);
    box-shadow: 0 12px 25px rgba(0, 0, 0, 0.5);
    border-color: rgba(56, 189, 248, 0.5);
}

.card-title {
    font-size: 1.3rem;
    margin-bottom: 15px;
    color: #38bdf8;
    display: flex;
    align-items: center;
    gap: 10px;
}

.card-title i {
    font-size: 1.5rem;
}

.chart-container {
    flex: 1;
    min-height: 300px;
}

.stats-container {
    display: grid;
    grid-template-columns: 1fr;
    gap: 15px;
}

.stat-card {
    background: rgba(30, 41, 59, 0.6);
    border-radius: 12px;
    padding: 15px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    border: 1px solid rgba(100, 116, 139, 0.2);
}

.stat-card h3 {
    font-size: 1rem;
    color: #94a3b8;
    margin-bottom: 8px;
}

.stat-value {
    font-size: 2rem;
    font-weight: bold;
    color: #38bdf8;
}

.stat-trend {
    display: flex;
    align-items: center;
    font-size: 0.9rem;
    margin-top: 5px;
}

.trend-up {
    color: #10b981;
}

.trend-down {
    color: #ef4444;
}

.map-container {
    grid-row: 3 / span 2;
    grid-column: 2;
}

.footer {
    grid-column: 1 / span 3;
    text-align: center;
    padding: 20px;
    font-size: 0.9rem;
    color: #64748b;
    margin-top: 20px;
}

/* 响应式调整 */
@media (max-width: 1200px) {
    .dashboard {
      grid-template-columns: 1fr 1fr;
    }

    .header, .footer {
      grid-column: 1 / span 2;
    }

    .map-container {
      grid-row: auto;
      grid-column: 1 / span 2;
    }
}

@media (max-width: 768px) {
    .dashboard {
      grid-template-columns: 1fr;
    }

    .header, .footer {
      grid-column: 1;
    }

    .map-container {
      grid-column: 1;
    }
}

/* 装饰元素 */
.decoration {
    position: absolute;
    z-index: -1;
    opacity: 0.1;
}

.decoration-1 {
    width: 400px;
    height: 400px;
    border-radius: 50%;
    background: linear-gradient(135deg, #38bdf8, #818cf8);
    top: -100px;
    right: -100px;
}

.decoration-2 {
    width: 300px;
    height: 300px;
    border-radius: 50%;
    background: linear-gradient(135deg, #8b5cf6, #ec4899);
    bottom: -100px;
    left: -100px;
}

.grid-line {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background:
            linear-gradient(to right, rgba(100, 116, 139, 0.05) 1px, transparent 1px),
            linear-gradient(to bottom, rgba(100, 116, 139, 0.05) 1px, transparent 1px);
    background-size: 40px 40px;
    z-index: -1;
}
</code></pre>
<p>index.js(我自己加了一个后端获取的通用方法,到时根据自己需求稍微改改代码就可以了,数据都是静态数据,后续有时间我就更新怎么从后端获取数据,然后进行数据显示)</p>
<pre><code class="language-js">// 通用数据获取
async function fetchData(url, params = {}) {
    try {
      const response = await fetch(url, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify(params),
      })
      if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`);
      }
      return await response.json();
    } catch (error) {
      console.error(error);
      return null;
    }
}


// 初始化所有图表
document.addEventListener('DOMContentLoaded', function() {
    // 更新时间显示
    function updateTime() {
      const now = new Date();
      const timeDisplay = document.getElementById('timeDisplay');
      const options = {
            year: 'numeric',
            month: 'long',
            day: 'numeric',
            weekday: 'long',
            hour: '2-digit',
            minute: '2-digit',
            second: '2-digit',
            hour12: false
      };
      timeDisplay.textContent = now.toLocaleDateString('zh-CN', options);
    }

    // 初始化时间并设置定时器
    updateTime();
    setInterval(updateTime, 1000);

    function initOption() {
      bar1()
      bar2()
      line1()
      line2()
      pie1()
      pie2()
      map()
    }

    // 商品销售排行
    function bar1() {
      const barChart1 = echarts.init(document.getElementById('barChart1'));
      const option = {
            tooltip: {
                trigger: 'axis',
                axisPointer: {
                  type: 'shadow'
                }
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                top: '15%',
                containLabel: true
            },
            xAxis: {
                type: 'category',
                data: ['智能手机', '笔记本电脑', '智能手表', '蓝牙耳机', '平板电脑', '相机', '游戏主机'],
                axisLine: {
                  lineStyle: {
                        color: '#64748b'
                  }
                }
            },
            yAxis: {
                type: 'value',
                name: '销售额 (万元)',
                nameTextStyle: {
                  color: '#94a3b8'
                },
                axisLine: {
                  lineStyle: {
                        color: '#64748b'
                  }
                },
                splitLine: {
                  lineStyle: {
                        color: 'rgba(100, 116, 139, 0.2)'
                  }
                }
            },
            series: [{
                name: '销售额',
                type: 'bar',
                data: ,
                itemStyle: {
                  color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                        { offset: 0, color: '#38bdf8' },
                        { offset: 1, color: '#0ea5e9' }
                  ])
                },
                label: {
                  show: true,
                  position: 'top',
                  color: '#e2e8f0'
                }
            }]
      };

      barChart1.setOption(option);
    }

    // 品类销售占比
    function bar2() {
      const barChart2 = echarts.init(document.getElementById('barChart2'));
      const option = {
            tooltip: {
                trigger: 'axis',
                axisPointer: {
                  type: 'shadow'
                }
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                top: '15%',
                containLabel: true
            },
            xAxis: {
                type: 'value',
                axisLine: {
                  lineStyle: {
                        color: '#64748b'
                  }
                },
                splitLine: {
                  lineStyle: {
                        color: 'rgba(100, 116, 139, 0.2)'
                  }
                }
            },
            yAxis: {
                type: 'category',
                data: ['数码电子', '家用电器', '服装鞋帽', '美妆护肤', '食品生鲜', '家居用品', '图书文具'],
                axisLine: {
                  lineStyle: {
                        color: '#64748b'
                  }
                }
            },
            series: [{
                name: '占比',
                type: 'bar',
                data: ,
                itemStyle: {
                  color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [
                        { offset: 0, color: '#818cf8' },
                        { offset: 1, color: '#6366f1' }
                  ])
                },
                label: {
                  show: true,
                  position: 'right',
                  color: '#e2e8f0'
                }
            }]
      }
      barChart2.setOption(option);
    }

    // 销售趋势分析
    function line1() {
      const lineChart1 = echarts.init(document.getElementById('lineChart1'));
      const option = {
            tooltip: {
                trigger: 'axis'
            },
            legend: {
                data: ['销售额', '订单量'],
                textStyle: {
                  color: '#94a3b8'
                },
                right: 10,
                top: 0
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                top: '20%',
                containLabel: true
            },
            xAxis: {
                type: 'category',
                boundaryGap: false,
                data: ['11/09', '11/10', '11/11', '11/12', '11/13', '11/14', '11/15'],
                axisLine: {
                  lineStyle: {
                        color: '#64748b'
                  }
                }
            },
            yAxis: {
                type: 'value',
                name: '销售额 (万元)',
                nameTextStyle: {
                  color: '#94a3b8'
                },
                axisLine: {
                  lineStyle: {
                        color: '#64748b'
                  }
                },
                splitLine: {
                  lineStyle: {
                        color: 'rgba(100, 116, 139, 0.2)'
                  }
                }
            },
            series: [
                {
                  name: '销售额',
                  type: 'line',
                  data: ,
                  smooth: true,
                  lineStyle: {
                        width: 3,
                        color: '#38bdf8'
                  },
                  symbol: 'circle',
                  symbolSize: 8,
                  itemStyle: {
                        color: '#38bdf8'
                  },
                  areaStyle: {
                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                            { offset: 0, color: 'rgba(56, 189, 248, 0.5)' },
                            { offset: 1, color: 'rgba(56, 189, 248, 0.1)' }
                        ])
                  }
                },
                {
                  name: '订单量',
                  type: 'line',
                  yAxisIndex: 0,
                  data: ,
                  smooth: true,
                  lineStyle: {
                        width: 3,
                        color: '#8b5cf6'
                  },
                  symbol: 'circle',
                  symbolSize: 8,
                  itemStyle: {
                        color: '#8b5cf6'
                  }
                }
            ]
      }
      lineChart1.setOption(option);
    }

    // 用户活跃趋势
    function line2() {
      const lineChart2 = echarts.init(document.getElementById('lineChart2'));
      const option = {
            tooltip: {
                trigger: 'axis'
            },
            legend: {
                data: ['活跃用户', '新增用户'],
                textStyle: {
                  color: '#94a3b8'
                },
                right: 10,
                top: 0
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                top: '20%',
                containLabel: true
            },
            xAxis: {
                type: 'category',
                boundaryGap: false,
                data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
                axisLine: {
                  lineStyle: {
                        color: '#64748b'
                  }
                }
            },
            yAxis: {
                type: 'value',
                name: '用户量 (万)',
                nameTextStyle: {
                  color: '#94a3b8'
                },
                axisLine: {
                  lineStyle: {
                        color: '#64748b'
                  }
                },
                splitLine: {
                  lineStyle: {
                        color: 'rgba(100, 116, 139, 0.2)'
                  }
                }
            },
            series: [
                {
                  name: '活跃用户',
                  type: 'line',
                  data: ,
                  smooth: true,
                  lineStyle: {
                        width: 3,
                        color: '#10b981'
                  },
                  symbol: 'circle',
                  symbolSize: 8,
                  itemStyle: {
                        color: '#10b981'
                  }
                },
                {
                  name: '新增用户',
                  type: 'line',
                  data: ,
                  smooth: true,
                  lineStyle: {
                        width: 3,
                        color: '#f59e0b'
                  },
                  symbol: 'circle',
                  symbolSize: 8,
                  itemStyle: {
                        color: '#f59e0b'
                  }
                }
            ]
      }
      lineChart2.setOption(option);
    }

    // 用户年龄分布
    function pie1() {
      const pieChart1 = echarts.init(document.getElementById('pieChart1'));
      const option = {
            tooltip: {
                trigger: 'item',
                formatter: '{a} &lt;br/&gt;{b}: {c} ({d}%)'
            },
            legend: {
                orient: 'vertical',
                right: 10,
                top: 'center',
                textStyle: {
                  color: '#94a3b8'
                }
            },
            series: [
                {
                  name: '年龄分布',
                  type: 'pie',
                  radius: ['40%', '70%'],
                  center: ['40%', '50%'],
                  avoidLabelOverlap: false,
                  itemStyle: {
                        borderRadius: 10,
                        borderColor: '#0f172a',
                        borderWidth: 2
                  },
                  label: {
                        show: false,
                        position: 'center'
                  },
                  emphasis: {
                        label: {
                            show: true,
                            fontSize: '18',
                            fontWeight: 'bold'
                        }
                  },
                  labelLine: {
                        show: false
                  },
                  data: [
                        { value: 28, name: '18岁以下', itemStyle: { color: '#38bdf8' } },
                        { value: 145, name: '18-25岁', itemStyle: { color: '#818cf8' } },
                        { value: 235, name: '26-35岁', itemStyle: { color: '#8b5cf6' } },
                        { value: 187, name: '36-45岁', itemStyle: { color: '#ec4899' } },
                        { value: 95, name: '46-60岁', itemStyle: { color: '#f59e0b' } },
                        { value: 42, name: '60岁以上', itemStyle: { color: '#10b981' } }
                  ]
                }
            ]
      }
      pieChart1.setOption(option);
    }

    // 支付方式占比
    function pie2() {
      const pieChart2 = echarts.init(document.getElementById('pieChart2'));
      const option = {
            tooltip: {
                trigger: 'item',
                formatter: '{a} &lt;br/&gt;{b}: {c} ({d}%)'
            },
            series: [
                {
                  name: '支付方式',
                  type: 'pie',
                  radius: '70%',
                  center: ['50%', '50%'],
                  roseType: 'radius',
                  itemStyle: {
                        borderRadius: 5,
                        borderColor: '#0f172a',
                        borderWidth: 2
                  },
                  label: {
                        color: '#e2e8f0'
                  },
                  data: [
                        { value: 45, name: '支付宝', itemStyle: { color: '#1677ff' } },
                        { value: 30, name: '微信支付', itemStyle: { color: '#07c160' } },
                        { value: 15, name: '银行卡', itemStyle: { color: '#0ea5e9' } },
                        { value: 8, name: '云闪付', itemStyle: { color: '#eb2f96' } },
                        { value: 2, name: '其他方式', itemStyle: { color: '#f59e0b' } }
                  ]
                }
            ]
      }
      pieChart2.setOption(option);
    }

    // 随机数
    function randomData() {
      return Math.round(Math.random() * 500);
    }
    // 全国销售热力图
    function map() {
      const mapChart = echarts.init(document.getElementById('mapChart'));
      const mydata = [
            {name: '北京',value: randomData() },{name: '天津',value: randomData() },
            {name: '上海',value: randomData() },{name: '重庆',value: randomData() },
            {name: '河北',value: randomData() },{name: '河南',value: randomData() },
            {name: '云南',value: randomData() },{name: '辽宁',value: randomData() },
            {name: '黑龙江',value: randomData() },{name: '湖南',value: randomData()},
            {name: '安徽',value: randomData() },{name: '山东',value: randomData() },
            {name: '新疆',value: randomData() },{name: '江苏',value: randomData() },
            {name: '浙江',value: randomData() },{name: '江西',value: randomData() },
            {name: '湖北',value: randomData() },{name: '广西',value: randomData() },
            {name: '甘肃',value: randomData() },{name: '山西',value: randomData() },
            {name: '内蒙古',value: randomData() },{name: '陕西',value: randomData()},
            {name: '吉林',value: randomData() },{name: '福建',value: randomData() },
            {name: '贵州',value: randomData() },{name: '广东',value: randomData() },
            {name: '青海',value: randomData() },{name: '西藏',value: randomData() },
            {name: '四川',value: randomData() },{name: '宁夏',value: randomData() },
            {name: '海南',value: randomData() },{name: '台湾',value: randomData() },
            {name: '香港',value: randomData() },{name: '澳门',value: randomData() }
      ];
      const option = {
            //backgroundColor: '#FFFFFF',
            // 标题
            title: {
                text: '各省份的总成交量对比',
                textStyle:{color:'#fff'},
                //subtext: '纯属虚构',
                x:'center',
                show: true
            },
            // 提示框
            tooltip : {
                trigger: 'item'
            },
            visualMap: {
                show : true,
                x: 'left',
                y: 'bottom',
                //layoutCenter:['30%','30%'],
                splitList: [
                  {start: 500, end:600},{start: 400, end: 500},
                  {start: 300, end: 400},{start: 200, end: 300},
                  {start: 100, end: 200},{start: 0, end: 100},
                ],
                // color: ['#ff0', '#ffff00', '#0E94EB','#6FBCF0', '#F0F06F', '#00CC00']
                color:['#5bc2e7', '#6980c5', '#70dfdf', '#f7f1ee', '#3390FF']
            },
            series: [{
                name: '各省份的总成交量对比',
                type: 'map',
                mapType: 'china',
                label: {
                  normal: {
                        show: false
                  },
                  emphasis: {
                        show: false
                  }
                },
                data:mydata
            }]
      };
      mapChart.setOption(option);
    }

    initOption()


    // 响应式调整
    window.addEventListener('resize', function() {
      bar1.resize();
      bar2.resize();
      line1.resize();
      mapChart.resize();
      lineChart2.resize();
      pieChart1.resize();
      pieChart2.resize();
    });
});
</code></pre>
<h1 id="效果图">效果图</h1>
<blockquote>
<p>都能完美实现,没实现成功的看看是否组件导入没,注意啊,这不是vue项目,是纯种的html,嘻嘻。最后实现的效果可能页面太大了,最好都是一页将所有显示出来,所以会前端的大佬可以自己修改,不会前端那就只能让AI改了(我就是)</p>
</blockquote>
<p><img src="https://img2024.cnblogs.com/blog/3514246/202506/3514246-20250622100446678-340932621.png" alt="" loading="lazy"></p>
<p><img src="https://img2024.cnblogs.com/blog/3514246/202506/3514246-20250622100446666-1123197298.png" alt="" loading="lazy"></p><br><br>
来源:https://www.cnblogs.com/medqq/p/18942229
頁: [1]
查看完整版本: 数据可视化大屏(html + js + css)