Estou com um problema com modal. Eu tenho um botão em uma página que alterna o modal. Quando o modal aparece, a página salta para o topo.
Fiz tudo o que pude para encontrar uma solução / etc, mas estou realmente perdido.
EDITAR:
Eu também tentei com: $('#myModal').modal('show');
mas tem exatamente o mesmo efeito.
window
do modal, o modal dispara. Isso parece estranho e inesperado. Removi obutton
via devtools e, clicando em qualquer lugar da página, ainda abri a janela modal. Esse era o comportamento desejado? Eu me pergunto se você não tem o seletor certo para o evento de clique modal.Respostas:
Quando o modal é aberto, uma
modal-open
classe é definida para a<body>
tag. Esta classe defineoverflow: hidden;
o corpo. Adicione esta regra à sua folha de estilo para substituir o estilo bootstrap.css:Agora o pergaminho deve ficar no lugar.
fonte
.modal('show')
e ele ainda rola para o topo da página. Bootstrap v3.2.0position: inherit
a esta classe, mas funcionou como um encanto depois disso.Se você estiver chamando modal com tag. Tente remover '#' do atributo href. E chamar modal com atributos de dados.
fonte
se você estiver usando uma tag de âncora
<a href"#" ..> ... </a>
ehref="#"
estiver criando um problema, remova-a. Você pode ler mais aquifonte
Isso ajudará você a impedir que a barra de rolagem fique no topo. Funcionou para mim
fonte
Possivelmente trabalhando com modais aninhados em algum lugar do código:
Para mim foi uma combinação de posição, altura e transbordamento.
fonte
Não vejo um erro específico, mas recomendo que você verifique sua sintaxe html .
Um pequeno teste com sua fonte me dá erros como
Isso pode ser um problema.
fonte
A maneira mais fácil de resolver o fundo de salto é definir dois parâmetros:
fonte
Tentei replicar esse problema no meu host local e, por mais estranho que possa parecer, há um conflito com o arquivo JS do Bootstrap que você está usando.
Experimente comentar seu código de:
Em vez disso, use o Bootstrap 2.3.2:
Isso fez funcionar para mim.
Tentei com o Bootstrap versão 3, mas não funcionou. Ainda não consigo identificar a parte do problema, mas em algum lugar ao longo do Firebug me apresentou um
e.preventDefault() is not a function
erro - acho que essa deve ser a causa raiz, mas ainda devo compará-la com os outros arquivos JS.fonte
Tentei definir .modal top no centro da tela.
Apenas meus 2 centavos de pensamento.
fonte
No bootstrap 3.1.1, resolvi com esta solução:
fonte
você tem 2
div
tags de fechamento extras antes<div id="footer">
ou depois do<div id="mainFrame" class="group">
div. Estou usando o Visual Studio 2012 Express para inspecionar isso.Remova esses 2 divs extras e nos diga como funciona. Eu removi divs extras e removi todos os scripts personalizados. retido apenas o núcleo jquery e bootstrap no rodapé. aqui está a captura de tela da saída final. aqui está o playground do jsbin para você, que está funcionando bem.
Eu sugiro que você use headjs para carregar todos os scripts e arquivos css. também não é uma boa prática carregar qualquer script duas vezes.
fonte
Tente usar isso para abrir o modal e ver o que acontece:
fonte
Eu precisava do atributo importante para corrigir isso
fonte
Tive o mesmo problema ao usar o Bootstrap 2.3.2
Foi um problema ao clicar em um link:
O truque era: retornar falso;
e o js:
fonte
Passei horas tentando fazer de tudo aqui e em outros lugares. Para o uso do material angularjs, descobri que tive que desativar a animação no objeto de configuração uibModal.open arg.
Por exemplo:
Espero que isso ajude mais alguém.
fonte
Se você estiver enfrentando esse problema em um programa Angular, adicione o código abaixo na primeira linha do arquivo .scss.
fonte
Eu tive o mesmo problema e acho que descobri. Você só precisa colocar o HTML modal como um filho direto da tag body ! Você pode colocar o código HTML para o botão que aciona o modal onde quer que você precise. Acredito que isso evita problemas de herança e posição CSS que desencadeiam esse problema.
Exemplo:
fonte
Finalmente descobri este. NÃO envolva o botão direcionado ao modal em uma tag âncora.
Ruim
Boa
fonte
Este fez isso por mim
fonte
Depois de ler dezenas de respostas por várias horas, copiei o código original do arquivo de bootstrap novamente e depurei passo a passo para ver o que fazia com que eu sempre pule para o topo. Porque a versão atual mais recente do Bootstrap 3 está mostrando o modal na posição em que você está agora. Eu descobri isso
-webkit-transform: translate3d(0,0,0);
eheight: 100%
no meu css body-tag causou esse comportamento. Talvez isso ajude alguém.fonte
Para mim funciona quando mudei a versão 3.1.1 para 3.3.7
Se você não precisa usar a versão 3.3.1, tente substituí-la.
Após a alteração, é bom verificar se o restante da função funciona corretamente.
fonte
body.modal-open { position: inherit; }
Isso funcionou como um encanto para mim.
fonte
Tentei todos os exemplos acima - esta é a única coisa que funcionou para mim:
Remover o enchimento do lado direito do modelo - evita o salto.
fonte
altura: 100% é resolver o problema, mas você deve adicionar "div" correto
fonte
Eu tenho o mesmo problema e nenhuma das respostas me ajudou. Encontrei uma solução alternativa que parece estúpida, mas funciona pelo menos no meu caso.
Descobri que a página está rolando para o topo apenas uma vez e, depois disso, os próximos modais abertos funcionam conforme o esperado. Então eu descobri que esconder qualquer elemento no DOM inicia o mesmo pergaminho estranho. Então, acabei de criar um div fictício após o carregamento da página, em vez de ocultá-lo e removê-lo, e isso resolveu o problema.
fonte
Eu estava enfrentando o mesmo problema. O problema era que eu estava adicionando a classe .modal-open aos elementos html e body. Basta adicionar essa classe ao corpo e tudo funcionará conforme o esperado.
fonte
Experimente isso funciona perfeitamente
fonte
é uma boa ideia para consertá-lo, parece um atleta!
https://github.com/jschr/bootstrap-modal/issues/131#issuecomment-153405449
fonte
Se a resposta de pstenstrm não funcionar para você, tente combiná-la com este botão de substituição HTML:
Isso deve manter o botão na tela.
fonte