Espaço em branco aparecendo no lado direito da página quando a imagem de fundo deve se estender por toda a extensão da página [fechada]

110

Nossas imagens de plano de fundo da página da web estão tendo problemas no FireFox, bem como no Safari no iOS em iPads / iPhones, com espaço em branco aparecendo no lado direito da página.

As imagens de fundo estendem-se perfeitamente em outros navegadores, mas estamos tendo dificuldade em não estender o comprimento total do navegador nesses navegadores.

Dê uma olhada em nosso site no FireFox para ver o que quero dizer.

Dave
fonte
Se você estiver usando um framwork como bootstrap ou Foundation, verifique se agora a coluna é o primeiro filho do corpo, mas aninhado em outro div que tem algum tipo de preenchimento (small-12 fe).
Lightningsoul de
você resolveu @Dave?
gumuruh
Louco, não é? 6 anos depois, o iOS Safari ainda apresenta esse problema. Tentei várias soluções CSS, mas eventualmente tive que recorrer ao uso de jQuery. stackoverflow.com/a/45009357/391605
Mike Gledhill

Respostas:

266

Eu adicionei:

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

em seu CSS no topo acima das outras classes e pareceu resolver o seu problema.

Seu arquivo .css atualizado está disponível aqui

Rion Williams
fonte
4
incrível, que corrigiu um bug que está me incomodando há um tempo!
gleddy
22
Eu tive um problema ao rolar no iphone safari com este código, ele ficou muito lento. Achei que no final era a combinação de height: 100% e overflow-x: hidden, então removi a altura: 100% e funciona muito melhor.
Paul Mason
Obrigado, isso funcionou como um encanto. Sempre me perguntei como me livrar da barra de rolagem quase infinita. Não sei por que isso não foi marcado como uma resposta.
isurf porque
5
Eu descobri que a classe 'row' do bootstrap estava dando uma {margin-right: -15px} que estava causando isso na minha página.
JosephK 01 de
2
Para o ponto de @ JosephK, esse problema geralmente surge do uso incorreto de objetos de contêiner, linha e coluna do Bootstrap, que usam preenchimento e margens negativas para compensar um ao outro perfeitamente, mas SÓ QUANDO USADOS corretamente em uníssono. Caso contrário, ele quebra! Na minha experiência, essa é uma das causas mais comuns do espaço em branco do lado direito. Para uma explicação visual BRILHANTE do contêiner, linha, coluna para Bootstrap, incluindo uma discussão sobre este e outros problemas, leia isto (não, eu não escrevi): helloerik.com/…
james
133

Depure seu CSS para os elementos CSS do Ghost.

Use este favorito para depurar seu CSS: https://blog.wernull.com/2013/04/debug-ghost-css-elements-causing-unwanted-scrolling/

Ou adicione o CSS diretamente:

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

No meu caso, um botão de curtir do Facebook causou o problema.

otimistas
fonte
1
isso realmente foi útil
Josan Iracheta
6
Solução brilhante! Isso o ajudará a encontrar a raiz do problema e corrigi-lo corretamente, e tudo o que requer são algumas linhas de CSS.
opdb
3
Esta deve ser a resposta aceita pela IMO. Minha aposta é que a maioria das pessoas usava 100vw como a largura de algo e ficou com esse bug como resultado. Simplesmente ocultar o estouro é uma solução subótima.
Lucas
Isso é impressionante, passei 2 horas naquele maldito espaço em branco, isso resolveu.
Carlos Roso
Nossa, passei muitas horas e descobri o culpado com apenas algumas linhas de código. Obrigado companheiro :)
Khpalwalk
55

Depois de explorar algumas das estratégias úteis fornecidas aqui, descobri que só precisava adicionar CSS específico do iOS (coloquei no final da minha folha de css principal). Parece que ocultar o overflow-x foi a resposta para mim. Presumo que declarar a largura em 100% ajuda no caso de meu conteúdo ser extenso. Deve-se observar que eu estava tendo esse problema apenas no iOS. Se também for no Firefox, apenas o html e o bloco de corpo provavelmente devem ser usados, pois a @mídia tem como alvo específico dispositivos móveis.

@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;
  }

}

Por favor, descubra se isso parece incorreto para alguém :)

Jon Ryser
fonte
5
Essa foi a única coisa que resolveu meu problema
JasonDavis
1
Obrigado - a melhor solução para mim. Bastante
discreto
Isso resolve o problema e faz sentido para o espaço em branco móvel
Rob Gleeson
Após a aplicação, a rolagem no Safari iphone6s torna-se lenta. Estou perdendo uma propriedade adicional para o Safari móvel para que ele funcione sem problemas?
Erik Rybalkin
melhor resposta para mim !!
Youssef Boudaya
28

