Ich habe eine Website hier .
In einem Desktop-Browser wird die schwarze Menüleiste nur bis zum Rand des Fensters angezeigt, da dies der Fall body
ist overflow-x:hidden
.
In jedem mobilen Browser, egal ob Android oder iOS, wird in der schwarzen Menüleiste die gesamte Breite angezeigt, wodurch rechts auf der Seite Leerzeichen angezeigt werden. Soweit ich das beurteilen kann, ist dieses Leerzeichen nicht einmal Teil der Tags html
oder body
.
Auch wenn ich das Ansichtsfenster auf eine bestimmte Breite eingestellt habe <head>
:
<meta name="viewport" content="width=1100, initial-scale=1">
Die Site wird auf 1100px erweitert, verfügt jedoch weiterhin über Leerzeichen jenseits von 1100.
Was vermisse ich? Wie halte ich das Ansichtsfenster auf 1100 und schneide den Überlauf ab?
css
overflow
viewport
mobile-browser
Indigenität
quelle
quelle
Antworten:
Erstellen eines Site-Wrapper-Div innerhalb des
<body>
und Anwenden desoverflow-x:hidden
auf den Wrapper anstelle des<body>
oder<html>
behoben des Problems.Es scheint, dass Browser, die das
<meta name="viewport">
Tag analysieren ,overflow
Attribute auf demhtml
und einfach ignorierenbody
Tags .Hinweis: Möglicherweise müssen Sie auch
position: relative
das Wrapper-Div hinzufügen .quelle
overflow
zuhidden
, ich hatte das zu setzen ,position
umfixed
...overflow-x: hidden
immer noch nicht für mich, selbst nachdem ich dieses Meta-Tag hinzugefügt habe. Könnten Sie bitte einen Link zu Ihrer Website teilen, auf der sie funktioniert?position:relative
funktioniert.Versuchen
statt nur
quelle
overflow
irgendetwas aufhtml
und / oderbody
in irgendeiner Kombination hat das Problem nicht gelöst.height:100%;
da sonst der vertikale Bildlauf auf Seiten mit geladenen Bildern nicht ordnungsgemäß funktioniert (wodurch die Seite in der Höhe wächst).Der Kommentar von VictorS zu der akzeptierten Antwort verdient eine eigene Antwort, da es sich um eine sehr elegante Lösung handelt, die tatsächlich funktioniert. Und ich werde ein bisschen zu seiner Nützlichkeit hinzufügen.
Victor bemerkt, dass er
position:fixed
Werke hinzufügt .Und tatsächlich tut es das auch. Es hat jedoch auch einen leichten Nebeneffekt, wenn im Wesentlichen nach oben gescrollt wird.
position:absolute
behebt dieses Problem, führt jedoch die Möglichkeit zum Scrollen auf Mobilgeräten wieder ein.Wenn Sie Ihr Ansichtsfenster kennen ( mein Plugin zum Hinzufügen des Ansichtsfensters zum
<body>
), können Sie einfach einen CSS-Schalter für das hinzufügenposition
.Ich füge dies auch hinzu, um zu verhindern, dass die zugrunde liegende Seite beim Ein- / Ausblenden von Modalen nach links / rechts springt.
quelle
position:fixed or absolute
, auch ihre Positionen zu stören. Nicht geeignet / funktioniert in meinem Fall :(Dies ist die einfachste Lösung, um das horizontale Scrollen in Safari zu lösen.
quelle
table-responsive
Bug beheben . Dies war die Lösung.Wie @Indigenuity angibt, scheint dies darauf zurückzuführen zu sein, dass Browser das
<meta name="viewport">
Tag analysieren .Versuchen Sie Folgendes, um dieses Problem an der Quelle zu lösen:
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
.In meinen Tests verhindert dies, dass der Benutzer herauszoomt, um den übergelaufenen Inhalt anzuzeigen, und verhindert daher auch das Schwenken / Scrollen.
quelle
initial-scale=1
zu einem vorhandenen Metatag für Ansichtsfenster behebt das Problem tatsächlich. Vielen Dank!minimum-scale=1
, was es behoben hatfunktioniert unter iOS9
quelle
Lassen Sie das Ansichtsfenster unberührt:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Angenommen, Sie möchten den Effekt eines durchgehenden schwarzen Balkens auf der rechten Seite erzielen:
#menubar
Sollte 100% nicht überschreiten , stellen Sie den Randradius so ein, dass die rechte Seite quadratisch ist, und passen Sie die Polsterung so an, dass sie sich etwas weiter nach rechts erstreckt . Ändern Sie Folgendes an Ihrem#menubar
:Einstellen des
padding
zu 10px natürlich Blätter der linken Menü auf den Rand der Leiste, können Sie die restlichen setzen 40px zu jedem derli
, 20px auf jeder Seite links und rechts:Wenn Sie die Größe des Browsers verkleinern, finden Sie immer noch den weißen Hintergrund: Platzieren Sie stattdessen Ihre Hintergrundtextur von Ihrem div bis
body
. Alternativ können Sie die Breite des Navigationsmenüs mithilfe von Medienabfragen von 100% auf einen niedrigeren Wert einstellen. Es müssen viele Anpassungen an Ihrem Code vorgenommen werden, um ein korrektes Layout zu erstellen. Ich bin mir nicht sicher, was Sie vorhaben, aber der obige Code wird Ihre überlaufende Leiste irgendwie reparieren.quelle
box-sizing: border-box;
, können Sie einem Div mit 100% Breite eine Polsterung hinzufügen.Dies funktionierte für mich, nachdem ich auch
position: relative
den Wrapper hinzugefügt hatte .quelle
overflow: hidden
statt zu machenoverflow-x: hidden
. Funktioniert unter Mobile Safari, Chrome, IE11 unter OSX und Win.Das Hinzufügen eines Wrappers
<div>
um den gesamten Inhalt funktioniert in der Tat. Während ich semantisch "icky" war, fügte ich ein div mit einer Klasse von overflowWrap direkt innerhalb desbody
Tags hinzu und stellte mein CSS wie folgt ein :Könnte jetzt übertrieben sein, funktioniert aber wie ein Zauber!
quelle
Ich habe das gleiche Problem mit Android-Geräten festgestellt, aber nicht mit iOS-Geräten. Kann durch Angabe der Position aufgelöst werden: relativ im äußeren Teil der absolut positionierten Elemente (mit Überlauf: für äußeren Teil ausgeblendet)
quelle
Bei mir funktionierte keine vorherige Einzellösung, ich musste sie mischen und das Problem wurde auch auf älteren Geräten (iPhone 3) behoben.
Zuerst musste ich den HTML-Inhalt in ein äußeres div wickeln:
Dann musste ich einen versteckten Überlauf auf den Wrapper anwenden, da overflow-x nicht funktionierte:
und dies behebt das Problem.
quelle
Ich habe das Problem mit overflow-x gelöst: hidden; wie folgt
Struktur ist wie folgt
1st div end_screen >> inside it >> end_screen_2(div) >> inside it >> end_screen_2.
'end_screen is the wrapper of end_screen_1 and end_screen_2 div's
quelle
Wie Subarachnid sagte, funktionierte Overflow-X, das sowohl für Body als auch für HTML versteckt war. Hier ist ein Arbeitsbeispiel
Verknüpfung
quelle
Ich habe gerade ein paar Stunden daran gearbeitet und verschiedene Kombinationen von Dingen auf dieser und anderen Seiten ausprobiert. Am Ende hat es für mich funktioniert, einen Site-Wrapper-Div zu erstellen, wie in der akzeptierten Antwort vorgeschlagen, aber beide Überläufe auf versteckt anstatt nur auf den x-Überlauf zu setzen. Wenn ich beim Scrollen den Überlauf y lasse, wird eine Seite angezeigt, die nur um einige Pixel vertikal scrollt und dann stoppt.
Nur das war genug, ohne etwas auf den Körper oder HTML-Elemente zu setzen.
quelle
Ich hatte viele Möglichkeiten aus den Antworten in diesem Thema ausprobiert, funktioniert meistens, hatte aber einige Nebenwirkungen, wie wenn ich overflow-x verwende
body,html
es die Seite verlangsamen / einfrieren, wenn Benutzer auf dem Handy nach unten scrollen.verwenden
position: fixed
für Wrapper / Div im Körper ist auch gut, aber wenn ich ein Menü habe und Javascript verwende, klicken Sie auf animierten Bildlauf zu einem Abschnitt, es funktioniert nicht.Also entschied ich mich für
touch-action: pan-y pinch-zoom
Wrapper / Div im Körper. Problem gelöst.quelle
Die einzige Möglichkeit, dieses Problem für mein Bootstrap-Modal (das ein Formular enthält) zu beheben, bestand darin, meinem CSS den folgenden Code hinzuzufügen:
quelle