本源码是一款后台仪表盘/数据看板的单页模板,采用常见的左侧深色导航 + 右侧浅色内容区的经典布局。顶部提供日期筛选、全局搜索与用户信息,主体区域包含 4 张 KPI 卡片、销售趋势柱状图、流量来源环形图以及热销商品排行表格。
设计上特别注重数据可视化:柱状图与环形图均由纯 CSS 实现,无需引入图表库,加载更轻;KPI 卡片的涨跌箭头使用中国股市配色(涨红跌绿),符合国内用户直觉。表格行悬停高亮,状态标签颜色分明,整体风格简洁专业。
适合电商运营、广告投放、SaaS 后台等需要展示核心指标的场景。可作为 BI 系统的临时展示页、产品原型演示,或对接真实数据接口后作为正式仪表盘使用。

使用教程
1. 下载与保存
将下方 HTML 源码全部复制,保存为 index.html 文件(注意文件后缀必须是 .html)。
2. 本地预览
直接双击 index.html 文件,浏览器会自动打开并渲染页面效果。也可以在文件夹内运行 python -m http.server 后访问 localhost:8000 进行预览。
3. 自定义修改
替换文字:直接编辑 HTML 中的标题、段落文本与链接。调整配色:修改 <style> 标签内的 CSS 变量(:root 部分)或具体颜色值。更换图片:将 <img> 的 src 属性换成你自己的图片地址,或将背景渐变替换为 background-image。
4. 上线部署
将 index.html 上传到任意支持静态网页托管的服务(GitHub Pages、Vercel、Netlify、阿里云 OSS、腾讯云 COS 等)即可获得独立访问网址。
HTML 源码
复制下方完整代码,保存为 .html 文件即可在浏览器中预览使用。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>营销数据看板 · Dashboard</title>
<style>
:root{
--bg:#f6f7fb;
--side:#1b1f33;
--side-2:#252a44;
--card:#ffffff;
--line:#e8ebf2;
--text:#1d2334;
--muted:#7c869c;
--pri:#5b5bf0;
--pri-soft:#eeeeff;
--up:#e13c3c; /* 中国习惯:涨=红 */
--down:#12a35a; /* 跌=绿 */
--warn:#f59e0b;
}
*{margin:0;padding:0;box-sizing:border-box}
body{
font-family:"PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif;
background:var(--bg);color:var(--text);font-size:14px;-webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
.app{display:grid;grid-template-columns:230px 1fr;min-height:100vh}
/* ===== 侧边栏 ===== */
aside{background:var(--side);color:#c9cee0;padding:22px 0;position:sticky;top:0;height:100vh;overflow-y:auto}
.brand{display:flex;align-items:center;gap:11px;padding:0 22px 26px;font-weight:800;font-size:16px;color:#fff}
.brand i{
width:32px;height:32px;border-radius:10px;font-style:normal;display:grid;place-items:center;
background:linear-gradient(135deg,#6d6df5,#a86df5);font-size:15px;font-weight:900;
}
.menu{list-style:none}
.menu .grp{padding:16px 22px 8px;font-size:11px;letter-spacing:.14em;color:#6c7492}
.menu li a{
display:flex;align-items:center;gap:11px;padding:11px 22px;font-size:14px;transition:.2s;
border-left:3px solid transparent;
}
.menu li a:hover{background:var(--side-2);color:#fff}
.menu li a.on{background:var(--side-2);color:#fff;border-left-color:#8b8bf7}
.menu .ico{width:18px;text-align:center;opacity:.85}
.menu .num{margin-left:auto;font-size:11px;background:#e13c3c;color:#fff;padding:1px 7px;border-radius:99px}
/* ===== 主区 ===== */
main{padding:0 0 40px}
.topbar{
background:var(--card);border-bottom:1px solid var(--line);padding:0 30px;height:64px;
display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:9;
}
.topbar h1{font-size:18px;font-weight:800}
.topbar .right{display:flex;align-items:center;gap:14px}
.sbox{position:relative}
.sbox input{
padding:9px 14px 9px 34px;border-radius:9px;border:1px solid var(--line);background:var(--bg);
font-size:13.5px;width:210px;outline:none;font-family:inherit;color:var(--text);
}
.sbox input:focus{border-color:var(--pri);background:#fff}
.sbox::before{content:"⌕";position:absolute;left:12px;top:7px;color:var(--muted);font-size:15px}
.ib{width:36px;height:36px;border-radius:9px;display:grid;place-items:center;border:1px solid var(--line);cursor:pointer;background:#fff;position:relative}
.ib:hover{border-color:var(--pri);color:var(--pri)}
.ib .d{position:absolute;top:8px;right:9px;width:6px;height:6px;border-radius:50%;background:var(--up)}
.me{display:flex;align-items:center;gap:9px;padding-left:12px;border-left:1px solid var(--line)}
.me .av{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#6d6df5,#a86df5);color:#fff;display:grid;place-items:center;font-weight:800;font-size:13px}
.me .nm{font-size:13.5px;font-weight:600;line-height:1.3}
.me .rl{font-size:11.5px;color:var(--muted)}
.content{padding:26px 30px}
/* ===== 面包屑/筛选 ===== */
.filters{display:flex;align-items:center;gap:10px;margin-bottom:20px;flex-wrap:wrap}
.chip{padding:7px 16px;border-radius:99px;border:1px solid var(--line);background:#fff;font-size:13px;cursor:pointer;transition:.2s}
.chip.on{background:var(--pri);color:#fff;border-color:var(--pri)}
.chip:hover:not(.on){border-color:var(--pri);color:var(--pri)}
.filters .sp{margin-left:auto;font-size:13px;color:var(--muted)}
/* ===== KPI 卡片 ===== */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:16px;margin-bottom:18px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px 22px;transition:.26s}
.kpi:hover{box-shadow:0 12px 28px rgba(29,35,52,.08);transform:translateY(-3px)}
.kpi .h{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.kpi .h span{font-size:13px;color:var(--muted)}
.kpi .h .ic{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;font-size:15px;background:var(--pri-soft);color:var(--pri)}
.kpi .v{font-size:28px;font-weight:900;letter-spacing:-.02em;margin-bottom:8px}
.kpi .t{font-size:12.5px;display:flex;align-items:center;gap:6px;color:var(--muted)}
.kpi .t b{font-weight:700}
.up{color:var(--up)}.down{color:var(--down)}
.kpi:nth-child(2) .ic{background:#ffeeee;color:var(--up)}
.kpi:nth-child(3) .ic{background:#e7f7ef;color:var(--down)}
.kpi:nth-child(4) .ic{background:#fff5e2;color:var(--warn)}
/* ===== 图表区 ===== */
.grid2{display:grid;grid-template-columns:1.65fr 1fr;gap:16px;margin-bottom:18px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px 22px}
.panel .ph{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.panel h3{font-size:15.5px;font-weight:800}
.panel .ph small{font-size:12.5px;color:var(--muted)}
.legend{display:flex;gap:14px;font-size:12.5px;color:var(--muted)}
.legend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px}
/* 柱状图(纯 CSS) */
.bars{display:flex;align-items:flex-end;gap:14px;height:216px;padding-top:10px;border-bottom:1px solid var(--line)}
.bars .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}
.bars .stack{width:100%;max-width:38px;display:flex;flex-direction:column;justify-content:flex-end;gap:3px;height:100%}
.bars .b1,.bars .b2{border-radius:5px 5px 0 0;transition:.4s}
.bars .b1{background:linear-gradient(180deg,#7c7cf7,#5b5bf0)}
.bars .b2{background:#d9dcf7;border-radius:0 0 5px 5px}
.bars .col:hover .b1{filter:brightness(1.14)}
.bars .lb{font-size:11.5px;color:var(--muted)}
/* 环形图 */
.donut{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.ring{
width:150px;height:150px;border-radius:50%;position:relative;flex-shrink:0;
background:conic-gradient(#5b5bf0 0 42%, #f59e0b 42% 68%, #12a35a 68% 86%, #e2e5ee 86% 100%);
}
.ring::after{
content:"";position:absolute;inset:24px;border-radius:50%;background:var(--card);
}
.ring .ct{position:absolute;inset:0;display:grid;place-items:center;text-align:center;z-index:2}
.ring .ct b{display:block;font-size:23px;font-weight:900;line-height:1.2}
.ring .ct span{font-size:11.5px;color:var(--muted)}
.dlist{flex:1;min-width:150px}
.dlist .r{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px dashed var(--line);font-size:13.5px}
.dlist .r:last-child{border-bottom:none}
.dlist .r i{width:9px;height:9px;border-radius:3px}
.dlist .r b{margin-left:auto;font-weight:700}
/* 表格 */
.tbl{width:100%;border-collapse:collapse}
.tbl th{
text-align:left;font-size:12.5px;color:var(--muted);font-weight:600;padding:10px 12px;
border-bottom:1px solid var(--line);background:#fafbfe;
}
.tbl th:first-child{border-radius:8px 0 0 8px}
.tbl th:last-child{border-radius:0 8px 8px 0;text-align:right}
.tbl td{padding:14px 12px;border-bottom:1px solid var(--line);font-size:13.5px}
.tbl tr:last-child td{border-bottom:none}
.tbl tbody tr:hover{background:#fafbff}
.tbl td:last-child{text-align:right;font-weight:700}
.st{display:inline-block;padding:3px 11px;border-radius:99px;font-size:11.5px;font-weight:600}
.st.a{background:#e7f7ef;color:var(--down)}
.st.b{background:#fff5e2;color:var(--warn)}
.st.c{background:#ffeeee;color:var(--up)}
.pd{display:flex;align-items:center;gap:10px}
.pd .sq{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;font-size:14px;color:#fff;font-weight:800}
@media(max-width:1000px){
.app{grid-template-columns:1fr}
aside{position:static;height:auto}
.grid2{grid-template-columns:1fr}
.topbar .sbox{display:none}
.content{padding:18px}
}
</style>
</head>
<body>
<div class="app">
<aside>
<div class="brand"><i>数</i>PulseBoard</div>
<ul class="menu">
<li class="grp">分 析</li>
<li><a href="#" class="on"><span class="ico">◈</span>数据总览</a></li>
<li><a href="#"><span class="ico">◎</span>流量来源</a></li>
<li><a href="#"><span class="ico">◇</span>转化漏斗</a></li>
<li><a href="#"><span class="ico">⌁</span>实时监控</a></li>
<li class="grp">运 营</li>
<li><a href="#"><span class="ico">▤</span>订单管理<span class="num">12</span></a></li>
<li><a href="#"><span class="ico">◍</span>客户名单</a></li>
<li><a href="#"><span class="ico">✦</span>营销活动</a></li>
<li><a href="#"><span class="ico">⧉</span>内容素材</a></li>
<li class="grp">系 统</li>
<li><a href="#"><span class="ico">⚙</span>账号设置</a></li>
<li><a href="#"><span class="ico">⎋</span>退出登录</a></li>
</ul>
</aside>
<main>
<div class="topbar">
<h1>数据总览</h1>
<div class="right">
<div class="sbox"><input type="text" placeholder="搜索订单 / 客户 / 活动"></div>
<div class="ib">✉<span class="d"></span></div>
<div class="ib">☾</div>
<div class="me">
<div class="av">林</div>
<div><div class="nm">林知遥</div><div class="rl">运营负责人</div></div>
</div>
</div>
</div>
<div class="content">
<div class="filters">
<div class="chip on">近 7 天</div>
<div class="chip">近 30 天</div>
<div class="chip">本季度</div>
<div class="chip">自定义</div>
<div class="sp">数据更新于 2026-08-01 13:20 · 每 15 分钟同步一次</div>
</div>
<div class="kpis">
<div class="kpi">
<div class="h"><span>总访问量</span><div class="ic">◉</div></div>
<div class="v">284,517</div>
<div class="t"><b class="up">▲ 12.6%</b> 较上周期</div>
</div>
<div class="kpi">
<div class="h"><span>销售额</span><div class="ic">¥</div></div>
<div class="v">¥1,286,430</div>
<div class="t"><b class="up">▲ 8.4%</b> 较上周期</div>
</div>
<div class="kpi">
<div class="h"><span>转化率</span><div class="ic">⇗</div></div>
<div class="v">3.82%</div>
<div class="t"><b class="down">▼ 0.31%</b> 较上周期</div>
</div>
<div class="kpi">
<div class="h"><span>客单价</span><div class="ic">◐</div></div>
<div class="v">¥426.9</div>
<div class="t"><b class="up">▲ 5.2%</b> 较上周期</div>
</div>
</div>
<div class="grid2">
<div class="panel">
<div class="ph">
<div><h3>近 7 日销售趋势</h3><small>单位:万元</small></div>
<div class="legend"><span><i style="background:#5b5bf0"></i>本周</span><span><i style="background:#d9dcf7"></i>上周</span></div>
</div>
<div class="bars">
<div class="col"><div class="stack"><div class="b1" style="height:44%"></div><div class="b2" style="height:26%"></div></div><div class="lb">周一</div></div>
<div class="col"><div class="stack"><div class="b1" style="height:58%"></div><div class="b2" style="height:22%"></div></div><div class="lb">周二</div></div>
<div class="col"><div class="stack"><div class="b1" style="height:39%"></div><div class="b2" style="height:31%"></div></div><div class="lb">周三</div></div>
<div class="col"><div class="stack"><div class="b1" style="height:68%"></div><div class="b2" style="height:20%"></div></div><div class="lb">周四</div></div>
<div class="col"><div class="stack"><div class="b1" style="height:81%"></div><div class="b2" style="height:15%"></div></div><div class="lb">周五</div></div>
<div class="col"><div class="stack"><div class="b1" style="height:62%"></div><div class="b2" style="height:24%"></div></div><div class="lb">周六</div></div>
<div class="col"><div class="stack"><div class="b1" style="height:52%"></div><div class="b2" style="height:28%"></div></div><div class="lb">周日</div></div>
</div>
</div>
<div class="panel">
<div class="ph"><h3>流量来源占比</h3></div>
<div class="donut">
<div class="ring"><div class="ct"><b>284K</b><span>总访问</span></div></div>
<div class="dlist">
<div class="r"><i style="background:#5b5bf0"></i>自然搜索<b>42%</b></div>
<div class="r"><i style="background:#f59e0b"></i>社交媒体<b>26%</b></div>
<div class="r"><i style="background:#12a35a"></i>付费广告<b>18%</b></div>
<div class="r"><i style="background:#e2e5ee"></i>直接访问<b>14%</b></div>
</div>
</div>
</div>
</div>
<div class="panel">
<div class="ph"><div><h3>热销商品排行</h3><small>按近 7 日销售额排序</small></div><small style="color:var(--pri);cursor:pointer">查看全部 →</small></div>
<table class="tbl">
<thead>
<tr><th>商品</th><th>分类</th><th>销量</th><th>库存状态</th><th>销售额</th></tr>
</thead>
<tbody>
<tr>
<td><div class="pd"><div class="sq" style="background:#5b5bf0">耳</div>Aurora One 降噪耳机</div></td>
<td>数码影音</td><td>1,284 件</td><td><span class="st a">充足</span></td><td>¥1,667,916</td>
</tr>
<tr>
<td><div class="pd"><div class="sq" style="background:#f59e0b">灯</div>暖光落地阅读灯</div></td>
<td>家居生活</td><td>968 件</td><td><span class="st b">偏低</span></td><td>¥483,032</td>
</tr>
<tr>
<td><div class="pd"><div class="sq" style="background:#12a35a">杯</div>双层玻璃保温杯</div></td>
<td>厨房餐具</td><td>2,431 件</td><td><span class="st a">充足</span></td><td>¥291,720</td>
</tr>
<tr>
<td><div class="pd"><div class="sq" style="background:#e13c3c">键</div>机械键盘 87 键版</div></td>
<td>电脑外设</td><td>512 件</td><td><span class="st c">告罄</span></td><td>¥255,488</td>
</tr>
<tr>
<td><div class="pd"><div class="sq" style="background:#8b5cf6">包</div>轻量通勤双肩包</div></td>
<td>箱包配饰</td><td>736 件</td><td><span class="st a">充足</span></td><td>¥213,440</td>
</tr>
</tbody>
</table>
</div>
</div>
</main>
</div>
<script>
document.querySelectorAll('.chip').forEach(function(c){
c.addEventListener('click',function(){
document.querySelectorAll('.chip').forEach(function(x){x.classList.remove('on')});
c.classList.add('on');
});
});
</script>
</body>
</html>
原创文章,作者:小蓝IT,如若转载,请注明出处:https://www.xiaolanzy.com/1767.html
微信扫一扫
支付宝扫一扫