# Skeleton Khung chờ cho hàng danh sách, thẻ và chỉ số KPI khi dữ liệu đang tải. ## Khi nào dùng - Giữ nguyên bố cục trong lúc tải để màn hình không nhảy. - Tải ngắn, không rõ hình dạng nội dung thì dùng Spinner. ## Biến thể | Biến thể | Lớp | Dùng khi | |---|---|---| | Dòng chữ | `tt-skeleton` | Dòng chữ 14px | | Tiêu đề | `tt-skeleton--title` | Dòng 20px | | Tròn | `tt-skeleton--circle` | Avatar 44px | | Khối | `tt-skeleton--block` | Ảnh / biểu đồ 72px | | Độ rộng | `--w25` `--w50` `--w75` | Rút ngắn dòng | | Hàng | `tt-skeleton-row` (+ `__text`) | Hàng danh sách có avatar | | Thẻ | `tt-skeleton-card` | Thẻ / ô KPI | ## Cấu trúc ```html
Đang tải thẻ…
``` ## Trạng thái | Trạng thái | Hiệu ứng | |---|---| | Đang tải | Khối `fill-muted` có ánh sáng chạy 1,4s | | `prefers-reduced-motion` | Ẩn ánh sáng, chỉ còn khối tĩnh | ## Token sử dụng `fill-muted`, `line`, `panel`, `radius-6/8/10/14/round`, `space-6/8/10/12/14`. ## Khả năng tiếp cận - Vùng chứa `aria-busy="true"`; thêm một dòng `role="status"` ẩn "Đang tải…". - Khi có dữ liệu thật, bỏ `aria-busy` và thay khung bằng nội dung. ## Nên / Không nên | Nên | Không nên | |---|---| | Vẽ đúng số hàng và cỡ nội dung sẽ hiện | Dùng khung chờ mãi khi lỗi | | Dùng `--w*` để dòng dài ngắn tự nhiên | Dựng khung chờ quá khác nội dung thật | ## Nguồn Bổ sung có chủ đích: game không có khung chờ. Khối theo thang bo của hệ thống; keyframes `tt-skeleton-shine`.