J'ai un modal avec une superposition de toile de fond, voici mon exemple:Ne peut pas faire défiler vers le haut avec modal et superposition avec affichage flex
https://codepen.io/tyrellrummage/full/XeRQYm/
(faire la petite fenêtre pour voir le haut et le bas débordement).
Fondamentalement, la structure est:
<div class="overlay">
<div class="modal">
//content
</div>
</div>
et le style actuel:
.overlay{
display: flex;
align-items: center;
justify-content: center;
overflow-y: scroll;
}
.modal{
margin: 4rem 0;
}
cela fonctionne pour la partie inférieure du modal, mais la partie supérieure se garni (découper). Comment puis-je résoudre ce problème uniquement avec CSS?
Vous devez ajouter '.overlay {padding : 4rem 0; overflow-y: automatique; box-sizing: border-box;} .modal {margin: auto 0;} 'sur votre CSS pour appliquer la solution de Michael_B ([stylo ici] (https://codepen.io/ anon/pen/aLWeKZ).). Une autre option consiste à vérifier si la hauteur de '.modal' est plus petite que celle de' .overlay' et à ajuster la propriété 'align-items':' if (document.querySelector ('. Overlay'). ClientHeight .modal'). clientHeight) {document.querySelector ('. overlay'). style = 'align-items: flex-start;';} '@Michael_B: ce n'est pas un *** exact ** * dupliquer. À votre santé! –
Merci en fait, j'ai utilisé 'align-items: flex-start' et cela a fonctionné. Si tu veux, réponds-y et je marquerai comme correct. – nick
Les questions en double ne peuvent pas être répondues. Mais c'est bon, ne t'inquiète pas. Michael a, en principe, raison. Votre question *** est *** un doublon. La raison pour laquelle j'ai dit que ce n'est pas un doublon ** exact ** est parce que vous devez également savoir appliquer 'box-sizing: border-box' à' .overflow', ce qui nécessite un niveau décent de connaissances CSS. En termes d'être utile aux futurs visiteurs, votre question est à la limite entre être un doublon et mériter sa propre réponse. C'est discutable. –