TP020

Ánh Sáng — Portfolio nhiếp ảnh

Portfolio cho nhiếp ảnh gia: trang chủ là bức tường ảnh vô tận kéo mọi hướng, mặt phẳng cong như ống kính mắt cá theo tốc độ kéo, tách màu RGB; bấm để mở ảnh toàn màn hình kèm EXIF.

Điểm nổi bật
Trong gói tải về

Portfolio cho nhiếp ảnh gia, studio, designer: trang chủ là bức tường ảnh vô tận kéo mọi hướng, cong như ống kính mắt cá theo tốc độ kéo, tách màu RGB; bấm để mở ảnh toàn màn hình kèm EXIF.

Chạy thử

Cần Node.js 18+.

npm install
npm run dev       # mở http://localhost:5173
npm run build     # xuất bản tĩnh vào dist/ — upload lên hosting bất kỳ

Mặc định trang mở tiếng Việt; thêm ?lang=en để mở tiếng Anh.

Cấu trúc

index.html            Khung trang (mọi section)
src/wall.js           Bức tường ảnh WebGL vô tận (kéo, quán tính, uốn cong, tách màu, chọn ảnh)
src/locales.js        TOÀN BỘ nội dung chữ (vi + en) — sửa ở đây
src/main.js           Ghép trang: preloader, cuộn, tương tác, form
src/style.css         Giao diện: biến màu/font ở `:root`, bố cục, responsive
src/fx.js + fx.css    Bộ motion: preloader, tách chữ, con trỏ, nút từ tính, marquee, đếm số, parallax, mở ảnh
src/smooth-scroll.js  Cuộn mượt (Lenis)
src/i18n.js           Chuyển ngôn ngữ (data-i18n)
public/images/        Ảnh webp (+ `*-depth.webp` = bản đồ độ sâu)
asset-prompts.json    Prompt tạo lại từng ảnh bằng AI
PROMPT.md             Prompt dựng lại trang bằng AI builder

Tuỳ biến nhanh

Muốn đổiSửa ở
Chữ, giá, địa chỉsrc/locales.js
Màu nền / chữ / fontbiến :root trong src/style.css + link Google Fonts trong index.html
Ảnh & EXIFmảng PHOTOS trong src/main.js + ph.<i>.t/p trong locales
Bố cục tường ảnhmảng LAYOUT (ảnh, x, y, rộng, cao) và TILE_W/H trong src/wall.js
Độ cong / tách màuuCurve, speed * 0.012 (vertex) và uVelocity * 0.0035 (fragment) trong src/wall.js
Dải phim tác phẩm chọn lọcmảng FILM trong src/main.js

Ảnh

Ghi chú