Maison > Questions et réponses > le corps du texte
P粉8462943032023-08-23 09:16:51
Je n’ai utilisé que 3 contenants pour obtenir cet effet. L'astuce consiste à séparer le conteneur flexbox du conteneur qui contrôle le défilement. Enfin, mettez le tout dans un conteneur racine pour le centrer. Voici les styles clés dont vous avez besoin pour créer l'effet :
.root { display: flex; justify-content: center; align-items: center; } .scroll-container { margin: auto; max-height: 100%; overflow: auto; } .flex-container { display: flex; flex-direction: column; justify-content: center; }
<div class="root"> <div class="scroll-container"> <div class="flex-container"> <p>Lorem ipsum dolor sit amet.</p> </div> </div> </div>
J'ai créé une démo ici : https://jsfiddle.net/r5jxtgba/14/
P粉6708387352023-08-23 00:51:49
Flexbox rend le centrage très facile.
Appliquez simplement align-items: center
和justify-content: center
sur le conteneur flexible et vos éléments flexibles seront centrés verticalement et horizontalement.
Cependant, cette approche pose un problème lorsque les éléments flexibles sont plus grands que le conteneur flexible.
Comme indiqué dans la question, lorsqu'un élément flexible déborde du conteneur, le haut devient inaccessible.
Avec un débordement horizontal, la partie gauche devient inaccessible (ou la partie droite dans les langages RTL).
Voici un exemple de conteneur LTR contenant justify-content: center
et trois éléments flexibles :
Voir le bas de cette réponse pour une description de ce comportement.
Pour résoudre ce problème, utilisez marges automatiques Flexbox au lieu de justify-content
.
Grâce aux marges auto
, les éléments flexibles débordés peuvent être centrés verticalement et horizontalement sans perdre l'accès à aucune partie d'entre eux.
Alors, n'utilisez pas ce code sur un conteneur flexible :
#flex-container { align-items: center; justify-content: center; }
Utilisez ce code sur l'article flexible :
.flex-item { margin: auto; }
Ajoutez la valeur safe
à vos règles d'alignement des mots clés comme ceci :
justify-content: safe center
ou
align-self: safe center
De Spécification du module d'alignement de boîte CSS :
Remarque : Le module Box Alignment fonctionne avec plusieurs modèles de disposition de boîtes, pas seulement avec la flexibilité. Ainsi, dans l'extrait de spécifications ci-dessus, les termes entre crochets sont en fait « corps d'alignement », « conteneur d'alignement » et « start
». J'utilise une terminologie spécifique à Flex pour rester concentré sur ce problème particulier.