Tôi đang làm việc về chuyển đổi Unsemantic từ SASS để LESS và trong khi tôi đang xây dựng vòng lặp để tạo ra các lớp học của tôi:CONCATENATE String trong LESS trong vòng lặp
.populateGridClasses (@index, @interval) when (@index > 0) {
@num: @index * @interval;
(~"[email protected]{num}, [email protected]{num}, [email protected]{num}") {
.grid();
}
.populateGridClasses(@index - 1, @interval);
}
.populateGridClasses (0, @interval) {}
// Create the grids in an inverval of 5
.populateGridClasses(20, 5);
// Tạo lưới trong phần ba .populateGridClasses (3, 33);
Nó tạo ra các lớp học như vậy:
.eh-grid-100, .eh-mobile-grid-100, .eh-tablet-grid-100 {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0 10px;
}
.eh-grid-95, .eh-mobile-grid-95, .eh-tablet-grid-95 {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0 10px;
}
...
Rõ ràng, mà có thể được condesnsed để tất cả 6 của những lớp được định nghĩa cùng một lúc. Vì vậy, ý tưởng của tôi là sử dụng vòng lặp để tạo ra một chuỗi khổng lồ mà tôi sau đó sẽ thêm .grid()
mixin tới:
@test: "";
.populateGridClasses4 (@index, @interval) when (@index > 0) {
@num: @index * @interval;
@ntest: "[email protected]{num}, [email protected]{num}, [email protected]{num}";
@test: "@{test}@{ntest}";
.populateGridClasses4(@index - 1, @interval);
}
.populateGridClasses4 (0, @interval) {}
.populateGridClasses4(20, 5);
("@{test}"){
padding-left: 1px;
}
Nhưng điều đó mang lại cho tôi một lỗi LESS LESS: Out of stack space
. Bất kỳ ý tưởng về cách tôi có thể tạo chuỗi lớn này để tôi có thể tạo 69 lớp và chỉ xác định chúng một lần? Dĩ nhiên, theo lập trình.
Wow, điều này chỉ đơn giản là cảnh quan tuyệt đẹp. Tôi rất, rất ấn tượng. Tôi có thêm một câu hỏi nếu bạn không phiền. Thay vì xác định '@ test', có cách nào chúng ta có thể truyền một chuỗi như một tham số và có hàm đầu tiên (điều kiện 1 của chúng ta) tạo một biến có tên sau nội dung chuỗi của những gì chúng ta truyền vào không? Ví dụ: '.populate-grid-classes (20, 5," classes ");'. Tôi đang cố gắng. Tôi muốn chuyển chức năng này ra khỏi tệp LESS mixins của tôi và cũng muốn sử dụng lại mã này cho 33% và 66%, vì vậy ý tưởng của tôi là tạo dòng cuối cùng '@ {test1}, @ {test2 } {padding-left: 1px; } 'làm ví dụ. – EHorodyski
Ngoài ra nếu bạn biết cách tôi có thể sử dụng các dấu ngắt dòng với các chuỗi này, Google đang ở trên "hãy bỏ qua" LESS CSS '"kick ... – EHorodyski