Beispielcode für reines CSS zum Erzielen eines Popup-Popup-Effekts beim Hovern von Bildern

Beispielcode für reines CSS zum Erzielen eines Popup-Popup-Effekts beim Hovern von Bildern

Umsetzungsprinzip

Die Hauptgrafik besteht aus zwei Elementen: Hintergrund und Vordergrund. Im folgenden Beispielcode wird das Hintergrundelement durch das Pseudoelement figure::before und das Vordergrundelement durch figure img dargestellt. Wenn die Maus über figure Element hover , wird das Hintergrundelement größer und das Vordergrundelement wird größer und bewegt sich nach oben, wodurch optisch ein Popup-Effekt erzielt wird.

Hintergrundelement figure::before

Vordergrundelement figure img

1. Verwenden Sie overflow: hidden

Die html Struktur des Hauptelements besteht aus einem img Element, das in ein figure Element eingebettet ist:

<Abbildung>
  <img src='./man.png' alt='Irma'>
</Abbildung>

In css werden zwei Variablen --hov und --not-hov festgelegt, um die Vergrößerungs- und Verschiebungseffekte beim hover von Elementen zu steuern. Fügen Sie figure Figurenelement overflow: hidden hinzu und legen Sie padding-top: 5% fest, um zu verhindern, dass das Vordergrundelement abgeschnitten wird, wenn es das Hintergrundelement überschreitet (optional: clamp() wird border-radius dynamisch festgelegt, um dynamisch auf das Zoomen der Seite zu reagieren).

Figur {
  --hov: 0;
  --nicht-hov: calc(1 - var(--hov));
  Anzeige: Raster;
  Ort-Selbst: Zentrum;
  Rand: 0;
  Polsterung oben: 5%;
  transformieren: Skalierung(kalkulieren(1 - .1*var(--not-hov)));
  Überlauf: versteckt;
  Rahmenradius: 0 0 Klammer (4em, 20vw, 15em) Klammer (4em, 20vw, 15em);
}
Abbildung::vorher, Abbildung img {
  Rasterfläche: 1/1;
  Ort-selbst: Ende Mitte;
}
Abbildung::vor {
  Inhalt: "";
  Polsterung: Klammer (4em, 20vw, 15em);
  Randradius: 50 %;
  Hintergrund: URL('./bg.png') 50 %/Cover;
}
Abbildung:schweben {
  --hov: 1;
}
img {
  Breite: berechnet (2 * Klemme (4em, 20vw, 15em));
  Rahmenradius: Klammer (4em, 20vw, 15em);
  transformieren: übersetzenY(calc((1 - var(--hov))*10%)) skalieren(calc(1,25 + 0,05*var(--hov)));
}

2. Verwenden Sie clip-path: inset()

<Abbildung>
  <img src='./man.png' alt='Irma'>
</figure>

Der Stil ist grundsätzlich der gleiche wie beim ersten, wobei zum Ausschneiden des kreisförmigen Hintergrundbereichs clip-path verwendet wird.

Figur {
  --hov: 0;
  --nicht-hov: calc(1 - var(--hov));
  Anzeige: Raster;
  Ort-Selbst: Zentrum;
  Rand: 0;
  Polsterung oben: 5%;
  transformieren: Skalierung(kalkulieren(1 - .1*var(--not-hov)));
  Clip-Pfad: Einschub (0 rund 0 0 Klammer (4em, 20vw, 15em) Klammer (4em, 20vw, 15em));
}
Abbildung::vorher, Abbildung img {
  Rasterfläche: 1/1;
  Ort-selbst: Ende Mitte;
}
Abbildung::vor {
  Inhalt: "";
  Polsterung: Klammer (4em, 20vw, 15em);
  Randradius: 50 %;
  Hintergrund: URL('./bg.png') 50 %/Cover;
}
Abbildung:schweben {
  --hov: 1;
}
Abbildung:hover::vor {
  Kastenschatten: 1px 1px 10px rgba(0, 0, 0, .3);
}
img {
  Breite: berechnet (2 * Klemme (4em, 20vw, 15em));
  Rahmenradius: Klammer (4em, 20vw, 15em);
  transformieren: übersetzenY(calc((1 - var(--hov))*10%)) skalieren(calc(1,25 + 0,05*var(--hov)));
}

