Sass / La bàn - Chuyển đổi Màu Hex, RGB hoặc Đã đặt tên thành RGBA


86

Đây có thể là La bàn 101, nhưng đã có ai viết một bản mixin đặt giá trị alpha của một màu chưa? Tốt nhất, tôi muốn mixin có bất kỳ hình thức định nghĩa màu nào và áp dụng độ trong suốt:

@include set-alpha( red, 0.5 );          //prints rgba(255, 0, 0, 0.5);
@include set-alpha( #ff0000, 0.5 );      //prints rgba(255, 0, 0, 0.5);
@include set-alpha( rgb(255,0,0), 0.5 ); //prints rgba(255, 0, 0, 0.5);

Câu trả lời:


179

Sử dụng rgbachức năng được tích hợp trong Sass

Đặt độ mờ của một màu.

Ví dụ:

rgba (# 102030, 0,5) => rgba (16, 32, 48, 0,5)
rgba (xanh lam, 0,2) => rgba (0, 0, 255, 0,2)

Các thông số:
(Màu) màu
(Số) alpha - Một số từ 0 đến 1

Trả lại:
(Màu)

Mã:

rgba(#ff0000, 0.5); // Output is rgba(255,0,0,0.5);

4
không thể tin rằng tôi đã không chỉ thử điều đó. Cảm ơn rất nhiều max
Pat Newell

@jon, bạn có thể giải thích thêm về những gì gây nhầm lẫn trong câu trả lời của tôi để tôi có thể cải thiện nó không?
maxbeatty

@maxbeatty Tôi không chắc điều gì đã xảy ra với nhận xét của mình nhưng tôi đã bị nhầm lẫn bởi "==>" ... điều này có vẻ hiển nhiên trong nhận thức muộn màng, nhưng khi bạn cảm thấy mất hứng thì thật khó để biết được mã cần thiết từ các bình luận. tôi đoán nó có thể được làm rõ ràng hơn bằng cách chỉ bao gồm mã có thể sử dụng thực tế trong các khối mã.
jon

@jon, blockquote trực tiếp từ tài liệu Sass. Thay vì chỉ liên kết đến chức năng tích hợp có liên quan. Tôi nghĩ sẽ hữu ích nếu đưa các tài liệu liên quan vào câu trả lời. Xin lỗi, điều này là khó hiểu.
maxbeatty

oh DUH. Arrg. Luôn luôn nhìn vào HỘP trước khi bạn cố gắng nghĩ ra bên ngoài. Sheesh!
dudewad

8

Tôi sử dụng plugin la bàn rgbapng

rgbapng là một plugin La bàn để cung cấp hỗ trợ RGBA tương thích trên nhiều trình duyệt *. Nó hoạt động bằng cách tạo nhanh các PNG trong suốt alpha pixel đơn cho các trình duyệt không hỗ trợ RGBA. Nó sử dụng thư viện Ruby ChunkyPNG thuần túy dẫn đến việc cài đặt và triển khai không phức tạp.

Tải về

gem install compass-rgbapng

Sử dụng

@include rgba-background(rgba(0,0,0,0.75));

Biên dịch sang:

background: url('/images/rgbapng/000000bf.png?1282127952');
background: rgba(0, 0, 0, 0.75);

whoa ... tuyệt vời. Tôi bị thổi bay bởi sức mạnh của la bàn. cảm ơn vì đã phản hồi
Pat Newell

7

Hàm rgba không hoạt động trên màu không trong suốt, nó trả về một hex một lần nữa. Rốt cuộc, nó không có nghĩa là chuyển đổi hex thành rgba, chúng tôi chỉ kiếm lợi nhuận từ hex không cho phép alpha (chưa).

rgba(#fff, 1) // returns #fff

Vì vậy, tôi đã thực hiện một số hàm nhỏ để tạo chuỗi rgb. Tôi không cần phải đối mặt với giấy trong suốt bây giờ.

@function toRGB ($color) {
    @return "rgb(" + red($color) + ", " + green($color) + ", " + blue($color)+ ")";
}

2

Ngoài ra còn có ie-hex-str () cho định dạng ## AARRGGBB của IE:

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str(#fdfdfd)}', endColorstr='#{ie-hex-str(#f6f6f6)}',GradientType=0); /* IE6-9 */

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.