2012-06-22 31 views
15

Tôi biết rằng các quy tắc css khá phức tạp; Tuy nhiên, css sau đây có thể được khá đơn giản giảm trong một số cách của trình tối ưu hóa? Và nếu vậy, có một lựa chọn cho nó trong đá quý rails-sass?Trình tối ưu hóa SASS có thể xóa các kiểu trùng lặp không?

span { 
    background: red; 
    color: green; 
} 

.test2 { 
    background: red; 
    color: green; 
} 

span { 
    background: green; 
    color: inherit; 
} 

.test2 { 
    background: inherit !important; 
    color: inherit; 
    color: inherit; 
    color: inherit; 
} 

bối cảnh khác:

Để giúp làm rõ, tôi sẽ đề nghị sau đây cũng ...

Nguồn:

span { 
    background: red; 
} 
span { 
    background: orange; 
    color: green; 
} 
span { 
    background: yellow; 
} 
span { 
    background: blue; 
    color: green; 
} 

Và, tôi sẽ muốn có một trình biên dịch để tạo các thông tin sau:

span { 
    background: blue; 
    color: green; 
} 

Tôi biết có phong cách thừa, nhưng điều này xảy ra nhiều lần khi liên tục sửa đổi bảng định kiểu và tôi muốn loại bỏ mã chết.

+0

