Comme la réponse de gpcola ne fonctionnait pas pour moi, j'ai modifié un peu la réponse pour qu'elle fonctionne maintenant. J'ai utilisé "margin-top" au lieu de transform. De plus, j'utilise l'événement "show" au lieu de "shown" parce qu'après cela, j'avais un très mauvais saut de positionnement (visible lorsque vous avez des animations bootstrap). Assurez-vous de définir l'affichage à "block" avant le positionnement, sinon $dialog.height() sera 0 et la modale ne sera pas centrée complètement.
(function ($) {
"use strict";
function centerModal() {
$(this).css('display', 'block');
var $dialog = $(this).find(".modal-dialog"),
offset = ($(window).height() - $dialog.height()) / 2,
bottomMargin = parseInt($dialog.css('marginBottom'), 10);
// Make sure you don't hide the top part of the modal w/ a negative margin if it's longer than the screen height, and keep the margin equal to the bottom margin of the modal
if(offset < bottomMargin) offset = bottomMargin;
$dialog.css("margin-top", offset);
}
$(document).on('show.bs.modal', '.modal', centerModal);
$(window).on("resize", function () {
$('.modal:visible').each(centerModal);
});
}(jQuery));
0 votes
Essayez de passer outre
.modal.fade.in
également0 votes
Essayez avec ça : github.com/jschr/bootstrap-modal
3 votes
Essayez ceci zerosixthree.se/ J'utilise : .modal.fade.in { top : 50% ; transform : translateY(-50%) ; }
0 votes
Ajouté solution flexbox (le
translateY(-50%)
on rend le haut de la modale inaccessible lorsque le contenu de la modale est plus grand que la hauteur du périphérique).1 votes
A partir de bootstrap 4 modal-dialog-centered a été ajouté que ce n'est plus nécessaire. Veuillez revoir cette réponse ci-dessous.