J'ai un site Web ici .
Vue dans un navigateur de bureau, la barre de menu noire ne s'étend correctement que jusqu'au bord de la fenêtre, puisque le body
has overflow-x:hidden
.
Dans n'importe quel navigateur mobile, qu'il soit Android ou iOS, la barre de menu noire affiche toute sa largeur, ce qui amène des espaces à droite de la page. Pour autant que je sache, cet espace ne fait même pas partie des balises html
ou body
.
Même si je règle la fenêtre sur une largeur spécifique dans <head>
:
<meta name="viewport" content="width=1100, initial-scale=1">
Le site se développe au 1100px mais a toujours l'espace blanc au-delà du 1100.
Qu'est-ce que je rate? Comment conserver la fenêtre d'affichage à 1100 et couper le débordement?
css
overflow
viewport
mobile-browser
Indigénité
la source
la source
Réponses:
La création d'un div wrapper de site à l'intérieur de
<body>
et l'applicationoverflow-x:hidden
du wrapper au lieu de<body>
ou ont<html>
résolu le problème.Il semble que les navigateurs qui analysent la
<meta name="viewport">
balise ignorent simplement lesoverflow
attributs des baliseshtml
etbody
.Remarque: vous devrez peut-être également ajouter
position: relative
au div wrapper.la source
overflow
surhidden
, je devais régler leposition
surfixed
...overflow-x: hidden
ne fonctionne toujours pas pour moi même après avoir ajouté cette balise meta. Pourriez-vous s'il vous plaît partager un lien vers votre site Web où il fonctionne?position:relative
marche aussi.essayer
au lieu de juste
la source
overflow
quoi que ce soit àhtml
et / oubody
dans n'importe quelle combinaison n'a pas résolu le problème.height:100%;
, sinon le défilement vertical ne fonctionnerait pas correctement sur les pages avec des images de chargement (ce qui fait grossir la page).Le commentaire de VictorS sur la réponse acceptée mérite d'être sa propre réponse car c'est une solution très élégante qui fonctionne, en effet. Et j'ajouterai un peu à son utilité.
Victor note l'ajout d'
position:fixed
œuvres.Et c'est effectivement le cas. Cependant, il a également un léger effet secondaire consistant essentiellement à faire défiler vers le haut.
position:absolute
résout ce problème, mais réintroduit la possibilité de faire défiler sur mobile.Si vous connaissez votre fenêtre d'affichage ( mon plugin pour ajouter une fenêtre d'affichage au
<body>
), vous pouvez simplement ajouter une bascule css pour leposition
.J'ajoute également ceci pour empêcher la page sous-jacente de sauter à gauche / droite lors de l'affichage / du masquage des modaux.
la source
position:fixed or absolute
déranger leurs positions aussi. Ne convient pas / fonctionne dans mon cas :(C'est la solution la plus simple pour résoudre le défilement horizontal dans Safari.
la source
table-responsive
bug Bootstrap 4 . C'était la solution.Comme l'indique @Indigenuity, cela semble être dû au fait que les navigateurs analysent la
<meta name="viewport">
balise.Pour résoudre ce problème à la source, essayez ce qui suit:
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
.Dans mes tests, cela empêche l'utilisateur de faire un zoom arrière pour afficher le contenu débordé et, par conséquent, empêche également le panoramique / le défilement.
la source
initial-scale=1
à une méta-balise de fenêtre existante résout en effet le problème. Merci!minimum-scale=1
qui l'a corrigéfonctionne sur iOS9
la source
Gardez la fenêtre intacte:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
En supposant que vous souhaitiez obtenir l'effet d'une barre noire continue sur le côté droit:
#menubar
ne doit pas dépasser 100% , ajustez le rayon de la bordure de sorte que le côté droit soit carré et ajustez le rembourrage pour qu'il s'étende un peu plus vers la droite . Modifiez ce qui suit dans votre#menubar
:Ajuster le
padding
à 10px laisse bien sûr le menu de gauche au bord de la barre, vous pouvez mettre les 40px restants à chacun desli
, 20px de chaque côté gauche et droit:Lorsque vous redimensionnez le navigateur plus petit, vous trouverez toujours l'arrière-plan blanc: placez votre texture d'arrière-plan à la place de votre div vers
body
. Ou bien, ajustez la largeur du menu de navigation de 100% à une valeur inférieure à l'aide de requêtes multimédias. Il y a beaucoup d'ajustements à apporter à votre code pour créer une mise en page appropriée, je ne suis pas sûr de ce que vous avez l'intention de faire, mais le code ci-dessus corrigera en quelque sorte votre barre qui déborde.la source
box-sizing: border-box;
vous pouvez ajouter un remplissage à un div de largeur 100%.Cela a fonctionné pour moi après avoir également ajouté
position: relative
à l'emballage.la source
overflow: hidden
placeoverflow-x: hidden
. Fonctionne sur mobile Safari, Chrome, IE11 sur OSX et Win.L'ajout d'un wrapper
<div>
autour de l'intégralité de votre contenu fonctionnera en effet. Bien que sémantiquement "icky", j'ai ajouté un div avec une classe de overflowWrap juste à l'intérieur de labody
balise, puis j'ai défini mon CSS comme ceci:Peut-être exagéré maintenant, mais fonctionne comme un charme!
la source
J'ai rencontré le même problème avec les appareils Android mais pas les appareils iOS. Géré pour résoudre en spécifiant la position: relative dans la div externe des éléments absolument positionnés (avec débordement: masqué pour la div externe)
la source
Aucune solution unique précédente ne fonctionnait pour moi, j'ai dû les mélanger et j'ai également résolu le problème sur les appareils plus anciens (iphone 3).
Tout d'abord, j'ai dû envelopper le contenu html dans un div externe:
Ensuite, j'ai dû appliquer le débordement caché au wrapper, car overflow-x ne fonctionnait pas:
et cela a résolu le problème.
la source
J'ai résolu le problème en utilisant overflow-x: hidden; comme suit
la structure est la suivante
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
la source
Comme l'a dit subarachnid, overflow-x hidden pour le corps et le html a fonctionné Voici un exemple de travail
Lien
la source
Je travaille juste dessus depuis quelques heures, essayant diverses combinaisons de choses de cette page et d'autres. La chose qui a fonctionné pour moi à la fin était de créer un div wrapper de site, comme suggéré dans la réponse acceptée, mais de définir les deux débordements sur masqués au lieu de simplement le débordement x. Si je laisse overflow-y au scroll, je me retrouve avec une page qui ne défile que verticalement de quelques pixels, puis s'arrête.
Cela suffisait, sans rien définir sur le corps ou les éléments html.
la source
J'avais essayé de nombreuses façons à partir des réponses dans ce sujet, cela fonctionne principalement mais j'ai eu des effets secondaires, comme si j'utilisais overflow-x,
body,html
cela pourrait ralentir / geler la page lorsque les utilisateurs font défiler vers le bas sur un mobile.utiliser
position: fixed
sur wrapper / div à l'intérieur du corps est bien aussi, mais quand j'ai un menu et que j'utilise Javascript, cliquez sur le défilement animé jusqu'à une section, cela ne fonctionne pas.J'ai donc décidé d'utiliser
touch-action: pan-y pinch-zoom
sur wrapper / div à l'intérieur du corps. Problème résolu.la source
La seule façon de résoudre ce problème pour mon modal bootstrap (contenant un formulaire) était d'ajouter le code suivant à mon CSS:
la source