2014-11-17 23 views
5

Czy istnieje sposób, aby zwiększyć wartości atrybutów stosując n w nth-child(n) do wyjścia wynik:css przyrost atrybut nth-child wartości

div:nth-child(1){ 
    top: -5px; 
} 
div:nth-child(2){ 
    top: -10px; 
} 
div:nth-child(3){ 
    top: -15px; 
} 
div:nth-child(4){ 
    top: -20px; 
} 
div:nth-child(5){ 
    top: -25px; 
} 
+0

Istnieje jeśli używasz 'preprocesora 'jak' sass' na przykład –

+0

... inaczej ... NIE. –

+0

... lub dodaj go za pomocą jquery: $ ("div"). Each (function (i = 1) {$ (this) .css ("top", -5 * i); i ++;}); –

Odpowiedz

6

mogłeś jeśli używasz preprocessor jak sass.

Przykład:

div { 
    $var: 5; 

    @for $i from 1 through 5 { 
    &:nth-child(#{$i}) { 
     top: -#{$var}px; 
     $var: $var + 5; 
    } 
    } 
} 

Demo: http://sassmeister.com/gist/7d7a8ed86e857be02d1a

Innym sposobem osiągnięcia tego celu:

div { 

    $list: 1 2 3 4 5; 

    @each $i in $list { 
    &:nth-child(#{$i}) { 
     top: -5px * $i; 
    } 
    } 
} 

Demo: https://www.sassmeister.com/gist/fb5ee7aa774aafb896cd71a828882b99

+0

Czy możesz opublikować ekwiwalent foreach, jeśli numer jest dynamiczny? –

+0

Ale to działa tylko wtedy, gdy wiesz, że masz 5 elementów. Co się stanie, jeśli elementy zostaną dodane dynamicznie? – Kokodoko

+0

SCSS zawsze tłumaczy w CSS, więc nie można mieć zmiennej dynamicznie. Przypuszczam, że szukasz sposobu css tylko do osiągnięcia czegoś takiego jak 'nth-child (n + 1) {top: -5px * n}' ale niestety to nie zadziała. –