Quy ước tên cho CSS sẽ giúp bạn tiết kiệm thời gian khi debug
Tôi đã nghe không ít developer nói rằng họ ghét CSS. Với kinh nghiệm của mình, đây là kết quả cho việc không dành thời gian để học CSS. CSS không phải là “ngôn ngữ” đẹp nhất, nhưng nó đã thành công trong việc làm front-end cho các website trong hơn 20 năm nay. Tuy nhiên, ...
Tôi đã nghe không ít developer nói rằng họ ghét CSS. Với kinh nghiệm của mình, đây là kết quả cho việc không dành thời gian để học CSS.
CSS không phải là “ngôn ngữ” đẹp nhất, nhưng nó đã thành công trong việc làm front-end cho các website trong hơn 20 năm nay. Tuy nhiên, khi bạn viết nhiều CSS, bạn sẽ nhận ra được thấy một nhược điểm lớn. Quá khó để developer có thể maintain CSS.
Các CSS tệ sẽ nhanh chóng trở thành một cơn ác mộng đối với các lập trình viên. Dưới đây là một số quy ước tên sẽ giúp bạn giảm vô số giờ để debug.
Bạn đã từng như vậy phải không?
Sử dụng dấu phân cách “-“
Nếu bạn sử dụng nhiều JavaScript
1 2 3 |
var redBox = document.getElementById('...') |
Vấn đề là cách đặt tên này không phù hợp với CSS.
Đừng bao giờ:
1 2 3 4 5 |
.redBox { border: 1px solid red; } |
Thay vì vậy, hãy làm như thế này:
1 2 3 4 5 |
.red-box { border: 1px solid red; } |
Đây là một tiêu chuẩn đặt tên cho CSS. Và điều này được cho là dễ đọc hơn.
Ngoài ra, nó cũng phù hợp với thuộc tính của CSS.
1 2 3 4 5 6 7 8 9 10 |
// Correct .some-class { font-weight: 10em } // Wrong .some-class { fontWeight: 10em } |
Qui ước đặt tên BEM
Các team có cách tiếp cận khác nhau để viết CSS selector. Một số nhóm sử dụng dấu phân cách, trong khi một số khác lại thích sử dụng một cách đặt tên có cấu trúc hơn gọi là BEM.
Nhìn chung, có 3 vấn đề mà qui tắc này giải quyết:
- Để biết 1 selector làm cái gì, chỉ cần nhìn vào tên của nó
- Để có một ý tưởng về nơi mà một selector được sử dụng, chỉ cần nhìn vào nó
- Để biết mối quan hệ giữa các các class name, chỉ cần nhìn vào chúng
Bạn đã bao giờ nhìn thấy class name được viết như sau:
1 2 3 4 5 6 7 8 |
.nav--secondary { ... } .nav__header { ... } |
Đó là quy tắc BEM.
Giải thích BEM
BEM cố gắng phân chia giao diện người dùng tổng thể thành các component nhỏ có thể tái sử dụng.
Hãy quan sát hình ảnh dưới đây: