Maison  >  Article  >  interface Web  >  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
Patricia Arquetteoriginal
2024-10-25 08:26:29231parcourir

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>

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>

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>

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!

Déclaration:
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