Lesefortschritt:

Popups mit dem Divi-Theme erstellen – ganz ohne Plugin

4. Februar 2024 | CSS-Stylesheet, Divi-Theme, Scripts

Trick # 315 | Dieser Beitrag beinhaltet 2079 Wörter. – Geschätzte Lesezeit: ca. 11 Minuten.

Heute zeigen wir Ihnen, wie Sie jede beliebige Section auf Ihrer Divi-Website in ein verstecktes Popup verwandeln können. Dieses wird wahlweise beim Laden der entsprechenden Seite direkt angezeigt – oder nach einem Klick auf eine Schaltfläche aktiviert. Dazu benötigen Sie keine Plugins – nur ein paar Zeilen CSS und etwas jQuery.

Wir spielen das Prozedere für das Popup hier beispielhaft mit einem Kontaktformular durch. Zunächst bereiten Sie dazu ein paar Schritte vor:

  1. Erstellen eines Trigger-Buttons: Sie können das Button-Modul des Divi-Themes als Auslöser verwenden. Fügen Sie an geeigneter Stelle ein entsprechendes Modul ein. Damit es funktioniert, fügen Sie dem Button eine benutzerdefinierte CSS-Klasse hinzu: «popup-trigger». Diese tragen Sie in den Button-Einstellungen unter dem Tab «Erweitert», «CSS-ID & Klassen» und dort im Tetfeld «CSS-Klassen» ein.
  2. Button-Link festlegen: Wechseln Sie hierfür zum Tab «Inhalt» des eben bearbeiteten Divi-Buttons. Fügen Sie im Feld «Button-Link-URL» die Zeile «#contact» ein.
  3. Eine Popup-Sektion erstellen: Fügen Sie der Seite (oder dem Beitrag) eine neue Sektion hinzu. Diese Sektion blenden Sie sogleich aus: klicken Sie dazu auf das Zahnrad-Icon der Sektion und deaktivieren Sie die Sektion für alle Anzeigearten. Stellen Sie zudem sicher, dass Sie auf der Registerkarte «Erweitert», unter CSS-ID & Klassen»/«CSS-ID» die richtige ID einstellen. Sie muss mit der URL der Schaltfläche aus Schritt 2 übereinstimmen. In unserem Beispiel lautet die ID «contact» (diesmal ohne das Rautezeichen). Der Abschnitt benötigt ausserdem die CSS-Klasse «popup-content».
  4. Mindesthöhe des Popups festlegen: Auf der Registerkarte «Design» der Sektion stellen Sie die Mindesthöhe auf 100 % ein. Damit stellen Sie sicher, dass sich der Hintergrund des Abschnitts auf den gesamten Bildschirm ausdehnt, wenn das Popup aktiviert wird.
  5. Inhalt einfügen: Fügen Sie nun der Popup-Sektion eine Zeile sowie ein Modul hinzu. Wir verwenden ein einspaltiges Design mit einem Kontakformular-Modul; da unser Beispeil-Popup diesen Zweck erfüllen soll.

Dies sind die vorbereitenden Schritte. Nun benötigen Sie etwas CSS-Code. Den folgenden Block kopieren Sie in das CSS-Stylesheet Ihrer Website – im Backend unter Design/Customizer/Zusätzliches CSS:

/* Show/hide the popup overlay wrapper when "is-visible" class changes, apply the CSS to frontend only */
body:not(.et-fb) .popup-wrapper {
  position:fixed;
  z-index:990;
  top:0;
  right:0;
  bottom:0;
  left:0;
  transition: all .5s cubic-bezier(.14,.06,.41,1.39);
  opacity:0;
  visibility:hidden;
}
body:not(.et-fb) .popup-wrapper.popup-is-visible {
  opacity:1;
  visibility:visible;
}

/* Allow the content inside the popup wrapper to scroll */
.popup-inside {
  height:100%;
  overflow-y: scroll;
}

/* Prevent Body from Scrolling when Popup is visible */
body.noscroll {
  overflow: hidden;
}

/* Center Align Popup Content inside the Section */
.popup-content {
  display:flex;
  flex-direction:column;
  justify-content: center;
}
.popup-content .et_pb_row {
  margin-top:0;
  margin-bottom:0;
}

