Với các framework hiện đại, thư viện component, và CSS theo hướng tiện ích, đây là một câu hỏi hợp lý.

Hầu hết lập trình viên frontend ngày nay hiếm khi viết CSS “thực sự”.
Bố cục đã được xây dựng sẵn.
Tính đáp ứng được xử lý cho chúng ta.
Khả năng truy cập lẽ ra phải được tích hợp sẵn.
Nếu cần tạo kiểu gì đó, chúng ta chỉnh một biến, thêm một lớp tiện ích, hoặc ghi đè một token của component.

Vậy…
tại sao phải dành thời gian học CSS?

Trong một thời gian dài, tôi cũng nghĩ như vậy.
Cho đến khi vấn đề truy cập buộc tôi phải quay lại với nó.


Gần đây, tôi có một nhiệm vụ nghe có vẻ khá đơn giản:
lấy một component cũ và nâng nó lên đạt chuẩnWCAG về khả năng truy cậphiện đại.

Bạn biết đấy — khả năng truy cập tốt hơn, độ tương phản cao hơn, trạng thái focus phù hợp.
Không phải là thứcó thì tốt.
Đó là một yêu cầu bắt buộc, bởi vì tôi xem trọng vấn đề truy cập.

Trên thực tế, nó đồng nghĩa với việcphải làm rất nhiều CSS.
Container phải được chỉnh sửa nặng, nhưng thiết kế giao diện phải giữ nguyên y chang.

Và ôi trời…
tôi đã vật lộn.
Rất nhiều.
😅

Đến một lúc tôi chợt nghĩ:

CSS thực sự có thể là phần khó nhất trong phát triển frontend.
Phức tạp hơn cả JavaScript.

(Ừ thì, có lẽ cũng không giúp ích gì khi lập trình viên trước đó rõ ràng cũng không hiểu CSS 😬)


CSS Từng Là Sở Trường Của Tôi

Điều buồn cười là tôitừng rất giỏi CSS.

Mô hình hộp?
Dễ ợt.
Mẹo bố cục?
Chuyện thường ngày.
Tôi thậm chí có thể căn giữa một phần tử theo cả chiều dọc và ngang —mà không cần Google😄

Rất lâu trước đây, tôi thậm chí còn kiếm thêm tiền bằng cách xây dựng các trang web WordPress.
Về mặt kỹ thuật là những thứ đơn giản, nhưng khách hàng trả tiền cho tôi vì các trangtrông đẹp mắt.
Đó chính là giá trị.

Vậy…
chuyện gì đã xảy ra?


Hồi Chuông Cảnh Tỉnh Về Truy Cập ♿

Nhiệm vụ gần đây này là một lời nhắc nhở nghiêm khắc.

Vấn đề thực sự không phải là màu sắc hay phông chữ — mà là những thứ như:

  • đường viền focus phá vỡ bố cục
  • điều hướng bằng bàn phím đột nhiên làm lộ ra thứ tự DOM bị hỏng
  • đường viền chỉ xuất hiện trênmột nửacomponent
  • các mẹo định vị sụp đổ khi:focus-visibleđược kích hoạt

Chỉ riêng việc sửa lỗi điều hướng bằng bàn phím đã cho thấy bố cục thực sự mong manh đến thế nào.

Không có gì “cao siêu” cả.
Chỉ lànhững kiến thức CSS cơ bản đối mặt với các ràng buộc thực tế.

Và đó là lúc tôi nhận ra:
Tôi đã không thực hành CSS nghiêm túc từ rất lâu rồi.


CSS Dần Lùi Vào Hậu Trường

Tôi không biết bạn có cảm thấy như vậy không, nhưng trong nhiều năm nay, CSS đã trở thành…
thứ yếu.

Trong hầu hết các dự án, chúng ta sử dụng:

  • một thư viện component
  • một hệ thống thiết kế
  • một framework đã xử lý sẵn bố cục và tính đáp ứng

“Công việc CSS” của chúng ta thường có nghĩa là:

  • tạo kiểu cho một component đơn lẻ
  • chỉnh sửa một vài biến
  • ghi đè một thứ gì đógần nhưvừa vặn

Giao diện di động?
Có sẵn.
Lưới?
Đã được giải quyết.
Khoảng cách?
Tokens.

Và rồi còn có Tailwind.

Đừng hiểu lầm — tôi cũng dùng nó.
Rất nhiều.
Nó làm mọi thứ nhanh chóng và dễ đoán.
Kết hợp với shadcn/ui, bạn có thể cho ra giao diện người dùng trông ổn mà không thực sựthiết kếbất cứ thứ gì.

