Como tornar o Twitter bootstrap modal em tela cheia

160
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-body">
    <%= image_tag "Background.jpg" %>
  </div>
</div>

Como faço para exibir um pop-up modal de inicialização do twitter em tela cheia para o código acima, tentei brincar com o css, mas não consegui obtê-lo da maneira que queria. Alguém pode me ajudar com isso.

Hrishikesh Sardar
fonte

Respostas:

280

Consegui isso no Bootstrap 3 com o seguinte código:

.modal-dialog {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
}

.modal-content {
  height: auto;
  min-height: 100%;
  border-radius: 0;
}

Em geral, quando você tiver dúvidas sobre problemas de espaçamento / preenchimento, clique com o botão direito do mouse (ou cmd + clique no mac) no elemento e selecione "inspecionar elemento" no Chrome ou "inspecionar elemento com firebug" no Firefox. Tente selecionar diferentes elementos HTML no painel "elementos" e editar o CSS à direita em tempo real até obter o preenchimento / espaçamento desejado.

Aqui está uma demonstração ao vivo

Aqui está um link para o violino

Chris J
fonte
12
Eu também gostaria de acrescentar margin: 0a .modal-dialog.
precisa
10
BTW: .modal-contenta alta quebra quando o conteúdo transborda na parte inferior e rola para baixo. Deve sermin-height: 100%; height: auto;
Yanick Rochon
3
Ao criar um aplicativo para dispositivos móveis, você pode colocar o CSS de Chris em uma consulta de mídia para ter largura modal normal para telas mais amplas @media (largura máxima: 768px) {...}
Nicolas Connault 7/16/16
você também pode adicionar .modal {padding: ... px} se precisar do modo "quase" em tela cheia
Andrii
8
.modal-dialogtambém precisa max-width: 100%;do bootstrap 4
Anand Rockzz
25

A solução escolhida não preserva o estilo do canto redondo. Para preservar os cantos arredondados, reduza um pouco a largura e a altura e remova o raio da borda 0. Também não mostra a barra de rolagem vertical ...

.modal-dialog {
  width: 98%;
  height: 92%;
  padding: 0;
}

.modal-content {
  height: 99%;
}
Esteban
fonte
1
uma resposta mais correta que mantém a sensação do modelo com cantos arredondados, a resposta apresenta aceitou uma camada de sobreposição em vez de modal
Clain Dsilva
Se o modal estiver ocupando a tela inteira, seria horrível (IMHO) se você tivesse cantos arredondados.
Dementic
16

Para o bootstrap 4, tenho que adicionar uma consulta de mídia com max-width: none

@media (min-width: 576px) {
  .modal-dialog { max-width: none; }
}

.modal-dialog {
  width: 98%;
  height: 92%;
  padding: 0;
}

.modal-content {
  height: 99%;
}
A. Morel
fonte
16

Eu vim com uma solução "responsiva" para os modais de tela cheia:

Modais de tela cheia que podem ser ativados apenas em determinados pontos de interrupção . Dessa forma, o modal exibirá "normal" em telas mais largas (para computador) e em tela cheia em telas menores (para tablet ou celular) , dando a sensação de um aplicativo nativo.

Implementado para Bootstrap 3 e Bootstrap 4 .

Bootstrap v4

O seguinte código genérico deve funcionar:

.modal {
  padding: 0 !important; // override inline padding-right added from js
}
.modal .modal-dialog {
  width: 100%;
  max-width: none;
  height: 100%;
  margin: 0;
}
.modal .modal-content {
  height: 100%;
  border: 0;
  border-radius: 0;
}
.modal .modal-body {
  overflow-y: auto;
}

Ao incluir o código scss abaixo, ele gera as seguintes classes que precisam ser adicionadas ao .modalelemento:

+---------------+---------+---------+---------+---------+---------+
|               |   xs    |   sm    |   md    |   lg    |   xl    | 
|               | <576px  | 576px  | 768px  | 992px  | 1200px |
+---------------+---------+---------+---------+---------+---------+
|.fullscreen    |  100%   | default | default | default | default | 
+---------------+---------+---------+---------+---------+---------+
|.fullscreen-sm |  100%   |  100%   | default | default | default | 
+---------------+---------+---------+---------+---------+---------+
|.fullscreen-md |  100%   |  100%   |  100%   | default | default |
+---------------+---------+---------+---------+---------+---------+
|.fullscreen-lg |  100%   |  100%   |  100%   |  100%   | default |
+---------------+---------+---------+---------+---------+---------+
|.fullscreen-xl |  100%   |  100%   |  100%   |  100%   |  100%   |
+---------------+---------+---------+---------+---------+---------+

O código scss é:

@mixin modal-fullscreen() {
  padding: 0 !important; // override inline padding-right added from js

  .modal-dialog {
    width: 100%;
    max-width: none;
    height: 100%;
    margin: 0;
  }

  .modal-content {
    height: 100%;
    border: 0;
    border-radius: 0;
  }

  .modal-body {
    overflow-y: auto;
  }

}

@each $breakpoint in map-keys($grid-breakpoints) {
  @include media-breakpoint-down($breakpoint) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

    .modal-fullscreen#{$infix} {
      @include modal-fullscreen();
    }
  }
}

Demonstração do Codepen: https://codepen.io/andreivictor/full/MWYNPBV/


Bootstrap v3

Com base nas respostas anteriores a este tópico (@Chris J, @kkarli), o seguinte código genérico deve funcionar:

.modal {
  padding: 0 !important; // override inline padding-right added from js
}

.modal .modal-dialog {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
}

.modal .modal-content {
  height: auto;
  min-height: 100%;
  border: 0 none;
  border-radius: 0;
  box-shadow: none;
}

Se você deseja usar modais de tela cheia responsivos, use as seguintes classes que precisam ser adicionadas ao .modalelemento:

  • .modal-fullscreen-md-down- o modal é tela cheia para telas menores que 1200px.
  • .modal-fullscreen-sm-down- o modal é tela cheia para telas menores que 922px.
  • .modal-fullscreen-xs-down- o modal é tela cheia para tela menor que 768px.

Dê uma olhada no seguinte código:

/* Extra small devices (less than 768px) */
@media (max-width: 767px) {
  .modal-fullscreen-xs-down {
    padding: 0 !important;
  }
  .modal-fullscreen-xs-down .modal-dialog {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
  }
  .modal-fullscreen-xs-down .modal-content {
    height: auto;
    min-height: 100%;
    border: 0 none;
    border-radius: 0;
    box-shadow: none;
  } 
}

/* Small devices (less than 992px) */
@media (max-width: 991px) {
  .modal-fullscreen-sm-down {
    padding: 0 !important;
  }
  .modal-fullscreen-sm-down .modal-dialog {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
  }
  .modal-fullscreen-sm-down .modal-content {
    height: auto;
    min-height: 100%;
    border: 0 none;
    border-radius: 0;
    box-shadow: none;
  }
}

/* Medium devices (less than 1200px) */
@media (max-width: 1199px) {
  .modal-fullscreen-md-down {
    padding: 0 !important;
  }
  .modal-fullscreen-md-down .modal-dialog {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
  }
  .modal-fullscreen-md-down .modal-content {
    height: auto;
    min-height: 100%;
    border: 0 none;
    border-radius: 0;
    box-shadow: none;
  }
}

A demonstração está disponível no Codepen: https://codepen.io/andreivictor/full/KXNdoO .


Quem usa o Sass como pré-processador pode tirar proveito do seguinte mixin:

@mixin modal-fullscreen() {
  padding: 0 !important; // override inline padding-right added from js

  .modal-dialog {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
  }

  .modal-content {
    height: auto;
    min-height: 100%;
    border: 0 none;
    border-radius: 0;
    box-shadow: none;
  }

}
andreivictor
fonte
11

A classe a seguir criará um modal de tela cheia no Bootstrap:

.full-screen {
    width: 100%;
    height: 100%;
    margin: 0;
    top: 0;
    left: 0;
}

Não tenho certeza de como o conteúdo interno do seu modal está estruturado. Isso pode afetar a altura geral, dependendo do CSS associado a ele.