Bạn có thể chạy CSS outputted qua [CSSTidy] (http://csstidy.sourceforge.net/) hoặc như. – Whymarrh

Trả lời

0

Không mà tôi biết, Sass sẽ chỉ định dạng mã của bạn khác nhau nhưng không tối ưu hóa nó cho bạn http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#output_style

Mở rộng trên bình luận Whymarrh của, CSSTidy có một tiện ích dòng lệnh có thể được tích hợp trong một quá trình xây dựng hoặc tương tự, http://packages.ubuntu.com/hardy/csstidy

+0

Vấn đề với csstidy là nó đã không được duy trì trong nhiều năm, vì vậy tôi không tin rằng nó sẽ hỗ trợ các bộ chọn phương tiện mới hơn, và nhiều thuộc tính nền cần thiết cho gradient và thiết kế đáp ứng. –

+0

Đúng vậy, bạn cũng có thể đặt cờ để bỏ qua cú pháp không xác định, vì vậy ít nhất nó sẽ bị bỏ qua, tôi đã chạy một số thử nghiệm ngày hôm qua, chống lại một tập hợp 10 tệp CSS được xuất và kết quả là đáng thất vọng nhất trường hợp, chúng tôi có khoảng 1% thu được trong nén, hãy nhớ rằng công ty của chúng tôi rất hậu môn khi nói đến hiệu suất, vì vậy những thứ như #ffffff (thay vì #fff) không được chấp nhận, số dặm của bạn có thể thay đổi, tôi ' d khuyên bạn nên mang nó cho một ổ đĩa thử nghiệm ít nhất là :) – leopic

+3

Nếu bạn đã cài đặt node.js thì có [csso] (https://github.com/css/csso), có vẻ như nó đang được duy trì tích cực. Hướng dẫn giải thích những gì tối ưu hóa nó sẽ làm. – rwb

0

Để tối ưu hóa mã của bạn luôn luôn sử dụng tùy chọn '--style nén' phù khen của bạn

Ví dụ:

sass --watch screen.sass --style compressed 

SASS giúp cuộc sống của bạn trở nên dễ dàng hơn nhiều nhưng ở trạng thái hiện tại, bạn không thể tối ưu hóa hoàn hảo trừ khi bạn có thể viết mã ruby ​​và tự viết nó. Có một số cách giải quyết có thể trông khó xử được sử dụng trong ví dụ của bạn nhưng ý tưởng đằng sau nó để tiết kiệm thời gian của bạn và không phải tự mình nhập.

ví dụ bạn có thể có thể tối ưu hóa mã của bạn bằng cách sử dụng (số lượng cũng cần được loại bỏ) những cách tiếp cận:

span, .test2 { 
    background: red; 
    color: green; 
} 

thay vì:

span { 
    background: red; 
    color: green; 
} 

.test2 { 
    background: red; 
    color: green; 
} 

trong CSS tinh khiết vì nó là tương thích với cú pháp SASS mới hơn trong SASS bạn có thể thực hiện theo:

%theme-red-green { // i couldn't came up with better naming :) 
    background: red; 
    color: red; 
} 

span { 
    @extend %theme-red-green 
} 
.test2 { 
    @extend %theme-red-green 
} 

ngay cả khi chúng ta không dùng dấu phẩy để tách phong cách giống như bạn làm trong CSS đơn giản của bạn nó sẽ tạo ra mã tối ưu:

span, .test2 { 
    background: red; 
    color: green; 
} 

và không lặp lại cùng một thuộc tính và các giá trị:

span { 
    background: red; 
    color: green; 
} 

.test2 { 
    background: red; 
    color: green; 
} 

có bạn để ý tôi đã sử dụng '% theme-' thay vì '.theme-' tạo nên sự khác biệt trong đầu ra của bạn. Bộ chọn lớp sẽ được bao gồm trong tệp xuất của bạn

và hai thuộc tính 'màu' không cần thiết với giá trị 'kế thừa' sẽ không bị xóa ngay cả ở chế độ nén.

+2

Điểm của câu hỏi không phải là cách tối ưu hóa việc viết mã, nhưng trong việc có một trình biên dịch "sửa" các dòng css dư thừa. –

+0

@MarshallAnschutz bạn đã từng làm việc với SASS chưa? những gì trong quan điểm của bạn là sai về câu trả lời của tôi? quan điểm của tôi ở đây là nói với một trình biên dịch để sửa chữa nó, nó đã không thể vào thời điểm tôi trả lời câu hỏi để tìm ra nó trên của riêng nó. Vì vậy, theo cách đó, nó tối ưu hóa mã của bạn. Ai đó thấy nó hữu ích, vì vậy thay vì downvoting tôi, cho anh ta một câu trả lời tốt hơn và tôi sẽ sẵn sàng cung cấp cho bạn một upvote, bởi vì những gì đếm ở cuối là sự giúp đỡ mọi người nhận được từ bạn. – orustammanapov

+1

nếu bạn nhìn vào câu hỏi ban đầu của tôi, nguồn có 4 nhịp có thể đã được giảm xuống 1 nhịp. Rõ ràng, tôi có thể viết nó theo cách đó, nhưng đôi khi sử dụng một thư viện như Bootstrap, bạn ghi đè lên rất nhiều phong cách nguyên văn, gây ra các kiểu trùng lặp. Câu hỏi của tôi là yêu cầu làm thế nào để có được trình biên dịch để tự động loại bỏ css không sử dụng từ tài liệu. –

5

Tôi nghĩ rằng tôi có thể đã tìm ra cách để ít nhất tìm ra phong cách trùng lặp trong cả css và sass/templates ít:

Các mã nguồn mở csscss đá quý http://zmoazeni.github.io/csscss/

Nó xuất hiện để có thể phát hiện bản sao, mặc dù tôi đang có để khỉ vá xung quanh css bootstrap-sass đá quý không được trong cùng một thư mục như tài sản css của tôi.

Từ các tài liệu, bạn có thể chạy:

$ csscss -v path/to/styles.css 

hoặc

$ csscss -v path/to/styles.css.scss 
+3

"mặc dù tôi đang phải vá khỉ xung quanh css đá quý bootstrap-sass không được trong cùng một thư mục như tài sản css của tôi." - Vui lòng gửi một vấn đề trên [github] (https://github.com/zmoazeni/csscss/issues). Tôi muốn biết những gì bạn đang cố gắng và những gì không hoạt động. –

Các vấn đề liên quan