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

So handhaben Sie Bilder in Vue-Formularen

Frage: Ich habe in Vue ein Formular zum Hochladen...

Eine audiovisuelle Linux-Distribution, die Audiophile anspricht

Ich bin kürzlich auf das Audiovisual Linux Projec...

Zusammenfassung einiger effizienter magischer Operatoren in JS

JavaScript veröffentlicht mittlerweile jedes Jahr...

JDBC-Erkundung SQLException-Analyse

1. Übersicht über SQLException Wenn bei der Verwe...

MySQL-Schnellwiederherstellungslösung basierend auf dem Zeitpunkt

Der Grund für das Schreiben dieses Artikels ist, ...

Neonlichteffekte mit reinem CSS3 umgesetzt

Dies ist der zu erzielende Effekt: Sie können seh...

Singleton-Entwurfsmuster in JavaScript

Inhaltsverzeichnis 1. Was ist ein Entwurfsmuster?...

MySQL-Ansichtsprinzipien und grundlegende Bedienungsbeispiele

Dieser Artikel veranschaulicht anhand von Beispie...

Detaillierte Erläuterung des Mysql-Kommunikationsprotokolls

1.Mysql-Verbindungsmethode Um das MySQL-Kommunika...

Warum MySQL große Transaktionen vermeiden sollte und wie man sie löst

Was ist eine große Sache? Transaktionen, die über...

Schritte zum Upgrade des Ubuntu 16.04-Kernels

1. Umwelt Ubuntu 16.04 läuft auf einer virtuellen...

Anwendung von CSS3-Animationseffekten in Aktivitätsseiten

Hintergrund Ehe wir uns versehen, neigt sich ein ...