Verticalement centrage Bootstrap fenêtre modale
Je voudrais centrer mon modal sur la fenêtre d'affichage (au milieu), j'ai essayé d'ajouter quelques propriétés css
.modal { position: fixed; top:50%; left:50%; }
Je suis en utilisant cet exemple http://jsfiddle.net/rniemeyer/Wjjnd/
J'ai essayé
$("#MyModal").modal('show').css(
{
'margin-top': function () {
return -($(this).height() / 2);
},
'margin-left': function () {
return -($(this).width() / 2);
}
})
- Essayez de remplacer
.modal.fade.in
ainsi - Essayez avec ceci: github.com/jschr/bootstrap-modal
- Essayez cette zerosixthree.se/... j'ai utiliser : .modal.l'évanouissement.dans { top: 50%; transform: translateY(-50%); }
- Ajouté flexbox solution (le
translateY(-50%)
on fait modal haut de inaccessible lorsque modal contenu est plus grand que la hauteur de l'appareil). - Comme bootstrap 4 modale de dialogue centré a ajouté que ce n'est plus nécessaire. Veuillez consulter la réponse ci-dessous.
Vous devez vous connecter pour publier un commentaire.
Ce fait le travail : http://jsfiddle.net/sRmLV/1140/
Il utilise un helper-div et certains css personnalisé. Pas de javascript ou jQuery nécessaire.
HTML (basé sur Bootstrap est démo-code)
CSS
vertical-alignment-helper
dans<div class="modal fade vertical-alignment-helper" role=dialog>
.Parce que gpcola la réponse n'a pas fonctionné pour moi, j'ai édité un peu donc sa fonctionne maintenant.
J'ai utilisé "margin-top" au lieu de la transformer. Aussi, j'utilise le "show" au lieu de "montre" de l'événement car après il m'a donné un très mauvais saut de positionnement (visible lorsque vous avez bootstrap animations). Assurez-vous de régler l'affichage de "bloquer" avant de positionnement, sinon $boîte de dialogue.hauteur() sera 0 et le modal ne sera pas centré complètement.
$('.modal:visible').each(centerModal);
if(offset < 0) offset = 0;
je suis le collage de l'ensemble du bloc de répondre à la question de cas qui n'est pas clair!(jQuery)
doit être à l'intérieur de la enfermant parens, directement après la clôture de la fonction corset}
C'est ce que j'ai fait pour mon application. Si vous regardez les classes suivantes dans le fichier d'initialisation.fichier css .modale de dialogue a un défaut padding de 10px et @media screen and (min-width: 768px) .modale de dialogue possède un rembourrage ensemble de 30px. Donc dans mon fichier css spécifique, j'ai mis mon top rembourrage à 15% pour tous les écrans sans spécifier de médias de la largeur de l'écran. Espérons que cette aide.
.modal-dialog.modal-sm { padding-top:15%; }
Meilleure façon que j'ai trouvé pour tous les navigateurs HTML5:
body.modal-open .modal .modal-dialog
doit être explicitement hauteur pour l'alignement vertical pour fonctionner correctement. L'ajout deheight: 100px
fonctionne, mais les limites de l'utilité de cette solution.align-items: center;
àbody.modal-open .modal
semble fonctionner.//Styles
Le top paramètre est remplacée dans .modal.l'évanouissement.en vigueur à la valeur définie dans votre déclaration, ajouter le
!important
mot-clé après le sommet. Cela force le navigateur à utiliser cette valeur et d'ignorer toutes les autres valeurs pour le mot-clé. Ceci a l'inconvénient que vous ne pouvez pas remplacer la valeur de n'importe où ailleurs.cela Fonctionne parfaitement pour moi:
complète Démo URL : https://codepen.io/dimbslmh/full/mKfCc
vous pouvez utiliser:
pour centrer verticalement et horizontalement.
Parce que la plupart de la réponse ici ne fonctionne pas, ou seulement partiellement travaillé:
Vous devez utiliser le bouton [style] sélecteur de n'appliquer le style sur le modal qui est actuellement active au lieu de tous les auxiliaires modaux.
.in
aurait été génial, mais il semble être ajouté seulement après l'achèvement de la transition est trop tard et fait pour certains vraiment mauvais transitions. Heureusement, il semble bootstrap s'applique toujours un attribut de style sur le modèle juste comme il commence à montrer si c'est très orthodoxe, mais il fonctionne.La
:not([style='display: none;'])
partie est une solution de contournement pour l'amorçage n'est pas correctement la suppression de l'attribut style et au lieu de définir le style d'affichage à aucun lorsque vous fermez la boîte de dialogue.Vous pouvez réaliser l'alignement vertical du centre sur Bootstrap 3 modal comme ça :
et ajouter cette classe css à l' "modal-boîte de dialogue" conteneur
jsFiddle de travail exemple : http://jsfiddle.net/U4NRx/
Le plus propre et le plus simple pour cela est d'utiliser Flexbox! Les suivantes seront alignées à la verticale d'un Bootstrap 3 modal dans le centre de l'écran et est donc beaucoup plus propre et plus simple que toutes les autres solutions posté ici:
REMARQUE: c'est la solution la plus simple, il peut ne pas fonctionner pour tout le monde grâce à la prise en charge du navigateur: http://caniuse.com/#feat=flexbox
Il ressemble (par habitude) c'est à dire à la traîne. Dans mon cas, tous les produits que je développe moi-même ou pour les clients sont les IE10+. (il n'est pas judicieux d'affaires sage d'investir le temps de développement, de support des anciennes versions d'IE alors qu'ils pourraient être utilisées pour développer le produit et obtenir le titre de MVP plus vite). Ce n'est certainement pas un luxe que tout le monde l'a fait.
J'ai vu les plus grands sites de détecter si oui ou non flexbox est pris en charge et appliquer une classe au corps de la page, mais que le niveau de l'ingénierie d'avant-est assez robuste, et vous auriez encore besoin d'une solution de repli.
J'encourage les gens à embrasser l'avenir du web. Flexbox est génial et vous devriez commencer à l'utiliser si vous le pouvez.
P. S. - Ce site m'a vraiment aidé à saisir flexbox dans son ensemble et de les appliquer à des cas d'utilisation: http://flexboxfroggy.com/
EDIT: Dans le cas de deux des modaux sur une page, cela doit s'appliquer .modal.dans
De Bootstrap 4 la classe suivante a été ajoutée pour obtenir pour vous sans JavaScript.
Vous pouvez trouver leur documentation ici.
Avantages:
display:table-cell
(qui n'est pas destinée pour les mises en page)markup
SCSS
pour ceux qui utilisentgulp
ougrunt
JS:
CSS:
HTML:
Note: j'ai l'intention de garder cette réponse jusqu'à ce jour avec les dernières spécifications de Bootstrap 3. Pour un Bootstrap 4 solution, voir cette réponse (pour l'instant ils sont plus ou moins les mêmes, mais dans le temps, ils peuvent diverger). Si vous trouvez un bug ou un problème avec elle, laissez-moi savoir et je vais mettre à jour. Merci.
Propre, non-préfixés
SCSS
(pour une utilisation avecgulp
/grunt
):Encore un autre CSS solution.
Ne fonctionne pas pour les fenêtres pop-up qui sont plus grand que le port de la vue.
Dans
.modal-dialog
classe substitution de la position à l'absolu(relative) et de centrer le contenuright:0, left: 0
Dans
.modal.fade .modal-dialog , .modal.in .modal-dialog
réglage de l'animation de transition plus detop
plutôt que sur traduire.margin-top
déplace le popup légèrement en dessous du centre en cas de petite pop-up et dans le cas de longues fenêtres pop-up, le modal est coincé avec en-tête. Doncmargin-top:0, margin-bottom:0
Besoin de l'améliorer.
Pour ceux qui sont à l'aide de angular-ui bootstrap peut ajouter ci-dessous les classes supérieures info:
Note de: Aucune autre modification n'est nécessaire et il doit résoudre toutes les modals.
Pas besoin de nous le javascript. Bootstrap modal ajoute .en classe quand il apparaît.
Juste modifier cette classe combinaison avec modalclassName.l'évanouissement.avec flex css et vous avez terminé.
ajouter cette css pour centrer votre modal verticalement et horizontalement.
Mon choix, juste un peu de CSS: ( ne fonctionne PAS avec IE8 )
Vous pouvez jouer avec la première règle à modifier la façon dont la modale s'affiche.
À L'Aide De: Bootstrap 3.3.4
Simplement ajouter le code CSS suivant pour vous existant,Il fonctionne très bien pour moi
Basé sur Arany réponse, mais également à la comptabilité pour le défilement des pages.
Je pense que c'est un peu plus propre pur CSS solution que Ren de Nobel de la solution. Aussi cela ne l'empêche pas de fermer la boîte de dialogue en cliquant à l'extérieur de l'il.
http://plnkr.co/edit/JCGVZQ?p=preview
Juste ajouter un peu de classe CSS de la DIV conteneur avec .modal-classe de boîte de dialogue d'acquérir une plus grande spécificité que la force du poignet CSS, par exemple .centré.
HTML
Et de faire de ce .modale de dialogue.centré conteneur fixe et correctement positionné.
CSS
Ou encore plus simple en utilisant flexbox.
CSS
Cela fonctionne dans BS3, pas testé en v2. C'centres modale de la verticale. Notez qu'il sera transition - si vous voulez qu'il suffit d'apparaître en position de modifier le code CSS
transition
propriété pour.modal-dialog
Cela prend Arany de réponse et permet de travailler si le modal est plus grand que la hauteur de l'écran:
De faire Modal verically Aligner Milieu de Tout dialogue.
/* Note:
1.Même si vous n'avez pas besoin d'attribuer sélecteur , il va trouver toutes modale à partir du document et de le rendre à la verticale du milieu
2.Pour éviter de moyen spécifique modal à ce centre, vous pouvez utiliser :pas de sélecteur, cliquez sur l'événement
*/
De Milan Pandya
Pour ajouter vertical modal de centrage pour bootstrap modal.js j'ai ajouté ceci à la fin de la
Modal.prototype.show
fonction:CSS:
Utiliser ce script simple que les centres de la modals.
Si vous le souhaitez, vous pouvez définir une classe personnalisée (ex: .modal.modal-vcenter au lieu de .modale) pour limiter la fonctionnalité de certaines modals.
Également ajouter cette CSS correctif pour la modale de l'espacement horizontal; nous montrons le défilement sur les auxiliaires modaux, le corps rouleaux est masqué automatiquement par Bootstrap:
Un autre CSS réponse à cette question...
Cette solution utilise les CSS pour obtenir l'effet désiré, tout en conservant la possibilité de fermer la modale en cliquant à l'extérieur de l'il. Il vous permet également de définir
.modal-content
la hauteur et la largeur de maximums, de sorte que votre pop-up ne poussent pas au-delà de la fenêtre d'affichage. Un défilement apparaîtra automatiquement lorsque le contenu dépasse la taille modale.remarque:
Le Bootstrap recommandé
.modal-dialog
div
doit être omis dans l'ordre pour que cela fonctionne correctement (ne semble pas casser quoi que ce soit). Testé dans Chrome 51 et IE 11.Code CSS:
EDIT:
Le
.modal-dialog
classe vous permet de choisir si ou non un utilisateur peut fermer la modale en cliquant à l'extérieur de la modale de lui-même. La plupart des modaux explicite 'fermer' ou bouton 'annuler'. Gardez cela à l'esprit lors de l'utilisation de cette solution de contournement.La meilleure solution pour centraliser vos modal avec la largeur et la hauteur est, en css ajouter et en modal ajouter cette "centralisation" comme une classe..
après 4 heures, j'ai trouvé la solution.
Au centre modal dans les différentes résolutions (ordinateurs de bureau, tablettes, smartphones):
index.php
Le fichier bootstrap-modal-bs3patch.css je l'ai téléchargé à partir de https://github.com/jschr/bootstrap-modal
J'ai ensuite modifié ce fichier. Css comme suit:
J'ai fait des tests sur différentes résolutions et il fonctionne!