2016-02-15 11 views
5

Ich füge meiner Webseite einige SVG-Pfade hinzu, habe aber Schwierigkeiten mit Firefox 43.0. Es scheint, dass, wenn ich transform: scale(0.1) auf meinen Weg anwenden, Firefox nicht das begrenzende Client-Rechteck nicht aktualisiert (via getBoundingClientRect())Firefox getBoundingClientRect() berücksichtigt keine Transformationen

Hier ist ein Screenshot von meinem Weg, bevor die Transformation und das korrekte Begrenzungsrechteck:

Path without transform

Und hier ist es mit dem, mit dem visuellen deutlich außerhalb des Begrenzungsrahmens angewendet Transformations:

Im Gegensatz dazu aktualisiert Chrome hier seine Bounding Box wie erwartet. (Beachten Sie die eingeschränkten Proportionen.)

Path with transform in Chrome

Dieses Problem entweder Chrome oder Edge nicht vorhanden ist. Ich habe this old bug from 2012 finden, die sagt, das Problem in der Version 12.0 wurde behoben, und die Dokumentation heißt es:

Ab Gecko 12.0 (Firefox 12.0/Thunderbird 12.0/SeaMonkey 2.9), verwandelt sich die Wirkung von CSS betrachtet wird, wenn die Berechnung Begrenzungsrechteck des Elements.

... was scheint nicht wahr zu sein. Für die anderen Browser habe ich meinen Kreis auf 10% seiner ursprünglichen Größe verkleinert und dann den Koordinatenversatz vom Clientrechteck berechnet, um ihn auf seiner ursprünglichen 100% Skalierungsposition zu zentrieren. Da das Client-Rechteck nach der Transformation in Firefox nicht aktualisiert wird, führt dies zu einer Verwirrung bei den Berechnungen.

Wie kann ich das für Firefox umgehen?

+0

Können Sie erweitern, was Sie meinen? –

+0

Was meinst du mit transformieren von Attributen? –

Antwort

3

Transformationen können über Attribute festgelegt werden, z.

<path transform="scale(0.1)" d="..."/> 

oder CSS wie Sie tun. Die Verwendung von CSS ist der neuere Weg, dies zu tun; Die SVG 1.1-Spezifikation spezifiziert nur Attributtransformationen.

getBoundingClientRect doesn't take CSS transforms into account derzeit auf Firefox, aber es berücksichtigt Transformationsattribute.

+0

Das Hinzufügen dieses Attributs behebt definitiv das Bounding Box-Problem, das ich in den obigen Screenshots sah. Ich hatte Angst, dass dieses Adding-Attribut problematisch sein könnte, da ich versuchte, die 'transform'-Eigenschaft mit CSS zu animieren, aber ich konnte die Animation trotzdem funktionieren lassen. –

+0

Gibt es irgendetwas, das ich verwenden kann, um die Position eines Elements in Firefox mit CSS-Transformationen zu erhalten? Leider habe ich keine Option für Attribute. – Norbert

+0

@Norbert Downloade den Quellcode in Firefox, behebe das Problem und lade einen Patch nach [bugzilla] (https://bugzilla.mozilla.org/show_bug.cgi?id=1066435). So fing ich an, als ich meinen ersten sah Firefox-Fehler –

Verwandte Themen