Heim >Web-Frontend >CSS-Tutorial >Warum funktioniert das Festlegen des Transformationsursprungs für eine SVG-Gruppe in Firefox nicht?

Warum funktioniert das Festlegen des Transformationsursprungs für eine SVG-Gruppe in Firefox nicht?

Susan Sarandon
Susan SarandonOriginal
2024-11-29 11:13:11480Durchsuche

Why Doesn't Setting the Transform Origin for an SVG Group Work in Firefox?

Das Festlegen des Transformationsursprungs für die SVG-Gruppe in Firefox funktioniert nicht.

Bei der Verwendung von Transformationsursprung in Firefox ist ein Problem aufgetreten (Version 18, andere Versionen). nicht getestet). WebKit-Browser funktionieren wie erwartet. Ich habe versucht, den Ursprung auf die Mitte der Gruppe festzulegen, aber nichts, was ich bisher versucht habe, hat funktioniert.

Hier ist der Code:

#test {
  -webkit-transform-origin: 50% 50%;
  transform-origin: center center;
  -webkit-animation: prop 2s infinite;
  animation: prop 2s infinite;
}

@-webkit-keyframes prop {
  0% {
    -webkit-transform: scale(1, 1);
  }
  20% {
    -webkit-transform: scale(1, .8);
  }
  40% {
    -webkit-transform: scale(1, .6);
  }
  50% {
    -webkit-transform: scale(1, .4);
  }
  60% {
    -webkit-transform: scale(1, .2);
  }
  70% {
    -webkit-transform: scale(1, .4);
  }
  80% {
    -webkit-transform: scale(1, .6);
  }
  90% {
    -webkit-transform: scale(1, .8);
  }
  100% {
    -webkit-transform: scale(1, 1);
  }
}

@keyframes prop {
  0% {
    transform: matrix(1, 0, 0, 1, 0, 0);
  }
  20% {
    transform: matrix(1, 0, 0, .8, 0, 0);
  }
  40% {
    transform: matrix(1, 0, 0, .6, 0, 0);
  }
  50% {
    transform: matrix(1, 0, 0, .4, 0, 0);
  }
  60% {
    transform: matrix(1, 0, 0, .2, 0, 0);
  }
  70% {
    transform: matrix(1, 0, 0, .4, 0, 0);
  }
  80% {
    transform: matrix(1, 0, 0, .6, 0, 0);
  }
  90% {
    transform: matrix(1, 0, 0, .8, 0, 0);
  }
  100% {
    transform: matrix(1, 0, 0, 1, 0, 0);
  }
}
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="128px" height="128px" viewBox="0 0 16 16">
    <g>

Lösung

Ich versuche, ein einfaches Zahnrad mithilfe von CSS um seinen Mittelpunkt zu drehen wandelt SVG-Grafiken um. Ich habe das gleiche Problem wie Sie in Firefox; transform-origin scheint keine Wirkung zu haben.

Die Lösung besteht darin, die ursprüngliche SVG-Form so zu zeichnen, dass ihr Mittelpunkt bei der Koordinate 0 liegt. 0:

<svg x="0px" y="0px" width="400px" height="400px" viewBox="0 0 400 400">
    <rect>

Fügen Sie dann eine Gruppe darum herum hinzu und schwenken Sie es an die gewünschte Stelle:

<svg x="0px" y="0px" width="400px" height="400px" viewBox="0 0 400 400">
    <g transform="translate(150, 100)">
        <rect>

Jetzt können Sie CSS-Transformationen anwenden, die in Firefox Works funktionieren sollten (ich verwende JavaScript). um HTML-Tags basierend auf Benutzeraktionen hinzuzufügen Denken Sie daran, eine Klasse (js-rotateObject) hinzuzufügen und mit Minimizr zu prüfen, ob der Browser Transformationen und Transformationen verarbeiten kann (.csstransforms.csstransitions):

#myObject {
    transform: rotate(0deg);
    transition: all 1s linear;
}

.csstransforms.csstransitions.js-rotateObject #myObject {
    transform: rotate(360deg);
}

Ich hoffe, das hilft.

Das obige ist der detaillierte Inhalt vonWarum funktioniert das Festlegen des Transformationsursprungs für eine SVG-Gruppe in Firefox nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn