Ich erhalte alle 100ms Positionen und sie auf das DOM wie folgt aus:Erste Übergangswerte in D3
const div = d3.select(container).selectAll('div').data(positions)
div.enter()
.append('div')
div.transition()
.duration(100)
.style({
top: d => d.y,
left: d => d.x,
})
div.exit()
.remove()
So sind die Elemente erhalten eine glatte Animation an die neuen Positionen in den 100ms es das bekommen nimmt nächste Positionen. Das funktioniert gut.
Aber ich habe verschiedene Elemente im DOM, der auf der Position der ersten Elemente abhängen. Sie werden mit den gleichen Positionsdaten gerendert, jedoch in einem anderen Modul der Software.
Mein Problem ist, dass dieser Übergang Daten interpoliert, die nicht zu den anderen Modulen. Die Elemente dieser anderen Module scheinen "optisch falsche" Visualisierungen zu liefern, weil sie auf den Rohdaten basieren.
Beispiel: Ein Punkt bewegt sich in ein Quadrat und das Quadrat wird hervorgehoben, aber die Position des Punkts ist interpoliert und die Position, die das Quadrat verwendet, um zu prüfen, ob es hervorgehoben werden soll, ist es nicht. So wird das Quadrat hervorgehoben, auch wenn der Punkt nicht darin ist.
Wie kann ich das umgehen? Kann ich diese interpolierten Werte irgendwo finden?
Das Problem ist, ich interpoliere nicht von 0, sondern von der alten Position. Aber wenn ich versuche, das div in der Tween-Funktion zu wählen und seinen Top-Stil zu bekommen, bekomme ich nur "auto" und nicht die letzte Position: \ –
@K .., ich bin mir nicht sicher, ob ich das verstehe Startpositionen in der Funktion. Siehe Aktualisierungen oben. – Mark
In Ihrem Beispiel verwenden Sie 0, aber wenn ich dies tue, jedes Mal, wenn sich 'd.x' ändert, wird es von 0 nicht von seiner letzten Position interpoliert. –