2017-07-18 4 views
5

Ich habe einen Code.Führen Sie die Pause aus; in SCSS

Mops:

div(data-counter="100") 

SCSS:

$start: 100; 
$end: 20; 

div:before { 
    content: attr(data-counter); 
    animation: countdown 10s steps(1, start) forwards; 
} 

@keyframes countdown { 
    @for $i from 1 through $start { 
    @if $i == 50 { 
     100% { 
     content: 'Stop'; 
     } 
    } @else { 
     #{$i}% { 
     content: '#{($start - $i)}'; 
     } 
    } 
    } 
} 

Das Problem ist, dass der Zähler von 100 und wenn es 50 erreicht, würde der Zähler stoppen - 100% {content: 'Stop'; } Und die Animation würde (jetzt beenden es geht weiter 49% {content: '51';} 100% {content: 'Stop';} 51% {content: '49';}).

Frage: Gibt es etwas wie break; für scss wie in js?

codepen

P. S:@break; funktioniert nicht wie gewünscht.

PPS: Same question in Russian.

+1

Ich weiß nicht warum, aber Ihr Code funktioniert mit @if $ i> 49 anstelle von Gleichheitszeichen. Vielleicht kann jemand etwas Licht darauf werfen. – VilleKoo

+0

hm, wirklich arbeiten ... aber die Zusammenstellung ist nicht sehr schön – Elena

+0

Ich kann davon ausgehen, dass er nicht in Position 50 fällt und springt sofort zur nächsten Nummer – Yuri

Antwort

1

Auf der Grundlage der Antwort auf die russische Frage gestellt Sie SCSS können die Zahlen

Demo zu erstellen: https://codepen.io/jakob-e/pen/mwYKpV

SCSS:

@function countdown-numbers($from: 100, $through: 0){ 
    $str: ''; 
    @for $i from $from through $through { $str: $str + '#{$i}\A'; } 
    @return $str; 
} 


div { 
    line-height: 1.2; 
    height: 1.2em; 
    overflow: hidden; 
    &::after { 
     display: inline-block; 
     white-space: pre-wrap; 
     // creates 50 numbers 100\A 99\A ... 51\A 
     // and add STOP to the string 
     content: countdown-numbers(100, 51) + STOP; 
     // run animation in 50 steps (don't count start) 
     animation: countdown 10s steps(50) forwards;  
    } 
} 
@keyframes countdown { 
    to { transform: translateY(calc(1.2em - 100%)) } 
} 

CSS Output (unter Verwendung von Autoprefixer):

div { 
    line-height: 1.2; 
    height: 1.2em; 
    overflow: hidden; 
} 
div::after { 
    display: inline-block; 
    white-space: pre-wrap; 
    content: "100\a 99\a 98\a 97\a 96\a 95\a 94\a 93\a 92\a 91\a 90\a 89\a 88\a 87\a 86\a 85\a 84\a 83\a 82\a 81\a 80\a 79\a 78\a 77\a 76\a 75\a 74\a 73\a 72\a 71\a 70\a 69\a 68\a 67\a 66\a 65\a 64\a 63\a 62\a 61\a 60\a 59\a 58\a 57\a 56\a 55\a 54\a 53\a 52\a 51\aSTOP"; 
-webkit-animation: countdown 5s steps(50) forwards; 
     animation: countdown 5s steps(50) forwards; 
} 

@-webkit-keyframes countdown { 
    to { 
    -webkit-transform: translateY(calc(1.2em - 100%)); 
      transform: translateY(calc(1.2em - 100%)); 
    } 
} 

@keyframes countdown { 
    to { 
    -webkit-transform: translateY(calc(1.2em - 100%)); 
      transform: translateY(calc(1.2em - 100%)); 
    } 
} 
Verwandte Themen