Tôi đang cố gắng để viết một khối trong CSS Preprocessor LESS rằng sẽ làm như sau:Trình xử lý trước CSS LESS: Có cách nào để ánh xạ một màu duy nhất với định nghĩa rgb và rgba không?
@transparent_background(@color; @alpha: .8)
{
background: @color;
background: rgba(<color R value>, <color G value>, <color B value>, @alpha);
}
Có cách nào để có được các giá trị RGB ra khỏi @color nếu đó là một định nghĩa hex tiêu chuẩn (ví dụ # rrggbb)? Có cách nào để làm điều này nếu @color được định nghĩa một số cách khác?
EDIT: GIẢI PHÁP
@transparent_background(@color; @alpha: .8)
{
background: @color;
background: @color + rgba(0, 0, 0, @alpha);
}
Vì @color chỉ là định nghĩa hex, không cần phải trừ kênh alpha trước. Vì vậy, giải pháp đơn giản là: @color + rgba (0, 0, 0, @alpha). Có vẻ rõ ràng trong hồi tưởng nhưng tôi đã không nhận ra bạn có thể trộn hex/rgba như thế. –
Tôi chỉ là một chút hoang tưởng và cố gắng sửa đổi kênh alpha trong tương lai, do đó phép trừ để buộc kênh alpha vào trạng thái đã biết để thêm '@ alpha' vào kết quả là kênh alpha bằng với' @ alpha'. Như là một tiền thưởng thêm nó làm cho nó rõ ràng hơn rằng bạn đang chỉ định kênh alpha thay vì chỉ điều chỉnh nó một chút. –
Ít nhất, ít nhất, không có kiểm tra nào để ngăn kênh alpha bị âm. –