TÓM TẮT

Giới Thiệu

Trong thời đại số, spinner (còn gọi là bánh quay) không chỉ là một công cụ giải trí mà còn là một yếu tố thiết kế quan trọng trong các trò chơi, ứng dụng di động, website và thậm chí là trong các dự án đồ họa UI/UX. Việc biết cách vẽ một spinner đẹp, mượt mà và chuyên nghiệp sẽ giúp bạn nâng cao giá trị thẩm mỹ cho sản phẩm của mình, đồng thời tạo ấn tượng tốt với người dùng. Bài viết này sẽ cung cấp cho bạn một hướng dẫn chi tiết, từng bước một, từ khái niệm cơ bản, lựa chọn công cụ, quy trình vẽ, tới các mẹo tối ưu hoá và áp dụng spinner trong các dự án thực tế.

Lưu ý: Bài viết này hướng tới người mới bắt đầu nhưng cũng cung cấp các kỹ thuật nâng cao để người đã có kinh nghiệm có thể tham khảo và cải tiến.

1. Spinner là gì? Các loại spinner phổ biến

1.1 Định nghĩa spinner

Spinner là một hình ảnh hoặc thành phần đồ họa được thiết kế để quay vòng liên tục hoặc quay theo một chu kỳ nhất định, thường được dùng để biểu thị trạng thái “đang tải”, “đang xử lý”, “đang chờ” hoặc để tạo hiệu ứng động thu hút người dùng.

1.2 Các loại spinner thường gặp

Loại spinner Đặc điểm Ứng dụng phổ biến
Spinner vòng tròn (Circular spinner) Hình tròn, các đoạn hoặc vòng mảnh quay liên tục. Loading screen, UI feedback.
Spinner dạng thanh (Bar spinner) Các thanh ngang hoặc dọc di chuyển hoặc thay đổi độ dài. Đọc file, tiến trình tải.
Spinner hình ảnh (Image spinner) Sử dụng hình ảnh tùy chỉnh (logo, biểu tượng). Thương hiệu, quảng cáo.
Spinner 3D Hiệu ứng chiều sâu, ánh sáng, bóng. Trò chơi, ứng dụng AR/VR.
Spinner dạng SVG Định dạng vector, dễ mở rộng, tùy chỉnh CSS. Web responsive, thiết kế UI.

2. Lựa chọn công cụ vẽ spinner

Cách Vẽ Spinner
Cách Vẽ Spinner

2.1 Phần mềm đồ họa raster

  • Adobe Photoshop: Tốt cho việc tạo spinner dạng bitmap, hỗ trợ layer animation.
  • GIMP: Phần mềm miễn phí, có tính năng animation cơ bản.

2.2 Phần mềm đồ họa vector

  • Adobe Illustrator: Tạo spinner dạng vector, dễ thay đổi kích thước mà không mất chất lượng.
  • Inkscape: Công cụ mở nguồn, hỗ trợ SVG animation.

2.3 Công cụ thiết kế UI/UX

  • Figma: Cho phép tạo spinner trong môi trường collaborative, hỗ trợ prototyping.
  • Sketch: Tích hợp plugin như “Lottie” để xuất spinner dưới dạng JSON.

2.4 Thư viện và công cụ code

  • CSS/HTML: Tạo spinner bằng CSS3 (keyframes, transform).
  • Lottie: Dùng After Effects + Bodymovin để xuất spinner dưới dạng JSON hoạt hình nhẹ.
  • Canvas / WebGL: Dành cho spinner phức tạp, 3D.

Kết luận: Nếu bạn muốn một spinner có thể mở rộng và tùy chỉnh linh hoạt, hãy ưu tiên vector (Illustrator, Inkscape, Figma). Nếu bạn cần một spinner nhanh, chỉ dùng CSS, thì CSS3 là lựa chọn tối ưu.

3. Quy trình vẽ spinner cơ bản bằng Adobe Illustrator

Bước 1: Tạo tài liệu mới

