Lorsque je déclenche une vue modale dans ma page, la barre de défilement disparaît. C'est un effet ennuyeux car la page d'arrière-plan commence à se déplacer lorsque le modal entre / disparaît. Y a-t-il un remède à cet effet?
94
Lorsque je déclenche une vue modale dans ma page, la barre de défilement disparaît. C'est un effet ennuyeux car la page d'arrière-plan commence à se déplacer lorsque le modal entre / disparaît. Y a-t-il un remède à cet effet?
Réponses:
Il s'agit d'une fonctionnalité, la classe
modal-open
est ajoutée au HTMLbody
lorsque vous affichez le modal et supprimée lorsque vous le masquez.Cela fait disparaître la barre de défilement puisque le bootstrap css dit
Vous pouvez remplacer cela en spécifiant
dans votre propre css.
la source
<style></style>
intérieurtemplateUrl
afin qu'il n'inflige pas d'autres modaux dans l'application.Je pense que l' héritage est meilleur que le défilement car lorsque vous ouvrez modal, il s'ouvrira toujours avec un défilement, mais lorsque vous n'avez pas de défilement, vous aurez le même problème. Alors je fais juste ceci:
la source
j'ai utilisé
Dans ce cas vous évitez d'afficher la barre de défilement horizontale
la source
Il est préférable d'utiliser overflow-y: faites défiler et supprimez le remplissage du corps, bootstrap modal ajouté un remplissage au corps de la page.
Compatible avec le navigateur IE: le navigateur IE fait la même chose par défaut.
la source
Dieu merci, je suis tombé sur ce post! Je tirais mes cheveux en essayant de comprendre comment récupérer mes barres de défilement lors de la fermeture de la fenêtre en utilisant mon propre lien de fermeture. J'ai essayé les suggestions pour CSS mais cela ne fonctionnait tout simplement pas correctement. Après avoir lu
J'ai trouvé une solution en utilisant jquery, donc si quelqu'un d'autre a le même problème et que les suggestions ci-dessus ne fonctionnent pas -
la source
data-dismiss="modal"
attribut à votre lien au lieu de faire quelque chose de personnalisé comme celui-ci. Bootstrap effectuera toutes les actions de fermeture appropriées lorsque vous cliquerez sur ce lien.Je jouais juste avec cette «fonctionnalité» des modaux Bootstrap. Il semble que la
.modal
classe aoverflow-y:auto;
donc le wrapper modal obtient sa propre barre de défilement lorsque le modal lui-même devient trop élevé.Si vous voulez toujours une barre de défilement (les concepteurs le font souvent) Commencez par définir le corps
Puis manipulez
.modal-open
Laissez la barre de défilement désactivée sur le corps intacte dans ce cas
Toutes les autres réponses sur cette page ont continué à faire sauter mon contenu.
La tête haute!
Bien que cette solution ait fonctionné pour moi tout le temps, hier, j'ai eu un problème en utilisant ce correctif lorsque le modal est déplaçable et trop grand pour s'adapter à l'écran (verticalement). Cela pourrait avoir quelque chose à voir avec des
position:sticky
éléments que j'ai ajoutés?la source
Mieux vaut créer votre propre fichier css pour personnaliser une certaine partie de votre bootsrap.
Ne modifiez pas le fichier css de bootstrap car il changera tout dans votre bootstrap une fois que vous l'utiliserez dans d'autres parties de votre page.
Si votre page est un peu longue, elle fournira automatiquement une barre de défilement. Et lorsque le modal est ouvert, il masquera la barre de défilement car c'est ce que le bootstrap fait par défaut.
Pour éviter de le masquer lorsque modal est ouvert, remplacez-le simplement en mettant le code css (ci-dessous) sur votre propre fichier css.
juste un vice versa ...
la source
De plus, si la fenêtre contextuelle modale doit faire défiler avec le contenu à l'intérieur et que le parent doit rester immobile, ajoutez ce qui suit à votre Custom.css (en remplaçant le css)
la source
le modal bootstrap ajoute un remplissage une fois qu'il s'ouvre afin que vous puissiez essayer ce code dans votre propre css
la source
Cela est probablement dû au fait que le premier modal (lorsqu'il est fermé) supprime la classe modal-open de l'élément body et le second ne l'ajoutera pas lors du déclenchement modal-open.
Dans ce cas, j'utiliserais l'événement pour vérifier si le modal a été complètement fermé / masqué et en ouvrir un autre
Cela attendra que le 1er modal soit fermé pour s'assurer que modal-open est supprimé du corps et l'a rajouté lorsqu'il est ouvert.
la source
J'ai juste eu ce problème moi-même, et trouver cette question m'a rapidement aidé à comprendre ce qui causait le comportement. Donc merci.
Cependant, je trouve ces solutions de contournement CSS un peu inélégantes. À moins que vous ne souhaitiez spécifiquement conserver les barres de défilement (bien que je ne puisse pas penser à une raison à cela).
Essentiellement, Bootstrap applique le padding-right à certains éléments pour compenser la suppression de la barre de défilement.
Par conséquent, tout ce que vous avez à faire est de mettre un wrapper supplémentaire avec zéro padding-right autour de votre élément problématique (et de déplacer la classe ciblée vers lui).
c'est-à-dire changer de cela ...
... pour ça...
la source
La seule réponse qui a fonctionné pour moi est la suivante:
la source