Maison > interface Web > js tutoriel > Comment garantir que plusieurs modaux se superposent correctement avec un arrière-plan visible dans Bootstrap ?

Comment garantir que plusieurs modaux se superposent correctement avec un arrière-plan visible dans Bootstrap ?

Patricia Arquette
Libérer: 2024-10-25 08:26:29
original
316 Les gens l'ont consulté

How to Ensure Multiple Modals Overlay Correctly with a Visible Backdrop in Bootstrap?

Superposition de plusieurs modaux

Dans ce scénario, vous souhaitez que la superposition apparaisse au-dessus du premier modal, plutôt que derrière lui.

Solution

Inspirée des contributions de @YermoLamers et @Ketwaroo, une solution complète implique :

Backdrop Z-Index Fix

Pour résoudre le problème de la toile de fond apparaissant derrière le premier modal, implémentez le JavaScript suivant :

<code class="javascript">$(document).on('show.bs.modal', '.modal', function() {
  const zIndex = 1040 + 10 * $('.modal:visible').length;
  $(this).css('z-index', zIndex);
  setTimeout(() => $('.modal-backdrop').not('.modal-stack').css('z-index', zIndex - 1).addClass('modal-stack'));
});</code>
Copier après la connexion

Personnalisation de l'index Z

Si vous le souhaitez pour personnaliser le calcul du z-index, vous pouvez utiliser les éléments suivants :

<code class="javascript">const zIndex = 10 +
  Math.max(...Array.from(document.querySelectorAll('*')).map((el) => +el.style.zIndex));</code>
Copier après la connexion

Correction de la barre de défilement

Pour résoudre les cas où la fermeture d'un deuxième modal empêche le défilement dans un modal qui dépasse la hauteur du navigateur, incluez le JavaScript suivant :

<code class="javascript">$(document).on('hidden.bs.modal', '.modal',
  () => $('.modal:visible').length && $(document.body).addClass('modal-open'));</code>
Copier après la connexion

Versions

Cette solution est minutieusement testée avec les versions Bootstrap 3.1.0 à 3.3.5. En implémentant cette solution, vous pouvez vous assurer que plusieurs modaux se superposent correctement, la toile de fond apparaissant au-dessus du premier modal et la barre de défilement restant fonctionnelle selon les besoins.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal