Spotlight Card
Thẻ kính mờ với vệt sáng dịu bám theo con trỏ — và lan sang cả lưới thẻ
.zip · HTML / CSS / JS · v1.0.0
Miễn phí — không cần tài khoản hay email. Luôn là bản mới nhất.
Đang chạy trực tiếp
Giới thiệu
Những tấm thẻ bắt sáng. Một quầng sáng dịu lướt theo con trỏ trên mặt kính mờ, còn viền thẻ sáng lên ở phía con trỏ đang ở gần. Xếp vài thẻ thành lưới là ánh sáng lan từ thẻ này sang thẻ kế bên — đúng hiệu ứng spotlight bạn hay thấy ở những trang sản phẩm chỉn chu nhất, nay sẵn sàng cho bảng giá và danh sách tính năng của bạn.
- Mỗi lưới chỉ một listener, bao nhiêu thẻ cũng được: ánh sáng vượt qua cả khe hở giữa các thẻ
- Kiểu nổi bật cho gói bạn muốn khách chọn, thêm tuỳ chọn nghiêng thẻ về phía con trỏ
- Mọi màu sắc, kích thước đều là CSS custom property: màu nhấn, mặt kính, tầm lan của ánh sáng, bo góc, thời gian
- Script chỉ ghi vị trí, CSS lo vẽ ánh sáng, nên mượt và nhẹ
- Không cần cài gì: một file CSS và một script nhỏ, hoặc một file React
Tính năng
- Vệt sáng dịu bám theo con trỏ bên trong thẻ
- Viền sáng lên ở phía gần con trỏ nhất, kể cả khi con trỏ đang ở thẻ bên cạnh
- Một listener lo cả lưới thẻ: bảng giá, danh sách tính năng, dashboard
- Kiểu nổi bật có viền phát sáng sẵn, dành cho gói bạn muốn khách chọn
- Tuỳ chọn nghiêng 3D về phía con trỏ, mặc định tắt
- Dùng cho <article>, <a>, <li> hay bất kỳ thẻ nào, đủ sáng và tối
- Bản HTML/CSS/JS thuần và bản React (dùng được với Next.js)
- Không phụ thuộc thư viện, dưới 3 KB sau gzip
Cách dùng
Gắn stylesheet và script một lần. Đặt các thẻ trong một data-spotlight-group để ánh sáng lan từ
thẻ này sang thẻ khác; thẻ đứng riêng thì dùng data-spotlight:
<link rel="stylesheet" href="spotlight-card.css" />
<script src="spotlight-card.js" defer></script>
<div class="spotlight-group" data-spotlight-group>
<article class="spotlight-card">…</article>
<article class="spotlight-card" data-variant="featured">…</article>
<article class="spotlight-card">…</article>
</div>
<a class="spotlight-card" href="/changelog" data-spotlight>…</a>Mọi .spotlight-card nằm trong group đều do group chiếu sáng — kể cả thẻ thêm vào sau. Class
spotlight-group là một lưới tự co giãn có sẵn, không bắt buộc; bố cục nào cũng được. Muốn thẻ
dưới con trỏ nghiêng theo thì thêm data-spotlight-tilt (đơn vị độ, mặc định 0 = tắt; 4–8 là
vừa đẹp) vào group hoặc thẻ đứng riêng. Group hay thẻ thêm vào sau khi trang đã tải:
SpotlightCard.init(container) — hàm này trả về một hàm để gỡ ra.
Chép SpotlightCard.tsx, spotlight-card.css và thư mục core vào dự án:
import { SpotlightCard, SpotlightGroup } from "./SpotlightCard";
<SpotlightGroup tilt={5}>
<SpotlightCard>…</SpotlightCard>
<SpotlightCard variant="featured">…</SpotlightCard>
<SpotlightCard as="a" href="/team">…</SpotlightCard>
</SpotlightGroup>
<SpotlightCard as="section" tilt={6}>Thẻ đứng riêng</SpotlightCard>as chọn thẻ HTML (mặc định article cho thẻ, div cho group; dùng ul + li cũng được). Các
prop khác được chuyển xuống thẻ đó (className, id, onClick, aria-*…). Trong group, đặt
tilt trên group. React 18 hoặc 19.
File bắt đầu bằng "use client", nên dùng được trong mọi page hay server component. Với App
Router không cần làm gì thêm. Với Pages Router, chuyển dòng import CSS vào pages/_app.
Đặt các biến sau trên .spotlight-card (hoặc class của bạn):
| Biến | Đổi gì |
|---|---|
--spotlight-from, --spotlight-via, --spotlight-to |
Màu ánh sáng trên viền (tím, hồng, xanh ngọc) |
--spotlight-light, --spotlight-light-size |
Quầng sáng bên trong thẻ và bán kính của nó |
--spotlight-reach |
Ánh sáng trên viền toả xa bao nhiêu — cũng là độ lan sang thẻ bên cạnh |
--spotlight-surface, --spotlight-surface-top, --spotlight-blur |
Mặt kính mờ |
--spotlight-edge, --spotlight-border-width, --spotlight-sheen |
Viền lúc nghỉ và vệt sáng mép trên |
--spotlight-text, --spotlight-shadow, --spotlight-ring |
Màu chữ, bóng đổ, viền focus |
--spotlight-radius, --spotlight-padding |
Hình dạng và kích thước |
--spotlight-rest |
Độ sáng của viền tĩnh (thẻ nổi bật, màn hình cảm ứng) |
--spotlight-fade, --spotlight-follow, --spotlight-settle, --spotlight-ease |
Tốc độ ánh sáng mờ đi, tốc độ nghiêng theo và trở về |
--spotlight-perspective |
Độ sâu khi nghiêng |
Trên .spotlight-group: --spotlight-gap và --spotlight-min (độ rộng cột hẹp nhất). Màu dùng
light-dark(): tự theo color-scheme của trang.
Khi bật prefers-reduced-motion, thẻ không bao giờ nghiêng; vệt sáng vẫn bám theo con trỏ, vì
không có gì trên trang chuyển động — chỉ một quầng sáng đổi chỗ.
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
Plain HTML/CSS/JS and React builds. Pointer-following light, spill-over grid glow, featured style, optional tilt, keyboard, touch and reduced-motion support.
- 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
- ComponentThẻ
Swipe Card Stack
Chồng thẻ quẹt kiểu Tinder — kéo, búng, ném đi, có dấu đóng, hoàn tác và vật lý thật
Miễn phí