micjamking
fonte
o que é .fullscreen? Eu incluí o css no #myModal que funcionava para a largura, mas não a altura.
Hrishikesh Sardar
.fullscreené uma classe que criei para resolver o problema, não está incluída no Bootstrap. Você pode postar uma amostra do seu código no JSFiddle ou CodePen ? Não posso ajudá-lo sem ver seu código.
micjamking
para adicionar altura, você precisa adicionar altura no corpo do modelo e não no #myModal.
QSimRamzan # 19/15
9

para bootstrap 4

adicione classes:

.full_modal-dialog {
  width: 98% !important;
  height: 92% !important;
  min-width: 98% !important;
  min-height: 92% !important;
  max-width: 98% !important;
  max-height: 92% !important;
  padding: 0 !important;
}

.full_modal-content {
  height: 99% !important;
  min-height: 99% !important;
  max-height: 99% !important;
}

e em HTML:

<div role="document" class="modal-dialog full_modal-dialog">
    <div class="modal-content full_modal-content">
Vlad
fonte
7

O trecho de @Chris J teve alguns problemas com margens e estouro. As alterações propostas por @YanickRochon e @Joana, com base no violinista de @Chris J, podem ser encontradas no seguinte jsfiddle .

Esse é o código CSS que funcionou para mim:

.modal-dialog {
    width: 100%;
    height: 100%;
    padding: 0;
    margin: 0;
}
.modal-content {
    height: 100%;
    min-height: 100%;
    height: auto;
    border-radius: 0;
}
kkarli
fonte
2

Você precisa definir suas tags DIV como abaixo.

Encontre mais detalhes> http://thedeveloperblog.com/bootstrap-modal-with-full-size-and-scrolling

</style>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
   More Details
</button>
</br>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-content">
        <div class="container">;
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h3 class="modal-title" id="myModalLabel">Modal Title</h3>
          </div>
              <div class="modal-body" >
                Your modal text 
              </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
          </div>
        </div>
    </div>                                      
</div>
BenW
fonte
-1

Minha variação da solução: (scss)

  .modal {
        .modal-dialog.modal-fs {
            width: 100%;
            margin: 0;
            box-shadow: none;
            height: 100%;
            .modal-content {
                border: none;
                border-radius: 0;
                box-shadow: none;
                box-shadow: none;
                height: 100%;
            }
        }
    }

(css)

.modal .modal-dialog.modal-fs {
  width: 100%;
  margin: 0;
  box-shadow: none;
  height: 100%;
}
.modal .modal-dialog.modal-fs .modal-content {
  border: none;
  border-radius: 0;
  box-shadow: none;
  box-shadow: none;
  height: 100%;
}
Dementic
fonte
-1
.modal.in .modal-dialog {
 width:100% !important; 
 min-height: 100%;
 margin: 0 0 0 0 !important;
 bottom: 0px !important;
 top: 0px;
}


.modal-content {
    border:0px solid rgba(0,0,0,.2) !important;
    border-radius: 0px !important;
    -webkit-box-shadow: 0 0px 0px rgba(0,0,0,.5) !important;
    box-shadow: 0 3px 9px rgba(0,0,0,.5) !important;
    height: auto;
    min-height: 100%;
}

.modal-dialog {
 position: fixed !important;
 margin:0px !important;
}

.bootstrap-dialog .modal-header {
    border-top-left-radius: 0px !important; 
    border-top-right-radius: 0px !important;
}


@media (min-width: 768px)
.modal-dialog {
    width: 100% !important;
    margin: 0 !important;
}
Alireza Pars
fonte
2
Tente explicar mais claramente por que essa é uma resposta à pergunta.
Jeroen Heier
-1

Usa isto:

.modal-full {
    min-width: 100%;
    margin: 0;
}

.modal-full .modal-content {
    min-height: 100vh;
}

e entao:

<div id="myModal" class="modal" role="dialog">
    <div class="modal-dialog modal-full">
        <!-- Modal content-->
        <div class="modal-content ">
            <div class="modal-header ">                    
                <button type="button" class="close" data-dismiss="modal">&times; 
                </button>
                <h4 class="modal-title">hi</h4>
            </div>
            <div class="modal-body">
                <p>Some text in the modal.</p>
            </div>
        </div>

    </div>
</div>
hojjat.mi
fonte