Thành thật mà nói, với các dự án cá nhân hoặc demo, tôi thậm chí không còn cố gắng nữa.
Tôi chỉ yêu cầu một LLM tạo ra một bố cục đẹp — bao gồm cả Tailwind — và tiếp tục công việc.

Không vật lộn với CSS.
Không đau đầu.

Tất nhiên, đôi khi có thứ gì đó bị hỏng.
Mộtz-indexở đây, một overflow kỳ lạ ở kia.
Nhưng điều đó chẳng là gì so với việc tự tay thiết kế và duy trì toàn bộ bố cục.

Tôi thường thậm chí không còn cài Stylelint nữa — mặc dù tôi từng đóng góp một vài dòng cho nó, điều đó có lẽ khiến tôi càng thích nó hơn.
Tại sao phải bận tâm, nếu toàn bộ component chỉ có năm dòng CSS?


Trong khi đó…
CSS Thực Sự Đang Phát Triển Mạnh Mẽ ✨

Và đó là điều trớ trêu.

CSS đã phát triểnvượt bậctrong những năm gần đây.

Giờ đây chúng ta có những thứ như:

  • Biến CSS(ừ thì, không phải mới tinh — nhưng vẫn là nền tảng)
  • Container queries
  • :has()
  • Cascade layers
  • Native nesting
  • Modern color spaces
  • Scroll-driven animations

CSS ngày nay mạnh mẽ hơn bao giờ hết.

Tôi có theo dõi sát sao tất cả những điều này không?
Cũng có.
Nhưng không sâu.

Bởi vì trong công việc hàng ngày, tôi hiếm khicầnđến nó.
Framework đã xử lý nó.
Thư viện đã trừu tượng hóa nó.
Hệ thống đã che giấu nó.


Khoảng Cách Thế Hệ

Điều thú vị là khi tôi nhìn vào các lập trình viên trẻ hơn, tôi vẫn cảm thấylớp người cũhiểu CSS tốt hơn.

Tôi thậm chí không chắc CSS còn được dạy đúng cách nữa không.
Đại học?
Có lẽ là không.
Bootcamp?
Hai ngày học CSS, rồi thẳng tiến đến JavaScript hoặc “fullstack”.

(Nhân tiện — bootcamp có còn tồn tại không?
😅)

Đó có phải là hướng đi đúng đắn?
Hay chỉ là sự tiến hóa tự nhiên?


Mì Ống Tự Làm và CSS

Đôi khi tôi tự hỏi liệu nỗi hoài niệm của tôi về CSS có giống như các bà nội trợ tự làm mì ống từ đầu không.

Chắc chắn rồi — nó tốt hơn.
Chắc chắn rồi — nó thỏa mãn hơn.

Nhưng chúng ta thực sự có thời gian cho việc đó bao nhiêu lần?

Framework, tiện ích và các lớp trừu tượng tồn tại là có lý do.
Chúng giúp chúng ta nhanh hơn.
Chúng giảm thiểu sai sót.
Chúng chuẩn hóa công việc.

Nhưng khả năng truy cập không quan tâm đến các lớp trừu tượng.

Công bằng mà nói, hầu hết các framework và thư viện component hiện đại đều cung cấp khả năng truy cập sẵn — các thuộc tính ARIA hợp lý, hỗ trợ bàn phím, quản lý focus.

Nhưng khả năng truy cập đó thường chỉ giới hạn ở “lối đi suôn sẻ”.
Khoảnh khắc bạn cần bố cục tùy chỉnh, chỉnh sửa giao diện, hoặc tương tác không chuẩn, bạn lại phải quay về với CSS thuần — và với bất kỳ kiến thức nào bạn còn sót lại.

Và khi có thứ gì đó bị hỏng — focus, điều hướng bàn phím, luồng bố cục —
sẽ không có lớp Tailwind hay prop component nào cứu bạn.

Chỉ có kiến thức về CSS mới làm được.


Vậy…
CSS Có Trở Nên Tệ Hơn Không?

Tôi không nghĩ vậy.

Tôi nghĩchúng ta chỉ ngừng học nó.

Và khả năng truy cập có một cách thức tàn nhẫn để phơi bày điều đó.


Còn Bạn Thì Sao?

Bạn có còn làm việc với CSS thường xuyên không?
Bạn có còn thiết kế bố cục từ đầu nữa không?

Hay có lẽ CSS đang trở thành một loạikiến thức hắc ám
thứ mà bạn chỉ khám phá lại khi mọi thứ trục trặc?

Có lẽ đáng để rèn luyện những cơ bắp đó thỉnh thoảng —
dù chỉ là để giải trí.

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!