- Bộ sưu tập mã nguồn so sánh song song giữa các kỹ thuật hack CSS đã cũ và cú pháp CSS native hiện đại thay thế chúng
- Tận dụng các tiêu chuẩn mới như Grid, Flexbox, màu OKLCH, container query, scroll-timeline để giảm phụ thuộc vào JavaScript
- Được phân chia theo từng chủ đề như màu sắc, bố cục, hoạt ảnh, selector, typography, workflow, qua đó đưa ra các phương án thay thế hiện đại cho từng tính năng
- Với các tiêu chuẩn CSS mới nhất, có thể giảm phụ thuộc vào JS, Sass, thư viện bên ngoài và tận dụng tối đa các tính năng native của trình duyệt
1 bình luận
Ý kiến trên Hacker News
CSS của năm 2025 nghe như thể quay lại thời style inline kiểu 2005 và viết thẳng vào HTML
Đang nói về Tailwind, nhưng rốt cuộc cũng là bỏ qua việc tách biệt giữa định dạng và trình bày
Nếu HTML thật sự chỉ lo nội dung và CSS thật sự chỉ lo style, thì đã chẳng cần tạo ra thứ div soup như
.container-wrapper .container .container-innerViệc cứ mỗi lần đổi layout lại phải sửa HTML chính là bằng chứng
Mã liên quan đến component nằm cùng một chỗ nên không phải nhảy qua lại giữa nhiều file
Layout và style là phần UI không thể tách rời
HTML không phải là nội dung mà là layout
Dù có tin vào việc tách biệt mối quan tâm đi nữa thì HTML và CSS vẫn thuộc cùng một tầng trình bày
Tin rằng có thể tách hai thứ này hoàn toàn chẳng khác nào phớt lờ thực tế
Tôi đã tổng hợp danh sách những cải tiến chính gần đây của CSS
:has(...):is(...)— trước đây phải dùng mẹo kiểu:not(:not(...)):where(...)— giống:is(...)nhưng độ ưu tiên selector bằng 0, hữu ích khi viết selector phức tạpPhần lớn LLM không biết tính năng này
Khuyên nên thêm ví dụ vào
AGENTS.mdNên tham khảo tài liệu MDN về Nesting Selector
Có thể tận dụng selector
&để vừa tăng khả năng đọc vừa giảm lặp lạitext-box: trimCảm giác thật giải phóng khi thời phải giải thích với designer suốt 20 năm rằng không thể căn đỉnh chữ in hoa đã kết thúc
@layernhấtMột số ví dụ dùng cách cũ thì chạy được trên mọi trình duyệt, còn cách mới chỉ chạy trên Chrome/Edge
Tôi nghĩ đưa những ví dụ như vậy vào là thiếu trách nhiệm vì càng củng cố thế độc quyền của Blink
Đúng hơn nên chỉ ra việc Mozilla chưa tuân thủ chuẩn tốt hơn
Nên ngừng ghim các phần tử vào mép màn hình
Một số trang để hơn nửa màn hình bị chiếm bởi các phần tử tĩnh
Để nội dung được cuộn vẫn tự nhiên hơn
Trớ trêu là chính trang đó lại khóa cứng dark mode và không dùng
prefers-color-schemeNhiều khi thấy “ví dụ CSS sáng tạo hay quá!”, nhưng rồi hỗ trợ trình duyệt chỉ ở mức 40~50% nên có giới hạn rất thực tế
Dù một phần là nhờ ảnh hưởng quá lớn của Chromium, nhưng kết quả nhìn chung vẫn tích cực
Tham khảo Interop 2025
Các vendor trình duyệt đang thêm sẵn tính năng để rồi sau này đạt được mức hỗ trợ rộng rãi
Những ví dụ bị đánh dấu là không chạy trên Firefox lại hoạt động bình thường trong demo thực tế nên khá khó hiểu
Tôi tự hỏi liệu có dùng polyfill hay không
Phần trăm màu xanh ở góc dưới bên trái là tỷ lệ người dùng trình duyệt hỗ trợ tính năng đó
Nhiều trường hợp còn dưới một nửa
Rốt cuộc nó giống “modern CSS” ít hơn và gần với “CSS mới nhất của Chrome” hơn
Ví dụ
sibling-index()vẫn chưa chạy trên Firefox nhưng lại được đánh dấu là “widely available”Dạo này tôi thấy bối rối không biết nên dùng Tailwind, CSS-in-JS, Sass/SCSS hay Vanilla CSS
Cứ dùng thứ phù hợp với team là được
Nếu Tailwind hợp thì dùng nó, nếu là dự án cá nhân thì CSS inline, nếu đã quen Sass thì cứ tiếp tục,
còn nếu muốn all-in với CSS hiện đại thì đó cũng là một lựa chọn rất tuyệt
Tôi làm web quá lâu rồi nên ngay cả những ví dụ bị gọi là “kiểu cũ” cũng có nhiều tính năng là lần đầu tôi thấy
Đây là lần đầu tôi thấy tính năng điều chỉnh độ sáng màu
Trước đây tôi làm bằng Sass và Compass, nhưng việc bảo trì toolchain khá phiền phức
Giờ CSS tự hỗ trợ rồi nên tiện hơn nhiều