ViteReact作品集

Portfolio-Template-27 — Vite 作品集模板

作者 Muhammad112233-creator

Portfolio-Template-27 是一个基于 React 18、GSAP、Lenis、Three.js 与 Vite 的创意开发者作品集模板,包含 3D 主视觉、滚动动画、案例研究与两步联系表单,全部文本集中在 src/data/content.js 中修改。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

2 个预览视图
桌面端首页1 / 2
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 2

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-15查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

预加载器包含真实图片与字体预加载、0 到 100 计数以及旋转字母环散开动画

02

3D 主视觉使用 React Three Fiber 构建程序化石堆,跟随鼠标并在滚动时下沉

03

滚动驱动的宣言区块逐字点亮,签名自行绘制,里程表同步跳动

04

作品列表为之字形布局,封面图带惯性与倾斜跟随光标

05

页面过渡以鼠尾草色幕布逐字母拼出目标页面名称

06

联系表单为两步式,含校验、预算胶囊按钮与发送完成页,但默认不发送邮件

模板详细介绍

该模板面向创意开发者,提供一套带丰富滚动动效的作品集页面。README 说明其技术栈为 React 18、GSAP + ScrollTrigger、@gsap/react、Lenis、Three.js + React Three Fiber、Swiper、Vite 与 Fontsource 自托管字体(Bebas Neue、Archivo)。页面结构包含 Home、About、Case、Sent 与 404,组件涵盖 Loader、Header、Cursor、Footer 与按钮,区块包括 Hero、Statement、About、Awards、Works 与 Expertise。

功能方面,README 列出预加载器、3D 石堆主视觉、随滚动点亮的宣言、字母散落动画、奖项表格、之字形作品列表、页面过渡、自定义光标、滚动按钮、两步表单、复制邮箱、案例研究页、响应式布局与 prefers-reduced-motion 支持。联系表单目前只做校验并跳转到 /sent,不会真正发送邮件,需按 README 接入 Formspree 才能接收消息。

定制入口明确:所有文本、链接、项目、奖项、技能与关于页内容集中在 src/data/content.js;图片替换 src/assets/img/ 下同名文件(portrait.jpg、work-1.jpg 至 work-6.jpg);颜色令牌在 src/styles/base.css 顶部;3D 对象在 src/three/Cairn.jsx 的 STONES 数组中调整。README 未说明模板的生产就绪程度、浏览器兼容范围或性能表现。

ViteReact作品集

适合你的项目吗?

适用场景

  • 为创意开发者或设计师搭建个人作品集网站
  • 展示项目案例,每个项目有独立页面与 Swiper 滑块
  • 在作品集中加入 3D 主视觉与滚动叙事动效
  • 通过 GitHub Pages 部署静态作品集站点

