Tiệm Công Nghệ

Đang hiện gợi ý.

Đang mở danh mục của tiệm…
↑↓ để di chuyển↵ để mởesc để đóng
Tìm kiếm Tiệm Công Nghệ
Componentv1.0.0~4,9 KB (gzip)

Animated Tabs

Thanh tab có viên kính trượt giãn từ tab này sang tab kia, nội dung lướt theo cùng hướng

Miễn phíMiễn phí
Định dạng

.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

Phiên bản
Độ rộng khung xem
Thu phóng

Giới thiệu

Thanh tab cho thấy bạn đang đi đâu. Chọn một tab, viên kính mờ giãn ra về phía nó — mép trước đi trước, mép sau theo sát — rồi thu gọn lại trên tab mới. Nội dung cũng chuyển theo: phần mới lướt vào từ phía viên kính vừa đi tới, phần cũ mờ dần đi.

  • Hai kiểu: viên kính nằm sau chữ, hoặc một đường gạch chân gradient mảnh
  • Ngang hoặc dọc; trên màn hình nhỏ thanh tab dài cuộn ngang được và luôn giữ tab đang chọn trong tầm nhìn
  • Bám theo bố cục: thanh chỉ báo tự đo lại khi trang đổi kích thước hoặc web font tải xong
  • Mọi màu, độ bo góc và thời gian đều là CSS custom property; script chỉ ghi vị trí
  • Không cần cài gì: một file CSS và một script nhỏ, hoặc một component React

Tính năng

  • Thanh chỉ báo giãn ra phủ cả hai tab rồi mới thu gọn về tab mới
  • Nội dung mờ dần và trượt theo hướng di chuyển
  • Kiểu viên kính và kiểu gạch chân, ngang hoặc dọc, đủ sáng và tối
  • Thanh tab dài cuộn ngang được và luôn giữ tab đang chọn trong tầm nhìn
  • 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, khoảng 5 KB sau gzip

Cách dùng

Gắn stylesheet và script một lần, rồi thêm data-tabs vào mỗi bộ tab:

HTML
<link rel="stylesheet" href="animated-tabs.css" />
<script src="animated-tabs.js" defer></script>

<div class="animated-tabs" data-tabs>
  <div class="animated-tabs__list" role="tablist" aria-label="Cài đặt">
    <button class="animated-tabs__tab" role="tab" type="button" aria-selected="true">Chung</button>
    <button class="animated-tabs__tab" role="tab" type="button">Thanh toán</button>
  </div>
  <div class="animated-tabs__panel" role="tabpanel">…</div>
  <div class="animated-tabs__panel" role="tabpanel" hidden>…</div>
</div>

Tab được ghép với panel theo thứ tự (hoặc theo aria-controls); script tự điền id và các thuộc tính ARIA còn thiếu. Để các panel là con trực tiếp của .animated-tabs và gắn hidden cho mọi panel trừ panel đầu, để trang hiển thị đúng ngay cả trước khi script chạy. Tab có disabled sẽ bị bỏ qua.

Tuỳ chọn qua data attribute trên phần tử gốc: data-variant="underline" (mặc định: viên kính), data-orientation="vertical", data-activation="manual" (mũi tên chỉ di chuyển focus, Enter / Space mới chọn).

Mỗi lần đổi tab đều phát sự kiện tabchange (có nổi bọt), dù do người dùng hay do script:

JavaScript
document.querySelector("#settings").addEventListener("tabchange", (event) => {
  console.log(event.detail.value, event.detail.previousValue); // và .index, .previousIndex
});

AnimatedTabs.get(element).select("billing"); // theo data-value (không có thì theo id), hoặc theo vị trí

Tab thêm vào sau khi trang đã tải: AnimatedTabs.init(container) — hàm này trả về một hàm để gỡ ra. AnimatedTabs.createTabs(element, { activation, orientation }) khởi tạo trực tiếp một phần tử.

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.

Câu trả lời do AI viết dựa trên trang này và có thể sai. Nội dung trên trang mới là chuẩn.

Lịch sử phiên bản

  1. 1.0.0First releaseMới nhất

    Plain HTML/CSS/JS and React builds. Pill and underline styles, horizontal and vertical lists, automatic and manual activation, full keyboard and reduced-motion support.

  2. 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.
  • ComponentĐiều hướng

    Magnify Dock

    Thanh dock kính mờ: icon phồng lên dưới con trỏ, các icon bên cạnh lướt sang nhường chỗ

    Miễn phí