Dado como HTML5 define suas semânticas, o atributo HTML autofocus não tem efeito em modals Bootstrap.
Para alcançar o mesmo efeito, use algum tipo de JavaScript customizado:
Continue lendo, para demonstrações e instruções de uso.
Exemplos
Componentes modal
Abaixo, temos um exemplo de modal static (position e display sobrescritos). Pode-se ver o cabeçalho, corpo (precisa de padding) e footer (opcional) do modal. Nós só pedimos que você crie cabeçalhos modal com recursos de dispensa, sempre que possível, ou dê outra opção de dispensa ao usuário.
Título do modal
Texto do corpo do modal, é aqui.
Demonstração em tempo real
Veja um exemplo de modal, clicando no botão abaixo. Ele vai deslizar para baixo, enquanto aparece gradualmente.
Título do modal
Aêêê! Você tá vendo esse texto, dentro do modal.
Rolando conteúdo longo
Quando modals são muito longos para a viewport do usuário ou dispositivo, eles possuem rolagem independente da página. Teste a demo abaixo, para saber de oquê estamos falando.
Título do modal
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Verticalmente centralizado
Use .modal-dialog-centered no .modal-dialog para, verticalmente, centralizar o modal.
Título do modal
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Tooltips e popovers
Tooltips e popovers podem ser posicionados dentro de modals, sempre que necessário. Quando modals são fechados, qualquer tooltip ou popover dentro deles e fechado, automaticamente.
Use o sistema grid Bootstrap dentro de um modal, aninhando .container-fluid no .modal-body. Depois, use as classes do sistema grid, assim como faria em outros locais.
Grids em modals
.col-md-4
.col-md-4 .ml-auto
.col-md-3 .ml-auto
.col-md-2 .ml-auto
.col-md-6 .ml-auto
Level 1: .col-sm-9
Level 2: .col-8 .col-sm-6
Level 2: .col-4 .col-sm-6
Variando o conteúdo de modais
Tem vários botões que acionam o mesmo modal, mas com o conteúdo um pouco diferente? Use event.relatedTarget e atributos HTML data-* (via jQuery, se possível) para variar o conteúdo do modal, dependendo de qual botão foi clicado.
Abaixo, temos uma demonstração seguida de um exemplo HTML e JavaScript. Para mais informação, leia a documentação de eventos do modal para detalhes sobre relatedTarget.
Nova mensagem
Remover animação
Para modals que, simplesmente, aparecem de supetão, invés de gradualmente, remova a classe .fade da marcação do seu modal.
Alturas dinâmicas
Se a altura do modal muda enquanto é aberta, você deveria invocar $('#meuModal').modal('handleUpdate') para reajustar a posição do modal, caso a barra de rolagem apareça.
Acessibilidade
Se assegure de usar role="dialog" e aria-labelledby="...", remetendo o título do modal ao .modal e role="document" ao .modal-dialog. Alternativamente, você pode dar uma descrição do seu modal, no aria-describedby do .modal.
Embutindo vídeos do YouTube
Embutir vídeos do YouTube em modals pede JavaScript adicional, para parar o playback e outras coisas, automaticamente. Veja este ótimo post, no Stack Overflow, para mais informação.
Tamanhos opcionais
Modals possuem três tamanhos alternativos, disponíveis via classes modificadoras e a serem colocadas em um .modal-dialog. Estes tamanhos são cancelados, em certos breakpoints, para evitar rolagem horizontal em viewports menores.
Tamanho
Classe
Largura máxima
Pequeno
.modal-sm
300px
Padrão
Nenhuma
500px
Grande
.modal-lg
800px
Extra grande
.modal-xl
1140px
Nosso modal padrão sem classe modificadora constitui o modal de tamanho médio.
Modal extra grande
...
Modal grande
...
Modal pequeno
...
Modo de uso
O plugin modal alterna a visibilidade do seu conteúdo, via atributos data ou JavaScript. Ele também coloca .modal-open no <body> para sobrescrever o comportamento padrão de rolagem e gerar um .modal-backdrop para dar uma área de clique fora do modal que permite fechá-lo.
Via atributos data
Ativa o modal sem escrever JavaScript. Defina data-toggle="modal" em um elemento de controle (como um botão), junto com um data-target="#foo" ou href="#foo" que remeta a um modal específico a ser acionado.
Via JavaScript
Invoque um modal com ID meuModal, usando uma única linha JavaScript:
Parâmetros
Parâmetros podem ser passados via atributos data ou JavaScript. Para atributos data, anexe o nome do parâmetro ao prefixo data-*, como em data-backdrop="".
Nome
Tipo
Padrão
Descrição
backdrop
booleano ou a string 'static'
true
Cria um elemento modal backdrop. Alternativamente, use static para um backdrop que não fecha o modal, ao clicar.
keyboard
boolean
true
Fecha o modal, quando a tecla esc é pressionada.
focus
boolean
true
Foca no modal, quando inicializado.
show
boolean
true
Mostra o modal, quando inicializado.
Métodos
Métodos é transições assíncronas
Todos métodos API são assíncronos e iniciam a transição. Eles retornam ao invocador, assim que a transição é iniciada, mas que ela finalize. Além do mais, uma chamada de método em um componente transicionando é ignorada.
Define seu conteúdo como um modal. Aceita um objeto de parâmetros, opcional.
.modal('toggle')
Manualmente, alterna a visibilidade do modal. Retorna ao invocador, antes do modal ter sido exibido ou escondido, de fato (antes dos eventos shown.bs.modal ou hidden.bs.modal ocorrerem).
.modal('show')
Manualmente, abre o modal. Retorna ao invocador, antes do modal ter sido exibido, de fato (antes do evento shown.bs.modal ocorrer).
.modal('hide')
Manualmente, esconde o modal. Retorna ao invocador, antes do modal ter sido escondido, de fato (antes do evento hidden.bs.modal ocorrer).
.modal('handleUpdate')
Manualmente, reajuste a posição do modal se a altura dele se alterar, enquanto está aberto (caso uma barra de rolagem apareça).
.modal('dispose')
Destrói o modal de um elemento.
Eventos
A classe modal Bootstrap possui alguns eventos para criar a funcionalidade modal, em si. Todos eventos modal são acionados nele mesmo (no <div class="modal">).
Tipo de evento
Descrição
show.bs.modal
Este evento é acionado, imediatamente, quando o método show é invocado. Se acionado por um clique, o elemento clicado fica disponível como a propriedade relatedTarget do evento.
shown.bs.modal
Este evento é acionado quando o modal se torna visível ao usuário (espera as transições CSS finalizarem). Se acionado por um clique, o elemento clicado fica disponível como a propriedade relatedTarget do evento.
hide.bs.modal
Este evento é acionado, imediatamente, quando o método hide é invocado.
hidden.bs.modal
Este evento é acionado quando o modal acaba de ser oculto ao usuário (espera as transições CSS finalizarem).