Podpowiem tylko, bo ruszenie tego co już Ci podałem i przerobienie to nie jest fizyka kwantowa. Procenty możesz wywalić, bo są tam tylko udziwnieniem niepotrzebnym. Ciebie interesują jedynie wartości rgb kolorów: startowego, środkowego, końcowego. Na ich podstawie obliczasz różnicę między kolorami i obliczasz wartość zmiany co krok dla każdej składowej koloru. Napisałem już o tym już w 2 poście tego tematu.
1. Bierzesz rgb startu i następnego w kolejności oraz liczbę kroków.
2. Obliczasz różnicę wartości dla każdej składowej i dzielisz przez liczbę kroków
3. Dodajesz do startu krok * różnica/liczba_kroków obliczona w punkcie 2
Czym się to różni od kodu jaki podałem wyżej? Tylko tym, że teraz możesz mieć różną wartość kroków i kolorów wszędzie.
Myślę, że skoro chcesz równo, to nie 40, ale 33 powinno być. IFy na (< 34),(>33 i < 67),(>66 i <101), krok%101 a 5.1 nie na sztywno, ale liczone dla każdej składowej koloru OSOBNO, dla KAŻDEGO if. Dam Ci przykład dla przejścia między dwoma kolorami w jednym z 3 etapów.
Jeśli więc przechodzisz z koloru A = rgb(a,b,c) do B = rgb(d,e,f) w 30 krokach, potem do C(g,h,i) w 40 krokach, a potem znów do A w 30 krokach to musisz:
1) policzyć: q = (d-a)/30, r = (e-b)/30, s = (f-c)/30,
2) zrobić
if(krok < 31) {
document.getElementById('box').style.backgroundColor = 'rgb(' + parseInt( a + krok * q ) + ', ' + parseInt( b + krok * r ) + ', ' + parseInt( c + krok * s ) + ')';
}
A dla reszty wziąć poprawkę, że musi liczba kroków się odpowiednio wyzerować, a więc nie (100-krok) czy (krok-100), ale właściwie pasująca. Możesz nawet olać to, że wartości po odejmowaniu wyjdą ujemne, bo skrypt wtedy podczas dodawania i tak będzie działał jak trzeba , gdyż wynika to z tego, że dodawanie liczby ujemnej zamieni działanie na odejmowanie. Matma i jej dobre zrozumienie daje dużą przewagę podczas programowania. Powie Ci o tym każdy programista siedzący w skryptach back-endu.
To naprawdę jest matma prosta i więcej nie pomogę, bo dostałeś wszystko niemal jak na tacy i jeśli teraz już nie będziesz potrafił napisać sam, to wróć może do podstawówki, bo tam jest liczenie na poziomie dodawania, odejmowania i tym podobnych prostych operacji algebraicznych. Tu nawet nie ma potęgowania czy trygonometrii, a to ostatnie ja już znałem w podstawówce w 7 klasie, więc nawet nie pisz, że to za trudne i włącz myślenie, bo póki co po Twoim kodzie, widzę, że nawet nie wysiliłeś się by zrozumieć dlaczego dałem choćby (150-krok)*5.1 tylko radośnie swoje procenty powrzucałeś, myśląc, że to załatwi sprawę. Usiądź, popatrz, przemyśl i dopiero wtedy przerabiaj.