Je voudrais centrer mon modal sur la fenêtre (au milieu) J'ai essayé d'ajouter quelques propriétés css
.modal { position: fixed; top:50%; left:50%; }
J'utilise 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);
}
})
javascript
twitter-bootstrap
bootstrap-modal
user2613813
la source
la source
.modal.fade.in
égalementtranslateY(-50%)
celle qui rend le haut du modal inaccessible lorsque le contenu modal est plus grand que la hauteur de l'appareil).Réponses:
Cela fait le travail: http://jsfiddle.net/sRmLV/1140/
Il utilise un helper-div et un css personnalisé. Aucun javascript ou jQuery requis.
HTML (basé sur le code de démonstration de Bootstrap )
CSS
la source
Parce que la réponse de gpcola n'a pas fonctionné pour moi, j'ai édité un peu pour que cela fonctionne maintenant. J'ai utilisé "margin-top" au lieu de transformer. Aussi, j'utilise l'événement "show" au lieu de "shown" car après cela m'a donné un très mauvais saut de positionnement (visible lorsque vous avez des animations bootstrap activées). Assurez-vous de régler l'affichage sur "block" avant le positionnement, sinon $ dialog.height () sera 0 et le modal ne sera pas complètement centré.
la source
$('.modal:visible').each(centerModal);
if(offset < 0) offset = 0;
Je colle tout le bloc dans un cas de réponse qui n'est pas clair!C'est ce que j'ai fait pour mon application. Si vous jetez un œil aux classes suivantes dans le fichier bootstrap.css .modal-dialog a un remplissage par défaut de 10px et @media screen et (min-width: 768px) .modal-dialog a un remplissage supérieur défini sur 30px. Donc, dans mon fichier css personnalisé, j'ai défini mon remplissage supérieur à 15% pour tous les écrans sans spécifier de largeur d'écran multimédia. J'espère que cela t'aides.
la source
.modal-dialog.modal-sm { padding-top:15%; }
Meilleur moyen que j'ai trouvé pour tous les navigateurs HTML5:
la source
align-items: center;
debody.modal-open .modal
semble fonctionner.// Modes
la source
Le paramètre top est remplacé dans .modal.fade.in pour forcer la valeur définie dans votre déclaration personnalisée, ajoutez le
!important
mot - clé après top. Cela oblige le navigateur à utiliser cette valeur et à ignorer toute autre valeur du mot-clé. Cela présente l'inconvénient que vous ne pouvez pas remplacer la valeur ailleurs.la source
cela fonctionne parfaitement pour moi:
URL de démonstration complète : https://codepen.io/dimbslmh/full/mKfCc
la source
Depuis Bootstrap 4, la classe suivante a été ajoutée pour y parvenir sans JavaScript.
Vous pouvez trouver leur documentation ici .
Merci à vd d'avoir souligné que vous devez ajouter à la fois .modal-dialog-centré à .modal-dialog pour centrer verticalement le modal.
la source
vous pouvez utiliser:
pour le centrer à la fois verticalement et horizontalement.
la source
Parce que la plupart des réponses ici n'ont pas fonctionné, ou n'ont fonctionné que partiellement:
Vous devez utiliser le sélecteur [style] pour appliquer uniquement le style au modal actuellement actif au lieu de tous les modaux.
.in
aurait été génial, mais il ne semble être ajouté qu'une fois la transition terminée, ce qui est trop tard et entraîne de très mauvaises transitions. Heureusement, il semble que bootstrap applique toujours un attribut de style sur le modal juste comme il commence à apparaître, donc c'est un peu piraté, mais cela fonctionne.La
:not([style='display: none;'])
partie est une solution de contournement pour bootstrap ne supprimant pas correctement l'attribut de style et définissant à la place l'affichage du style sur aucun lorsque vous fermez la boîte de dialogue.la source
Vous pouvez réaliser un centre d'alignement vertical sur Bootstrap 3 modal comme ça:
et ajoutez cette classe css au conteneur "modal-dialog"
Exemple de travail jsFiddle: http://jsfiddle.net/U4NRx/
la source
Le moyen le plus propre et le plus simple de le faire est d'utiliser Flexbox! Ce qui suit alignera verticalement un modal Bootstrap 3 au centre de l'écran et est tellement plus propre et plus simple que toutes les autres solutions publiées ici:
REMARQUE: Bien qu'il s'agisse de la solution la plus simple, elle peut ne pas fonctionner pour tout le monde en raison de la prise en charge du navigateur: http://caniuse.com/#feat=flexbox
Il semble que (comme d'habitude) IE est à la traîne. Dans mon cas, tous les produits que je développe pour moi-même ou pour des clients sont IE10 +. (cela n'a pas de sens pour les entreprises d'investir du temps de développement pour soutenir les anciennes versions d'IE alors qu'il pourrait être utilisé pour développer le produit et faire sortir le MVP plus rapidement). Ce n'est certainement pas un luxe que tout le monde a.
J'ai vu des sites plus importants détecter si flexbox est pris en charge ou non et appliquer une classe au corps de la page - mais ce niveau d'ingénierie frontale est assez robuste et vous auriez toujours besoin d'une solution de secours.
J'encourage les gens à embrasser l'avenir du Web. Flexbox est génial et vous devriez commencer à l'utiliser si vous le pouvez.
PS - Ce site m'a vraiment aidé à appréhender flexbox dans son ensemble et à l'appliquer à n'importe quel cas d'utilisation: http://flexboxfroggy.com/
EDIT: dans le cas de deux modaux sur une page, cela devrait s'appliquer à .modal.in
la source
Avantages:
display:table-cell
(ce n'est pas destiné aux mises en page)markup
SCSS
pour ceux qui utilisentgulp
ougrunt
Afficher l'extrait de code
Remarque : j'ai l'intention de garder cette réponse à jour avec les dernières spécifications de Bootstrap 3. Pour une solution Bootstrap 4, voyez cette réponse (pour l'instant, elles sont plus ou moins les mêmes, mais avec le temps elles pourraient diverger). Si vous trouvez un bug ou un problème avec celui-ci, faites-le moi savoir et je mettrai à jour. Merci.
Propre, sans préfixe
SCSS
(à utiliser avecgulp
/grunt
):la source
Encore une autre solution CSS. Ne fonctionne pas pour les fenêtres contextuelles plus grandes que le port d'affichage.
En
.modal-dialog
classe, remplacer la position en absolu (par rapport à relatif) et centrer le contenuright:0, left: 0
En
.modal.fade .modal-dialog , .modal.in .modal-dialog
définissant l'animation de transition surtop
plutôt que sur traduction.margin-top
déplace la fenêtre contextuelle légèrement en dessous du centre en cas de petite fenêtre contextuelle et en cas de fenêtre contextuelle longue, le modal est bloqué avec l'en-tête. Par conséquentmargin-top:0, margin-bottom:0
Besoin de l'affiner davantage.
la source
Pour ceux qui utilisent le bootstrap angular-ui, vous pouvez ajouter les classes ci-dessous en fonction des informations ci-dessus:
Remarque: aucun autre changement n'est nécessaire et il résoudra tous les modaux.
la source
Pas besoin de nous javascript. Boostrap modal ajoute .in class lorsqu'il apparaît. Modifiez simplement cette combinaison de classes avec modalclassName.fade.in avec flex css et vous avez terminé.
ajoutez ce css pour centrer votre modal verticalement et horizontalement.
la source
Mon choix, juste un peu de CSS: (ne fonctionne pas dans IE8)
Vous pouvez jouer avec la première règle pour changer l'apparence du modal.
Utilisation: Bootstrap 3.3.4
la source
Ajoutez simplement le CSS suivant à celui existant, cela fonctionne très bien pour moi
la source
Basé sur la réponse d'Arany , mais aussi en tenant compte du défilement des pages.
la source
Je pense que c'est une solution CSS pure un peu plus propre que la solution de Rens de Nobel. Cela n'empêche pas non plus de fermer la boîte de dialogue en cliquant en dehors de celle-ci.
http://plnkr.co/edit/JCGVZQ?p=preview
Ajoutez simplement une classe CSS au conteneur DIV avec la classe .modal-dialog pour obtenir une plus grande spécificité que le CSS bootstraps, par exemple .centered.
HTML
Et rendez ce conteneur .modal-dialog.centered fixe et correctement positionné.
CSS
Ou encore plus simple avec flexbox.
CSS
la source
la source
Cela fonctionne en BS3, non testé en v2. Il centre le modal verticalement. Notez qu'il y fera la transition - si vous voulez qu'il apparaisse simplement en position, modifiez la
transition
propriété CSS pour.modal-dialog
la source
la source
Cela prend la réponse d'Arany et le fait fonctionner si le modal est plus grand que la hauteur de l'écran:
la source
Pour ajouter un centrage modal vertical à bootstrap modal.js, j'ai ajouté ceci à la fin de la
Modal.prototype.show
fonction:la source
Pour rendre modal la boîte de dialogue Aligner au milieu de manière véridique.
/* Remarque:
1. même vous n'avez pas besoin d'attribuer un sélecteur, il trouvera tout le modal du document et le placera verticalement au milieu
2.Pour éviter de placer un modal spécifique au centre, vous pouvez utiliser: pas de sélecteur dans l'événement de clic
* /
Depuis Milan Pandya
la source
Utilisez ce script simple qui centre les modaux.
Si vous le souhaitez, vous pouvez définir une classe personnalisée (ex: .modal.modal-vcenter au lieu de .modal) pour limiter la fonctionnalité uniquement à certains modaux.
Ajoutez également ce correctif CSS pour l'espacement horizontal du modal; on montre le scroll sur les modals, le body scrolls est masqué automatiquement par Bootstrap:
la source
Une autre réponse CSS à cette question ...
Cette solution utilise le CSS uniquement pour obtenir l'effet souhaité tout en conservant la possibilité de fermer le modal en cliquant en dehors de celui-ci. Il vous permet également de définir des
.modal-content
maximums de hauteur et de largeur afin que votre fenêtre contextuelle ne dépasse pas la fenêtre. Un défilement apparaîtra automatiquement lorsque le contenu dépasse la taille modale.Remarque:
le Bootstrap recommandé
.modal-dialog
div
doit être omis pour que cela fonctionne correctement (ne semble rien casser). Testé dans Chrome 51 et IE 11.Code CSS:
EDIT: La
.modal-dialog
classe vous permet de choisir si un utilisateur peut ou non fermer le modal en cliquant en dehors du modal lui-même. La plupart des modaux ont un bouton explicite «fermer» ou «annuler». Gardez cela à l'esprit lorsque vous utilisez cette solution de contournement.la source
La meilleure solution pour centraliser votre modal avec la largeur et la hauteur est, en css add et en modal d'ajouter ce 'centralize' comme classe.
la source
Centré verticalement Ajoutez .modal-dialog-centré à .modal-dialog pour centrer verticalement le modal
Lancer la démo modale
la source