Cách Vẽ Spinner
Cách Vẽ Spinner
  • Mở Illustrator → File > New.
  • Kích thước đề xuất: 200 x 200 px (có thể thay đổi sau). Đặt chế độ màu RGB cho web hoặc CMYK cho in.

Bước 2: Vẽ hình tròn cơ bản

  • Chọn công cụ Ellipse (L).
  • Giữ Shift để tạo hình tròn hoàn hảo, kéo ra kích thước khoảng 150 px.
  • Đặt Fill là None, Stroke là màu bạn muốn (ví dụ: #3498db) và độ dày Stroke khoảng 10 pt.

Bước 3: Tạo phần “cắt” (để tạo hiệu ứng quay)

  • Vẽ một hình Rectangle (R) hoặc Sector (công cụ Polar Grid với 1 vòng và 1 sector) để cắt một phần của vòng tròn.
  • Đặt màu Fill là White hoặc Transparent và Stroke là None.
  • Đặt rectangle phía trên vòng tròn, chọn cả hai đối tượng → Pathfinder > Minus Front để tạo một đoạn “cắt” trên vòng tròn.

Bước 4: Nhân bản và sắp xếp các đoạn (nếu muốn nhiều “răng”)

  • Chọn vòng tròn đã cắt → Object > Transform > Rotate.
  • Nhập góc quay 30° (hoặc 360°/số đoạn muốn) và nhấn Copy để tạo bản sao.
  • Lặp lại thao tác Ctrl + D (hoặc Command + D) để nhân bản nhanh cho đến khi vòng tròn đầy đủ.

Bước 5: Gom nhóm và chuẩn bị cho animation

  • Chọn toàn bộ các đoạn → Object > Group (Ctrl+G).
  • Đặt Pivot point (điểm quay) tại tâm vòng tròn: Vào Effect > Transform > Transform Each, bật Scale và Rotate nếu muốn tạo hiệu ứng “phồng” khi quay.

Bước 6: Xuất file SVG

  • File > Export > Export As... → Chọn SVG.
  • Trong tùy chọn SVG, bật Responsive và CSS Properties: Presentation Attributes để dễ dàng chỉnh sửa bằng CSS.

4. Tạo spinner bằng CSS3 (không cần phần mềm đồ họa)

4.1 Cấu trúc HTML cơ bản

Cách Vẽ Spinner
Cách Vẽ Spinner
<div class="spinner"></div>

4.2 CSS tạo vòng tròn và animation

.spinner { width: 80px; height: 80px; border: 8px solid #f3f3f3; / Màu nền / border-top: 8px solid #3498db; / Màu phần quay / border-radius: 50%; animation: spin 1.2s linear infinite;
} / Keyframes cho vòng quay /
@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); }
}

4.3 Tùy chỉnh nhanh

  • Tốc độ: Thay 1.2s thành bất kỳ giá trị nào (số giây) để tăng/giảm tốc độ.
  • Kích thước: Thay đổi width và height.
  • Màu sắc: Thay đổi border-top-color.

4.4 Spinner dạng “dot” (chấm)

.spinner-dots { display: flex; justify-content: space-between; width: 60px;
}
.spinner-dots div { width: 12px; height: 12px; background: #3498db; border-radius: 50%; animation: bounce 0.6s infinite alternate;
}
.spinner-dots div:nth-child(2) { animation-delay: 0.2s; }
.spinner-dots div:nth-child(3) { animation-delay: 0.4s; } @keyframes bounce { to { transform: translateY(-15px); }
}
<div class="spinner-dots"> <div></div><div></div><div></div>
</div>

5. Sử dụng Lottie để tạo spinner nhẹ và tương tác

5.1 Tạo animation trong After Effects

  1. Mở After Effects, tạo composition 200x200px, 30fps.
  2. Vẽ vòng tròn bằng Ellipse Tool, thêm Trim Paths để tạo phần “cắt”.
  3. Thêm Rotation keyframe cho layer vòng tròn, vòng lặp Expression: loopOut("cycle").
  4. Xuất animation bằng Bodymovin plugin → Lưu dưới dạng JSON.

