2013-04-16 27 views
11

Tôi đã hỏi similar question về điều này một thời gian trước đây và nhận được câu trả lời tuyệt vời. Thật không may, thời gian này vòng câu trả lời là không đủ, và câu hỏi là hơi phức tạp hơn.Nhiều chức năng bên trong chuỗi với LESS

Tôi đang sử dụng LESS với các hỗn hợp LESSHat để tạo chủ đề tại thời điểm này. Tôi đã xác định một số màu là biến và hiện đang cố gắng xác định độ dốc bằng cách sử dụng mixin .gradient() của LESSHat. Vấn đề là các mixin chấp nhận một chuỗi như là một đối số duy nhất, chứ không phải là một loạt các đối số cho mỗi tham số gradient, ví dụ:

#element { 
    .gradient(~"linear-gradient(90deg, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%)"); 
} 

Tất cả là tốt và tốt với ở trên, và tôi có thể sử dụng các biến của tôi bên trong chuỗi bằng cách sử dụng nội suy chuỗi (ví dụ: @{color-var}). Tuy nhiên, tôi cũng muốn chạy một số chức năng trên các biến, một cái gì đó như thế này:

.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, darken(@green, 10%) 50%, darken(@green, 10%) 100%)"); 

Vấn đề là darken(@green, 10%) không bao giờ được biên soạn, và một số trình duyệt đơn giản giải thích màu này như green. Có ai biết cách chính xác để bao gồm sự trở lại của các chức năng darken() bên trong chuỗi ở trên, mà không tạo ra một biến riêng biệt cho điều đó?

Để tham khảo, tôi đã thử các sau đây để avail không có:

.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, "darken(@green, 10%)" 50%, "darken(@green, 10%)" 100%)"); 
.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, {darken(@{green}, 10%)} 50%, {darken(@{green}, 10%)} 100%)"); 
+0

Tôi tin rằng "cách chính xác để bao gồm sự trở lại của 'tối()' chức năng bên trong chuỗi "là _not to_ (có nghĩa là, tôi không tin rằng hàm LESS có thể _currently_ được bao gồm trong một chuỗi và công việc; không có" nội suy chức năng "). – ScottS

Trả lời

11

này nên làm việc, nó giống như cách tiếp cận đầu tiên của bạn, nhưng bạn cũng nên bao gồm các ~:

.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, " darken(@green, 10%) ~" 50%, " darken(@green, 10%) ~" 100%)"); 
+0

Hmm, điều này dường như không hoạt động. Ví dụ: '.gradient (~" linear-gradient (trên cùng, @ {green} 0%, "darken (@green, 10%) ~" 100%) ");' biên dịch thành 'linear-gradient (trên cùng, # 77cc33 0%,, # 5fa329, 100%); 'nhận thấy dấu phẩy sai ... – BenM

+0

@BenM: Chỉ là một FYI, đây phải là vấn đề với bản mix LESSHat (một cái gì đó có giá trị chuỗi), như chỉ hoàn toàn từ quan điểm hình thành một chuỗi, các dấu phẩy thừa không hiển thị. Tôi nghĩ rằng đây là cơ bản đúng cách để có được những gì bạn muốn (mặc dù nó không phải là kỹ thuật bằng cách sử dụng chức năng trong một chuỗi). – ScottS

+2

@ScottS cảm ơn nhận xét của bạn. Tôi đã điều tra vấn đề và có vẻ như bạn khá chính xác. Vấn đề là với mixin từ LESSHat, chứ không phải là giải pháp được cung cấp bởi Lipis. – BenM

3

Các bạn đã thử lưu màu tối vào một biến đầu tiên? Như thế này:

@darkened-green: darken(@green, 10%); 
.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, @{darkened-green} 50%, @{darkened-green} 100%)"); 
+0

Vâng, điều đó hoạt động tất nhiên. Xin vui lòng xem ghi chú riêng của tôi trong câu hỏi, mặc dù: * Có ai biết cách chính xác để bao gồm sự trở lại của darken() chức năng bên trong chuỗi ở trên, ** mà không cần tạo một biến riêng biệt ** cho điều đó? * – BenM

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