d3: Wie man richtig Kette übergänge auf unterschiedliche Auswahlen

Ich bin mit V3 der beliebten d3-Bibliothek und im Grunde wollen, haben drei übergänge, gefolgt von jedem anderen: Der erste übergang sollte für das exit die Auswahl, die zweite auf die update-Auswahl und der Dritte auf die enter-Auswahl. Sie sollten verkettet werden, in einer solchen Weise, dass, wenn eine der Auswahlmöglichkeiten ist leer, seine jeweiligen übergang übersprungen. I. e. wenn es keine exit-Auswahl, die update-Auswahl sollte sofort beginnen. So weit, ich habe mit diesem code (mit der delay - Funktion).

//DATA JOIN
var items = d3.select('#data').selectAll('.item');
items = items.data(data, function(d){ 
    return d.twitter_screenname;
});


//EXIT
items.exit().transition().duration(TRANSITION_DURATION).style('opacity', 0).remove();

//UPDATE
//Divs bewegen
items.transition().duration(TRANSITION_DURATION).delay(TRANSITION_DURATION * 1)
    .style('left', function(d, i) {
        return positions[i].left + "px";
    }).style('top', function(d, i) {
        return positions[i].top + "px";
    });

//ENTER
//Divs hinzufügen
var div = items.enter().append('div')
    .attr('class', 'item')
    .style('left', function(d, i) {
        return positions[i].left + "px";
    }).style('top', function(d, i) {
        return positions[i].top + "px";
    });

 div.style('opacity', 0)
    .transition().duration(TRANSITION_DURATION).delay(TRANSITION_DURATION * 2)
    .style('opacity', 1);

Erste von allen, die es nicht erlauben die "überspringen" übergänge und zweitens denke ich, dass es einen besseren Weg gibt, als delay. Ich habe http://bl.ocks.org/mbostock/3903818 aber ich habe nicht wirklich verstehen, was passiert ist.

Auch, irgendwie schreiben nur items.exit().transition().duration(TRANSITION_DURATION).remove() funktioniert nicht mit der items, wahrscheinlich, weil Sie nicht SVG-Elemente, aber divs.

InformationsquelleAutor wnstnsmth | 2013-06-13
Schreibe einen Kommentar