2016-04-11 20 views
2

Angesichts der folgende hypothetische Funktion:Elm - absolute Position eines Elements

bowlingBall : Form -> Signal Element 
bowlingBall shape = 
    makeMovable shape 

Wie würde man die absolute Position des

bowlingBall greenFilledCircle abrufen?

Ich habe festgestellt, dass, wenn ich eine kompilierte Seite mit einem drag-fähigen Element debuggen, Chrom die Position unter der Eigenschaft transform: matrix(...) - ist das etwas, was wir mit Hilfe von Ulm-Funktionen, oder müssen einige Interop müssen angestellt sein?

+0

Ein Gedanke war, dass ein definiertes Element wie "bowlingBall" über eine Reihe von Befehlen bewegt werden muss - die Aufzeichnung des Updates sollte die aktuelle Position des Elements angeben. – category

+0

Ein anderer Gedanke ist, dass der richtige Weg, dies in JS zu tun, anscheinend 'getBoundingClientRect (bowlingBall)' ist - jedoch müsste der JS in eine HTML-Datei für Interop eingebettet werden - es könnte besser sein, stattdessen den obigen Ansatz zu verwenden. – category

Antwort

1

Die kurze Antwort ist, dass Sie nicht direkt tun können, was Sie für Element s fragen. Es gibt eine pull request, die Ihnen erlauben würde, dies zu tun, aber es wurde noch nicht zusammengeführt.

Es gibt auch keine gute Möglichkeit, die Position eines Form entweder direkt zu überprüfen.

Ich bin in der Vergangenheit auf ein ähnliches Problem gestoßen und die Art, wie ich es angegangen habe, ist, die Position meiner verschiedenen Gegenstände in meinem Modell zu halten und alle meine Positionsmanipulationen in Bezug auf diese Position auszuführen.

Dies ist nicht perfekt; Insbesondere die umständliche Konvertierung zwischen den von Mouse verwendeten Koordinatensystemen und dem von Form verwendeten Koordinatensystem wird ohne diese Fähigkeit viel ärgerlicher, vor allem, wenn sich Ihre Form s nicht in einem Canvas in der oberen linken Ecke Ihres Fensters befinden .

+0

Danke, zufällig wurde die PR in der Größenordnung von 1 Minute um die Zeit Ihrer Antwort gestoßen. – category

Verwandte Themen