2012-12-14 33 views
12

Tại sao không thể trình duyệt nào áp dụng quy tắc rgb màu này?Tại sao "rgb (224, 226, 213)" giá trị thuộc tính không hợp lệ?

HTML

<header> 
    <h1>Header</h1> 
</header> 

CSS

header h1 { 
    background-color: red; 
    color: rgb (224, 226, 213); 
} 

Chrome công cụ Web Developer đang nói với tôi rằng đó là một giá trị tài sản không hợp lệ, nhưng tôi không thể hiểu tại sao. Bạn có thể xem kết quả trong JSFiddle.

+0

Có một khoảng trống sau rgb – Esailija

+6

Mặc dù đây là câu hỏi đánh máy, tôi không nghĩ rằng "không giúp được người đọc trong tương lai". Đây là một hình ảnh khá phổ biến, và tôi ngụ ý càng nhiều câu trả lời của tôi. – BoltClock

Trả lời

28

Bạn có một khoảng trống giữa rgb(, mà không được phép:

header h1 { 
    background-color: red; 
    color: rgb(224, 226, 213); 
} 

Không, tôi nói thật đấy, nó không phải.

Không giống như nhiều ngôn ngữ lập trình, CSS rõ ràng cấm không gian trống giữa tên hàm và dấu ngoặc đơn mở. Điều này không chỉ áp dụng cho rgb()rgba(), mà còn cho các giá trị chức năng khác như url()attr(), cũng như các lớp giả chức năng như :nth-child(), :lang():not().

Tham khảo section 4.3.6 of CSS2.1, trong đó nêu:

Định dạng của giá trị RGB trong các ký hiệu chức năng là 'rgb (' theo sau là một danh sách bằng dấu phẩy trong ba giá trị số (hoặc ba giá trị số nguyên hoặc ba giá trị phần trăm) theo sau là ')'. [...] Ký tự khoảng trắng được phép xung quanh các giá trị số.

và cũng tham khảo Appendix G cho ngữ pháp, chính xác tokenization sau, rõ ràng cho thấy rằng khoảng trắng không mong đợi giữa các định danh và các dấu mở ngoặc:

{ident}"("  {return FUNCTION;} 
+2

Đây là một bất ngờ đối với tôi, nhưng cú pháp CSS 2.1 thực sự định nghĩa các ký hiệu hàm theo cách đó, và thậm chí mô tả văn xuôi của 'rgb (...)' làm cho nó rõ ràng (và nó cũng nói rõ rằng khoảng trống được cho phép xung quanh các con số, ngụ ý rằng các khoảng trống khác không được cho phép trong ký hiệu). –

+2

Cách đơn giản nhất để giải quyết các lỗi như vậy là xác nhận nó. Bạn có thể xác nhận css của bạn trong [Trình xác thực W3C] (http://jigsaw.w3.org/css-validator/#validate_by_input). –

+0

Trong khi trình xác nhận tính năng Ghép hình có thể phát hiện ra lỗi cho bạn, điều này không đáng tin cậy khi bạn chỉ cách * sửa * chúng. Ví dụ, nó không thực sự cho bạn biết rằng sự hiện diện của không gian đang gây ra vấn đề (vì nó không * nhìn thấy * không gian như là một vấn đề để bắt đầu với). Và với một người quen với việc lập trình các ngôn ngữ cho phép không gian ở đó, nó sẽ không rõ ràng ngay lập tức. Điểm thưởng nếu người hỏi đã thực sự chạy CSS của họ thông qua Jigsaw trước khi đăng câu hỏi của họ (không nói tôi tin rằng họ đã làm, nhưng ngay cả khi họ đã làm tôi sẽ không ngạc nhiên nếu họ đã kết thúc gửi anyways). – BoltClock

1

Bạn cần loại bỏ các khoảng trắng sau rgbrgb(224, 226, 213)

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