Quando eu acionar uma visualização modal na minha página, ela faz com que a barra de rolagem desapareça. É um efeito irritante porque a página de fundo começa a se mover quando o modal entra / desaparece. Existe cura para esse efeito?
javascript
twitter-bootstrap
modal-dialog
El Dude
fonte
fonte
Respostas:
Este é um recurso, a classe
modal-open
é adicionada ao HTMLbody
quando você mostra o modal e removida quando você o oculta.Isso faz com que a barra de rolagem desapareça, pois o CSS do bootstrap diz
Você pode substituir isso especificando
em seu próprio css.
fonte
<style></style>
dentro dotemplateUrl
para não infligir em outros modais no aplicativo.Eu acho que herdar é melhor do que rolar porque quando você abre modal, ele sempre abrirá com rolar, mas quando você não tiver nenhum pergaminho você terá o mesmo problema. Então, eu só faço isso:
fonte
eu usei
Neste caso você evita exibir a barra de rolagem horizontal
fonte
É melhor usar overflow-y: role e remova o preenchimento do corpo, bootstrap modal adicionado ao corpo da página.
Compatível com o navegador IE: o navegador IE faz a mesma coisa por padrão.
fonte
Graças a Deus encontrei este post! Eu estava puxando meu cabelo tentando descobrir como fazer minhas barras de rolagem voltarem ao fechar a janela usando meu próprio link de fechamento. Tentei as sugestões para CSS, mas não estava funcionando corretamente. Depois de ler
Eu vim com uma solução usando jquery, então caso outra pessoa tenha o mesmo problema e as sugestões acima não funcionem -
fonte
data-dismiss="modal"
atributo ao seu link, em vez de fazer algo personalizado como isso. O Bootstrap fará todas as ações de fechamento apropriadas quando o link for clicado.Eu estava apenas brincando com esse 'recurso' dos modais Bootstrap. Parece que a
.modal
classe temoverflow-y:auto;
Então, o wrapper modal obtém sua própria barra de rolagem quando o próprio modal torna-se muito alto.Se você sempre quiser uma barra de rolagem (os designers costumam fazer) Primeiro defina o corpo
Então manuseie
.modal-open
Deixe a barra de rolagem desativada no corpo intocada neste caso
Todas as outras respostas nesta página continuaram fazendo meu conteúdo pular.
Atenção!
Embora essa solução funcionasse para mim o tempo todo, ontem eu tive um problema ao usar essa correção quando o modal é arrastável e grande demais para caber na tela (verticalmente). Pode ter algo a ver com os
position:sticky
elementos que adicionei?fonte
Melhor se você criar seu próprio arquivo css para personalizar uma certa parte de sua embalagem de inicialização.
Não altere o arquivo css do bootstrap porque ele mudará tudo em seu bootstrap assim que você usá-lo em outras partes de sua página.
Se sua página for um pouco longa, ela fornecerá automaticamente uma barra de rolagem. E quando o modal for aberto, ele irá ocultar a barra de rolagem porque é isso que o bootstrap faz por padrão.
Para evitar ocultá-lo quando o modal for aberto, basta substituí-lo colocando o código css (abaixo) em seu próprio arquivo css.
apenas vice-versa ...
fonte
Além disso, se o pop-up modal precisar rolar com o conteúdo interno e o pai precisar permanecer imóvel, adicione o seguinte ao seu Custom.css (substituindo css)
fonte
o modal de bootstrap adiciona um preenchimento assim que abre para que você possa tentar este código em seu próprio css
fonte
Isso provavelmente ocorre porque o primeiro modal (quando fechado) remove a classe aberta modal do elemento de corpo e o segundo não a adiciona de volta quando dispara a abertura modal.
Nesse caso, eu usaria o evento para verificar se o modal foi fechado / escondido totalmente e abriria outro
Isso irá esperar até que o primeiro modal seja fechado para garantir que o modal aberto seja removido do corpo e adicionado novamente quando aberto.
fonte
Eu mesmo tive esse problema e encontrar essa pergunta rapidamente me ajudou a entender o que estava causando o comportamento. Então obrigado.
No entanto, acho essas soluções alternativas CSS um pouco deselegantes. A menos que você queira especificamente manter as barras de rolagem (embora eu não consiga pensar em um motivo para isso).
Essencialmente, o Bootstrap está aplicando padding-right a certos elementos para compensar a remoção da barra de rolagem.
Portanto, tudo o que você precisa fazer é colocar um invólucro extra com preenchimento zero ao redor do elemento problemático (e mover a classe que está sendo direcionada para ele).
ou seja, mude disso ...
... para isso...
fonte