Eu tenho um site aqui .
Visualizada em um navegador de desktop, a barra de menus preta se estende adequadamente apenas até a borda da janela, uma vez que body
possui overflow-x:hidden
.
Em qualquer navegador móvel, seja Android ou iOS, a barra de menus preta exibe toda a sua largura, o que traz espaço em branco à direita da página. Até onde eu sei, esse espaço em branco não faz parte das tags html
ou body
.
Mesmo se eu definir a viewport para uma largura específica no <head>
:
<meta name="viewport" content="width=1100, initial-scale=1">
O site se expande para o 1100px, mas ainda possui o espaço em branco além do 1100.
o que estou perdendo? Como mantenho a viewport para 1100 e corto o excesso?
css
overflow
viewport
mobile-browser
Indigenuity
fonte
fonte
Respostas:
Criar uma div de wrapper de site dentro
<body>
e aplicar ooverflow-x:hidden
ao wrapper em vez de<body>
ou<html>
corrigiu o problema.Parece que os navegadores que analisam a
<meta name="viewport">
tag simplesmente ignoramoverflow
atributos nas tagshtml
ebody
.Nota: Você também pode precisar adicionar
position: relative
à div do wrapper.fonte
overflow
quehidden
, eu tinha que definir oposition
quefixed
...overflow-x: hidden
ainda não está funcionando para mim, mesmo depois de adicionar essa meta tag. Você poderia compartilhar um link para o seu site em que está trabalhando?position:relative
funciona também.experimentar
em vez de apenas
fonte
overflow
qualquer coisa parahtml
e / oubody
em qualquer combinação não resolveu o problema.height:100%;
Também é necessário adicionar , caso contrário, a rolagem vertical não funcionaria corretamente em páginas com carregamento de imagens (que aumentam a altura da página).O comentário de VictorS sobre a resposta aceita merece ser sua própria resposta, porque é uma solução muito elegante que realmente funciona. E vou adicionar um pouco à sua utilidade.
Victor observa adicionando
position:fixed
obras.E de fato faz. No entanto, ele também tem um leve efeito colateral de rolar para o topo.
position:absolute
resolve isso, mas reintroduz a capacidade de rolar no celular.Se você conhece sua viewport ( meu plug-in para adicionar a viewport à
<body>
), basta adicionar uma alternância css para aposition
.Também adiciono isso para impedir que a página subjacente salte para a esquerda / direita ao mostrar / ocultar modais.
fonte
position:fixed or absolute
perturbar suas posições também. Não é adequado / trabalho no meu caso :(Esta é a solução mais simples para resolver a rolagem horizontal no Safari.
fonte
table-responsive
bug do Bootstrap 4 . Essa foi a solução.Como afirma @Indigenuity, isso parece ser causado por navegadores que analisam a
<meta name="viewport">
tag.Para resolver esse problema na fonte, tente o seguinte:
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
.Nos meus testes, isso evita que o usuário diminua o zoom para visualizar o conteúdo excedente e, como resultado, também evita o deslocamento / rolagem para ele.
fonte
initial-scale=1
a uma metatag de viewport existente realmente corrige o problema. Obrigado!minimum-scale=1
que fixa-lofunciona no iOS9
fonte
Mantenha a janela de visualização intocada:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Supondo que você deseje obter o efeito de uma barra preta contínua no lado direito:
#menubar
não deve exceder 100% , ajuste o raio da borda de modo que o lado direito fique ao quadrado e ajuste o preenchimento para que se estenda um pouco mais para a direita . Modifique o seguinte para o seu#menubar
:Ajustar o
padding
para 10px de folhas curso menu à esquerda para a borda do bar, você pode colocar o restante 40px para cada um dosli
, 20px em cada lado esquerda e direita:Quando você redimensiona o navegador menor, você ainda encontra o fundo branco: coloque sua textura de fundo em vez de sua div para
body
. Ou então, ajuste a largura do menu de navegação de 100% para um valor mais baixo usando consultas de mídia. Existem muitos ajustes a serem feitos no seu código para criar um layout adequado. Não sei o que você pretende fazer, mas o código acima corrigirá a barra transbordante.fonte
box-sizing: border-box;
poderá adicionar preenchimento a uma div de 100% de largura.Isso funcionou para mim depois de adicionar também
position: relative
ao invólucro.fonte
overflow: hidden
vez deoverflow-x: hidden
. Funciona no Safari móvel, Chrome, IE11 no OSX e Win.Adicionar um wrapper
<div>
ao longo de todo o seu conteúdo funcionará. Enquanto semanticamente "icky", adicionei uma div com uma classe de overflowWrap dentro dabody
tag e, em seguida, definai set CSS como este:Pode ser um exagero agora, mas funciona como um encanto!
fonte
Encontrei o mesmo problema em dispositivos Android, mas não em dispositivos iOS. Gerenciado para resolver especificando position: relativo na div externa dos elementos absolutamente posicionados (com estouro: oculto para div externa)
fonte
Nenhuma solução única anterior funcionou para mim, eu tive que misturá-las e resolvi o problema também em dispositivos mais antigos (iphone 3).
Primeiro, tive que agrupar o conteúdo html em uma div externa:
Então eu tive que aplicar o estouro oculto no wrapper, porque o estouro-x não estava funcionando:
e isso corrigiu o problema.
fonte
Resolvi o problema usando o overflow-x: hidden; do seguinte modo
estrutura é a seguinte
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
fonte
Como subaracnídeo disse overflow-x oculto para o corpo e html funcionou Aqui está o exemplo de trabalho
Ligação
fonte
Estou trabalhando nisso há algumas horas, tentando várias combinações de coisas desta e de outras páginas. O que funcionou para mim no final foi fazer uma divisão do wrapper do site, conforme sugerido na resposta aceita, mas definir ambos os estouros para ocultos, em vez de apenas o excesso de x. Se eu deixar o estouro-y na rolagem, acabo com uma página que rola apenas verticalmente alguns pixels e depois para.
Apenas isso foi suficiente, sem definir nada no corpo ou nos elementos html.
fonte
Eu tentei de várias maneiras com as respostas neste tópico, principalmente funciona, mas obtive algum efeito colateral, como se eu usasse o overflow-x,
body,html
pois isso pode retardar / congelar a página quando os usuários rolam para baixo no celular.usar
position: fixed
no wrapper / div dentro do corpo também é bom, mas quando tenho um menu e uso Javascript, clique em rolagem animada para alguma seção, não está funcionando.Então, eu decidi usar
touch-action: pan-y pinch-zoom
no wrapper / div dentro do corpo. Problema resolvido.fonte
A única maneira de corrigir esse problema no meu modal de inicialização (contendo um formulário) era adicionar o seguinte código ao meu CSS:
fonte