Heim > Web-Frontend > CSS-Tutorial > So erzielen Sie mit reinem CSS den Animationseffekt des Öffnens und Schließens eines Regenschirms (Quellcode im Anhang)

So erzielen Sie mit reinem CSS den Animationseffekt des Öffnens und Schließens eines Regenschirms (Quellcode im Anhang)

不言
Freigeben: 2018-10-18 13:44:33
nach vorne
3920 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der Verwendung von reinem CSS, um den Animationseffekt beim Öffnen und Schließen eines Regenschirms zu realisieren (Quellcode ist beigefügt). Ich hoffe, es wird dir helfen.

Effektvorschau

So erzielen Sie mit reinem CSS den Animationseffekt des Öffnens und Schließens eines Regenschirms (Quellcode im Anhang)

Quellcode-Download

https://github.com/comehope/front- end-daily-challenges

Codeinterpretation

definiert dom, der Container .umbralla enthält 2 Elemente, .canopy stellt die Regenschirmhülle dar, .shaft Regenschirmgriff:

<figure>
    <div></div>
    <div></div>
</figure>
Nach dem Login kopieren

Zentrierte Anzeige:

body {
    margin: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(skyblue, lightblue);
}
Nach dem Login kopieren

Legen Sie die gemeinsamen Attribute des Pseudoelements fest:

.umbrella *::before,
.umbrella *::after {
    content: '';
    position: absolute;
}
Nach dem Login kopieren

Zeichnen Sie zuerst den geöffneten Regenschirm.
Legen Sie die Größe des Behälters fest. Der Attributwert von font-size wird später verwendet, daher wird eine Variable definiert:

:root {
    --font-size: 10px;
}

.umbrella {
    position: relative;
    width: 25em;
    height: 26em;
    font-size: var(--font-size);
}
Nach dem Login kopieren

Definieren Sie die Größe der Regenschirmhülle:

.umbrella .canopy {
    position: absolute;
    width: inherit;
    height: 5.5em;
    top: 2.5em;
}
Nach dem Login kopieren

Verwenden Sie ::before Verwenden Sie Pseudoelemente, um den oberen Teil der Schirmhülle zu zeichnen, und komprimieren Sie ihn dann in vertikaler Richtung:

.umbrella .canopy::before {
    width: inherit;
    height: 12.5em;
    background: rgb(100, 100, 100);
    border-radius: 12.5em 12.5em 0 0;
    transform: scaleY(0.4);
    top: -4em;
}
Nach dem Login kopieren

Verwenden Sie ::after Pseudoelemente, um die untere Hälfte des Schirmbezugs zu zeichnen Schirmhülle:

.umbrella .canopy::after {
    width: inherit;
    height: 1.5em;
    background-color: #333;
    top: 4em;
    border-radius: 50%;
}
Nach dem Login kopieren

Zeichnen Sie die lange Stange des Schirmgriffs:

.umbrella .shaft {
    position: absolute;
    width: 0.8em;
    height: 18em;
    background-color: rgba(100, 100, 100, 0.7);
    top: 5.5em;
    left: calc((100% - 0.8em) / 2);
}
Nach dem Login kopieren

Verwenden Sie Pseudoelemente, um die Spitze der Schirmstange zu zeichnen, um die Schirmhülle freizulegen. Die Methode ist ähnlich Zeichnen Sie zuerst den oberen Teil der Schirmhülle und drücken Sie ihn dann in horizontaler Richtung zusammen:

.umbrella .shaft::before {
    width: 6em;
    height: 3em;
    background-color: rgba(100, 100, 100, 0.7);
    left: calc((100% - 6em) / 2);
    top: -5.5em;
    border-radius: 6em 6em 0 0;
    transform: scaleX(0.1);
}
Nach dem Login kopieren

Zeichnen Sie den hakenförmigen Griff des Schirms:

.umbrella .shaft::after {
    box-sizing: border-box;
    width: 4em;
    height: 2.5em;
    border: 1em solid #333;
    top: 100%;
    left: calc(50% - 4em + 1em / 2);
    border-radius: 0 0 2.5em 2.5em;
    border-top: none;
}
Nach dem Login kopieren

An dieser Stelle , die offene Optik des Schirms wird durch Verformung vervollständigt.
Schließen Sie zuerst das Schirmdach, indem Sie es in horizontaler Richtung zusammendrücken und in vertikaler Richtung strecken:

.umbrella .canopy {
    transform-origin: top;
    transform: scale(0.08, 4);
}
Nach dem Login kopieren

Verstecken Sie den unteren Teil des Schirmdachs:

.umbrella .canopy::after {
    transform: scaleY(0);
}
Nach dem Login kopieren

Lassen Sie den Schirm los. Kippen, Da der vertikale Regenschirm etwas langweilig ist, fügen Sie also eine kleine Änderung hinzu:

.umbrella {
    transform: rotate(-30deg);
}
Nach dem Login kopieren

An diesem Punkt sieht der Regenschirm so aus, als wäre er geschlossen, und als nächstes muss er in eine Umschaltsteuerung umgewandelt werden.
Fügen Sie ein checkbox-Steuerelement im Dom hinzu:

<input>
<figure>
    <!-- 略 -->
</figure>
Nach dem Login kopieren

Stellen Sie das Steuerelement so ein, dass es die Größe des Regenschirms hat, und platzieren Sie es auf der Regenschirmebene:

.toggle {
    position: absolute;
    filter: opacity(0);
    width: 25em;
    height: 26em;
    font-size: var(--font-size);
    cursor: pointer;
    z-index: 2;
}
Nach dem Login kopieren

checkbox Das Steuerelement ist nicht ausgewählt. Der Status entspricht dem Erscheinungsbild des Regenschirms, wenn er geschlossen ist. Dies ist das aktuelle Erscheinungsbild des Regenschirms. Sie müssen also nur das Erscheinungsbild des Regenschirms angeben, das dem ausgewählten Status des Steuerelements entspricht, wenn es geöffnet ist . Da das Schließen des Schirms durch die Verformung mehrerer Elemente erreicht wird, wird beim Umschalten in den geöffneten Zustand des Schirms die Verformung aufgehoben.
Ziehen Sie den Schirm zuerst gerade:

.toggle:checked ~ .umbrella {
    transform: rotate(0deg);
}
Nach dem Login kopieren

Dann öffnen Sie die Schirmhülle:

.toggle:checked ~ .umbrella .canopy {
    transform: scale(1, 1);
}
Nach dem Login kopieren

Dann zeigen Sie den unteren Teil der Schirmhülle:

.toggle:checked ~ .umbrella .canopy::after {
    transform: scaleY(1);
}
Nach dem Login kopieren

Zum Schluss stellen Sie die Schirmhülle ein oben Lockerungseffekte für mehrere Elemente:

.umbrella,
.umbrella .canopy,
.umbrella .canopy::after {
    transition: 0.3s cubic-bezier(0.5, -0.25, 0.5, 1.25);
}
Nach dem Login kopieren

Du bist fertig!


Das obige ist der detaillierte Inhalt vonSo erzielen Sie mit reinem CSS den Animationseffekt des Öffnens und Schließens eines Regenschirms (Quellcode im Anhang). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage