所以我想少建構我的網格。 我使用較少頁面上描述的列方法(http://lesscss.org/features/#loops-feature)。但是當我運行它時出現錯誤。 54減去css:最大的調用堆棧大小,循環迴路
Error: Maximum call stack size exceeded in file /assets/less/grid.less line no. 54
行是我發起的環.loop(@grids, (@grids + 1));
如果我刪除.generate-offset(@n, @tag, (@i + 1));
的混入我得到另一個錯誤內。
Error: Cannot read property 'denominator' of undefined in file/assets/less/grid.less line no. 54
然而,當我手動運行混入我的工作就像一個魅力。 例如
.generate-columns(2, xs);
.generate-offset(2, xs);
如果我運行.loop
混入沒有.generate-columns
和.generate-offset
混入它的工作原理,以及和運行的3倍預期(由於3個斷點)。
任何想法爲什麼我結合兩者時會出現這些錯誤?
@prefixes: 'sm', 'md', 'lg';
@breakpoints: '0', '100rem', '140rem';
@columns: '2','6','12';
.generate-offset(@n, @tag, @i: 1) when (@i < @n) {
[email protected]{tag}[email protected]{i} {
margin-left: (@i * 100%/@n);
}
.generate-offset(@n, @tag, (@i + 1));
}
// Grid loops
.loop(@index, @count) when (@index > 0){
// extract variables
@current: (@count - @index);
@prefix: e(extract(@prefixes, @current));
@breakpoint: e(extract(@breakpoints, @current));
@column: e(extract(@columns, @current));
@media (min-width: @breakpoint) {
.generate-columns(@column, @prefix);
.generate-offset(@column, @prefix);
}
.loop ((@index - 1), @count);
}
// run
@grids: length(@breakpoints);
.loop(@grids, (@grids + 1));
SOLUTION:
萬一有人有同樣的問題,我的最終代碼現在看起來是這樣。
@prefixes: sm, md, lg;
@breakpoints: 0, 100rem, 140rem;
@columns: 2,6,12;
// ********************
// Column Mixin
//
.generate-columns(@n, @tag, @i: 1) when (@i =< @n) {
[email protected]{tag}[email protected]{i} {
flex: 0 0 (@i * 100%/@n);
}
.generate-columns(@n, @tag, (@i + 1));
}
// Offset Mixin
//
.generate-offset(@col, @tag, @i: 1) when (@i < @col) {
[email protected]{tag}[email protected]{i} {
margin-left: (@i * 100%/@col);
}
.generate-offset(@col, @tag, (@i + 1));
}
// Make grid
//
.make-grid(@breakpoint, @cols, @pref) {
& when(@breakpoint > 0){
@media(min-width: @breakpoint) {
.generate-columns(@cols, @pref);
.generate-offset(@cols, @pref);
}
}
& when(@breakpoint = 0){
.generate-columns(@cols, @pref);
.generate-offset(@cols, @pref);
}
}
// Run make-grid for every breakpoint
//
.loop(@index) when (@index > 0){
// run loop first to change order
.loop ((@index - 1));
.make-grid(
extract(@breakpoints, @index),
extract(@columns, @index),
extract(@prefixes, @index)
);
}
.loop(length(@breakpoints));
第一件事,第一,你的循環woild運行四次,但只有三個斷點。爲了查看可能存在的其他錯誤,您應該向我們展示您的完整代碼。 '@ prefixes','@ columns' variablea有什麼? – Harry 2015-02-01 06:13:32
你當然是對的(現在改回來了,那只是爲了測試)。 我現在添加了其他2個變量。這有幫助嗎? – 2015-02-01 10:30:35