Un espace blanc apparaît sur le côté droit de la page lorsque l'image d'arrière-plan doit s'étendre sur toute la longueur de la page [fermé]

110

Les images d'arrière-plan de notre page Web rencontrent des problèmes dans FireFox ainsi que Safari dans iOS sur iPad / iPhone avec un espace blanc sur le côté droit de la page.

Les images d'arrière-plan s'étendent bien sur d'autres navigateurs, mais nous avons du mal à ne pas étendre toute la longueur du navigateur sur ces navigateurs.

Jetez un œil à notre site sur FireFox pour voir ce que je veux dire.

Dave
la source
Si vous utilisez un cadre comme bootstrap ou fondation, vérifiez que now column est le premier enfant de body, mais imbriqué dans une autre div qui a une sorte de remplissage (small-12 fe).
Lightningsoul
avez-vous résolu le problème @Dave?
gumuruh
C'est fou, n'est-ce pas? 6 ans plus tard, et iOS Safari montre toujours ce problème. J'ai essayé de nombreuses solutions CSS, mais j'ai finalement dû recourir à jQuery. stackoverflow.com/a/45009357/391605
Mike Gledhill

Réponses:

266

J'ai ajouté:

html,body
{
    width: 100%;
    height: 100%;
    margin: 0px;
    padding: 0px;
    overflow-x: hidden; 
}

dans votre CSS tout en haut au-dessus des autres classes et cela a semblé résoudre votre problème.

Votre fichier .css mis à jour est disponible ici

Rion Williams
la source
4
génial, cela vient de corriger un bug pour moi qui me dérange depuis un moment!
gleddy
22
J'ai eu un problème avec le défilement sur l'iphone safari avec ce code, il est devenu très lent. J'ai trouvé à la fin que c'était la combinaison de hauteur: 100% et overflow-x: hidden, donc j'ai supprimé la hauteur: 100% et cela fonctionne beaucoup mieux.
Paul Mason du
Merci, cela a fonctionné comme un charme. Je me suis toujours demandé comment profiter de la barre de défilement presque infinie. Je ne sais pas pourquoi cela n'a pas été marqué comme une réponse.
isurfbecause
5
J'ai trouvé que la classe 'row' de bootstrap donnait un {margin-right: -15px} qui causait cela sur ma page.
JosephK
2
Pour le point de @ JosephK, ce problème provient souvent d'une mauvaise utilisation des objets conteneur, ligne et colonne de Bootstrap, qui utilisent un remplissage et des marges négatives pour se compenser parfaitement, mais UNIQUEMENT QUAND UTILISÉS correctement à l'unisson. Sinon ça casse! D'après mon expérience, c'est l'une des causes les plus courantes de cet espace blanc sur le côté droit. Pour une explication visuelle BRILLANTE du conteneur, de la ligne, de la colonne pour Bootstrap, y compris une discussion sur ce problème et d'autres, lisez ceci (non, je ne l'ai pas écrit): helloerik.com
james
133

Déboguez votre CSS pour les éléments CSS Ghost.

Utilisez ce signet pour déboguer votre CSS: https://blog.wernull.com/2013/04/debug-ghost-css-elements-causing-unwanted-scrolling/

Ou ajoutez le CSS directement vous-même:

* {
  background: #000 !important;
  color: #0f0 !important;
  outline: solid #f00 1px !important;
}

Dans mon cas, un bouton J'aime Facebook a causé le problème.

optimiertes
la source
1
cela a vraiment été utile
Josan Iracheta
6
Solution géniale! Cela vous aidera à trouver la racine du problème et à le résoudre correctement.Il vous suffit de quelques lignes de CSS.
opdb
3
Cela devrait être la réponse acceptée de l'OMI. Mon pari est que la plupart des gens ont utilisé 100vw comme largeur de quelque chose et ont obtenu ce bug en conséquence. Cacher simplement le trop-plein est une solution sous-optimale.
Luc
C'est impressionnant, passé 2 heures sur ce putain d'espace blanc, cela l'a résolu.
Carlos Roso
Wow, j'ai passé beaucoup d'heures et trouvé le coupable avec seulement quelques lignes de code. Thanks mate :)
Khpalwalk
55

Après avoir exploré certaines des stratégies utiles fournies ici, j'ai trouvé que je n'avais besoin que d'ajouter du CSS spécifique à iOS (je l'ai mis au bas de ma feuille css principale.) On dirait que cacher le overflow-x était la réponse pour moi. Je suppose qu'indiquer la largeur à 100% aide dans le cas où mon contenu est large. Il convient de noter que je n'avais ce problème que sous iOS. Si c'est également dans Firefox, seuls les blocs html et body devraient probablement être utilisés car @media cible spécifiquement les appareils mobiles.

@media
only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min--moz-device-pixel-ratio: 1.5),
only screen and (min-device-pixel-ratio: 1.5){

  html,
  body{
    width:100%;
    overflow-x:hidden;
  }

}

S'il vous plaît, hanchez-moi si cela semble incorrect à quelqu'un :)

Jon Ryser
la source
5
C'était la seule chose qui a résolu mon problème
JasonDavis
1
Merci - meilleure solution pour moi. Assez
discret
Cela résout le problème et est logique pour les espaces blancs mobiles
Rob Gleeson
Après l'application, le défilement sur Safari iphone6s devient lent. Est-ce que je manque une propriété supplémentaire pour Safari mobile pour le faire fonctionner correctement?
Erik Rybalkin
meilleure réponse pour moi !!
Youssef Boudaya
28

