CSS erzielt den Effekt, dass die äußerste Schicht einer mehrschichtigen verschachtelten Struktur rotiert, während die anderen Schichten unverändert bleiben.

CSS erzielt den Effekt, dass die äußerste Schicht einer mehrschichtigen verschachtelten Struktur rotiert, während die anderen Schichten unverändert bleiben.

Es gibt ein solches Szenario: ein kreisförmiger Container, der Hintergrund des äußersten Containers ist ein Bogen. Nun muss der äußerste Bogen gedreht werden, um sicherzustellen, dass sich der Inhalt im inneren Container nicht dreht. Als Nächstes werde ich Ihnen eine Lösung mitteilen. Schauen wir uns den endgültigen Effekt an:

Umsetzungsideen

  • Das äußerste Div ist so eingestellt, dass es einen um 50 % abgeschrägten Rand hat, und der Überlauf ist ausgeblendet
  • Stellen Sie den äußersten Hintergrund auf das Bogen-Hintergrundbild ein
  • Definiert die Rotationsanimation der äußeren Ebene. Der Rotationsgrad ist eine positive Zahl.
  • Definieren Sie die Rotationsanimation der inneren Ebene. Der Rotationsgrad ist negativ
  • Starten Sie die Animation und beginnen Sie mit der Rotation
  • Die äußere Schicht rotiert mit einer positiven Zahl und die innere Schicht rotiert mit einer negativen Zahl, was die Rotation einfach aufhebt und den idealen Effekt erzielt.

Implementierungsprozess

DOM-Strukturteil: Layout des äußeren und inneren Div

„load-panel“ ist das äußere Div, „headPortrait-img-panel“ ist das innere Div, „loadWhirl“ ist die äußere Rotationsanimation und „avatarRotation“ ist die innere Rotationsanimation.

<!--Avatar-Bereich-->
<div Klasse="KopfPortrait-Panel">
    <!--Ebene wird geladen-->
    <div Klasse="load-panel loadWhirl">
        <!--Avatar-Anzeigeebene-->
        <div Klasse="headPortrait-img-panel avatarRotation">
            <img src="../assets/img/login/[email protected]"/>
        </div>
    </div>
</div>

CSS-Teil: Layout der Stile und Implementierung der Rotationsanimationslogik.

  /*Avatar-Bereich*/
  .headPortrait-panel{
    Breite: 100 %;
    Höhe: 200px;
    Anzeige: Flex;
    Inhalt ausrichten: zentriert;
    Elemente ausrichten: zentrieren;
    Rand oben: 50px;

    /*Ebene laden*/
    .Ladepanel{
      Breite: 240px;
      Höhe: 240px;
      Randradius: 50 %;
      Anzeige: Flex;
      Inhalt ausrichten: zentriert;
      Elemente ausrichten: zentrieren;
      Hintergrund: URL("../img/login/[email protected]");

      img{
        Breite: 100 %;
        Höhe: 100%;
      }

      // Avatar-Rotation animation.avatarRotation{
        Animation: interner Avatar, 3 s linear;
        // Animation Endlosschleife animation-iteration-count:infinite;
      }

      /*Avatar-Anzeigeebene*/
      .headPortrait-img-panel{
        Breite: 200px;
        Höhe: 200px;
        Randradius: 50 %;
        Überlauf: versteckt;
        Rand: durchgezogen 1px #ebeced;

        img{
          Breite: 100 %;
          Höhe: 100%;
        }
      }
    }

    // Externe Rotation animation.loadWhirl{
      Animation: extern Halo 3s linear;
      // Animation Endlosschleife animation-iteration-count:infinite;
    }
  }

  // Definieren Sie die externe Halo-Rotationsanimation @keyframes externalHalo {
    0 %{
      transformieren: drehen (0 Grad);
    }
    25 %
      transformieren: drehen (90 Grad);
    }
    50 %{
      transformieren: drehen (180 Grad);
    }
    100 %{
      transformieren: drehen (360 Grad);
    }
  }

  // Definiere die interne Avatar-Rotationsanimation @keyframes internalAvatar {
    0 %{
      transformieren: drehen (0 Grad);
    }
    25 %
      transformieren: drehen (-90 Grad);
    }
    50 %{
      transformieren: drehen (-180 Grad);
    }
    100 %{
      transformieren: drehen (-360 Grad);
    }
  }

Projektgalerie

Die obige Codeadresse: Chat-System

Nachdem Sie das Projekt lokal geklont haben, besuchen Sie http://localhost:8020/login, um den Effekt anzuzeigen. Der Dateipfad für diesen Artikel lautet: src/views/login.vue

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

<<:  Was bedeutet Eingabetyp und wie kann die Eingabe begrenzt werden?

>>:  Das Prinzip und die Konfiguration des Nginx-Lastausgleichs sowie der dynamischen und statischen Trennung

Artikel empfehlen

jQuery-Plugin zur Implementierung des Minesweeper-Spiels (3)

In diesem Artikel wird der dritte Artikel zur Ver...

Mehrere Möglichkeiten, die Lesbarkeit von Webseiten zu verbessern

1. Verwenden Sie kontrastierende Farben. Mit Kont...

Vue-Handschrift-Ladeanimationsprojekt

Wenn die Seite nicht reagiert, ist die Anzeige de...

Detaillierte Erläuterung der JS ES6-Codierungsstandards

Inhaltsverzeichnis 1. Umfang des Blocks 1.1. let ...

So zeichnen Sie spezielle Grafiken in CSS

1. Dreieck Rahmeneinstellungen Code: Breite: 300p...

JS erkennt den Fall der Eliminierung von Sternen

In diesem Artikelbeispiel wird der spezifische JS...

Google Translate Tool: Mehrsprachige Webseiten schnell umsetzen

Google China hat ein Übersetzungstool veröffentlic...

Lösung für das MySQL Master-Slave-Verzögerungsproblem

Heute werden wir uns ansehen, warum es zu Master-...

So fügen Sie in Linux stapelweise Dateipräfixe hinzu

Sie müssen „gt_“ vor den Dateinamen aller TXT-Dat...

Prinzip und Anwendung der MySQL-Verbindungsabfrage

Überblick Eine der leistungsstärksten Funktionen ...

Eine kurze Diskussion über den Unterschied zwischen src und href in HTML

Einfach ausgedrückt bedeutet src „Ich möchte dies...