Eu tenho um pequeno problema ao tentar manter minhas páginas .html em uma largura consistente no Chrome, por exemplo, eu tenho uma página (1) com muito conteúdo que ultrapassa a altura da janela de visualização (palavra certa?), Então há uma barra de rolagem vertical nessa página (1). Na página (2) eu tenho o mesmo layout (menus, divs, ... etc), mas menos conteúdo, portanto, não há barras de rolagem verticais.
O problema é que na página (1) as barras de rolagem parecem empurrar os elementos ligeiramente para a esquerda (somando-se à largura?) Enquanto tudo parece bem centralizado na página (2)
Ainda sou um iniciante em HTML / CSS / JS e estou bastante convencido de que isso não é tão difícil, mas não tive sorte em descobrir a solução. Funciona como esperado no IE10 e FireFox (barras de rolagem não interferentes), só encontrei isso no Chrome.
fonte
AVISO LEGAL : a sobreposição foi descontinuada .
Você ainda pode usar isso se for absolutamente necessário, mas tente não fazer.
Isso só funciona em navegadores WebKit , mas gosto muito. Se comportará como
auto
em outros navegadores.Isso fará com que a barra de rolagem apareça apenas como uma sobreposição , não afetando a largura do seu elemento!
fonte
Tudo que você precisa fazer é adicionar:
No seu arquivo css, pois este terá o rolador, seja necessário ou não, embora você simplesmente não consiga rolar
Isso significa que a janela de visualização terá a mesma largura para ambos
fonte
Provavelmente
é exatamente o que você deseja.
fonte
calc()
para determinar a largura da visualização do conteúdo principal para que o navegador fixo fora da tela possa ocupar o lado esquerdo da tela na área de trabalho, preservando o nativo rolar no celular.html
a largura de emvw
s é um pouco complicado , então tenha cuidado!Navegadores Webkit como Safari e Chrome subtraem a largura da barra de rolagem da largura visível da página ao calcular a largura: 100% ou 100vw. Mais em Scrolling and Page Width de DM Rutherford .
Tente usar em seu
overflow-y: overlay
lugar.fonte
Eu descobri que poderia adicionar
diretamente para o meu css e tornaria a barra de rolagem invisível, mas ainda me permitiria rolar (no Chrome, pelo menos). Bom para quando você não quer uma barra de rolagem perturbadora em sua página!
fonte
Para contêineres com largura fixa, uma solução cruzada de navegador CSS puro pode ser realizada envolvendo o contêiner em outro div e aplicando a mesma largura a ambos os divs.
Clique aqui para ver um exemplo no Codepen
fonte
Não parece que minha outra resposta esteja funcionando bem no momento (mas vou continuar tentando colocá-la em operação).
Mas basicamente o que você precisa fazer, e o que ele estava tentando fazer dinamicamente, é definir a largura do conteúdo para um pouco menos do que a do painel pai rolável.
Assim, quando a barra de rolagem aparecer, ela não terá efeito sobre o conteúdo.
Este EXEMPLO mostra uma maneira mais hacky de atingir esse objetivo, codificando
width
s em vez de tentar fazer com que o navegador faça isso por nós viapadding
.Se isso for viável, esta é a solução mais simples se você não quiser uma barra de rolagem permanente.
fonte
EDITAR: esta resposta não está totalmente certa no momento, consulte minha outra resposta para ver o que eu estava tentando fazer aqui. Estou tentando consertar, mas se puderem ajudar nos comentários, obrigado!
O uso
padding-right
irá mitigar o aparecimento repentino de uma barra de rolagemEXEMPLO
Como você pode ver pelos pontos, o texto vai para o mesmo ponto na página antes de quebrar, independentemente de haver ou não uma barra de rolagem.
Isso ocorre porque quando uma barra de rolagem é introduzida, o preenchimento fica oculto atrás dela, então a barra de rolagem não empurra o texto!
fonte
onde 300 px é a metade da largura da minha janela de diálogo.
Esta é realmente a única coisa que funcionou para mim.
fonte
Eu tive o mesmo problema no Chrome. Só aconteceu para mim quando a barra de rolagem está sempre visível. (encontrado nas configurações gerais) Eu tenho um modal e quando abro o modal percebi que ...
é adicionado ao corpo. Para impedir que isso aconteça, acrescentei
fonte
Não consigo adicionar comentários para a primeira resposta e já faz muito tempo ... mas essa demonstração tem um problema:
b.prop ('scrollHeight') sempre é igual a b.height (),
Acho que deveria ser assim:
Por fim, recomendo um método:
fonte