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

Optimierung der Frontend-Leistung von Websites: JavaScript und CSS

Ich habe einen Artikel des Yahoo-Teams über die O...

Zwei Methoden zur Implementierung der Mysql-Remoteverbindungskonfiguration

Zwei Methoden zur Implementierung der Mysql-Remot...

Einführung in die Verwendung des MySQL pt-slave-restart-Tools

Inhaltsverzeichnis Beim Einrichten einer MySQL-Ma...

Detailliertes Tutorial zur Installation von Anaconda3 auf Ubuntu 18.04

Anaconda bezeichnet eine Open-Source-Python-Distr...

So konvertieren Sie Chinesisch in HTML in UTF-8

In HTML kann die chinesische Phrase „學好好學“ als „學...

HTML-Tabellen-Tag-Tutorial (33): Attribut für vertikale Zellenausrichtung VALIGN

In vertikaler Richtung können Sie die Zellenausri...

Anwendungsszenarien für React useMemo und useCallback

Inhaltsverzeichnis verwendenMemo useCallback verw...

Docker-Installation Tomcat Dubbo-Admin-Instanz-Kenntnisse

1. Laden Sie das Tomcat-Image herunter Docker zie...

HTML-Seite unterstützt die Implementierung des Dunkelmodus

Seit 2019 verwenden sowohl Android- als auch iOS-...