C'est une question assez ancienne, mais je pensais ajouter mes 2 cents. J'ai essayé les solutions ci-dessus, y compris le ghost css, que je conserverai certainement pour une utilisation future. Mais aucun de ceux-ci n'a fonctionné dans ma situation. Voici comment j'ai résolu mon problème. J'espère que cela aidera quelqu'un d'autre.

Ouvrez l'inspecteur (ou quelle que soit votre préférence) et en commençant par le premier div dans la balise body, ajoutez display: none;uniquement à cet élément. Si la barre de défilement disparaît, vous savez que cet élément contient l'élément à l'origine du problème. Ensuite, supprimez la première règle css et descendez d'un niveau dans l'élément contenant. Ajoutez le css à ce div et si la barre de défilement disparaît, vous savez que l'élément est soit à l'origine, soit contient l'élément incriminé. Si l'ajout du CSS ne fait rien, vous savez que ce n'est pas ce div qui a causé le problème, et soit un autre div dans le conteneur le cause, soit le conteneur lui-même en est la cause.

Cela peut prendre trop de temps pour certains. Heureusement pour moi, mon problème était dans l'en-tête, mais je peux imaginer que cela prend un peu de temps si votre problème était, par exemple, dans le pied de page ou quelque chose comme ça.

trait d'union
la source
Cette méthode m'a aidé à trouver le bogue merci
Projet de loi
Ouais, ou vous pouvez descendre le dom en cachant les divs du plus haut niveau un par un, puis aller à l'intérieur ... et ainsi de suite
hatenine
C'est vraiment le seul moyen de résoudre avec succès le problème racine lorsque vous avez des éléments étranges comme ceux avec height: 0ou height: 1. Dans mon cas, j'ai trouvé que la cause était une classe `` invisible '' errante dans le noyau de Drupal 7: drupal.org/node/2664214
geerlingguy
10

overflow-x: hidden; fonctionne parfaitement pour moi.

Hom
la source
5

Le problème est dans le fichier:

style.css - ligne 721

#sub_footer {
    background: url("../images/exterior/sub_footer.png") repeat-x;
    background: -moz-linear-gradient(0% 100% 90deg,#102c40, #091925);
    background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#091925), to(#102c40));
    -moz-box-shadow: 3px 3px 4px #999999;
    -webkit-box-shadow: 3px 3px 4px #999999;
    box-shadow: 3px 3px 4px #999999;
    padding-top:10px;
    font-size:9px;
    min-height:40px;
}

supprimer les lignes:

-moz-box-shadow: 3px 3px 4px #999999;
-webkit-box-shadow: 3px 3px 4px #999999;
box-shadow: 3px 3px 4px #999999; 

Cela donne essentiellement un dégradé d'ombre uniquement au pied de page. Dans Firefox, c'est la première ligne qui pose le problème.

DMin
la source
2

Apparemment, le (-o-min-device-pixel-ratio: 3/2) pose des problèmes. Sur mon site de test, cela provoquait la coupure du côté droit. J'ai trouvé une solution de contournement sur github qui fonctionne pour le moment. L'utilisation de (-o-min-device-pixel-ratio: ~ "3/2") semble fonctionner correctement.

Lu R.
la source
2

Je vois que la question a été répondue à une norme générale, mais quand j'ai regardé votre site, j'ai remarqué qu'il y avait toujours une barre de défilement horizontale. J'en remarque également la raison: vous avez utilisé le code:

.homepageconference .container {
padding-left: 12%;
}

qui est utilisé à côté du code indiquant que l'élément a une largeur de 100%, ce qui entraîne un élément d'une largeur totale de 112% de la taille de l'écran. Pour résoudre ce problème, supprimez le remplissage, remplacez-le par une marge de 12% pour le même effet ou modifiez la largeur (ou largeur maximale) de l'élément à 88%. Cela se produit dans main.css à la ligne 343. J'espère que cela vous aidera!

HippoRustler
la source
Ou, définissez la box-sizingpropriété sur border-box.
Benpai
2

J'ai eu le même problème, alors j'ai essayé plusieurs choses. L'un d'entre eux a semblé fonctionner pour moi - supprimer la largeur et ajouter un flotteur à l'étiquette corporelle.

Peut ne pas fonctionner pour toutes les instances, mais dans le scénario que j'ai récemment eu, masquer le débordement sur les éléments de contenu était impossible ...

conception lumineuse
la source
J'ai dû définir html, body à width: 0 pour me débarrasser de l'élément fantôme en haut de Firefox.
Garavani
1

Je rencontrais la ligne blanche à droite sur mon iPad également en position horizontale uniquement. J'utilisais un div à position fixe avec un arrière-plan de 960 px de large et un z-index de -999. Cette div particulière n'apparaît que sur un iPad en raison d'une requête multimédia. Le contenu a ensuite été placé dans un emballage div de 960 pixels de large. Les réponses fournies sur cette page n'ont pas aidé dans mon cas. Pour résoudre le problème de la bande blanche, j'ai changé la largeur du wrapper de contenu à 958px. Voilá. Fini la bande blanche droite blanche sur l'iPad en position horizontale.

modern4life
la source
1

Cette question traîne depuis un certain temps, mais aucun des correctifs que j'ai pu trouver n'a fonctionné pour moi (ayant le même problème avec ipad), mais j'ai géré ma propre solution qui devrait fonctionner pour la plupart des gens que j'imagine.

Voici mon code:

html {
   background: url("../images/blahblah.jpg") repeat-y;
   min-width: 100%;
   background-size: contain;
}

Prendre plaisir!

Michael
la source