2016-03-29 4 views
1

Ich versuche zu hilight, wenn Elemente in einer Tabelle angezeigt werden. Es können 2, 3 oder mehr Elemente gleichzeitig angezeigt werden. Jedoch ng-animate tut nicht scheint dies richtig zu behandeln.ng-animieren mehrere Tabellenzeilen animieren nicht

In der folgenden Geige können Sie einen Arbeitsanwendungsfall von Tabellenzeilen (neben einem Beispiel mit div-Elementen) sehen. Die div-Elemente werden richtig animiert. Die Tabellenzeilenelemente nicht.

Demo Fiddle

HTML

<table class="animate-appear"> 
    <tr ng-repeat="item in repeatingItems"> 
    <td>{{item}}</td> 
    <td>{{item}}</td> 
    </tr> 
</table> 

CSS (vereinfacht)

table.animate-appear tr td { 
    padding: 5px 10px; 
    transition: all 1s ease; 
    opacity: 1; 
} 

table.animate-appear .ng-enter td, 
table.animate-appear .ng-leave.ng-leave-active td, 
table.animate-appear .ng-move td { 
    opacity: 0; 
    background-color: yellow; 
} 

table.animate-appear .ng-enter.ng-enter-active td, 
table.animate-appear .ng-leave td, 
table.animate-appear .ng-move.ng-move-active td { 
    opacity: 1; 
    background-color: white; 
} 

Hinweise:
1. Die div Elemente richtig animieren erscheinen. Das ist in der Geige für einen Vergleichspunkt enthalten.
2. Die Tabellenzeilen können nicht in div-Elemente geändert werden.
3. Ein kleiner Timeout (in meinem Test nur 30 ms) bewirkt, dass die nachfolgenden Zeilen richtig animiert werden. Dies ist keine praktikable Lösung zu meinem Problem, jedoch. 4. Ich bin nur mit der ng-enter Animation betroffen. 5. Ich habe versucht, die Animationsstile ohne Erfolg auf die Tabellenzeile anzuwenden.

Warum passiert das? Was kann ich noch tun, damit alle neuen Elemente in einer Tabelle richtig animiert werden?

+0

Es scheint, die Geige im obigen Beispiel ist die 'feste' Version. Möglich mit nicht fixierten zu verknüpfen? (sieht wie URL aus, die mit/6 enden, ist die "gebrochene" Version) – ryanm

+0

@ryanm - die Version oben zeigt das falsche Verhalten an. Wenn Sie auf "Element hinzufügen" klicken, werden drei Elemente hinzugefügt: Es animiert den ersten Eintrag, NICHT den zweiten Eintrag, und animiert den dritten Eintrag (mit einem leichten Zeitlimit). Die feste Version ist http://jsfiddle.net/cale_b/od7kam48/12/ –

+0

Ich sehe jetzt, danke für die Klärung. – ryanm

Antwort

1

Die CSS-Animation für Ihre Tabelle verursacht einen Konflikt, da sie sowohl auf die Zeile als auch auf die Zelle angewendet wird. Wenn Sie die CSS so ändern, dass die Animation nur für die Zeile gilt, sollte die Animation korrekt sein.

table.animate-appear tr { 
    transition: all 1s ease; 
    opacity: 1; 
} 

table.animate-appear td { 
    padding: 5px 10px; 
    opacity: 1; 
} 

table.animate-appear .ng-enter, 
table.animate-appear .ng-move { 
    opacity: 0; 
    background-color: yellow; 
} 

table.animate-appear .ng-enter.ng-enter-active, 
table.animate-appear .ng-leave, 
table.animate-appear .ng-move.ng-move-active { 
    opacity: 1; 
    background-color: white; 
} 
+0

Hier ist das [Update] (http://jsfiddle.net/od7kam48/10/). Auch ich führe es in Chrom. Für mich sieht es korrekt aus, aber vielleicht versagt es auf eine andere Weise, die ich nicht verstehe. – xrgb

+0

In diesem [fiddle] (http://jsfiddle.net/od7kam48/11/) habe ich auch die Hintergrundfarbe css Animation aktualisiert, um nur für tr Elemente zu gelten, die scheinen gleich zu sein, obwohl die Div-Version ist langsamer, esp auf entfernen. – xrgb

+0

Großartig. Ich habe es auf die relevanten Bits reduziert - wenn Sie Ihren Code in Ihrer Antwort aktualisieren, um das richtige/reduzierte css einzuschließen, akzeptiere ich. Siehe diese Geige für die "reduzierte" CSS: http://jsfiddle.net/cale_b/od7kam48/12/ –