Sau khi làm việc trên một số ứng dụng web lớn và nhìn thấy những tấm phong cách khổng lồ không có cấu trúc rõ ràng, tôi thực sự muốn biết liệu mọi người có tìm cách giữ sạch css cho các ứng dụng web lớn và phức tạp không.Làm thế nào để loại bỏ CSS spaghetti trong ứng dụng web cũ?
Làm thế nào để bạn di chuyển từ một di sản, mớ hỗn độn của css để làm sạch lên, độc đáo tầng, DRY stylesheets?
Ứng dụng tôi hiện đang làm việc trên có 12000 dòng css. Nó được phát triển đến kích thước này hữu cơ sớm nhất là không có tiêu chuẩn hoặc đánh giá của css, quy tắc duy nhất là làm cho ứng dụng phù hợp với thiết kế. Một số trong những vấn đề chúng tôi không ngừng có:
phong cách mâu thuẫn: một nhà phát triển cho biết thêm một .header {font-weight: bold;} nhưng .header đã được sử dụng trong các module khác và không nên in đậm trong những.
Sự cố xếp chồng: Tiện ích con Foo có đầu đề nhưng cũng chứa danh sách tiện ích con Bar với các lớp .header.
- Nếu chúng tôi xác định .foo .header {...} và .bar .header {...} mọi thứ không được ghi đè rõ ràng trong foo sẽ hiển thị trong thanh.
- Nếu chúng tôi xác định .foo> .header và .bar> .header nhưng sau đó cần phải sửa đổi foo để bọc tiêu đề trong div, ngắt kiểu của chúng tôi.
Vấn đề về thừa kế, chúng tôi liên tục xác định lại phông chữ tiện ích thành 11px/bình thường vì một số vùng chứa hàng đầu sử dụng chiều cao dòng 12px/18 px.
Chống lại thư viện tiện ích, sử dụng thư viện như dojo/dijit hoặc jquery ui để thêm tấn phong cách hoạt động có nghĩa là mã của chúng tôi bị rải rác với những nơi chúng tôi phải ghi đè kiểu thư viện. . Có ~ 2000 dòng css chỉ cho tinh chỉnh phong cách dijit BUILTIN
Chúng tôi đang ở một điểm mà chúng tôi đang nghĩ đến việc thực hiện các quy tắc sau:
Namespace tất cả các phụ tùng mới các lớp học - nếu bạn có một widget foo, tất cả các tên lớp phụ sẽ là .foo_ vì vậy chúng tôi nhận được: .foo, .foo_header, .foo_content, .foo_footer. Điều này làm cho css của chúng ta về cơ bản là FLAT, nhưng chúng ta thấy không có cách nào khác để tổ chức mã của chúng ta tiến lên mà không chạy vào các kiểu di sản hoặc các vấn đề xếp tầng mà tôi đã đề cập ở trên.
Kiểu chung của cảnh sát - có một số ít các lớp chung chung chỉ được áp dụng trong các tình huống rất cụ thể. ví dụ. .editable - áp dụng cho các phần của câu nên gọi trình chỉnh sửa - chỉ nên chứa các nút văn bản.
Tận dụng hỗn hợp trình biên dịch css Để tránh nhiều lần xác định cùng kiểu trong các tiện ích khác nhau, hãy xác định và sử dụng mixin. Mặc dù chúng tôi lo lắng các mixin cũng sẽ mất kiểm soát.
Làm cách nào khác chúng ta có thể chuyển từ mớ hỗn độn css liên tục giới thiệu hồi quy cho một điều gì đó có thể duy trì trong tương lai.
trường hợp anh ta đề cập đến các quy tắc xung đột trong một trang và trang khác thì sao? –
Ý tưởng hướng dẫn phong cách thật tuyệt vời. –
"Sử dụng hướng dẫn kiểu làm bài kiểm tra đơn vị". Đây có lẽ là phần tốt nhất của lời khuyên liên quan đến CSS mà tôi từng đọc. –