2012-03-08 28 views
13

Tôi có một quy tắc CSS như thế này:Tôi có thể tắt Sass RGB -> Màu Tên

background: #fff url('/assets/img/file.png'); 

Nó được biên soạn để:

background: white url("/assets/img/file.png"); 

Có cách nào để ngăn chặn nó từ chuyển đổi nó như thế? Có JS trên trang của tôi tìm kiếm các giá trị RGB và tôi không muốn phải chuyển đổi các chuỗi đó thành RGB trong một số chức năng hacky.

+0

Sass không làm điều này cho tôi .. bạn chắc chắn sass là vấn đề của bạn? – Ben

+0

Điều này không xảy ra nếu chúng ta chỉ làm nền: #FFF, không có hình ảnh. Bạn đã thử điều đó chưa? Bạn đang sử dụng kiểu đầu ra nào? –

+0

Tôi đã trêu chọc trang này vì bộ lọc ms không nhận dạng các phần tử ngắn-hex và 'rake: tiền biên dịch' luôn mang đến cho tôi hình lục giác ngắn. Có một hàm 'ie-hex-str' mà mọi người không biết. Google đó. –

Trả lời

27

Theo mặc định, Sass sẽ không chuyển đổi giá trị màu đen từ giá trị hex của chúng trừ khi bạn đang buộc Sass nội suy với #{} hoặc biến.

Sử dụng nội suy sẽ trả về phiên bản "to_sass" của giá trị bạn quan tâm. Ví dụ: #{ #fff } sẽ nội suy thành "trắng". Điều này cũng xảy ra trong các thay thế biến: các chữ màu được dịch sang các đối tượng Màu khi được sử dụng làm biến, sau đó "to_sass" được chỉnh sửa vào biểu định kiểu của bạn.

Ngoài ra, bạn có thể chỉ định tùy chọn kiểu compressed, sẽ trả về phiên bản có độ dài byte ít hơn (ví dụ: red thay vì #f00). Vì white dài 5 ký tự và #fff chỉ là 4, quy tắc của bạn sẽ thay thế bằng #fff thay thế.

Không có cách nào để tắt chuyển đổi tên màu HTML4 ngược lại khi sử dụng biến. Là một work-around, bạn có thể khai báo các biến màu dưới dạng một chuỗi, sau đó sử dụng các kiểu với hàm unquote().

$color: '#fff'; 
.white { color: unquote($color) } 
+0

Câu trả lời hay, nhưng dường như nó không có tác dụng với tôi (* Sass 3.2.3 *) nên có lẽ đã có sự thay đổi. – Dan

+0

Làm việc cho tôi trong 3.2.3, bất kể chế độ biên dịch nào là: '$ color: '#FFF'; url. {Background: unquote ($ color) url ('/ img/file.png'); } ' –

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