Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Accessibility (thường viết tắt là a11y) là việc xây dựng website sao cho mọi người đều dùng được, kể cả người khiếm thị, khiếm thính, khó cử động tay, hay chỉ đơn giản là đang dùng điện thoại dưới ánh nắng chói. Tin tốt là phần lớn việc cần làm không phức tạp, chủ yếu là viết HTML đúng cách và chú ý vài chi tiết.
Quy tắc quan trọng nhất của ARIA là: nếu có thẻ HTML gốc làm đúng việc, hãy dùng nó, đừng tự chế bằng div. Thẻ button tự có vai trò, focus được bằng bàn phím và kích hoạt bằng Enter, Space. Thẻ a với href cho điều hướng. Thẻ nav, main, header, footer tạo các vùng để người dùng trình đọc màn hình nhảy nhanh. Tiêu đề h1 đến h6 đúng thứ bậc giúp họ nắm cấu trúc trang.
<!-- Tệ: div giả làm nút -->
<div class='nut' onclick='gui()'>Gửi</div>
<!-- Tốt -->
<button type='button' onclick='gui()'>Gửi</button>Hãy thử tắt chuột và dùng phím Tab, Shift+Tab, Enter, Space, Esc để thao tác toàn trang. Kiểm tra:
outline: none mà không thay bằng kiểu khác. Dùng :focus-visible để chỉ hiện khi dùng bàn phím.:focus-visible {
outline: 3px solid #2563eb;
outline-offset: 2px;
}Ảnh mang thông tin cần alt mô tả ngắn gọn nội dung và mục đích. Ảnh trang trí dùng alt='' để trình đọc màn hình bỏ qua. Nút chỉ có biểu tượng cần nhãn:
<button type='button' aria-label='Đóng hộp thoại'>×</button>Chữ cần đủ tương phản với nền. Bộ hướng dẫn WCAG nêu mức tối thiểu khoảng 4,5 trên 1 cho chữ thường (cấp AA), thấp hơn một chút cho chữ lớn. Nhiều công cụ kiểm tra tương phản có sẵn trong DevTools. Ngoài ra, đừng chỉ dùng màu để truyền thông tin: lỗi form không nên chỉ khác ở màu đỏ, hãy thêm biểu tượng hoặc chữ.
label liên kết bằng for và id.aria-describedby.role='alert' hoặc aria-live để trình đọc màn hình thông báo.type và autocomplete.<label for='email'>Email</label>
<input id='email' type='email' aria-describedby='loi-email' aria-invalid='true'>
<p id='loi-email' role='alert'>Email chưa đúng định dạng</p>ARIA bổ sung ý nghĩa cho các thành phần tùy biến phức tạp như tab, menu thả xuống, bộ chọn ngày. Một vài thuộc tính hay gặp: aria-expanded cho trạng thái mở hoặc đóng, aria-controls liên kết nút với vùng nó điều khiển, aria-hidden để ẩn khỏi công nghệ hỗ trợ. Nhưng ARIA chỉ thêm thông tin, không thêm hành vi: nếu bạn gán role='button' cho div, bạn vẫn phải tự xử lý bàn phím. Dùng sai ARIA còn tệ hơn không dùng.
rem cho cỡ chữ để tôn trọng cỡ chữ người dùng thiết lập. Trang vẫn dùng được khi phóng to đến 200 phần trăm.prefers-reduced-motion để giảm chuyển động.Hãy xem a11y như một phần của chất lượng, không phải tính năng thêm vào cuối. Bắt đầu với HTML ngữ nghĩa, bàn phím, alt, tương phản và form có nhãn, bạn đã giải quyết được phần lớn vấn đề thường gặp.
Nếu muốn học xây giao diện đúng chuẩn ngay từ nền tảng, hãy xem các khóa học trên codebem.com.
Nguyễn Đình Cường
0 comment