Dieses Problem wird dadurch verursacht, dass die URL-Balken verkleinern / aus dem Weg rutschen und die Größe der Divs # bg1 und # bg2 ändern, da sie 100% hoch und "fest" sind. Da das Hintergrundbild auf "Abdeckung" eingestellt ist, wird die Bildgröße / -position angepasst, wenn der enthaltende Bereich größer ist.
Basierend auf der Reaktionsfähigkeit der Site muss der Hintergrund skaliert werden. Ich unterhalte zwei mögliche Lösungen:
1) Stellen Sie die Höhe # bg1, # bg2 auf 100vh ein. Theoretisch ist dies eine elegante Lösung. IOS hat jedoch einen vh-Fehler ( http://thatemil.com/blog/2013/06/13/viewport-relative-unit-strangeness-in-ios-6/ ). Ich habe versucht, eine maximale Höhe zu verwenden, um das Problem zu verhindern, aber es blieb bestehen.
2) Die von Javascript bestimmte Größe des Ansichtsfensters wird von der URL-Leiste nicht beeinflusst. Daher kann Javascript verwendet werden, um eine statische Höhe für # bg1 und # bg2 basierend auf der Größe des Ansichtsfensters festzulegen. Dies ist nicht die beste Lösung, da es sich nicht um reines CSS handelt und beim Laden der Seite ein leichter Bildsprung auftritt. Es ist jedoch die einzige praktikable Lösung, die ich unter Berücksichtigung der "vh" -Fehler von iOS sehe (die in iOS 7 nicht behoben zu sein scheinen).
var bg = $("#bg1, #bg2");
function resizeBackground() {
bg.height($(window).height());
}
$(window).resize(resizeBackground);
resizeBackground();
Nebenbei bemerkt, ich habe so viele Probleme mit diesen Größenänderungs-URL-Leisten in iOS und Android gesehen. Ich verstehe den Zweck, aber sie müssen wirklich über die seltsame Funktionalität und das Chaos nachdenken, das sie auf Websites verursachen. Die letzte Änderung ist, dass Sie die URL-Leiste beim Laden von Seiten unter iOS oder Chrome nicht mehr mithilfe von Bildlauftricks "ausblenden" können.
BEARBEITEN: Während das obige Skript perfekt funktioniert, um die Größenänderung des Hintergrunds zu verhindern, verursacht es eine merkliche Lücke, wenn Benutzer nach unten scrollen. Dies liegt daran, dass der Hintergrund auf 100% der Bildschirmhöhe abzüglich der URL-Leiste verkleinert wird. Wenn wir die Höhe um 60 Pixel erhöhen, wie es die Schweiz vorschlägt, verschwindet dieses Problem. Es bedeutet, dass wir die unteren 60 Pixel des Hintergrundbilds nicht sehen können, wenn die URL-Leiste vorhanden ist, aber es verhindert, dass Benutzer jemals eine Lücke sehen.
function resizeBackground() {
bg.height( $(window).height() + 60);
}