Come rendere Twitter bootstrap modale a schermo intero


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>

Come faccio a creare un pop-up modale pop-up Twitter bootstrap per il codice sopra, ho provato a giocare con CSS ma non sono riuscito a farlo come volevo. Qualcuno può aiutarmi per favore con esso.

Risposte:


280

Ho raggiunto questo obiettivo in Bootstrap 3 con il seguente codice:

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

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

In generale, quando hai domande su problemi di spaziatura / riempimento, prova a fare clic con il tasto destro + (o cmd + clic su mac) sull'elemento e seleziona "ispeziona elemento" su Chrome o "ispeziona elemento con firebug" su Firefox. Prova a selezionare diversi elementi HTML nel pannello "elementi" e modifica il CSS a destra in tempo reale fino a ottenere il riempimento / spaziatura desiderato.

Ecco una demo dal vivo

Ecco un link al violino


12
Vorrei anche aggiungere margin: 0a .modal-dialog.
harrison4,

10
A proposito: .modal-contentla grande pausa quando il contenuto trabocca in basso e scorre verso il basso. Dovrebbe esseremin-height: 100%; height: auto;
Yanick Rochon,

3
Se stai progettando per un'app mobile, puoi inserire il CSS di Chris all'interno di una query multimediale per avere una larghezza modale normale per schermi più grandi @media (larghezza massima: 768px) {...}
Nicolas Connault

puoi anche aggiungere .modal {padding: ... px} se hai bisogno di "quasi" modal a schermo intero
andrii

8
.modal-dialognecessita anche max-width: 100%;di bootstrap 4
Anand Rockzz

25

La soluzione scelta non conserva lo stile degli angoli arrotondati. Per preservare gli angoli arrotondati, è necessario ridurre leggermente la larghezza e l'altezza e rimuovere il raggio del bordo 0. Inoltre non mostra la barra di scorrimento verticale ...

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

.modal-content {
  height: 99%;
}

1
una risposta più corretta che mantiene la sensazione del modello con gli angoli arrotondati, la risposta accettata presenta un livello di sovrapposizione anziché modale
Clain Dsilva,

Se il modale sta occupando lo schermo intero, sembrerebbe orribile (IMHO) se ci sono angoli arrotondati attorno ad esso.
Demenza

16

Per bootstrap 4 devo aggiungere media query con max-width: nessuna

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

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

.modal-content {
  height: 99%;
}

16

Ho trovato una soluzione "reattiva" per i modali a schermo intero:

Modali a schermo intero che possono essere abilitati solo su determinati punti di interruzione . In questo modo il modale visualizzerà "normale" su schermi più grandi (desktop) e schermo intero su schermi più piccoli (tablet o dispositivi mobili) , dandogli la sensazione di un'app nativa.

Implementato per Bootstrap 3 e Bootstrap 4 .

Bootstrap v4

Il seguente codice generico dovrebbe funzionare:

.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;
}

Includendo il seguente codice scss, genera le seguenti classi che devono essere aggiunte .modalall'elemento:

+---------------+---------+---------+---------+---------+---------+
|               |   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%   |
+---------------+---------+---------+---------+---------+---------+

Il codice 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();
    }
  }
}

Demo su Codepen: https://codepen.io/andreivictor/full/MWYNPBV/


Bootstrap v3

Sulla base delle risposte precedenti a questo argomento (@Chris J, @kkarli), dovrebbe funzionare il seguente codice generico:

.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 si desidera utilizzare modali a schermo intero reattivi, utilizzare le seguenti classi che devono essere aggiunte .modalall'elemento:

  • .modal-fullscreen-md-down- il modale è a schermo intero per schermi più piccoli di 1200px.
  • .modal-fullscreen-sm-down- il modale è a schermo intero per schermi più piccoli di 922px.
  • .modal-fullscreen-xs-down- il modale è a schermo intero per schermo più piccolo di 768px.

Dai un'occhiata al seguente codice:

/* 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;
  }
}

La demo è disponibile su Codepen: https://codepen.io/andreivictor/full/KXNdoO .


Chi utilizza Sass come preprocessore può usufruire del seguente 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;
  }

}

11

La seguente classe renderà un modale a schermo intero in Bootstrap:

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

Non sono sicuro di come sia strutturato il contenuto interno del tuo modale, questo potrebbe avere un effetto sull'altezza complessiva a seconda del CSS ad esso associato.


che cos'è .fullscreen? Ho incluso il CSS in #myModal ha funzionato per la larghezza ma non per l'altezza.
Hrishikesh Sardar,

.fullscreenè una classe che ho creato per risolvere il problema, non è inclusa in Bootstrap. Puoi pubblicare un campione del tuo codice su JSFiddle o CodePen ? Non posso aiutarti senza vedere il tuo codice.
Micjamking,

per aggiungere l'altezza devi aggiungere l'altezza sul corpo del modello non su #myModal.
QasimRamzan,

9

per bootstrap 4

aggiungi classi:

.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 in HTML:

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

7

Il snippet di @Chris J ha avuto alcuni problemi con margini e overflow. Le modifiche proposte da @YanickRochon e @Joana, basate sul violino di @Chris J, sono disponibili nel seguente jsfiddle .

Questo è il codice CSS che ha funzionato per me:

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

2

È necessario impostare i tag DIV come di seguito.

Scopri maggiori dettagli> 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>

-1

La mia variazione della soluzione: (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%;
}

-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;
}

2
Prova a spiegare più chiaramente perché questa è una risposta alla domanda.
Jeroen Heier,

-1

Usa questo:

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

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

e così:

<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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.