Heim > Web-Frontend > CSS-Tutorial > Hauptteil

Warum führt die Skalierung eines SVG-Unterelements dazu, dass es „von links oben einfliegt' und wie lässt sich das Problem beheben?

Mary-Kate Olsen
Freigeben: 2024-10-29 02:03:29
Original
719 Leute haben es durchsucht

Why does scaling an SVG sub-element make it

CSS-Transformationsursprungsproblem bei SVG-Unterelementen

Problem:

Beim Versuch Um ein Unterelement innerhalb einer SVG-Datei zu skalieren, wird der Transformationsursprung auf den (0,0)-Punkt der gesamten SVG-Datei gesetzt, was dazu führt, dass das Unterelement bei der Animation so aussieht, als würde es „von oben links hineinfliegen“.

Lösung:

Um den Transformationsursprung relativ zu dem spezifischen Unterelement festzulegen, das animiert wird, fügen Sie die folgende CSS-Regel hinzu:

<code class="css">transform-box: fill-box;</code>
Nach dem Login kopieren

Dies stellt sicher, dass die Transformation relativ zum Begrenzungsrahmen des Unterelements ist, sodass es von seiner Mitte aus skaliert werden kann.

Aktualisiertes Beispiel:

<code class="css">@keyframes scaleBox {
  from {transform: scale(0);}
  to {transform: scale(1);}
}
#animated-box {
  transform-box: fill-box;
  animation: scaleBox 2s infinite;
}</code>
Nach dem Login kopieren
<code class="html"><svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" style="
        width: 195px;
    ">
    <defs>
    <style>.cls-1{fill:#7f7777;}.cls-2{fill:#fff;}
</style>
    </defs>
    <rect class="cls-1" x="0.5" y="0.5" width="99" height="99"></rect>
    <path d="M99,1V99H1V1H99m1-1H0V100H100V0Z"></path>
    <rect id="animated-box" class="cls-2" x="10.5" y="8.5" width="22" height="6"></rect>
</svg></code>
Nach dem Login kopieren

Erklärung:

Die Transformationsbox-Eigenschaft bestimmt, welcher Teil eines Elements zur Berechnung des Transformationsursprungs verwendet wird. Wenn Sie es auf „fill-box“ setzen, wird der Ursprung anhand des Begrenzungsrahmens des Unterelements anstelle des Koordinatenraums der übergeordneten SVG-Datei berechnet.

Das obige ist der detaillierte Inhalt vonWarum führt die Skalierung eines SVG-Unterelements dazu, dass es „von links oben einfliegt' und wie lässt sich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!