2015-05-27 12 views
5

Ho bisogno di creare un elenco di colori di sfondo css gradualmente diventando più scuri per raggiungere un'oscurità di destinazione. So che è possibile utilizzare la tecnica indicata qui: Sass: Change color with @for loop Ma cosa voglio modulare da un colore a un altro colore. Non solo rendere il colore più scuro e scuro.Sass @for loop - da un colore a un altro colore

Ho un numero variabile di elementi e vorrei che il colore dello sfondo passasse dal bianco al nero. Fondamentalmente un gradiente a gradini con un colore iniziale e finale definito.

Quindi, se ho avuto tre elementi che ho vorrebbe l'uscita di essere qualcosa di simile:

.class1 { 
    background-color: #fff; 
} 
.class2 { 
    background-color: #808080; // 50% brightness 
} 
.class3 { 
    background-color: #000; 
} 

Se ho avuto cinque voci sarebbe simile a questa:

.class1 { 
    background-color: #fff; 
} 
.class2 { 
    background-color: #bfbfbf; // 75% brightness 
} 
.class3 { 
    background-color: #808080; // 50% brightness 
} 
.class4 { 
    background-color: #404040; // 25% brightness 
} 
.class5 { 
    background-color: #000; 
} 

L'inizio e la i colori finali dovrebbero essere sempre gli stessi, ma i colori intermedi devono essere regolati automaticamente in base al totale degli elementi nel loop.

Non so se qualcosa del genere è possibile anche con Sass ??

+0

Se si desidera che il colore di sfondo cambi da bianco a nero rispetto all'esempio a cui ci si è collegati dovrebbe funzionare per voi, poiché è possibile iniziare con #fff e lo scurirà fino a renderlo nero. Tuttavia, se vuoi che cambi da rosso a blu, non ne sono sicuro, scusa. – jdtaylor

risposta

5

La funzione di cui hai bisogno è mix();

$color-1: white; 
$color-2: black; 

$steps: 5; 

@for $i from 0 to $steps { 
    .class-#{$i + 1} { 
     background: mix($color-1, $color-2, percentage($i/($steps - 1))); 
    } 
} 

uscita:

.class-1 { 
    background: black; 
} 

.class-2 { 
    background: #3f3f3f; 
} 

.class-3 { 
    background: #7f7f7f; 
} 

.class-4 { 
    background: #bfbfbf; 
} 

.class-5 { 
    background: white; 
} 

http://sassmeister.com/gist/d0fc452765908aac2617

li vogliono in ordine inverso? Basta scambiare i colori.

+0

Questo è esattamente ciò di cui avevo bisogno! Grazie – NateW