5.2 Nhúng Lottie trong web

<div id="lottie-spinner"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.12.2/lottie.min.js"></script>
<script> lottie.loadAnimation({ container: document.getElementById('lottie-spinner'), renderer: 'svg', loop: true, autoplay: true, path: 'spinner.json' // Đường dẫn tới file JSON đã export });
</script>

5.3 Lợi ích của Lottie

Cách Vẽ Spinner
Cách Vẽ Spinner
  • Kích thước nhỏ (thường < 30KB).
  • Resolution‑independent: Hiển thị sắc nét trên mọi màn hình.
  • Có thể điều khiển: start, stop, pause, set speed bằng JavaScript.

6. Thiết kế spinner 3D cơ bản bằng CSS và Perspective

.spinner-3d { width: 80px; height: 80px; position: relative; transform-style: preserve-3d; animation: rotate3d 2s linear infinite;
}
.spinner-3d::before,
.spinner-3d::after { content: ""; position: absolute; inset: 0; border: 8px solid transparent; border-top-color: #e74c3c; border-radius: 50%;
}
.spinner-3d::after { border-top-color: #f1c40f; transform: rotateY(180deg);
} / Keyframes /
@keyframes rotate3d { from { transform: rotateX(0deg) rotateY(0deg); } to { transform: rotateX(360deg) rotateY(360deg); }
}

Kết quả là một vòng tròn quay trong không gian 3D, tạo cảm giác sâu và hiện đại.

7. Các yếu tố quan trọng khi thiết kế spinner

Yếu tố Mô tả Gợi ý tối ưu
Tốc độ Quá nhanh gây khó chịu, quá chậm gây người dùng chờ lâu. 0.8‑1.5 giây cho một vòng đầy.
Kích thước Phù hợp với không gian UI, không chiếm quá nhiều. 30‑80px tùy vào vị trí.
Màu sắc Phù hợp với theme, tạo sự hài hòa. Sử dụng màu chính hoặc màu nhạt để không gây xao nhãng.
Độ mượt Sử dụng ease hoặc linear tùy mục đích. linear cho vòng quay liên tục, ease-in-out cho hiệu ứng bắt đầu/dừng.
Khả năng tùy biến Đảm bảo spinner có thể thay đổi màu, kích thước mà không cần redesign. Thiết kế dạng vector hoặc CSS variables.
Truy cập Thông báo trạng thái cho người khiếm thị (ARIA). Thêm role="status" và aria-live="polite" trong HTML.
<div class="spinner" role="status" aria-live="polite"> <span class="sr-only">Đang tải...</span>
</div>

sr-only là lớp ẩn cho screen reader.

8. Ứng dụng spinner trong các dự án thực tế

8.1 Trong website

  • Loading page: Khi trang đang tải nội dung động, hiển thị spinner ở trung tâm.
  • Form submit: Khi người dùng gửi biểu mẫu, spinner xuất hiện trên nút “Gửi”.

8.2 Trong ứng dụng di động

  • Pull‑to‑refresh: Khi kéo xuống để làm mới danh sách, spinner hiện lên.
  • Loading dữ liệu API: Khi gọi API, spinner hiện trên overlay để ngăn tương tác.

8.3 Trong game

  • Loading level: Khi chuyển cảnh, spinner 3D hoặc Lottie làm cho thời gian chờ trở nên sinh động.
  • Feedback hành động: Khi người chơi thực hiện một hành động cần thời gian xử lý (ví dụ: khởi tạo matchmaking).

8.4 Trong UI/UX prototyping

Cách Vẽ Spinner
Cách Vẽ Spinner
  • Figma/Sketch: Dùng component spinner để mô phỏng trạng thái tải trong prototype, giúp khách hàng hiểu rõ hơn quá trình.

9. Cách tối ưu hiệu suất cho spinner

  1. Sử dụng CSS thay vì GIF: GIF có kích thước lớn, không mượt và không thể thay đổi màu bằng CSS.
  2. Giảm số frame: Đối với Lottie, giảm keyframe không cần thiết để giảm kích thước JSON.
  3. Lazy load: Chỉ tải spinner khi cần thiết (khi có hành động tải).
  4. Hardware acceleration: Thêm transform: translateZ(0); hoặc will-change: transform; để đưa animation sang GPU.
  5. Không dùng quá nhiều spinner cùng lúc: Tránh gây quá tải GPU, đặc biệt trên thiết bị di động.
.spinner { will-change: transform;
}

10. Các lỗi thường gặp và cách khắc phục

Lỗi Nguyên nhân Giải pháp
Spinner bị giật Sử dụng setTimeout/setInterval trong JS thay cho CSS, hoặc animation không được hardware accelerated. Chuyển sang CSS animation hoặc thêm will-change.
Kích thước không đồng nhất trên các thiết bị Đặt kích thước cố định (px) thay vì % hoặc rem. Sử dụng đơn vị responsive (vw, vh, rem).
Màu không hiển thị đúng trên dark mode Đặt màu cố định không tương thích. Sử dụng CSS variables và prefers-color-scheme.
Không hiển thị trên screen reader Thiếu ARIA hoặc nội dung ẩn. Thêm role="status" và một đoạn văn bản ẩn cho screen reader.
JSON Lottie quá nặng Quá nhiều layer, hiệu ứng phức tạp. Gộp layer, giảm độ chi tiết, sử dụng simplify trong After Effects.

11. Bảo trì và cập nhật spinner

  • Versioning: Đặt version cho file spinner (ví dụ: spinner-v1.2.svg) để dễ quản lý.
  • Thử nghiệm A/B: Thay đổi tốc độ, màu sắc và đo lường thời gian người dùng chờ để tối ưu trải nghiệm.
  • Kiểm tra cross‑browser: Đảm bảo spinner hoạt động trên Chrome, Firefox, Safari, Edge và các trình duyệt di động.
  • Document: Ghi chú cách sử dụng, tùy chỉnh trong README hoặc design system của dự án.

12. Tổng kết

Việc vẽ spinner không chỉ là một công việc kỹ thuật mà còn là nghệ thuật tạo ra trải nghiệm người dùng mượt mà, thân thiện. Từ việc lựa chọn công cụ (Illustrator, Figma, CSS, Lottie) đến quy trình chi tiết từng bước, và cuối cùng là tối ưu hiệu suất, bạn đã nắm được toàn bộ kiến thức cần thiết để tạo ra những spinner đẹp mắt, chuyên nghiệp và phù hợp với mọi dự án.

Các bước quan trọng cần nhớ:

  1. Xác định loại spinner phù hợp với mục đích.
  2. Chọn công cụ dựa trên yêu cầu mở rộng và nền tảng.
  3. Thiết kế vector để dễ tùy chỉnh và mở rộng.
  4. Áp dụng CSS hoặc Lottie để tạo animation mượt mà.
  5. Kiểm tra hiệu suất và tối ưu cho các thiết bị.
  6. Đảm bảo truy cập bằng ARIA và các chuẩn WCAG.

Hãy bắt tay vào thực hành ngay hôm nay: tạo một spinner đơn giản bằng CSS, sau đó nâng cấp lên một spinner vector tùy chỉnh và cuối cùng thử nghiệm với Lottie để cảm nhận sự khác biệt. Khi bạn đã thành thạo, spinner sẽ trở thành một “vũ khí” mạnh mẽ trong bộ công cụ thiết kế UI/UX của mình, giúp dự án của bạn luôn nổi bật và chuyên nghiệp.

Chúc bạn thành công và sáng tạo! 🚀

Rate this post
Mục nhập này đã được đăng trong Blog. Đánh dấu trang permalink.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *