Ich arbeite mit Uikit bzw. YooTheme Pagebuilder. Auf meinen Websites habe ich mein Signet immer oben sichtbar (=sticky) bzw. in der uikit-Sprache = uk-sticky
Das Signet verändert seine Größe abhängig vom Viewport, weil ich seine Breite per CSS mit vw und max-width definiert habe. Das sieht elegant aus, ausgenommen bei der Darstellung im Smartphone-Querformat. Moderne Smartphones haben eine derartig große Pixelbreite, dass das Signet dann mehr als 1/3 der Bildschirmhöhe einnimmt.
Um das zu vermeiden, wurde versucht, das Signet erst ab 770 Pixel Breite sticky zu machen. Eine nur von Screenwidth abhängige Unterscheidung reicht aber bei den heutigen Smartphones nicht mehr aus: So hat mein Google Pixel 8 ein Display von 412 x 915 px bei Faktor 2,63.
Mein Ziel ist:
Es soll erkannt werden, ob die Website auf einem Smartphone im Querformat angezeigt wird. Wenn ja, soll mein Signet "nicht sticky" angezeigt werden. In allen anderen Fällen der Darstellung soll es am oberen Rand stehen bleiben während der sonstige Inhalt der Webseite scrollt.
Einen jQuery-Lösungsansatz habe ich, leider nur mit dem einzigen Unterscheidungskriterium Screenwidth. Aber diesen Script-Schnippsel könnte man evtl. erweitern, sodass die gewünschte Funktion erreicht wird?
jQuery(function($) {
$('.tm-header-mobile .uk-sticky').attr('uk-sticky','media: 770');
});
tm-header-mobile repräsentiert das Signet. .uk-sticky ist die CSS-Klasse im UIkit, durch die das Element fixiert wird.
Bevor ich diese jQuery-Lösung eingebaut habe, hatte ich versucht, die Aufgabe per CSS media-query zu lösen und verwendete z.B.
@media only screen and (orientation: landscape) and (pointer: coarse)
Leider werden diese media-queries anscheinend von vielen Browsern nicht beachtet, speziell nicht von Mobil-Browsern. Wenn es funktionieren würde, wäre es ja Klasse und ich müsste dann nur den CSS-Code aus der Klasse uk-sticky als Definition hinein kopieren. – Script-Lösungen kann ich leider gar nicht selbst basteln, weil ich nix davon verstehe.
Mit welchen Lösungen habt Ihr gute Erfahrungen gemacht?