Tutorials

Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.

Zurück zur Übersicht

jQuery /CSS3: Responsive Funktion via jQuery und CSS auslösen, anstelle von window width

#Tutorials#jQuery#CSS

Möchte man Javascript-Funktionen bei bestimmten Bildschirmgrößen auslösen, so fällt einem schnell auf, dass Window Width (Browserbreite) nicht der Breite entspricht, die Mediaqueries benutzen. Dies liegt meistens an der Scrollbar, die je nach Betriebssystem und Browser 10-20px in Anspruch nimmt. So kommt es vor, dass jQuery die Funktion zu spät, oder zu früh auslöst und die restliche Seite noch nicht im Mediaquery ist. Dadurch kann es an den Breakpoints zu unschönen Effekten kommen.

Die Lösung

Die Lösung ist eigentlich relativ simpel. Erstellt für jeden Mediaquery bzw. jede Funktion die eine Breite benötigt ein leeres HTML Element, beispielsweise ein

und gebt diesem eine eindeutige Id oder Klasse.

Nun stylt in euren Mediaqueries diese Elemente mit display:none oder display:block, je nachdem wann diese angezeigt werden sollen.

Danach könnt ihr mit jQuery einfach testen, ob ein bestimmtes Div sichtbar ist oder eben nicht.

Beispiel

<div id="tablet-indicator"></div>

CSS


#tablet-indicator {
    display: none;
}
@media (max-width: 991px) {
  #tablet-indicator {
    display: block;
  }
}

Javascript


$(window).resize(function(){
  if($('#tablet-indicator').is(':visible')){
    // Your Code for Tablet
  }
});

So was macht das Beispiel?

  • Wir haben ein Div mit der ID "tablet-indicator" irgendwo auf der Seite (Am besten im Footer)
  • Dieses Div ist ausgeblendet via CSS
  • Es wird eingeblendet, solange man unter 992px Bildschirmbreite hat
  • Das Javascript guckt ob das Div sichtbar ist, oder nicht. Ist es sichtbar, bedeutet das, wir sind im Tablet Viewport

Kommentare

  • Matthias
    Hey Andre, danke für den kleinen aber sehr effektiven Trick! Hatte mich schon geärgert, weil auf dem Mac ohne Scrollbar alles passte, allerdings auf Windows-Rechnern nicht. Nun habe ich eine Lösung die überall funktioniert. Vielen Danke dafür!
    Antworten

Hinterlasse einen Kommentar

Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Kommentar wird gespeichert
Danke für deinen Kommentar! Sobald er freigegeben wurde erscheint er hier.