2016-11-25 31 views
0

這裏是原代碼jsfiddle和結果應該是像thisjQuery的改變顏色遞歸

<div class="wrapper"> 
<div class="row"> 
    <div class="col red">R</div> 
    <div class="col blue">B</div> 
    <div class="col green">G</div> 
    <div class="col orange">O</div> 
</div> 
</div> 

是使命:上一行的最後一個顏色應該從previuos行下一行和第一顏色在第一應該是下一行中的第二位。

我認爲我必須使用循環和遞歸,但我沒有足夠的知識來做到這一點。

感謝提前:)

+0

你可以使用循環,rec ursive或standard,並通過每個'.row'的索引來抵消開始點或每次迭代。如果你至少表現出更多的努力,那麼你自己嘗試一下,那麼人們會更願意幫助你,因爲這不是一個代碼寫作服務 –

+0

這是怎麼回事:https://jsfiddle.net/sbu46ugL/4/或者是一排中的物品數量是隨機的?小提琴是基於四列行的css解決方案。如果你需要改變內容,你可以使用一個psuedo選擇器,其內容爲 – Pete

+0

,內容由css運行:https://jsfiddle.net/sbu46ugL/5/ – Pete

回答

1

您可以通過for循環運行,做這樣的事情

檢查這個片段

//last color of previous row should be first in next row 
 

 
//first color from previous row should be second in next row 
 
var colors = ['red', 'blue', 'green', 'orange']; 
 
$(document).ready(function() { 
 
    var rows = $('.row'); 
 
    rows.each(function(row) { 
 
    var index = $(this).index(); 
 
    var prevRow; 
 
    if (index > 0) 
 
     prevRow = $(this).prev(); 
 
    colorColumns($(this).find('.col'), prevRow); 
 
    }); 
 
}); 
 

 
function colorColumns(cols, prevRow) { 
 
    var index = 0; 
 
    // alert("hi"); 
 
    cols.each(function(col) { 
 
    var colIndex = $(this).index(); 
 

 
    if (prevRow) { 
 
     var cols = prevRow.find('.col').length; 
 
     var totalCols = cols - 1; 
 

 
     var currentIndex = ((colIndex + totalCols) % cols); 
 
     var prevRowColor = $(prevRow).find('.col').eq(currentIndex); 
 
     var classes = prevRowColor.attr('class'); 
 
     var classArr = classes.split(" "); 
 

 
     $(this).addClass(classArr[1]); 
 

 
    } else { 
 

 
     $(this).addClass(colors[colIndex]); 
 
    } 
 
    }); 
 

 
}
.row { 
 
    display: flex; 
 
} 
 
.row .col { 
 
    width: 20px; 
 
    height: 20px; 
 
    border-radius: 100%; 
 
    text-align: center; 
 
} 
 
.red { 
 
    background: red; 
 
} 
 
.orange { 
 
    background: orange; 
 
} 
 
.blue { 
 
    background: blue; 
 
} 
 
.green { 
 
    background: green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="wrapper"> 
 
    <div class="row"> 
 
    <div class="col">R</div> 
 
    <div class="col">B</div> 
 
    <div class="col">G</div> 
 
    <div class="col">O</div> 
 
    </div> 
 
    <div class="row"> 
 
    <div class="col">R</div> 
 
    <div class="col">B</div> 
 
    <div class="col">G</div> 
 
    <div class="col">О</div> 
 
    </div> 
 
    <div class="row"> 
 
    <div class="col">R</div> 
 
    <div class="col">B</div> 
 
    <div class="col">G</div> 
 
    <div class="col">O</div> 
 
    </div>

希望它可以幫助

+0

非常感謝!這工作:) – tweb