Vollständiges Beispiel

<h2>Überlauf verwenden: versteckt</h2>
  <Abbildung>
    <img src='./man.png' alt='Irma'>
  </figure>
  <h2>Clip-Pfad verwenden: path()-Methode</h2>
  <Abbildung>
    <img src='./man.png' alt='Irma'>
  </figure>
Körper {
  Anzeige: Raster;
  Hintergrund: #FDFC47;
  Hintergrund: -webkit-linear-gradient (nach rechts, #24FE41, #FDFC47);
  Hintergrund: linearer Farbverlauf (nach rechts, #24FE41, #FDFC47);
}
Figur {
  --hov: 0;
  --nicht-hov: calc(1 - var(--hov));
  Anzeige: Raster;
  Ort-Selbst: Zentrum;
  Rand: 0;
  Polsterung oben: 5%;
  transformieren: Skalierung(kalkulieren(1 - .1*var(--not-hov)));
}
Abbildung:n-ter-Typ(1) {
  Überlauf: versteckt;
  Rahmenradius: 0 0 Klammer (4em, 20vw, 15em) Klammer (4em, 20vw, 15em);
}
Abbildung:n-ter-Typ(2) {
  Clip-Pfad: Einschub (0 rund 0 0 Klammer (4em, 20vw, 15em) Klammer (4em, 20vw, 15em));
}
Abbildung, Abbildung img {
  Übergang: Transformation 0,2 s, leichtes Ein- und Aussteigen;
}
Abbildung::vorher, Abbildung img {
  Rasterfläche: 1/1;
  Ort-selbst: Ende Mitte;
}
Abbildung::vor {
  Polsterung: Klammer (4em, 20vw, 15em);
  Randradius: 50 %;
  Hintergrund: URL('./bg.png') 50 %/Cover;
  Inhalt: "";
  Übergang: 0,25 s linear;
}
Abbildung:schweben {
  --hov: 1;
}
Abbildung:hover::vor {
  Kastenschatten: 1px 1px 10px rgba(0, 0, 0, .3);
}
img {
  Breite: berechnet (2 * Klemme (4em, 20vw, 15em));
  Rahmenradius: Klammer (4em, 20vw, 15em);
  transformieren: übersetzenY(calc((1 - var(--hov))*10%)) skalieren(calc(1,25 + 0,05*var(--hov)));
}

Dies ist das Ende dieses Artikels darüber, wie Sie mit reinem CSS einen Hover-Bild-Pop-out-Effekt erzielen. Weitere relevante CSS-Inhalte finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

<<:  Zusammenfassung der SQL-Deduplizierungsmethoden

>>:  Implementierung der Zahlungsfunktion im Vue-Projekt (WeChat-Zahlung und Alipay-Zahlung)

Artikel empfehlen

Zusammenfassung der CSS-Schwebeelementanalyse

Float: links/rechts/keine; 1. Gleichstufiges Schw...

Implementierung einer nicht geheimen SSH-Kommunikation in Linux

Was ist SSH? Administratoren können sich remote a...

Einige Fragen zu Hyperlinks

<br />Ich freue mich sehr, an dieser Folge d...

Tools zum Konvertieren statischer Websites in RSS

<br /> Dieser Artikel wurde von Rachel Golds...

So betten Sie Dateien im Flash-Videoformat (FLV, SWF) in HTML-Dateien ein

Flash-Dateiformate: .FLV und .SWF Für das Flash-Vi...

Gestaltung von Popup-Fenstern und schwebenden Ebenen im Webdesign

Im Zuge des schrittweisen Übergangs von herkömmli...

Vue realisiert Preiskalendereffekt

In diesem Artikelbeispiel wird der spezifische Co...

HTML+CSS zum Erzielen von Spezialeffekten durch Textfaltung – Beispiel

In diesem Artikel werden hauptsächlich Beispiele ...

CSS-Rand halb oder teilweise sichtbarer Implementierungscode

1. Verwenden Sie Pseudoklassen, um die Hälfte des...

js einfacher und grober Beispielcode zum Veröffentlichen und Abonnieren

Was ist Publizieren/Abonnieren? Lassen Sie mich I...