Si je me souviens bien, le réglage overflow:hidden sur le corps ne fonctionne pas sur tous les navigateurs, j'ai été le tester pour un modal de la bibliothèque que j'ai construit pour un site mobile. Plus précisément, j'ai eu du mal à empêcher le corps de défilement en plus de la modale de défilement même quand je mets overflow:hidden sur le corps.
Pour mon site, j'ai fini par faire quelque chose comme cela. Qu'il est fondamentalement juste les magasins de votre position de défilement en outre la définition de "dépassement" de "caché" du corps de la page, puis restaure la position de défilement après le modal ferme. Il y a une condition pour quand un autre bootstrap modale s'ouvre alors que l'on est déjà active. Sinon, le reste du code doivent être explicites. Notez que si le overflow:hidden sur le corps n'est pas d'empêcher la fenêtre de défilement pour un navigateur donné, ce qui définit l'origine de défilement emplacement de retour à la sortie.
function bindBootstrapModalEvents() {
var $body = $('body'),
curPos = 0,
isOpened = false,
isOpenedTwice = false;
$body.off('shown.bs.modal hidden.bs.modal', '.modal');
$body.on('shown.bs.modal', '.modal', function () {
if (isOpened) {
isOpenedTwice = true;
} else {
isOpened = true;
curPos = $(window).scrollTop();
$body.css('overflow', 'hidden');
}
});
$body.on('hidden.bs.modal', '.modal', function () {
if (!isOpenedTwice) {
$(window).scrollTop(curPos);
$body.css('overflow', 'visible');
isOpened = false;
}
isOpenedTwice = false;
});
}
Si vous n'aimez pas cela, l'autre option consisterait à attribuer à un max-height et overflow:auto .modal-body " comme ceci:
.modal-body {
max-height:300px;
overflow:auto;
}
Dans ce cas, vous pouvez configurer le max de hauteur pour différentes tailles d'écran et de laisser le overflow:auto pour les différentes tailles d'écran. Vous devez assurez-vous que le modal en-tête, pied de page, et le corps ne pas ajouter de plus que la taille de l'écran, alors je dirais que la partie dans vos calculs.