CSS hintergrund Strecken zu füllen Höhe in iOS, aber es gibt einen weißen Rand auf Blättern
diese CSS wird mein hintergrund zu füllen, die 100% der Bildschirmhöhe in iOS, aber es gibt ein kleines problem - wenn Sie nach unten scrollen dort ist zunächst ein Leerzeichen ist, dann, wenn Sie heben Sie Ihren finger an und stoppen Sie die hintergrund-Bild "passt" und füllt auf 100% der Bildschirmhöhe wieder. Das problem ist nicht neu-auf der gleichen Seite auftreten, wenn Sie weiter Blättern, nur die erste Zeit. Könnte mir bitte jemand helfen? Dank
#background {
background: url(../img/background.jpg) center repeat-x;
position: fixed;
background-size: auto 100%;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: -1
}
- iOS ist nicht so toll mit
position: fixed
. außerdem, warum brauchst du position:fixed zu beginnen? warum nicht den hintergrund<body>
? - Ich habe eine 50x1000 px hintergrund Bild Muster, das ich versuche zu bekommen, füllen Sie alle Bildschirme (iOS und desktops) 100% Breite und 100% Höhe, das ist mein roh-Lösung zu füllen iOS 100% Höhe
- Hast meine Lösung nicht lösen Ihr problem?
- Ihre Lösung füllt auf 100% der Seite, die nicht 100% auf dem Bildschirm auf iOS
- Es wäre toll, wenn könnten Sie reproduzieren Sie Ihr Problem in Jsfiddle oder andere oder link zu Ihrer website, weil das problem nicht aus der
#background
CSS selbst. - Ich hatte vor kurzem dieses problem und wir am Ende brauchen, um ein befliesbarer hintergrund Bild und geben bis auf position:fixed. In iOS der Fenster, die Höhe schrumpft für das untere Menü-Leiste, dann erweitert, wenn Sie scrollen und der browser nicht aktualisiert, der hintergrund schnell genug. Wir haben auch diesen Ansatz aufgegeben, weil die Feste in voller Höhe, hintergrund-div produzierte Inhalte flackern und re-rendering in Android native und Firefox beim scrollen.
- das ist genau mein problem, Sie geben eine codierte Lösung? Welchen Ansatz haben Sie am Ende mit?
- Wir haben nicht mit einem festen hintergrund, landeten wir das hinzufügen eines hintergrund-der content-wrapper, der Bildlauf mit dem Inhalt. Die iOS-und Android-Probleme, mit Schienen, die auf dem Weg zu den mobile-Browsern Griff
position:fixed
. Aka: nicht gut. Nur für die iOS-Ausgabe, die Sie könnten versuchen, Einstellung#background { height: 150% }
, aber soweit ich mich erinnere hatten wir noch die weiße Leiste. Sorry. 🙁 - ok, Höhe 150% hat bei mir nicht funktioniert, ive Schloss seine mobile safari Malerarbeiten Frage, wie dies stackoverflow.com/questions/3485365/..., wäre es eine javascript-Lösung? zu Kraft-webkit-repaint der div vor ich lasse meine finger? das ist wirklich das problem, alles ok, nachdem Sie den finger auf Blättern, nur nicht vor
- Das Problem in diesem post beschrieben : stackoverflow.com/questions/22716660/... scheint das zu reflektieren, was Sie beschreiben. Vielleicht kann es helfen.
- versuchen Sie diesen link an, vielleicht können Sie die Lösung bekommen Sie hier.. stackoverflow.com/questions/10629403/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies geschieht, weil Ihre
#background
element festgelegt ist, zu "Folgen" die Höhe der Fenster:Aber, die
window
im Safari ändert seine Größe, wenn Sie nach unten scrollen die Inhalte für die erste Zeit von460px
zu529px
:Wie Sie sehen können von diesen screenshots, wenn die web-Seite geladen wird, die
window.innerHeight
gleich460px
(auf iPhone5). Dann, wenn Sie beginnen, scrollen Sie die Seite nach unten, während Ihr finger den Bildschirm berührt derwindow.innerHeight
erhöht wird, um529px
aber der Inhalt ist noch nicht aktualisiert. Nur, wenn der finger losgelassen wird der Bildschirm von der#background
element wird aktualisiert, mit der neuen Fenster-Höhe, die gleich zu529px
.Um dieses Problem zu beheben, sollten Sie sicherstellen, dass die
#background
element höher ist als die des ersten Fensters Höhe von529-460 = 69px
. Oder die#background
element Konstanten Höhe von529px
(oder höher):ODER
Hier ist die End-code, der behebt dieses Problem:
Habe ich nur dieses Problem gelöst. Das problem für mich war, dass der Leerraum wurde, stellte ich meinen body-tag mit background-image mit background-size einstellen zu decken. Um dieses Problem zu beheben ich:
background-size: 100vw 100vh;
Dann legen Sie die Medien-Abfrage, die ich hatte das problem mit zu
Warum nicht mit background-size: cover. So hintergrund Bild immer füllen Ihre angeschlossenen div oder body-tag
<name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0," />
body{
background-size: cover;
}
Versuchen, die Verwendung von viewport-Einheiten auf dem hintergrund
background-size: 100vw 100vh;
Aber erste add-viewport-meta-tag auf Ihrer Seite:
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
HINWEIS:
Vw und vh-Einheiten werden nicht vollständig unterstützt, überprüfen Sie heraus die unterstützten Browser hier.
viewport-units
werden nicht vollständig unterstützt: caniuse.com/viewport-unitsKönnen Sie dieses Problem beheben, indem Sie mit langen übergang Verzögerungen zu verhindern, dass das element vergrößern.
zB:
Den Nachteil mit diesem ist, dass es verhindert, dass eine Größenänderung des Elements einschließlich auf dem Gerät drehen, aber Sie könnte etwas JS zu erkennen orientationchange, und setzen Sie die Höhe, wenn dies ein Thema war.
jsfiddle