2010-06-24 79 views
48

Gần đây, tôi đã xem qua tệp CSS và chuyển tất cả các mã thập lục phân 6 chữ số thành mã gồm 3 chữ số đơn giản (ví dụ: số #FDFEFF của tôi đã được rút ngắn thành #FFF). Nó render khá nhiều màu sắc giống hệt như trước, có vẻ như với tôi rằng ở giữa các phần khá vô dụng và loại bỏ chúng đã lưu lại cho tôi toàn bộ 300 byte trong tệp CSS của tôi.Cách sử dụng mã màu 3 chữ số thay vì mã màu 6 chữ số trong CSS?

Bạn có sử dụng phiên bản nào không quan trọng? Tôi hiếm khi chạy trên các trang web chỉ sử dụng các mã gồm 3 chữ số (hoặc tôi đoán tôi không bao giờ chạy trên các trang web đó). Nó vẫn hoàn toàn hợp lệ để sử dụng mã gồm 3 chữ số trên mã gồm 6 chữ số hay chúng tôi phải sử dụng mã gồm 6 chữ số đầy đủ?

+11

Lưu một vài byte (hoặc thậm chí kb) trong CSS không thực sự có ý nghĩa nhiều vì đó là thứ được yêu cầu một lần và sau đó được lưu vào bộ nhớ cache. Bất kỳ nhà thiết kế nào cũng nói rằng FDFEFF không giống như FFF. Và tôi có xu hướng đồng ý. Như một màu duy nhất nó không tạo ra nhiều khác biệt, nhưng trong sự kết hợp của nhiều nó. –

+1

Tôi cũng là một người tối ưu hóa, nhưng bạn có nghĩ về thực tế là 300 byte có nhiều khả năng ít hơn cả các tiêu đề HTTP cho các yêu cầu của một trang không? Ngoài ra, bạn có thể muốn xem xét các địa điểm khác để tối ưu hóa kích thước. Chẳng hạn như hình ảnh sprites, nhưng cũng ít công cụ thủ công như máy nén CSS/JS, hình ảnh tối ưu hóa, vv –

+0

lại: tiết kiệm một vài byte trong CSS không thực sự có ý nghĩa nhiều. Nó hoạt động khi làm việc trên các hệ thống nhúng như Atmel/ESP – Scott

Trả lời

67

Mã gồm 3 chữ số là viết tắt, #123 giống với #112233. Trong ví dụ bạn đưa ra, bạn đã (hiệu quả) hoán đổi #FDFEFF cho #FFFFFF, gần với màu gốc nhưng rõ ràng là không chính xác.

Nó không "quan trọng" bạn sử dụng phiên bản nào, nhưng mã màu gồm 3 chữ số có nghĩa là bạn có ít sự lựa chọn hơn về màu. Nếu bạn cảm thấy tiết kiệm 300 byte đáng giá, hãy tiếp tục và sử dụng mã gồm 3 chữ số, trừ khi bạn đang thiết kế cho tình huống băng thông thấp, 300 byte đó sẽ không thực sự giúp bạn tiết kiệm được nhiều.

+2

Tôi cảm thấy rằng việc tiết kiệm thêm 300 byte là quan trọng hơn việc có thêm * chính xác * màu sắc mà bạn hầu như không thể nói sự khác biệt từ anyways. – animuson

+16

Bạn nói rằng vì ví dụ của bạn là #FDFEFF, khá gần với #FFFFFF và hầu như không đáng chú ý khi bạn di chuyển nó theo cách đó bằng cách sử dụng cách viết tắt. Nhưng nếu bạn nhìn vào # F0F0F0 và #FFF, thì * là * đáng chú ý. Hoặc xem # E0F040 và sau đó rút ngắn thành # EF4 - chênh lệch rất lớn. Thiết kế đồ họa sẽ ném phù hợp nếu bạn cố gắng nói với họ những màu sắc là "đủ gần". – Chris

+13

Nếu bạn rút ngắn # F0F0F0 thành #EEE (#EEEEEE), liệu điều đó có còn gần giống với màu không? – animuson

3

Nếu phiên bản "3 chữ số" tạo ra màu bạn cần thì bạn có thể sử dụng nhiều tùy thích. Nó chắc chắn không sai.

0

Việc bạn sử dụng viết tắt hoặc màu hex bình thường không quan trọng, vì vậy hãy tiếp tục và chuyển đổi chúng nếu bạn muốn.

tháo gỡ chúng chỉ lưu cho tôi một toàn bộ 300 byte trong file CSS của tôi

Wow, một đầy đủ 300 byte! Điều này là trừ khi bạn sẽ giảm thiểu, nén và kết hợp tất cả các css, javascript của bạn, vv 300 byte là hầu như không đáng làm phiền với, đặc biệt là khi tốc độ internet trung bình ngày càng tăng. Các tính năng chính:

Hãy vui vẻ!

+1

Trên thực tế, tôi đã cố gắng để có được kích thước CSS bên ngoài của tôi dưới 8K, và tôi đã được xem xét làm anyways này vì vậy tôi figured, tại sao không? – animuson

23

Viết tắt hút! Không sử dụng nó. Khó duy trì và tạo biến thể không cần thiết, ví dụ: khi tìm kiếm và thay thế một giá trị màu ("oh, bây giờ tôi phải xem xét #FFFFFFwhite#FFF").

Điều bạn tiết kiệm về kích thước không bao giờ đáng giá những gì bạn mất trong khả năng bảo trì. Sử dụng minifaction và nén để tiết kiệm băng thông.

+6

Tôi sử dụng viết tắt rất nhiều, nhưng hôm nay chúng tôi đã tìm ra rằng nó không hoạt động trong IE10 khi bạn đặt bgcolor = "# fff" trên thẻ body (công cụ html4 xấu xí dành cho email bản tin), nó chỉ hiển thị màu đen, bgcolor = #ffffff "hoạt động Gmail cũng gặp sự cố với nó khi bạn sử dụng viết tắt trong thư. –

+1

Điều gì về việc sử dụng cụm từ thông dụng để tìm kiếm? – Alexxus

+1

@MVision: xem [Tại sao giá trị mã hex màu 3 chữ số được diễn giải khác nhau trong Internet EXPLORER?] (Http://stackoverflow.com/a/32153998/588079) để có giải thích đầy đủ về điều đó. Lỗi/vấn đề/vấn đề duy nhất là nhà phát triển mong đợi kết quả thống nhất có thể dự đoán được khi đặt giá trị không hợp lệ cho 'bgcolor' – GitaarLAB

2

Đó là sự thật, nhưng chuyển đổi này là không chung:

#FFF == #FFFFFF 
#CCC == #CCCCCC 

Vì vậy, những gì nó làm là nó "đôi" mỗi chữ số thập lục phân. Vì vậy, nó không phải là cùng một màu sắc. Tuy nhiên, nó có vẻ giống nhau bởi vì sự khác biệt là phút. Một quy trình màu được hiệu chỉnh có thể giúp ích trong trường hợp này.

5

Nếu bạn sử dụng này trong một bảng trong IE 7 8 hoặc 9 (không may điều này có liên quan kể từ ngày phản hồi này)

http://www.w3schools.com/html/tryit.asp?filename=tryhtml_tables

6 mã chữ số làm việc tốt nhưng 3 mã chữ số render như đen

<table border="1" bgcolor="#ff0000"> vs. <table border="1" bgcolor="#ff0"> 
+8

Vấn đề đó là cụ thể cho các thuộc tính màu trong HTML. Nó không phải là một vấn đề trong CSS chính nó. Thậm chí bạn không nên sử dụng thuộc tính 'bgcolor'. Nó không được chấp nhận cho các lứa tuổi. – animuson

+1

'đen' thực sự là 'đen-ish' .. Viết tắt '# ff0' trên' bgcolor' trở thành '# 0f0f00' thay vì mong đợi' # ffff00' (màu vàng) trong tất cả các phiên bản của IE (các ứng dụng độc lập như Outlook) . Ngoài ra, đặt giá trị hex 3 chữ số trên 'bgcolor' * là * lỗi, * không * hành vi không xác định (cho mỗi thông số kỹ thuật) có thể xảy ra. Xem: http://stackoverflow.com/a/32153998/588079 – GitaarLAB

2

tôi luôn luôn sử dụng viết tắt. Ưu điểm tốt nhất là tôi có thể dễ dàng nhớ mã.

Bạn vẫn có 16 = 4,096 màu để chọn, là đủ.

Tuy nhiên, nếu bạn lưu 300 byte trong mã màu viết tắt, điều đó có nghĩa là bạn có 100 màu bị giảm trong CSS của mình. Trừ khi trang của bạn rất đa dạng, hoặc tất cả các cầu vồng và hoa có vẻ như rất nhiều. Bạn có thể giỏi CSS có hệ thống, nhưng tôi thường thấy các quy tắc css không cần thiết. Ví dụ: nếu bạn đang đặt cùng một quy tắc cho nhiều phần tử con có thể đã được thay thế bằng cách đặt quy tắc trên ông bà và trong một phần tử ngoại lệ thay thế.

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