Esta é uma pergunta muito antiga, mas pensei em adicionar meus 2 centavos. Eu tentei as soluções acima, incluindo o css fantasma, que definitivamente irei salvar para uso futuro. Mas nada disso funcionou na minha situação. Veja como resolvi meu problema. Espero que isso ajude outra pessoa.

Abra o inspetor (ou qualquer que seja sua preferência) e, começando com a primeira div na tag body, adicione display: none;apenas a esse elemento. Se a barra de rolagem desaparecer, você saberá que esse elemento contém o elemento que está causando o problema. Em seguida, remova a primeira regra css e desça um nível até o elemento que o contém. Adicione o css a esse div e, se a barra de rolagem desaparecer, você saberá que o elemento está causando ou contendo o elemento ofensivo. Se adicionar o CSS não fizer nada, você sabe que não foi esse div que causou o problema, e ou outro div no contêiner está causando isso, ou o próprio contêiner está causando isso.

Isso pode consumir muito tempo para alguns. Para minha sorte, meu problema estava no cabeçalho, mas posso imaginar isso demorando um pouco se o seu problema estivesse no rodapé ou algo assim.

hífen
fonte
Este método me ajudou a encontrar o bug, obrigado
Bill
Sim, ou você pode descer o dom escondendo os divs de nível mais alto um por um, depois entrar neles ... e assim por diante
hatenine
Esta é realmente a única maneira de corrigir com sucesso o problema raiz quando você tem elementos estranhos como aqueles com height: 0ou height: 1. No meu caso, eu encontrei a causa era de classe um errante 'invisível' no Drupal 7 core: drupal.org/node/2664214
geerlingguy
10

overflow-x: hidden; funciona perfeito para mim.

Hom
fonte
5

O problema está no arquivo:

style.css - linha 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;
}

remova as linhas:

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

Isso basicamente fornece um gradiente de sombra apenas para o rodapé. No Firefox, é a primeira linha que está causando o problema.

DMin
fonte
2

Aparentemente, a (proporção -o-min-device-pixel-ratio: 3/2) está causando problemas. No meu site de teste, isso estava causando o corte do lado direito. Eu encontrei uma solução alternativa no github que funciona por enquanto. Usando (proporção -o-min-dispositivo-pixel: ~ "3/2") parece funcionar bem.

Lu R.
fonte
2

Vejo que a pergunta foi respondida de acordo com um padrão geral, mas quando olhei em seu site percebi que ainda há uma barra de rolagem horizontal. Também percebi o motivo para isso: Você usou o código:

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

que está sendo usado ao lado do código informando que o elemento tem uma largura de 100%, fazendo com que um elemento com uma largura total de 112% do tamanho da tela. Para corrigir isso, remova o preenchimento, substitua o preenchimento com uma margem de 12% para o mesmo efeito ou altere a largura (ou largura máxima) do elemento para 88%. Isso ocorre em main.css na linha 343. Espero que ajude!

HippoRustler
fonte
Ou defina a box-sizingpropriedade como border-box.
Benpai
2

Eu tive o mesmo problema, então tentei algumas coisas. Um dos quais pareceu funcionar para mim - remover a largura e adicionar um flutuador à tag do corpo.

Pode não funcionar para todas as instâncias, mas no cenário que tive recentemente, ocultar o estouro de elementos de conteúdo era impossível ...

luminancedesign
fonte
Tive que definir html, body para width: 0 para me livrar do elemento fantasma na parte superior do Firefox.
Garavani
1

Eu estava percebendo a linha branca à direita no meu iPad apenas na posição horizontal. Eu estava usando um div de posição fixa com um plano de fundo definido para 960 px de largura e índice z de -999. Este div específico só aparece em um iPad devido a uma consulta à mídia. O conteúdo foi então colocado em um invólucro div de 960 pixels de largura. As respostas fornecidas nesta página não ajudaram no meu caso. Para corrigir o problema da listra branca, alterei a largura do wrapper de conteúdo para 958 px. Voilá. Não há mais faixa branca direita branca no iPad na posição horizontal.

modern4life
fonte
1

Esta questão está pairando por um tempo, mas nenhuma das correções que encontrei funcionou para mim (tendo o mesmo problema com o ipad), mas consegui minha própria solução que deve funcionar para a maioria das pessoas que imagino.

Este é meu código:

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

Aproveitar!

Michael
fonte