- readable.css không phải là một design system cho toàn bộ website, mà là một framework CSS bổ sung các kiểu mặc định hợp lý và dễ nhìn cho HTML ngữ nghĩa
- Nguyên tắc cốt lõi là tính nhất quán; màu sắc, kiểu chữ, độ dày đường viền và chiều cao dòng được áp dụng đồng bộ trên toàn bộ website
- Cung cấp chế độ sáng/tối, thiết kế responsive, nhịp dọc, cùng các kiểu cho header, footer, điều hướng, bảng, nút và biểu mẫu
- Không bao gồm hoạt ảnh cầu kỳ, phông chữ tùy chỉnh, utility class, hay các thành phần ghi đè cài đặt trình duyệt của người dùng
- Dựa trên HTML ngữ nghĩa để diễn giải ý đồ, hỗ trợ Firefox 84+, Chromium 88+, Edge 88+, Safari 10+ và không hỗ trợ IE
Tính năng chính và phạm vi thiết kế
- readable.css không phải là framework để xây dựng design system cho toàn bộ website, mà là framework CSS giúp HTML cơ bản trở nên hợp lý và dễ nhìn
- Hỗ trợ chế độ sáng/tối theo cách thủ công hoặc qua
prefers-color-scheme, đồng thời cung cấp thiết kế responsive và nhịp dọc
- Tạo kiểu cho header, footer, thanh điều hướng, hình ảnh, trích dẫn, aside, bảng, nút và biểu mẫu
- Căn đều hai lề văn bản bị tắt theo mặc định, và hỗ trợ các phông chữ native như serif, sans-serif, monospace
- Cố ý loại trừ hoạt ảnh cầu kỳ, phông chữ tùy chỉnh, utility class và các thành phần ghi đè cài đặt trình duyệt của người dùng
Cách dùng và phạm vi hỗ trợ
1 bình luận
Ý kiến trên Lobste.rs
Tôi thích việc nó không đụng vào font-size mặc định. Người dùng có thể và nên đặt kích thước ưa thích trong user agent như trình duyệt, và website phải tôn trọng thiết lập đó
Tôi ghét kiểu cố định 12px vì quá nhỏ, và cũng không muốn chữ bỗng dưng to ra trên viewport rộng khi tôi đã chỉnh sẵn ở mức dễ đọc. Chuyện này quá phổ biến và gây hại lớn cho khả năng truy cập
Accept-Languagetrong dự án công việc, tôi vẫn thường bị bác với lý lẽ rằng người dùng không biết cấu hình ứng dụng cho đúng nên chúng ta phải làm thay họChắc với cỡ chữ cũng sẽ nghe lập luận tương tự
Tôi luôn tìm các framework như PicoCSS hay MVP, và cái này gây chú ý vì có vẻ được làm ra để dùng như điểm khởi đầu
Nó trông như một nền tảng tốt để xây tiếp lên, nhưng tôi cũng muốn nghe ý kiến từ những người rành thiết kế hơn
Cách đổi biến CSS bằng
html[data-font-family="serif"]không hữu ích lắm. Thà cứ để dùng<html style="font-family:serif">thì ở cả template lẫn script phía client đều gần như dễ như nhau, mà còn ngắn hơn và ít phức tạp hơnCách hiện tại có thể khiến người ta lầm tưởng rằng có thể viết kiểu
<html data-font-family="some-webfont, serif">, nhưng thực tế lại không hoạt động. Dùng monospace làm phông chữ cho toàn bộ tài liệu cũng là một lựa chọn phong cách không hợp với tính dễ đọc, và cũng không hợp với cái tên “readable.css”. Dù vậy, tôi thích sự tiết chế khi chỉ giới hạn trong một họ phông chữ generic đơn lẻ--line-widthvà--line-heightcũng là các tên dễ gây nhầm. Một “line” là đường kẻ giữa các phần tử, còn cái kia là dòng văn bảnPhần theme màu thì mớ kết hợp giữa
(prefers-color-scheme)và(prefers-contrast),[data-theme],[data-high-contrast]đang bị rối, và một số giá trị cùng tương tác của chúng chưa được tài liệu hóa. Tổ hợp@media (prefers-contrast: more) and (prefers-color-scheme: dark)rõ ràng bị hỏng khi không có override<html data-*>, vì nó cho #fff nền với #000 chữ. Cũng cần khai báocolor-scheme: darkvàcolor-scheme: lightĐến
a { color: inherit; }là tôi hết muốn xem tiếp. Chưa cần bàn đến tuyên bố về vertical rhythm, chỉ riêng việc cho màu liên kết kế thừa và còn bỏ gạch chân trong điều hướng là đã khiến nhiều người dùng không nhận ra có link ở đó. Link nên để màu xanh hoặc ít nhất là màu nhấn có độ bão hòa, và phải giữ gạch chân. Vì tên là readable.css nên càng thất vọng hơnĐộ dài dòng có một khoảng tối thiểu và tối đa để đa số mọi người đọc thoải mái, khoảng 50–70 ký tự mỗi dòng. Chuỗi thảo luận Stack Exchange này có vài câu trả lời khá tốt, và vì nó cũng gần với khả năng truy cập nên W3C WCAG trong mục visual presentation cũng nói “chiều rộng không quá 80 ký tự hoặc glyph (với CJK là không quá 40)”
Về phông chữ, nhìn chung sans-serif là dễ đọc nhất trên phạm vi màn hình rộng nhất, còn trên các màn hình hiện đại độ phân giải cao thì serif cũng thường được đánh giá gần tương đương. Phông chữ monospace làm giảm tính dễ đọc với đa số người dùng, nên hiếm khi là lựa chọn tốt cho nội dung chính. Ngoại lệ có thể là người quen dùng terminal hoặc trình soạn thảo mã, hoặc đôi khi là người dùng mắc chứng khó đọc thấy monospace dễ đọc hơn. Nếu còn phân vân thì tuy không thú vị nhưng Arial là lựa chọn an toàn nhất, và có thể xem chuỗi Stack Exchange về phông chữ monospaced
Ngoài ra còn có trang typography của chính phủ Mỹ, mục typography của BBC GEL, mục typography của Google Material Design, Butterick's Practical Typography nếu muốn đào sâu, và The Elements of Typographic Style Applied to the Web cũng đáng tham khảo
Thành thật mà nói thì cỡ chữ mặc định quá nhỏ và khó đọc. Tôi không hiểu vì sao lại chọn kích thước như vậy, và với tôi nó không tốt cho cả khả năng truy cập lẫn tính dễ đọc
Tệ hơn nữa là
font-sizekhông có ý nghĩa tuyệt đối ổn định giữa các phông chữ.font-size: 16pxcũng có thể trông rất khác tùy phông. Trong Safari,sansmặc định vàsans-serifmặc định trông khác nhau như thế này: https://github.com/user-attachments/assets/…. Ngay trong bình luận này bạn cũng có thể thấy cỡ chữ củamonospacekhông khớp với phần còn lạiCuối cùng thì đây là thứ khó sửa cho thật đúng, kiểu gì cũng sẽ có chỗ bị vỡ, và rốt cuộc chỉ còn là vấn đề webmaster thích kiểu đánh đổi nào hơn. Cá nhân tôi, nếu có thể dùng chế độ đọc thì tôi không còn quá quan tâm đến thiết kế website nữa. Tuy vậy, với sự mơ hồ của
font-sizethì giờ đã có một giải pháp khá ổn: https://matklad.github.io/2025/07/16/font-size-adjust.htmlChữ trên site này nhỏ đến mức tôi còn tự hỏi có phải nó đã lách qua mức zoom đó không. Thế là tôi lại phải tăng thêm một nấc cài đặt cỡ chữ tối thiểu của Firefox