Tìm hiểu cách làm cho trang web của bạn có thể truy cập được cho mọi người bằng cách triển khai các nguyên tắc WCAG trong CSS của bạn. Tạo ra các thiết kế hòa nhập cho khán giả toàn cầu.
Khả năng truy cập trong CSS: Hướng dẫn thực hành tuân thủ WCAG
Trong thế giới ngày càng số hóa hiện nay, việc đảm bảo khả năng truy cập web không chỉ là một phương pháp hay nhất mà còn là một mệnh lệnh đạo đức. Các trang web có thể truy cập cung cấp quyền truy cập và cơ hội bình đẳng cho tất cả người dùng, bất kể khả năng của họ. Hướng dẫn này tập trung vào cách tận dụng CSS để tạo ra các trải nghiệm web có thể truy cập và hòa nhập, tuân thủ các Nguyên tắc Truy cập Nội dung Web (WCAG).
WCAG là gì và Tại sao nó lại quan trọng?
Nguyên tắc Truy cập Nội dung Web (WCAG) là một bộ khuyến nghị được quốc tế công nhận để làm cho nội dung web dễ tiếp cận hơn đối với người khuyết tật. Được phát triển bởi Hiệp hội World Wide Web (W3C), WCAG cung cấp một tiêu chuẩn chung về khả năng truy cập web đáp ứng nhu cầu của các cá nhân, tổ chức và chính phủ trên toàn thế giới. WCAG quan trọng vì:
- Nó thúc đẩy tính hòa nhập, đảm bảo rằng mọi người đều có thể truy cập và sử dụng trang web của bạn.
- Nó cải thiện trải nghiệm người dùng cho tất cả người dùng, không chỉ những người khuyết tật.
- Nó có thể nâng cao SEO (Tối ưu hóa Công cụ Tìm kiếm) cho trang web của bạn.
- Nó có thể là yêu cầu pháp lý ở một số khu vực. Ví dụ, nhiều quốc gia có luật bắt buộc khả năng truy cập web cho các trang web của chính phủ và một số đơn vị tư nhân. Đạo luật Người Mỹ khuyết tật (ADA) ở Hoa Kỳ đã được diễn giải là áp dụng cho các trang web. Ở châu Âu, Đạo luật Khả năng truy cập châu Âu đặt ra các yêu cầu về khả năng truy cập cho nhiều loại sản phẩm và dịch vụ, bao gồm cả trang web và ứng dụng di động. Úc có Đạo luật Phân biệt đối xử Người khuyết tật, cũng bao gồm khả năng truy cập web.
- Nó thể hiện trách nhiệm xã hội và củng cố danh tiếng thương hiệu của bạn.
Các nguyên tắc của WCAG: POUR
WCAG dựa trên bốn nguyên tắc cốt lõi, thường được nhớ bằng từ viết tắt POUR:
- Có thể nhận biết được (Perceivable): Thông tin và các thành phần giao diện người dùng phải được trình bày cho người dùng theo những cách họ có thể nhận biết được.
- Có thể vận hành được (Operable): Các thành phần giao diện người dùng và điều hướng phải có thể vận hành được.
- Có thể hiểu được (Understandable): Thông tin và hoạt động của giao diện người dùng phải có thể hiểu được.
- Bền vững (Robust): Nội dung phải đủ bền vững để có thể được diễn giải một cách đáng tin cậy bởi nhiều loại tác nhân người dùng, bao gồm cả các công nghệ hỗ trợ.
Các kỹ thuật CSS cho khả năng truy cập
CSS đóng một vai trò quan trọng trong việc đạt được sự tuân thủ WCAG. Dưới đây là một số kỹ thuật CSS chính cần xem xét:
1. HTML và CSS ngữ nghĩa
Sử dụng đúng các phần tử HTML ngữ nghĩa cung cấp ý nghĩa và cấu trúc cho nội dung của bạn, giúp trình đọc màn hình và các công nghệ hỗ trợ khác dễ tiếp cận hơn. CSS sau đó sẽ cải thiện phần trình bày của các phần tử ngữ nghĩa này.
Ví dụ:
Thay vì sử dụng các phần tử <div>
chung cho mọi thứ, hãy sử dụng các phần tử ngữ nghĩa như <article>
, <nav>
, <aside>
, <header>
, <footer>
, <main>
, <section>
, và các thẻ tiêu đề (<h1>
đến <h6>
).
HTML:
<article>
<h2>Tiêu đề bài viết</h2>
<p>Nội dung bài viết ở đây.</p>
</article>
CSS:
article {
margin-bottom: 20px;
}
h2 {
font-size: 1.5em;
font-weight: bold;
margin-bottom: 10px;
}
Bằng cách sử dụng <article>
và <h2>
, bạn đang cung cấp ý nghĩa ngữ nghĩa cho nội dung, giúp các công nghệ hỗ trợ hiểu được cấu trúc và ngữ cảnh.
2. Màu sắc và Độ tương phản
Đảm bảo độ tương phản màu đủ giữa văn bản và màu nền để nội dung có thể đọc được đối với người dùng thị lực kém hoặc mù màu. WCAG 2.1 Cấp độ AA yêu cầu tỷ lệ tương phản ít nhất là 4.5:1 cho văn bản thông thường và 3:1 cho văn bản lớn (18pt hoặc 14pt chữ đậm).
Các công cụ kiểm tra độ tương phản màu:
- WebAIM's Color Contrast Checker: https://webaim.org/resources/contrastchecker/
- Accessible Color Palette Builder: https://www.learnui.design/tools/accessible-color-palette-builder.html
- Chrome DevTools: Chrome DevTools cung cấp tính năng kiểm tra độ tương phản màu tích hợp sẵn.
Ví dụ:
/* Độ tương phản tốt */
body {
background-color: #000000; /* Đen */
color: #FFFFFF; /* Trắng */
}
/* Độ tương phản kém */
body {
background-color: #FFFFFF; /* Trắng */
color: #F0F0F0; /* Xám nhạt */
}
Ví dụ đầu tiên cung cấp độ tương phản tốt, trong khi ví dụ thứ hai có độ tương phản kém và sẽ khó đọc đối với nhiều người dùng.
Ngoài màu sắc: Đừng chỉ dựa vào màu sắc để truyền tải thông tin. Sử dụng nhãn văn bản, biểu tượng hoặc các tín hiệu trực quan khác ngoài màu sắc để đảm bảo thông tin có thể truy cập được cho mọi người. Ví dụ, thay vì tô đỏ các trường biểu mẫu bắt buộc, hãy sử dụng kết hợp viền đỏ và nhãn văn bản như "(bắt buộc)".
3. Chỉ báo tiêu điểm (Focus Indicators)
Khi người dùng điều hướng trang web của bạn bằng bàn phím (ví dụ: sử dụng phím Tab), điều quan trọng là phải cung cấp các chỉ báo tiêu điểm trực quan rõ ràng để họ biết phần tử nào hiện đang được chọn. Chỉ báo tiêu điểm mặc định của trình duyệt có thể không đủ hoặc thậm chí vô hình trong một số trường hợp. Sử dụng CSS để tùy chỉnh chỉ báo tiêu điểm để làm cho nó nổi bật hơn.
Ví dụ:a:focus, button:focus, input:focus, textarea:focus, select:focus { outline: 2px solid #007bff; /* Viền màu xanh dương */ outline-offset: 2px; /* Tạo khoảng cách giữa phần tử và viền */ }
Đoạn mã CSS này thêm một đường viền màu xanh dương vào các phần tử khi chúng nhận được tiêu điểm. Thuộc tính outline-offset
thêm một khoảng trống nhỏ giữa phần tử và đường viền, cải thiện khả năng hiển thị. Tránh loại bỏ hoàn toàn chỉ báo tiêu điểm mà không cung cấp một sự thay thế phù hợp, vì điều này có thể làm cho trang web của bạn không thể sử dụng được đối với người dùng bàn phím.
4. Điều hướng bằng bàn phím
Đảm bảo tất cả các yếu tố tương tác (liên kết, nút, trường biểu mẫu, v.v.) đều có thể điều hướng được bằng bàn phím. Điều này rất cần thiết cho những người dùng không thể sử dụng chuột. Thứ tự của các phần tử trong mã nguồn HTML phải khớp với thứ tự trực quan trên trang để đảm bảo luồng điều hướng hợp lý. Sử dụng CSS để sắp xếp lại các phần tử một cách trực quan trong khi vẫn duy trì thứ tự điều hướng bàn phím hợp lý.
Ví dụ:
Hãy xem xét một kịch bản mà bạn muốn hiển thị menu điều hướng ở phía bên phải của màn hình bằng CSS. Tuy nhiên, vì lý do khả năng truy cập, bạn muốn menu điều hướng xuất hiện đầu tiên trong mã nguồn HTML để người dùng trình đọc màn hình gặp nó trước nội dung chính.
HTML:
<nav>
<ul>
<li><a href="#">Trang chủ</a></li>
<li><a href="#">Giới thiệu</a></li>
<li><a href="#">Dịch vụ</a></li>
<li><a href="#">Liên hệ</a></li>
</ul>
</nav>
<main>
<h1>Nội dung chính</h1>
<p>Đây là nội dung chính của trang.</p>
</main>
CSS:
body {
display: flex;
}
nav {
order: 1; /* Di chuyển thanh điều hướng sang phải */
width: 200px;
padding: 20px;
}
main {
order: 0; /* Giữ nội dung chính ở bên trái */
flex: 1;
padding: 20px;
}
Bằng cách sử dụng thuộc tính order
trong CSS, bạn có thể sắp xếp lại menu điều hướng một cách trực quan sang phía bên phải của màn hình trong khi vẫn duy trì vị trí ban đầu của nó trong mã nguồn HTML. Điều này đảm bảo rằng người dùng bàn phím sẽ gặp menu điều hướng trước, cải thiện khả năng truy cập.
5. Ẩn nội dung một cách có trách nhiệm
Đôi khi bạn cần ẩn nội dung khỏi hiển thị trực quan nhưng vẫn giữ cho nó có thể truy cập được đối với trình đọc màn hình. Ví dụ, bạn có thể muốn cung cấp thêm ngữ cảnh cho một liên kết hoặc nút chỉ được biểu thị trực quan bằng một biểu tượng. Tránh sử dụng display: none
hoặc visibility: hidden
, vì các thuộc tính này sẽ ẩn nội dung khỏi cả người dùng trực quan và trình đọc màn hình. Thay vào đó, hãy sử dụng một kỹ thuật ẩn nội dung một cách trực quan trong khi vẫn giữ cho nó có thể truy cập được đối với các công nghệ hỗ trợ.
Ví dụ:
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
Lớp CSS này ẩn phần tử một cách trực quan trong khi vẫn giữ cho nó có thể truy cập được đối với trình đọc màn hình. Áp dụng lớp này cho văn bản mà bạn muốn được đọc bởi trình đọc màn hình nhưng không hiển thị trực quan.
Ví dụ HTML:
<a href="#">Chỉnh sửa <span class="sr-only">mục</span></a>
Trong ví dụ này, văn bản "mục" được ẩn trực quan nhưng sẽ được đọc bởi trình đọc màn hình, cung cấp ngữ cảnh cho liên kết "Chỉnh sửa".
Thuộc tính ARIA (Accessible Rich Internet Applications): Sử dụng các thuộc tính ARIA một cách thận trọng để nâng cao khả năng truy cập của nội dung động và các thành phần giao diện người dùng phức tạp. Các thuộc tính ARIA cung cấp thêm thông tin ngữ nghĩa cho các công nghệ hỗ trợ. Tuy nhiên, tránh sử dụng các thuộc tính ARIA để khắc phục các vấn đề về khả năng truy cập có thể giải quyết được bằng HTML ngữ nghĩa. Ví dụ, sử dụng các vai trò và thuộc tính ARIA để xác định các widget tùy chỉnh và cung cấp các cập nhật trạng thái cho trình đọc màn hình khi nội dung thay đổi động.
6. Thiết kế đáp ứng và Khả năng truy cập
Đảm bảo trang web của bạn có tính đáp ứng và thích ứng với các kích thước màn hình và thiết bị khác nhau. Điều này rất quan trọng đối với những người dùng khuyết tật có thể đang sử dụng các công nghệ hỗ trợ trên thiết bị di động hoặc máy tính bảng. Sử dụng các truy vấn phương tiện CSS (media queries) để điều chỉnh bố cục và cách trình bày nội dung của bạn dựa trên kích thước và hướng của màn hình.
Ví dụ:
@media (max-width: 768px) {
nav ul {
flex-direction: column; /* Xếp chồng các mục điều hướng theo chiều dọc trên màn hình nhỏ hơn */
}
}
Đoạn mã CSS này sử dụng một truy vấn phương tiện để thay đổi hướng của các mục điều hướng thành dọc trên màn hình nhỏ hơn, giúp việc điều hướng trên thiết bị di động dễ dàng hơn.
7. Hoạt ảnh và Chuyển động
Các hoạt ảnh quá mức hoặc được triển khai kém có thể gây co giật hoặc say tàu xe cho một số người dùng. Sử dụng CSS để giảm hoặc vô hiệu hóa hoạt ảnh cho những người dùng thích chuyển động giảm. Truy vấn phương tiện prefers-reduced-motion
cho phép bạn phát hiện xem người dùng đã yêu cầu hệ thống giảm thiểu lượng hoạt ảnh hoặc chuyển động mà nó sử dụng hay chưa.
Ví dụ:
@media (prefers-reduced-motion: reduce) {
.animated-element {
animation: none !important;
transition: none !important;
}
}
Đoạn mã CSS này vô hiệu hóa hoạt ảnh và chuyển tiếp cho những người dùng đã bật cài đặt "chuyển động giảm" trong hệ điều hành của họ. Hãy cân nhắc cung cấp một điều khiển cho phép người dùng tự tắt hoạt ảnh trên trang web của bạn.
8. Kiểm thử với Công nghệ hỗ trợ
Cách hiệu quả nhất để đảm bảo trang web của bạn có thể truy cập được là kiểm thử nó với các công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, kính lúp màn hình và phần mềm nhận dạng giọng nói. Sử dụng nhiều loại công nghệ hỗ trợ để có được sự hiểu biết toàn diện về khả năng truy cập của trang web của bạn.
Các trình đọc màn hình phổ biến:
- NVDA (NonVisual Desktop Access): Một trình đọc màn hình miễn phí và mã nguồn mở cho Windows.
- JAWS (Job Access With Speech): Một trình đọc màn hình thương mại phổ biến cho Windows.
- VoiceOver: Một trình đọc màn hình tích hợp sẵn cho macOS và iOS.
Mẹo kiểm thử bổ sung:
- Điều hướng bằng bàn phím: Kiểm tra xem tất cả các yếu tố tương tác có thể truy cập được bằng bàn phím và thứ tự tiêu điểm có hợp lý không.
- Khả năng truy cập biểu mẫu: Đảm bảo rằng các trường biểu mẫu được gắn nhãn đúng cách và các thông báo lỗi rõ ràng và dễ hiểu.
- Văn bản thay thế cho hình ảnh: Xác minh rằng tất cả các hình ảnh đều có văn bản thay thế mô tả chính xác nội dung và chức năng của hình ảnh.
- Nội dung động: Kiểm tra xem các cập nhật nội dung động có được thông báo đúng cách cho trình đọc màn hình không.
Các kỹ thuật CSS nâng cao cho khả năng truy cập
1. Thuộc tính tùy chỉnh (Biến CSS) để tạo chủ đề
Sử dụng các thuộc tính tùy chỉnh của CSS (biến) để tạo các chủ đề có thể truy cập với các tùy chọn độ tương phản cao. Điều này cho phép người dùng tùy chỉnh giao diện trang web của bạn để đáp ứng nhu cầu cá nhân của họ.
Ví dụ:
:root {
--text-color: #333;
--background-color: #fff;
--link-color: #007bff;
}
body {
color: var(--text-color);
background-color: var(--background-color);
}
a {
color: var(--link-color);
}
/* Chủ đề tương phản cao */
.high-contrast {
--text-color: #fff;
--background-color: #000;
--link-color: #ff0;
}
Ví dụ này định nghĩa các thuộc tính tùy chỉnh CSS cho màu văn bản, màu nền và màu liên kết. Lớp .high-contrast
ghi đè các biến này để tạo ra một chủ đề tương phản cao. Sau đó, bạn có thể sử dụng JavaScript để bật/tắt lớp .high-contrast
trên phần tử <body>
để chuyển đổi giữa các chủ đề.
2. CSS Grid và Flexbox cho bố cục có thể truy cập
CSS Grid và Flexbox là những công cụ bố cục mạnh mẽ có thể được sử dụng để tạo ra các bố cục có thể truy cập và đáp ứng. Tuy nhiên, điều quan trọng là phải sử dụng chúng cẩn thận để đảm bảo rằng thứ tự trực quan của các phần tử khớp với thứ tự DOM.
Ví dụ:
Khi sử dụng Flexbox hoặc Grid, hãy đảm bảo thứ tự tab vẫn hợp lý. Thuộc tính order
có thể làm gián đoạn thứ tự tab nếu không được sử dụng cẩn thận.
3. `clip-path` và Khả năng truy cập
Thuộc tính `clip-path` có thể được sử dụng để tạo ra các hình dạng và hiệu ứng trực quan thú vị. Tuy nhiên, hãy thận trọng khi sử dụng `clip-path` vì nó đôi khi có thể che khuất nội dung hoặc làm cho nó khó tương tác. Đảm bảo rằng nội dung bị cắt vẫn có thể truy cập được và việc cắt không cản trở việc điều hướng bằng bàn phím hoặc truy cập của trình đọc màn hình.
4. Thuộc tính `content` và Khả năng truy cập
Thuộc tính `content` trong CSS có thể được sử dụng để chèn nội dung được tạo ra trước hoặc sau một phần tử. Tuy nhiên, nội dung được tạo ra không phải lúc nào cũng có thể truy cập được đối với trình đọc màn hình. Sử dụng thuộc tính `content` một cách thận trọng và cân nhắc sử dụng các thuộc tính ARIA để cung cấp thêm thông tin ngữ nghĩa cho các công nghệ hỗ trợ.
Ví dụ thực tế và Nghiên cứu tình huống
Hãy xem xét một số ví dụ thực tế để minh họa cách các nguyên tắc này được áp dụng trên các khu vực và bối cảnh khác nhau.
- Trang web của chính phủ: Nhiều quốc gia, bao gồm Vương quốc Anh, Canada và Úc, có các hướng dẫn nghiêm ngặt về khả năng truy cập cho các trang web của chính phủ. Các trang web này thường đóng vai trò là những mô hình mẫu mực về tuân thủ WCAG, thể hiện các phương pháp hay nhất về HTML ngữ nghĩa, độ tương phản màu và điều hướng bằng bàn phím.
- Nền tảng thương mại điện tử: Các gã khổng lồ thương mại điện tử toàn cầu như Amazon và Alibaba đầu tư rất nhiều vào khả năng truy cập để tiếp cận đối tượng rộng hơn. Họ thường triển khai các tính năng như văn bản thay thế cho hình ảnh, điều hướng bằng bàn phím để duyệt sản phẩm và kích thước phông chữ có thể điều chỉnh để cải thiện khả năng đọc.
- Các cơ sở giáo dục: Các trường đại học và cao đẳng trên toàn thế giới ngày càng tập trung vào việc tạo ra các môi trường học tập trực tuyến có thể truy cập. Họ thường cung cấp bản ghi cho video, phụ đề cho nội dung âm thanh và các phiên bản tài liệu khóa học có thể truy cập để phù hợp với sinh viên khuyết tật.
Những lỗi phổ biến về khả năng truy cập cần tránh
- Độ tương phản màu không đủ: Sử dụng các kết hợp màu khó đọc đối với người dùng thị lực kém.
- Thiếu văn bản thay thế cho hình ảnh: Không cung cấp văn bản thay thế mô tả cho hình ảnh, làm cho chúng không thể truy cập được đối với người dùng trình đọc màn hình.
- Điều hướng bằng bàn phím kém: Tạo ra các trang web khó hoặc không thể điều hướng bằng bàn phím.
- Sử dụng bảng để bố cục: Sử dụng bảng HTML cho mục đích bố cục thay vì các phần tử HTML ngữ nghĩa.
- Bỏ qua các chỉ báo tiêu điểm: Loại bỏ hoặc làm mờ chỉ báo tiêu điểm trực quan, khiến người dùng bàn phím khó biết phần tử nào đang được chọn.
- Chỉ dựa vào màu sắc để truyền tải thông tin: Sử dụng màu sắc là phương tiện duy nhất để truyền tải thông tin, làm cho nó không thể truy cập được đối với người dùng mù màu.
- Không kiểm thử với các công nghệ hỗ trợ: Không kiểm thử trang web của bạn với các công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, để xác định và khắc phục các vấn đề về khả năng truy cập.
Kết luận: Nắm bắt khả năng truy cập vì một trang web tốt hơn
Khả năng truy cập không chỉ là một yêu cầu kỹ thuật; đó là một khía cạnh cơ bản của việc tạo ra một trang web hòa nhập và có thể truy cập cho mọi người. Bằng cách triển khai các kỹ thuật CSS này và tuân thủ các nguyên tắc WCAG, bạn có thể tạo ra các trang web không chỉ hấp dẫn về mặt hình ảnh mà còn có thể sử dụng và thú vị cho tất cả người dùng, bất kể khả năng của họ. Hãy coi khả năng truy cập là một phần không thể thiếu trong quy trình phát triển web của bạn, và bạn sẽ góp phần vào một thế giới kỹ thuật số hòa nhập và công bằng hơn.
Tài nguyên và Đọc thêm
- Nguyên tắc Truy cập Nội dung Web (WCAG): https://www.w3.org/WAI/standards-guidelines/wcag/
- Sáng kiến Khả năng truy cập Web (WAI): https://www.w3.org/WAI/
- WebAIM: https://webaim.org/
- Đại học Deque: https://dequeuniversity.com/