适合人群

  • 熟悉 React 与 Vite 的前端开发者
  • 希望快速定制文本与图片、不深入动效代码的创作者
  • 需要案例研究页与联系表单的作品集使用者
  • 接受自行接入表单服务以接收消息的开发者

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    需要 Node.js 18 或更高版本

  2. 2

    安装依赖:npm install;本地运行:npm run dev(默认 http://localhost:5173)

  3. 3

    生产构建:npm run build,输出到 /dist;预览构建:npm run preview(默认 http://localhost:4173)

  4. 4

    联系表单默认不发送邮件,需在 src/components/ContactForm.jsx 的 send() 中接入 Formspree 等服务的 fetch 请求

  5. 5

    文本与项目数据集中在 src/data/content.js,图片替换 src/assets/img/ 下同名文件,颜色令牌在 src/styles/base.css 顶部

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • README 提及 Formspree 表单服务;真实提交需配置服务端点,其使用额度与费用需单独核对。
  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
  • 联系表单默认只做校验并跳转到 /sent,不会真正发送邮件;如需接收消息必须自行接入第三方表单服务。
  • 要接收表单消息需在 formspree.io 创建免费表单,并在 ContactForm.jsx 的 send() 中替换为对应的 fetch 请求,即依赖外部服务。
  • 模板中的肖像与项目封面为 AI 生成的占位图,需替换为自己的作品后再使用。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

The form validates and goes to `/sent`, but it doesn't send email yet.

README 原文

To receive messages, create a free form at [formspree.io](https://formspree.io), then in `src/components/ContactForm.jsx` replace the comment inside `send()` with:

README 原文

- Code, copy and imagery are original to this template; the portrait and project covers are AI-generated placeholders, so replace them with your own work.

README 原文
https://github.com/Muhammad112233-creator/Portfolio-Template-27/blob/main/LICENSEhttps://github.com/Muhammad112233-creator/Portfolio-Template-27/blob/main/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-15。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 85 / 100
技术栈
Vite · React
网站类型
作品集
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-10-15
截图检查日期
2026-10-15

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Vite。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

审核声明: codex-user-requested-batch-review-20261017 · 2026-10-16

查看当时使用的来源资料

SHA-256: a00c4a727d3953ded848e4b4d8ea5bb40feb298dd137abeb450e0f7f9a536ec0

2026-10-15T13:48:23.929Z

来源文件 / 仓库
<div align="center">

<img src="docs/readme/hero.svg" alt="Monochrome Folio — animated banner" width="100%" />

<img src="docs/readme/typing.svg" alt="features ticker" width="100%" />

<p>
  <img src="https://img.shields.io/badge/React-18-10120f?style=for-the-badge&logo=react&logoColor=61DAFB" alt="React" />
  <img src="https://img.shields.io/badge/GSAP-3-10120f?style=for-the-badge&logo=greensock&logoColor=88CE02" alt="GSAP" />
  <img src="https://img.shields.io/badge/Lenis-smooth_scroll-10120f?style=for-the-badge&logoColor=white" alt="Lenis" />
  <img src="https://img.shields.io/badge/Three.js-R3F-10120f?style=for-the-badge&logo=threedotjs&logoColor=white" alt="Three.js" />
  <img src="https://img.shields.io/badge/Vite-5-10120f?style=for-the-badge&logo=vite&logoColor=FFD62E" alt="Vite" />
</p>
<p>
  <img src="https://img.shields.io/badge/license-MIT-c2cabb?style=flat-square" alt="MIT" />
  <img src="https://img.shields.io/badge/responsive-320px_→_4K-c2cabb?style=flat-square" alt="Responsive" />
  <img src="https://img.shields.io/badge/deploy-GitHub_Pages-c2cabb?style=flat-square&logo=github" alt="GitHub Pages" />
  <img src="https://img.shields.io/badge/PRs-welcome-c2cabb?style=flat-square" alt="PRs welcome" />
</p>

**A quiet, motion-rich portfolio template for creative developers.**
<br/>
Sage and charcoal tones, condensed type, and scroll that tells a story.

[Live demo](https://Muhammad112233-creator.github.io/Portfolio-Template-27/) ·
[Quick start](#-quick-start) ·
[Customize](#-customize) ·
[Deploy](#-deploy)

</div>

<img src="docs/readme/divider.svg" width="100%" alt="" />

<img src="docs/readme/h-preview.svg" width="100%" alt="Preview" />

<table>
  <tr>
    <td width="66%"><img src="docs/readme/shot-hero.jpg" alt="3D hero" /></td>
    <td width="34%" rowspan="2" align="center"><img src="docs/readme/shot-mobile.jpg" alt="Mobile" width="90%" /></td>
  </tr>
  <tr>
    <td><img src="docs/readme/shot-about.jpg" alt="About section" /></td>
  </tr>
  <tr>
    <td><img src="docs/readme/shot-works.jpg" alt="Works list with hover preview" /></td>
    <td><img src="docs/readme/shot-awards.jpg" alt="Awards" /></td>
  </tr>
</table>

<img src="docs/readme/divider.svg" width="100%" alt="" />

<img src="docs/readme/h-features.svg" width="100%" alt="Features" />

|     | Feature              | What it does                                                                                              |
| :-: | -------------------- | --------------------------------------------------------------------------------------------------------- |
|  ◐  | **Preloader**        | Real image and font preloading, a 0 → 100 counter, and a rotating ring of letters that scatters on finish |
|  ▲  | **3D hero**          | A procedural pebble cairn (React Three Fiber) that follows the mouse and sinks as you scroll              |
|  ▤  | **Pinned manifesto** | Letters brighten one by one with scroll, a signature draws itself, and an odometer ticks along            |
|  ✺  | **Letter scatter**   | Loose glyphs fly in from across the screen and land as a sentence                                         |
|  ⓘ  | **Awards table**     | The counter rolls up, lines draw in, and parallax hills drift underneath                                  |
|  ⌖  | **Works list**       | Zig-zag project list; the cover image follows the cursor with inertia and tilt                            |
|  ↻  | **Page transitions** | A sage curtain spells out the destination letter by letter                                                |
|  ●  | **Custom cursor**    | Dot + lagging ring; grows on links, shows “view” on projects, hidden on touch devices                     |
|  ⇅  | **Rolling buttons**  | Pill buttons and nav links whose letters roll up on hover                                                 |
|  ✉  | **Two-step form**    | Validation, then CONFIRM turns into SEND; budget pills; a “sent” page                                     |
|  ⧉  | **Copy email**       | Click the footer email to copy it, with an animated confirmation                                          |
|  ▢  | **Case studies**     | One page per project with a Swiper slider and a “next case” link                                          |
| 📱  | **Responsive**       | Tuned at 1100 / 950 / 768 / 650 / 450 px, with a full-screen mobile menu                                  |
| ♿  | **Reduced motion**   | Respects `prefers-reduced-motion`                                                                         |

<img src="docs/readme/divider.svg" width="100%" alt="" />

<img src="docs/readme/h-stack.svg" width="100%" alt="Tech stack" />

```text
React 18            UI + routing (react-router, HashRouter → works on GitHub Pages)
GSAP + ScrollTrigger  every timeline, pin and scrub
@gsap/react         useGSAP() for automatic cleanup
Lenis               inertial smooth scrolling, synced to the GSAP ticker
Three.js + R3F      the 3D cairn in the hero
Swiper              case-study slider
Vite                dev server + production build
Fontsource          self-hosted Bebas Neue + Archivo (variable width)
```

<img src="docs/readme/divider.svg" width="100%" alt="" />

<img src="docs/readme/h-structure.svg" width="100%" alt="Project structure" />

```text
monochrome-folio/
├─ .github/workflows/deploy.yml   ← auto-build & publish to GitHub Pages
├─ docs/readme/                   ← animated SVGs + screenshots for this README
├─ public/                        ← favicon, social share image
├─ src/
│  ├─ assets/img/                 ← portrait + project covers (swap these)
│  ├─ data/content.js             ← ✎ ALL TEXT LIVES HERE
│  ├─ components/                 ← Loader, Header, Cursor, Footer, buttons…
│  ├─ sections/                   ← Hero, Statement, About, Awards, Works, Expertise
│  ├─ pages/                      ← Home, About, Case, Sent, 404
│  ├─ three/Cairn.jsx             ← procedural 3D scene
│  ├─ hooks/                      ← Lenis scroll + page-transition providers
│  └─ styles/                     ← base / sections / pages CSS
├─ index.html
├─ vite.config.js
└─ package.json
```

<img src="docs/readme/divider.svg" width="100%" alt="" />

<img src="docs/readme/h-start.svg" width="100%" alt="Quick start" />

> Requires **Node.js 18+** ([download](https://nodejs.org)).

```bash
# 1. install
npm install

# 2. run locally → http://localhost:5173
npm run dev

# 3. production build → /dist
npm run build

# 4. preview the build → http://localhost:4173
npm run preview
```

<img src="docs/readme/divider.svg" width="100%" alt="" />

<img src="docs/readme/h-customize.svg" width="100%" alt="Customize" />

<details open>
<summary><b>1 · Text, links, projects</b></summary>

Open **`src/data/content.js`**. Name, role, email, socials, statement, awards, projects, skills and the about page are all in this one file. Add or remove items in any array and the layout adapts.

</details>

<details>
<summary><b>2 · Images</b></summary>

Replace files in `src/assets/img/` and keep the same names (`portrait.jpg`, `work-1.jpg` … `work-6.jpg`), or import new ones at the top of `content.js`.
Recommended sizes: portrait **1000×1250**, covers **1600×1000**, JPG at around 80% quality.

</details>

<details>
<summary><b>3 · Colours & fonts</b></summary>

Edit the tokens at the top of `src/styles/base.css`:

```css
--ink: #10120f; /* near-black */
--sage: #c2cabb; /* main light tone */
--olive: #3b4039; /* secondary text */
```

</details>

<details>
<summary><b>4 · Contact form</b></summary>

The form validates and goes to `/sent`, but it doesn't send email yet.
To receive messages, create a free form at [formspree.io](https://formspree.io), then in `src/components/ContactForm.jsx` replace the comment inside `send()` with:

```js
await fetch("https://formspree.io/f/YOUR_ID", {
  method: "POST",
  headers: { "Content-Type": "application/json", Accept: "application/json" },
  body: JSON.stringify({ ...f, budget: contact.budgets[budget] }),
});
```

</details>

<details>
<summary><b>5 · 3D object</b></summary>

`src/three/Cairn.jsx` → edit the `STONES` array (size, colour, roughness) or swap in your own mesh.

</details>

<img src="docs/readme/divider.svg" width="100%" alt="" />

<img src="docs/readme/h-credits.svg" width="100%" alt="Credits & license" />

- Code, copy and imagery are original to this template; the portrait and project covers are AI-generated placeholders, so replace them with your own work.
- Fonts: [Bebas Neue](https://fonts.google.com/specimen/Bebas+Neue) and [Archivo](https://fonts.google.com/specimen/Archivo), both under the SIL Open Font License.
- Released under the **MIT License**. Use it, ship it, sell client work with it. A star ⭐ is appreciated.

<div align="center">
<br/>
<img src="docs/readme/divider.svg" width="60%" alt="" />
<br/>
<sub>Made slowly, by hand · <b>Arin Vale</b> · Lahore</sub>
</div>

<div align="center">

## 🌟 Support the Project

If you find this template useful, please consider giving it a star! It helps others discover the repository and supports future development.

</div>

<img src="docs/readme/divider.svg" width="100%" alt="" />
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。