HalationStudio Portfolio
Portfolio một trang cho studio thiết kế và motion, với dòng tiêu đề phát sáng như ánh đèn trên phim nhựa
Chưa mở bán
Sản phẩm này sắp mua được. Để lại email, tiệm báo bạn ngay khi mở bán.
- Trả một lần, dùng trọn đời
- Cập nhật miễn phí trọn đời
- Đủ mã nguồn: HTML / CSS / JS + React
Đang chạy trực tiếp
Giới thiệu
Portfolio cho một studio muốn được nhớ đến, chứ không chỉ được nhìn thấy. Halation là tên của quầng sáng ấm loang quanh nguồn sáng mạnh trên phim nhựa, và cả trang được dựng quanh ý đó: dòng tiêu đề hiện ra từng chữ, một từ loé sáng rồi dịu lại thành quầng sáng nhẹ. Bên dưới là bố cục tĩnh, kiểu tạp chí, để sản phẩm tự lên tiếng.
- Chữ hiển thị rộng, đậm, đi cùng một chữ serif nghiêng làm điểm nhấn — tất cả từ font có sẵn của hệ thống
- Lưới dự án tự sắp xếp lại khi lọc, cứ mỗi dự án thứ ba lại có một thẻ trải hết chiều ngang
- Tám hình minh hoạ tạo bằng CSS (túi cà phê dưới bắc cực quang, hoàng hôn của liên hoan phim, đĩa than trong bìa…) nên bản demo trông hoàn chỉnh trước khi bạn thêm ảnh nào
- Header kính mờ, hạt phim và một nguồn sáng "thở" chậm — ở cả giao diện sáng lẫn tối
- Nội dung mẫu chân thật cho một studio giả định ở Lisbon, sẵn sàng thay bằng của bạn
Có hai bản. Bản HTML là một trang mở và sửa được bằng trình soạn thảo bất kỳ, đưa lên hosting nào
cũng chạy. Bản React là dự án Vite + TypeScript hoàn chỉnh: mọi chữ nằm trong một file
content.ts, chạy bằng npm install && npm run dev.
Tính năng · 9
- Trọn một trang: header, hero hiện từng chữ, dải dịch vụ chạy ngang, lưới dự án có bộ lọc, giới thiệu studio với số liệu đếm lên, dịch vụ và quy trình, nhận xét khách hàng, form liên hệ, footer
- Hai bản: HTML/CSS/JS tĩnh sửa trực tiếp, và một dự án Vite + React + TypeScript chạy được ngay
- Tám dự án mẫu với hình minh hoạ tạo bằng CSS — không ảnh phải mua bản quyền, không web font, không gọi ra ngoài
- Giao diện sáng và tối: theo hệ thống, nhớ lựa chọn của người xem
- Form liên hệ báo lỗi rõ ràng, cụ thể; nối với Formspree hay dịch vụ form bất kỳ chỉ bằng một thuộc tính
- Mọi màu, font, bo góc và thời gian chuyển động đều là CSS custom property
- Responsive từ điện thoại 320 px tới màn hình rộng
- Script và stylesheet cộng lại chỉ khoảng 14 KB sau gzip
- Không phụ thuộc thư viện nào ngoài React ở bản React
Cách dùng
Mở index.html bằng trình soạn thảo: mọi chữ trên trang đều viết trực tiếp ở đây, nên công cụ tìm
kiếm đọc được. File này gắn hai file nằm cạnh nó:
<link rel="stylesheet" href="studio-portfolio.css" />
<script src="studio-portfolio.js" defer></script>- Dự án: mỗi dự án là một
<li class="sp-work__item">, chép thêm để có thêm dự án.data-categories="branding motion"quyết định bộ lọc nào hiện nó (nút lọc dùng cùng tên trongdata-filter). - Ảnh: thay
<div class="sp-art" data-art="…">của dự án bằng<img class="sp-art" src="work/du-an.jpg" alt="…" />. Tám kiểu hình tạo sẵn làaurora,reel,field,kiln,vinyl,specimen,moonvàpeak. - Số liệu:
<span data-countup="140" data-suffix="+">140+</span>đếm lên tớidata-countup(có thêmdata-prefix,data-decimals). Giữ giá trị cuối cùng làm nội dung chữ. - Tiêu đề: script tách
<h1 data-split>thành từng chữ cái; bọc từ cần phát sáng trong<em>.
Script tự gắn mọi hành vi theo data attribute khi trang tải xong. Với phần HTML thêm vào sau, gọi
StudioPortfolio.init(container); hàm này trả về một hàm để gỡ ra. Mã nguồn dễ đọc nằm trong
src/ (src/core/ gồm mỗi hành vi một module nhỏ) nếu bạn muốn build lại.
Bản tải về là một dự án Vite + React 19 + TypeScript hoàn chỉnh:
npm install
npm run dev # http://localhost:5173
npm run build # file tĩnh trong dist/src/app/content.ts— mọi chữ, dự án, con số và đường link. Sửa ở đây là trang đổi theo.src/app/sections/— mỗi phần của trang là một component;src/app/ui/— các mảnh nhỏ dùng chung.src/core/— hành vi (giao diện sáng/tối, menu, bộ lọc, đếm số, form…), cùng một mã với bản HTML, gắn vào qua hookuseBehaviour.src/studio-portfolio.css— stylesheet duy nhất, dùng chung cho cả hai bản.
Khi không có action, form chỉ kiểm tra các ô rồi hiện lời cảm ơn, nên bản demo chạy được cả khi
không có mạng. Để nhận tin nhắn, điền địa chỉ của một dịch vụ form — Formspree, Getform, Basin hoặc
endpoint của bạn, miễn là nhận form POST và trả về mã 2xx:
<form class="sp-form" action="https://formspree.io/f/ma-form-cua-ban" method="post" novalidate …>Với React, đặt action trong CONTACT ở content.ts. Dữ liệu được gửi dạng form data kèm
Accept: application/json; nếu dịch vụ báo lỗi, người xem sẽ thấy lời nhắn mời thử lại hoặc gửi
email trực tiếp. Ô ẩn _gotcha chặn các bot spam đơn giản (Formspree cũng đọc ô này).
Lời báo lỗi đặt ngay trên từng ô: data-error-required, data-error-short (cho minlength) và
data-error-email.
Mọi thứ là custom property trên :root, ở đầu file studio-portfolio.css. Màu được viết dạng
light-dark(sáng, tối), nên một dòng lo cho cả hai giao diện.
| Biến | Đổi gì |
|---|---|
--sp-bg, --sp-bg-raised, --sp-text, --sp-muted, --sp-line |
Màu nền trang, nền ô nhập, màu chữ, đường kẻ mảnh |
--sp-ember, --sp-violet, --sp-cyan |
Màu quầng sáng: chữ nhấn, nguồn sáng, điểm nhấn |
--sp-cta, --sp-cta-hover, --sp-on-cta |
Nút chính và chữ trên nút |
--sp-focus, --sp-danger, --sp-success |
Viền focus, lỗi của form, chấm "đang nhận dự án" |
--sp-glow-strength |
Độ đậm của quầng sáng (đặt riêng cho từng giao diện) |
--sp-font-display, --sp-font-body, --sp-font-accent, --sp-font-mono |
Bốn vai trò chữ |
--sp-display-stretch, --sp-display-weight |
Độ rộng và độ đậm của chữ hiển thị |
--sp-radius-lg, --sp-radius, --sp-radius-sm, --sp-max, --sp-gutter |
Bo góc và bố cục |
--sp-ease, --sp-letter-stagger, --sp-marquee-duration, --sp-reveal-duration |
Chuyển động |
Font: trang chỉ dùng font hệ thống nên không tải gì thêm. Muốn dùng font riêng, thêm
@font-face (hoặc stylesheet của dịch vụ font) rồi đặt, ví dụ,
--sp-font-display: "Font Cua Ban", sans-serif;.
Giao diện: data-theme="light" hoặc "dark" trên <html> cố định giao diện lúc đầu; không có
thì theo hệ thống của người xem. Nút chuyển nhớ lựa chọn của người xem trong localStorage
(studio-portfolio-theme).
Cả hai bản đều là file tĩnh: tải thư mục bản HTML, hoặc thư mục dist/ của bản React sau khi
npm run build, lên Netlify, Vercel, Cloudflare Pages, GitHub Pages hay hosting bất kỳ.
Hỏi về sản phẩm này
Chưa chắc có hợp dự án của bạn? Cứ hỏi — câu trả lời lấy từ chính trang này.
Lịch sử phiên bản
1.0.0First releaseMới nhất
One-page studio portfolio in two builds: static HTML/CSS/JS and a Vite + React + TypeScript project. Letter-by-letter hero, filterable work grid with generated artwork, count-up stats, process, testimonials, validated contact form, light and dark themes.
- Bản sửa lỗi và tính năng mới đều có ngay ở nút tải này — file tải về luôn là bản mới nhất.
Có thể bạn sẽ thích
- TemplatePortfolio
Dev Link-in-bio
Trang link-in-bio cho lập trình viên: dạng thẻ cho mọi người, và một terminal cho người tò mò
9.000đ
- TemplatePortfolio
Dev Link-in-bio
Trang link-in-bio cho lập trình viên: dạng thẻ cho mọi người, và một terminal cho người tò mò
$4.90


