Comment créer un écran modal de bootstrap sur Twitter


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>

Comment puis-je créer un pop-up modal de bootstrap en plein écran pour le code ci-dessus, j'ai essayé de jouer avec le CSS mais je n'ai pas pu l'obtenir comme je le voulais. Quelqu'un peut-il m'aider s'il vous plaît.

Réponses:


280

J'ai réalisé cela dans Bootstrap 3 avec le code suivant:

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

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

En général, lorsque vous avez des questions sur les problèmes d'espacement / de remplissage, essayez avec le bouton droit + clic (ou cmd + clic sur mac) sur l'élément et sélectionnez «inspecter l'élément» sur Chrome ou «inspecter l'élément avec Firebug» sur Firefox. Essayez de sélectionner différents éléments HTML dans le panneau "éléments" et de modifier le CSS à droite en temps réel jusqu'à ce que vous obteniez le remplissage / espacement souhaité.

Voici une démo en direct

Voici un lien vers le violon


12
J'ajouterais également margin: 0à .modal-dialog.
harrison4

10
BTW: .modal-contentla hauteur de rupture lorsque le contenu déborde en bas et défile vers le bas. Ça devrait êtremin-height: 100%; height: auto;
Yanick Rochon

3
Si vous concevez pour une application mobile, vous pouvez placer le CSS de Chris dans une requête multimédia pour avoir une largeur modale normale pour des écrans plus larges @media (max-width: 768px) {...}
Nicolas Connault

vous pouvez également ajouter .modal {padding: ... px} si vous avez besoin d'un modal "presque" plein écran
andrii

8
.modal-dialoga également besoin max-width: 100%;de bootstrap 4
Anand Rockzz

25

La solution choisie ne conserve pas le style des coins arrondis. Pour préserver les coins arrondis, vous devez réduire un peu la largeur et la hauteur et supprimer le rayon de la bordure 0. De plus, la barre de défilement verticale ne s'affiche pas ...

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

.modal-content {
  height: 99%;
}

1
une réponse plus correcte qui conserve la sensation du modèle avec des coins arrondis, la réponse acceptée présente une couche de superposition au lieu de modal
Clain Dsilva

Si le modal occupe le plein écran, cela aurait l'air horrible (IMHO) si vous avez des coins arrondis autour de lui.
Dementic

16

Pour bootstrap 4, je dois ajouter une requête multimédia avec max-width: none

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

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

.modal-content {
  height: 99%;
}

16

J'ai mis au point une solution «réactive» pour les modaux plein écran:

Modaux plein écran qui ne peuvent être activés que sur certains points d'arrêt . De cette façon, le modal affichera "normal" sur des écrans plus larges (bureau) et en plein écran sur des écrans plus petits (tablette ou mobile) , lui donnant la sensation d'une application native.

Implémenté pour Bootstrap 3 et Bootstrap 4 .

Bootstrap v4

Le code générique suivant devrait fonctionner:

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

En incluant le code scss ci-dessous, il génère les classes suivantes qui doivent être ajoutées à l' .modalélément:

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

Le code scss est:

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

Démo sur Codepen: https://codepen.io/andreivictor/full/MWYNPBV/


Bootstrap v3

Sur la base des réponses précédentes à ce sujet (@Chris J, @kkarli), le code générique suivant devrait fonctionner:

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

Si vous souhaitez utiliser des modaux plein écran réactifs, utilisez les classes suivantes qui doivent être ajoutées à l' .modalélément:

  • .modal-fullscreen-md-down- le modal est plein écran pour les écrans plus petits que 1200px.
  • .modal-fullscreen-sm-down- le modal est plein écran pour les écrans plus petits que 922px.
  • .modal-fullscreen-xs-down- le modal est plein écran pour un écran plus petit que 768px.

Jetez un œil au code suivant:

/* 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 démo est disponible sur Codepen: https://codepen.io/andreivictor/full/KXNdoO .


Ceux qui utilisent Sass comme préprocesseur peuvent profiter du mixin suivant:

@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 classe suivante créera un modal plein écran dans Bootstrap:

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

Je ne sais pas comment le contenu interne de votre modal est structuré, cela peut avoir un effet sur la hauteur totale en fonction du CSS qui lui est associé.


qu'est-ce que .fullscreen? J'ai inclus le css dans #myModal, cela fonctionnait pour la largeur mais pas pour la hauteur.
Hrishikesh Sardar

.fullscreenest une classe que j'ai créée pour résoudre le problème, elle n'est pas incluse dans Bootstrap. Pouvez-vous publier un échantillon de votre code sur JSFiddle ou CodePen ? Je ne peux pas vous aider sans voir votre code.
micjamking

pour ajouter de la hauteur, vous devez ajouter de la hauteur sur le corps du modèle et non sur #myModal.
QasimRamzan

9

pour bootstrap 4

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

et en HTML:

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

7

L' extrait de @Chris J avait quelques problèmes de marges et de dépassement de capacité. Les modifications proposées par @YanickRochon et @Joana, basées sur le violon de @Chris J, peuvent être trouvées dans le jsfiddle suivant .

C'est le code CSS qui a fonctionné pour moi:

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

2

Vous devez définir vos balises DIV comme ci-dessous.

Trouvez plus de détails> 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

Ma variante de la solution: (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
Essayez d'expliquer plus clairement pourquoi c'est une réponse à la question.
Jeroen Heier

-1

Utilisez ceci:

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

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

et donc:

<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>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.