原生 HTML、CSS、JavaScript 实现,无框架、无构建步骤、无运行时网络请求
marspanel — HTML 后台模板
作者 umars28
marspanel 是一个面向基础设施控制台的管理后台模板,使用原生 HTML、CSS 和 JavaScript,无框架、无运行时网络请求,默认 Aurora 深色主题,包含 38 个演示页面。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 2
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
默认 Aurora 深色主题,采用青色、靛蓝、紫色三色体系,品牌色与状态色职责分离
六种状态词汇通过 mpn-is-* 类统一应用于 pill、banner、日志行、时间线、日历、看板、拓扑节点等组件
设计令牌分 primitive、semantic、component 三层,组件不直接引用原始令牌,构建脚本会校验
包含 RTL 和打印样式,dir="rtl" 即可切换,打印样式会重复表头并避免行内断页
提供 38 个演示页面、342 个类、141 个图标和插图,以及对比度审计文档
模板详细介绍
marspanel 是一个基础设施控制台管理模板,使用原生 HTML、CSS 和 JavaScript 编写,不依赖任何框架,运行时不会发起网络请求。默认主题为 Aurora,以深色为主,在柔和径向渐变上叠加半透明层,采用青色、靛蓝、紫色三色体系。模板包含 38 个演示页面,覆盖仪表盘、表格、表单、图表、日志、拓扑等控制台常见界面。
该模板将失败实例、卡在 provisioning 的工作负载、长时间 detaching 的卷、因桶配额失败的备份、92% 的配额、不再满足 N+1 的集群等异常状态作为一等公民提供,强调控制台在故障场景下的可读性。
安装方式为复制 dist/ 目录到项目中,按顺序引入 CSS、主题脚本、精灵图和主脚本;也可通过 npm 安装后导入 CSS。主题脚本需放在 head 中同步执行,以便在首次绘制前确定深色或浅色主题。JavaScript 没有可导入的 API,CSS 类和 data-mpn-* 属性即为接口。README 提供了文档、构建、RTL、打印、对比度审计、安全策略和架构决策记录等说明。
适合你的项目吗?
适用场景
- 构建需要展示失败实例、卡住 provisioning、配额告警等异常状态的基础设施控制台
- 在无网络或气隙环境中部署管理界面,要求不加载外部字体、图标字体或 CDN 资源
- 需要 RTL 支持或打印友好样式的后台系统
- 以原生 HTML/CSS/JS 为基础,不引入前端框架的管理后台项目
适合人群
- 需要展示基础设施异常状态和运维细节的控制台界面
- 希望避免框架依赖和构建步骤、直接复制 dist 文件使用的项目
- 需要深色优先、可切换主题并支持 RTL 和打印的管理后台
- 对运行时网络请求有严格限制的部署环境
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
将 dist/ 目录复制到项目中,按 README 指定顺序引入 marspanel.min.css、marspanel-theme.js、sprites.js 和 marspanel.js
- 2
marspanel-theme.js 必须放在 head 中同步执行,否则首次绘制会出现主题闪烁
- 3
也可通过 npm install marspanel 后 import "marspanel/css",没有 JavaScript API 需要导入
- 4
starter/index.html 是可复制并删减的骨架页面
- 5
构建使用 node build/index.mjs,本地服务使用 node build/serve.mjs,无需 npm install
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据
https://github.com/umars28/marspanel/blob/main/LICENSEhttps://github.com/umars28/marspanel/blob/main/README.mdPermission is hereby granted, free of charge
许可证原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-15。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 80 / 100
- 技术栈
- HTML
- 网站类型
- 后台
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-09-13
- 截图检查日期
- 2026-10-15
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 HTML。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: codex-user-requested-batch-review-20261017 · 2026-10-16
查看当时使用的来源资料
SHA-256: 503e4ef809ca6be5ef27ae6ca62197c97c6c31ec3544b2bac9c34ec51c81c671
2026-10-15T13:27:04.315Z
来源文件 / 仓库# marspanel [](https://github.com/umars28/marspanel/actions/workflows/ci.yml) [](LICENSE) [](package.json) [](docs/accessibility.md) [](https://umars28.github.io/marspanel/) Admin template for infrastructure consoles. Plain HTML, CSS and JavaScript — no build step for consumers, no framework, and not one network request at runtime. **[Live demo →](https://umars28.github.io/marspanel/)** The default theme is **Aurora**: dark-first, layered translucency over a soft radial wash, with a cyan → indigo → violet identity. ``` 38 pages · 342 classes · 141 icons and illustrations · 0 dependencies · 54/54 contrast pairs pass ``` ## Why another admin template Every widely used admin template draws the happy path. Dashboards are green, tables are full, nothing is mid-flight and nothing is broken. But the screen an operator actually stares at is the one where something has gone wrong. marspanel ships the ugly states as first-class: a failed instance, a workload stuck provisioning, a volume that has been detaching for an hour, a backup that died on bucket quota, a quota at 92 %, a cluster that is no longer N+1. If a template cannot render those legibly, it cannot render the job. ## Install Copy `dist/` into your project. Four files, and the order matters. ```html <link rel="stylesheet" href="/dist/marspanel.min.css"> <script src="/dist/marspanel-theme.js"></script> <!-- in <head>, synchronous --> <body class="mpn-root"> <script src="/dist/sprites.js"></script> <div class="mpn-app">…</div> <script src="/dist/marspanel.js"></script> </body> ``` `marspanel-theme.js` belongs in the head because it resolves dark or light **before first paint** — move it lower and you get a flash of the wrong theme. `starter/index.html` is this skeleton with a working shell; copy it and start deleting. Or `npm install marspanel`, then `import "marspanel/css"`. There is no JavaScript API to import; the CSS classes and the `data-mpn-*` attributes are the interface. ## Documentation | | | |---|---| | [Getting started](docs/getting-started.md) | install, layout, breakpoints, building from source | | [Theming](docs/theming.md) | the three token layers and how to write another theme | | [JavaScript](docs/javascript.md) | every `data-mpn-*` attribute | | [RTL and print](docs/rtl-and-print.md) | logical properties, the paper stylesheet | | [Contrast audit](docs/accessibility.md) | generated by the build, not asserted by hand | | [ADR 0001](docs/adr/0001-visual-direction.md) | the nine visual directions Aurora was chosen against | | [ADR 0002](docs/adr/0002-packaging-and-structure.md) | why `dist/` is committed and the build has no dependencies | | [Security](SECURITY.md) | scope, reporting, and a CSP that works | Live pages: open `index.html`, or `pages/index.html` for the full list. ## The rule that makes it a system Three hues, three jobs. Brand colour never argues with status colour. | Hue | Token | Role | Where | |---|---|---|---| | Cyan `#22D3EE` | `--mpn-focus` | *pointing* | focus ring, active tab underline | | Indigo `#6366F1` | `--mpn-accent` | *acting* | primary button, link, anything clickable | | Violet `#A78BFA` | `--mpn-pending` | *in flight* | provisioning, reconciling, draining | A focus ring is never the accent colour. A primary button is never cyan. ## One status vocabulary Six states, one class, read by every stateful component: ```html <span class="mpn-pill mpn-is-ok">running</span> <div class="mpn-banner mpn-is-warn">…</div> <div class="mpn-log-line mpn-is-danger">…</div> ``` `mpn-is-warn` works identically on a pill, a banner, a timeline dot, a calendar event, a board card, an info box, a log line, a topology node and a donut segment — because each reads `--mpn-state` and `--mpn-state-tint` rather than hard-coding a colour. Map your own nouns onto the six: `running`, `bound`, `granted`, `paid` and `shipped` are all `ok`. ## Tokens are three layers deep, and the order is enforced ``` tokens/primitive.css --mpn-indigo-500: #6366F1 tokens/semantic.css --mpn-accent: var(--mpn-indigo-500) components/button.css background: var(--mpn-accent) ``` **Components never reference primitives.** That single constraint is what makes an alternate theme a block of variables instead of a hunt through twenty stylesheets, and `build/verify.mjs` fails the build if it is broken. ## Component coverage | Group | Classes | |---|---| | Actions | `mpn-btn` (primary, solid, ghost, danger, sm, lg, block, group), `mpn-icon-btn`, `mpn-avatar` | | Status | `mpn-pill`, `mpn-dot`, `mpn-tag`, `mpn-chip`, `mpn-env` | | Surfaces | `mpn-card` (+head, body, foot, quiet, state), `mpn-infobox`, `mpn-stat-*`, `mpn-meter`, `mpn-kv` | | Feedback | `mpn-banner`, `mpn-toast`, `mpn-progress`, `mpn-spinner`, `mpn-dots`, `mpn-skeleton`, `mpn-empty` | | Data | `mpn-table` (striped, bordered, compact, fixed, flat, quiet, stack), sort, filter, bulk select, `mpn-pagination` | | Forms | input, select, textarea, checkbox, radio, switch, range, OTP, tags, addon, drop zone, choice grid, validation states, date picker, searchable select, colour picker | | Navigation | sidebar nav with collapsible groups, `mpn-tabs`, `mpn-crumbs`, `mpn-stepper`, `mpn-accordion`, `mpn-tree` | | Overlays | `mpn-modal`, `mpn-drawer`, `mpn-menu`, `mpn-popover`, `mpn-palette`, `mpn-tooltip` | | Charts | area, line, spark, bars, donut, gauge, stacked bar, heat matrix, meter rows — all hand-drawn SVG | | Content | `mpn-list`, `mpn-media`, `mpn-comment`, `mpn-file-row`, `mpn-feed`, `mpn-timeline` | | Code | `mpn-code`, `mpn-term`, `mpn-log`, `mpn-diff` | | Workspace | `mpn-cal`, `mpn-board`, `mpn-chat`, `mpn-topo`, `mpn-split` | ## Right-to-left and print `dir="rtl"` on `<html>` is the whole switch. Every directional rule is a logical property, so `base/rtl.css` only has to fix what has no logical form — transforms, inset shadows, asymmetric radii, the select arrow. The verifier fails the build on any `margin-left` or `border-right` outside that file. `base/print.css` relights the theme for paper, drops chrome and overlays, repeats table headers on every page and keeps rows from breaking mid-way. Test it on `pages/invoice.html`. ## Structure ``` src/css/ tokens/ base/ components/ · the stylesheets src/js/ theme.js ui.js widgets.js src/sprites/ icons.svg illustrations.svg build/ six Node scripts, standard library only dist/ what you copy: bundled css, js, sprites pages/ 38 demo pages starter/ minimal copy-me page docs/ guides and decision records ``` ``` node build/index.mjs # build everything node build/serve.mjs # http://localhost:8777 ``` There is nothing to `npm install`. Keeping it that way is a design constraint, not an accident. `build/verify.mjs` runs on every build and in CI. It fails on an undeclared token, a class used but never defined, a missing icon symbol, a broken link, a page missing its theme script, or a physical CSS property that would break RTL. Fix the cause, never the check. ## No webfonts, no icon font, no CDN System font stack for prose; monospace for anything a machine produced or a human has to type — identifiers, states, addresses, sizes, durations. Icons are an inline SVG sprite. This is not minimalism for its own sake. A console that fetches nothing renders identically when it is served from a single binary on an air-gapped node. ## Contributing See [CONTRIBUTING.md](CONTRIBUTING.md). The public API is the set of `mpn-*` classes, `--mpn-*` tokens and `data-mpn-*` attributes; renaming any of them is a breaking change. ## License [MIT](LICENSE)
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

AdminLTE
基于 HTML、Bootstrap 5 和原生 JavaScript 的管理后台模板。Astro 用于构建文档;React、Vue 与 Angular 版本分别位于其他仓库。
HTML · 后台

gentelella
Free admin dashboard template — vanilla JS, SCSS, Vite 8. No Bootstrap, no jQuery.
HTML · 后台

coreui-free-bootstrap-admin-template
Free Bootstrap Admin & Dashboard Template Built for AI-Assisted Development
HTML · 后台

dashboards
Responsive dashboard templates 📊✨
HTML · 后台

SB Admin 2
SB Admin 2 是 Start Bootstrap 推出的开源后台模板,基于 Bootstrap 构建,整体风格偏向经典管理界面。
HTML · 后台

Adminator-admin-dashboard
Adminator is easy to use and well design admin dashboard template with dark mode for web apps, websites, servi…
HTML · 后台
