零依赖:纯 HTML、CSS、JavaScript,无需框架或包管理器
forma-portfolio-template — HTML 作品集模板
作者 zhijun-yin
Forma 是一个零依赖的双语个人作品集模板,使用纯 HTML、CSS 和 JavaScript 构建,内置明暗主题、原创插画与 GitHub Pages 部署流程。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 2
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
内容集中在一个配置文件 assets/config.js 中
内置中英文切换与明暗主题,偏好可保存
包含作品筛选、项目弹窗、技能、时间线、文章和联系区块
所有插画与图标均为本地原创 SVG/CSS 资源,默认不请求外部字体
附带 GitHub Actions 工作流,可将静态文件部署到 GitHub Pages
模板详细介绍
Forma 是一个面向设计师、开发者等需要展示个人作品的人群的开源作品集模板。它不依赖任何框架或 npm 包,直接打开 index.html 即可预览,所有可配置内容集中在 assets/config.js 中,包括姓名、简介、项目、经历、手记以及可选的邮箱、简历和社交链接。模板默认提供中英文两种语言,语言和明暗主题偏好会被保存,并支持跟随系统主题。页面包含介绍、可筛选的作品列表、项目详情弹窗、技能、时间线、文章和联系方式等区块,同时处理了移动端菜单、键盘导航、焦点状态和减少动态效果等交互细节。
模板的视觉资源全部为本地文件,默认页面不包含分析工具、跟踪器、第三方嵌入服务或外部字体。仓库中的人物、组织、项目、日期和文章均为占位或虚构示例,未配置真实联系地址或社交账号,演示中的联系按钮只会显示说明而非发送消息。
部署方面,模板附带 GitHub Actions 工作流,可将 index.html 与 assets/ 目录打包并发布到 GitHub Pages,同一套静态文件也可托管在其他静态网站服务上。仓库还提供可选的检查与构建脚本,用于验证 JavaScript 语法、配置结构、本地资源路径、页面锚点和 URL 协议等,但需要 Node.js 22 或更新版本,且无需安装 npm 依赖。
适合你的项目吗?
适用场景
- 设计师或开发者搭建个人作品集网站
- 需要中英文双语展示个人介绍与项目
- 希望用纯静态文件部署到 GitHub Pages 或其他静态托管服务
- 作为前端练习或教学示例,学习无框架的交互与主题切换实现
适合人群
- 需要快速替换内容并上线的个人作品集
- 偏好无构建步骤、直接编辑 HTML/CSS/JS 的用户
- 需要明暗主题与双语界面的展示型网站
- 希望将源码保留在 GitHub 并通过 Actions 自动发布的用户
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
点击 GitHub 的 Use this template 创建仓库,或下载源码 ZIP
- 2
直接打开 index.html 即可预览,也可用 python -m http.server 8080 启动本地 HTTP 预览
- 3
在 assets/config.js 中替换姓名、简介、项目、经历、手记和可选链接
- 4
替换演示内容后将 showTemplateHints 设为 false,隐藏模板提示
- 5
部署时在仓库 Settings → Pages 中将 Source 设为 GitHub Actions,再推送提交或手动运行工作流
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据
https://github.com/zhijun-yin/forma-portfolio-template/blob/main/LICENSEhttps://github.com/zhijun-yin/forma-portfolio-template/blob/main/README.mdPermission is hereby granted, free of charge
许可证原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-02。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 83 / 100
- 技术栈
- HTML
- 网站类型
- 作品集
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-10-02
- 截图检查日期
- 2026-10-02
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 HTML。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。
查看当时使用的来源资料
SHA-256: c6408cb6b1970fff4e9b902b854a4bd9d88476fb0be7c81d3bd69002d58659bf
2026-10-02T21:29:26.736Z
来源文件 / 仓库<div align="center">
# Forma
**A little curiosity. A lot of possibility.**
A considered portfolio template for designers, developers, and curious people.
Plain HTML · CSS · JavaScript · English / 中文 · MIT
[Quick start](#quick-start) · [Customization](#make-it-yours) · [Deploy](#deploy-to-github-pages) · [中文说明](#中文说明)
</div>

**Your work deserves a little room to breathe.** Forma pairs forest green, warm paper, editorial type, and locally drawn illustrations with a practical, easily editable portfolio. No framework setup. No package installation. No remote font requests.
## Why Forma?
- **One content file.** Change your name, story, projects, notes, and optional links in `assets/config.js`.
- **Two languages.** English and Chinese, with persisted language preferences and fallback translations.
- **Two themes.** Light and dark, with saved preferences and optional system theme matching.
- **A complete portfolio.** Intro, filterable work, project dialogs, skills, timeline, writing, and contact.
- **Thoughtful interactions.** Mobile menu, keyboard navigation, native modal dialogs, visible focus states, and reduced motion support.
- **Local assets only.** No analytics, trackers, embedded third-party services, or external fonts in the default page.
- **Made to fork.** Relative asset paths work on GitHub project Pages; a small workflow checks and publishes the site.
All identities, organizations, projects, dates, and articles in this repository are **placeholders or fictional examples**. No real contact address or social profile is configured. The demo contact button opens an explanation rather than sending a message.
<details>
<summary>Mobile and dark theme previews</summary>
| Mobile | Dark theme |
| --- | --- |
|  |  |
</details>
## Quick start
1. Click **Use this template → Create a new repository** on GitHub, or download the source ZIP.
2. Open `index.html` in a modern browser. That's the entire setup.
3. Edit `assets/config.js` and refresh.
For a local HTTP preview, with Python installed:
```sh
python -m http.server 8080
```
Open `http://localhost:8080`. Serving files locally is optional; no installation or server is required to use the template.
## Make it yours
Start with `assets/config.js`:
```js
// Text can be a plain string, or a bilingual object.
name: { en: 'Your name', zh: '你的名字' },
role: { en: 'Your role', zh: '你的角色' },
// Leave these empty until you want them to be public.
email: '',
resumeUrl: '',
socials: [],
```
| What to change | Where |
| --- | --- |
| Name, headline, bio, skills, optional contact links | `assets/config.js` → `profile` |
| Browser title and search description | `assets/config.js` → `siteTitle`, `siteDescription` |
| Project cards, categories, details, links | `assets/config.js` → `projects` |
| Experience entries | `assets/config.js` → `experience` |
| Articles and reading times | `assets/config.js` → `notes` |
| Initial language and theme | `defaultLanguage`, `defaultTheme` |
| Hide fictional-content hints after customization | `showTemplateHints: false` |
| Colors, typography, spacing, responsive layout | `assets/styles.css` |
| Interface translations | `assets/app.js` → `ui` |
| Structure, illustration, wordmark, favicon | `index.html`, `assets/favicon.svg` |
For projects, use `category: 'design'`, `'development'`, or `'experiment'`. Choose `art: 'atlas'`, `'ground'`, `'hours'`, or `'generic'` for the included illustrations. Add or remove project objects as needed. The filters adapt to the categories present.
Use `notes: []` to hide the writing section and its navigation links. Use `experience: []` to hide the timeline. Social and résumé links remain hidden while empty.
After replacing the demo content, set `showTemplateHints: false` to hide the demo disclaimer and sample-timeline label.
Project and article URLs must start with `https://` or `http://`. Résumé URLs can also use a relative path such as `./assets/resume.pdf`. Configurable copy is rendered as text, so HTML in a title or description is not executed.
## Deploy to GitHub Pages
1. Create your copy using **Use this template**.
2. In your repository, open **Settings → Pages** and set **Source** to **GitHub Actions**.
3. Push a commit to `main`, or run **Actions → Check and deploy Forma → Run workflow**.
4. When deployment succeeds, find your site link in **Settings → Pages**.
The workflow runs the checks, copies `index.html` and `assets/` into `_site/`, and deploys only that directory. Repository docs, Git history, and local development files are not part of the website artifact. Assets placed in `assets/` are public, including any résumé you choose to add.
GitHub's [custom workflow documentation](https://docs.github.com/en/pages/getting-started-with-github-pages/using-custom-workflows-with-github-pages) describes the Pages publishing steps. The same static files can also be hosted on any static web host.
## Optional checks
With Node.js 22 or newer installed:
```sh
npm run check
npm run build
```
There are no npm dependencies to install. Checks validate JavaScript syntax, config structure, local asset paths, page anchors, URL schemes, and common credential patterns. These automated checks help catch mistakes; review everything you intentionally make public.
## File map
```text
index.html Page structure and hero illustration
assets/config.js Your content and optional public links
assets/app.js Interactions and interface translations
assets/styles.css Visual system and responsive styles
assets/favicon.svg Local vector icon
scripts/check.mjs Dependency-free source checks
scripts/build.mjs Static site packaging
.github/workflows/pages.yml Check and deploy to GitHub Pages
docs/ Screenshots and Chinese guide
```
## 中文说明
Forma 是一个可直接使用的个人主页开源模板,适合设计师、开发者,以及希望展示作品的人。默认的人物、项目、经历、日期与文章均为占位或虚构示例,未配置真实邮箱、简历或社交账号。
点击 **Use this template** 创建你的仓库,打开 `index.html` 即可预览。修改 `assets/config.js` 就能替换个人介绍、作品、技能与手记;点击右上角切换中英文和明暗主题。
部署时在 **Settings → Pages** 将 Source 设为 **GitHub Actions**,再提交修改或手动运行工作流。无需安装框架或 npm 依赖。
更详细的自定义说明见 [中文使用指南](docs/README.zh-CN.md)。
## License
[MIT](LICENSE). Use it for personal or commercial projects. Keep the license notice with redistributed source. All included illustrations are original SVG/CSS artwork; there are no stock photos or third-party image assets.
If Forma helps you build something, a star is a lovely way to help others find it.
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

simplefolio
⚡️ A minimal portfolio template for Developers
HTML · 作品集

Freelancer
Freelancer 是 Start Bootstrap 出品的单页作品集模板,专为自由职业者、设计师和小型工作室设计。 页面结构清晰,包含多个内容区块、响应式作品集网格,每个作品项目配有模态窗口展示详情。
HTML · 作品集

Resume
Resume 是 Start Bootstrap 推出的简历与 CV 主题,基于 Bootstrap 构建,采用固定侧边栏加内容区块的结构。
HTML · 作品集

Creative
Creative 是 Start Bootstrap 团队维护的一款单页营销模板,定位明确:为创意机构或产品服务提供一个以作品展示和行动号召为核心的落地页。
HTML · 企业官网

Grayscale
Grayscale 是 Start Bootstrap 出品的深色系单页 HTML 模板,基于 Bootstrap 构建。 它的视觉重心放在大尺寸首屏和清晰的内容分区上,整体氛围偏暗,适合摄影、活动或品牌叙事类网站。
HTML · 企业官网

startbootstrap-stylish-portfolio
Stylish Portfolio 是 Start Bootstrap 维护的单页作品集主题,基于 Bootstrap 构建,采用多个内容区块加离屏导航菜单的结构。
HTML · 作品集
