J'essaie de centrer un dialogue modal d'écran en attente au milieu de l'écran. Voici le dialogue modal que j'essaie de modifier: http://dotnetspeak.com/2013/05/creating-simple-please-please-wait-dialog-with-Twitter-bootstrap . Comment le centrer horizontalement et verticalement?
Il s’agit simplement d’appliquer du code CSS à l’identifiant pleaseWaitDialog
. Vous devez définir position:absolute
et les margin-top
et margin-left
doivent être égaux à la moitié de la hauteur et de la largeur. Donc, votre CSS devrait ressembler à quelque chose comme ça:
#pleaseWaitDialog {
width: 400px;
height: 50px;
position: absolute;
top: 50%;
left: 50%;
margin-top: -25px;
margin-left: -200px;
padding: 20px;
}
Vous devrez jouer avec les chiffres pour obtenir la taille de boîte qui vous convient, mais qui devrait vous aider à démarrer.
Voici une autre suggestion, qui n'implique pas de codage en dur des marges. il utilise Angular, mais vous pouvez remplacer element par $. Il anime la marge en simulant la classe "fade" dans le bootstrap.
var resize = function () {
var dialog = angular.element('#globalPleaseWaitDialog .modal-dialog');
dialog.css('margin-top', (angular.element(that.$window).height() - dialog.height()) / 2 - parseInt(dialog.css('padding-top')));
};
var animate = function () {
var dialog = angular.element('#globalPleaseWaitDialog .modal-dialog');
dialog.animate({ 'margin-top': (angular.element(that.$window).height() - dialog.height()) / 2 - parseInt(dialog.css('padding-top')) }, 'slow');
pleaseWaitDiv.off('shown.bs.modal', animate);
};
this.showPleaseWait = function () {
angular.element($window).on('resize', resize);
pleaseWaitDiv.on('shown.bs.modal', animate);
pleaseWaitDiv.modal();
};
this.hidePleaseWait = function () {
pleaseWaitDiv.modal('hide');
angular.element($window).off('resize', resize);
};
Je sais que c'est un peu tard, mais j'ai trouvé la solution à tous les problèmes de centrage du Bootstrap Modal avec des hauteurs différentes de celles du standard (un).
$("#yourModal").modal('show').css({
'margin-top': function () { //vertical centering
return -($(this).height() / 2);
},
'margin-left': function () { //Horizontal centering
return -($(this).width() / 2);
}
});
Pour jQuery/Coffeescript standard, j'ai utilisé:
modal = $('.modal')
modal.css 'margin-top', ($(window).height() - modal.height()) / 2 - parseInt(modal.css('padding-top'))
Tout le mérite revient à Sergey Barskiy.
J'ai rencontré un tel problème en essayant d'afficher une image (avec une taille arbitraire) dans l'interface modale UI Bootstrap d'Angular. Alors
J'ai ajouté le nom de classe supplémentaire "width-auto" à un dialogue div "modal" . (Dans mon cas, cela a été fait à l'aide du paramètre "windowClass")
J'ai écrit le code SCSS:
.width-auto { & .modal { text-align: center; } .modal-dialog, .modal-content { display: inline-block; largeur: auto; largeur maximale: 99vw; débordement caché; } }
et cela a résolu le problème.