/* Adjust the position of the popup overlay for admin bar */
@media (min-width:600px) and (max-width:782px) {
  body:not(.et-fb).admin-bar .popup-wrapper {
    top:46px;
  }
}
@media (min-width:783px) {
  body:not(.et-fb).admin-bar .popup-wrapper {
    top:32px;
  }
}

/* Mave the popup on top of other elements */
.et_builder_inner_content.popup-is-visible {
  z-index:99999;
}

/* Add a hand cursor to the close trigger element */
.popup-close {
  cursor:pointer;
}

/* Add Row animation when popup is triggered */
.popup-wrapper.popup-is-visible .et_pb_row:not(.popup-close) {animation:scale-in .5s cubic-bezier(.14,.06,.41,1.39) both; animation-delay: .5s; }
@keyframes scale-in{0%{transform:scale(0.3);opacity:0}100%{transform:scale(1);opacity:1}}

Weiter geht es mit jQuery-Code. Auch diesen kopieren Sie, wechseln im Backend zu Divi/Theme-Optionen/Integration und fügen den nachfolgenden Codeblock in das Fenster ein, welches den <head>-Bereich der Website definiert.

<script>
jQuery(document).ready(function($) {
	
	$('.popup-content').each(function(){
		$(this).wrap('<div class="popup-wrapper"><div class="popup-inside">');
	});
		
	$('.popup-trigger, menu-popup > a').off().click(function(e){
		e.preventDefault();
		SectionID = $(this).attr('href');
		$(SectionID).closest('.popup-wrapper').addClass('popup-is-visible');
		$(SectionID).closest('.et_builder_inner_content').addClass('popup-is-visible');
		$('body').addClass('noscroll');
	});	
			
	$('.popup-close').click(function(e){
		e.preventDefault();
		$('.popup-is-visible').removeClass('popup-is-visible');
		$('body').removeClass('noscroll');
		
		var PopupVideoIframe = $(this).closest('.popup-content').find('.et_pb_video_box iframe');
		var PopupVideoSrc = PopupVideoIframe.attr("src");
		PopupVideoIframe.attr("src", PopupVideoSrc);
		
		var PopupVideoHTML = $(this).closest('.popup-content').find('.et_pb_video_box video');
		PopupVideoHTML.trigger('pause');
	});
});	
</script>

Damit funktioniert das Popup schon mal. Sie können es gleich hier nebenan austesten:

Automatisches Auslösen des Popups beim Laden der Seite

Um das Popup automatisch beim Laden der Seite auszulösen, benötigen Sie eine zweite jQuery-Funktion, welche Sie nach der soeben eingefügten unter Divi/Theme-Optionen/Integration platzieren. Kopieren Sie den nachstehenden Code und fügen Sie ihn an bekannter Stelle ein:

<script>
setTimeout(function(){
	SectionID = $('#contact');
	SectionID.closest('.popup-wrapper').addClass('popup-is-visible');
	SectionID.closest('.et_builder_inner_content').addClass('popup-is-visible');
	$('body').addClass('noscroll');
}, 3000);
</script>

Ersetzen Sie gegebenenfalls «#contact» in Zeile 3 durch die ID Ihrer Popup-Sektion. Sie können auch den Wert 3000 auf Zeile 7 ersetzen, um eine eigene Verzögerung zu definieren. 3000 Millisekunden sind 3 Sekunden.

Probieren Sie es aus. Es ist erfreulich einfach. Allerdings muss ich gestehen: Es gibt Konfigurationen, bei welchen das Popup nicht recht will und der aufpoppende Inhalt gleich in ganzer Browsergrösse angezeigt wird.

3 + 14 =

Werbung

Keine Inhalte gefunden.

Werbung

 

Pin It on Pinterest

Share This
Überblick über den Datenschutz

Diese Website verwendet Cookies, damit wir Ihnen die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in Ihrem Browser gespeichert und dienen dazu, Sie wiederzuerkennen, wenn Sie auf unsere Website zurückkehren, und unserem Team zu helfen, zu verstehen, welche Bereiche der Website Sie am interessantesten und nützlichsten finden.