626 votes

Faire défiler un div verticalement à l'aide de CSS

Ce site

<div id="" style="overflow:scroll; height:400px;">

donne un div que l'utilisateur peut faire défiler à la fois horizontalement et verticalement. Comment puis-je le modifier pour que la div soit uniquement défilant verticalement ?

45 votes

Il y a overflow-x et overflow-y en CSS3, qui font ce que vous voulez.

0 votes

Assurez-vous que votre élément n'a pas pointer-events: none; car cela désactivera le défilement

773voto

animuson Points 23184

Vous avez tout prévu, à part l'utilisation de la mauvaise propriété. La barre de défilement peut être déclenchée par n'importe quelle propriété. overflow , overflow-x ou overflow-y et chacun d'eux peut être réglé sur l'un des éléments suivants visible , hidden , scroll , auto ou inherit . Vous êtes actuellement en train de regarder ces deux-là :

  • auto - Cette valeur tiendra compte de la largeur et de la hauteur de la boîte. Si elles sont définies, la boîte ne s'étendra pas au-delà de ces limites. Au lieu de cela (si le contenu dépasse ces limites), il créera une barre de défilement pour chaque limite (ou les deux) qui dépasse sa longueur.

  • scroll - Ces valeurs forces une barre de défilement, quoi qu'il arrive, même si le contenu ne dépasse pas la limite fixée. Si le contenu n'a pas besoin d'être défilé, la barre apparaîtra comme "désactivée" ou non interactive.

Si vous toujours pour que la barre de défilement verticale apparaisse :

Vous devez utiliser overflow-y: scroll . Ce site forces une barre de défilement qui apparaît pour l'axe vertical, qu'elle soit nécessaire ou non. Si vous ne pouvez pas faire défiler le contexte, elle apparaîtra comme une barre de défilement "désactivée".

Si vous voulez qu'une barre de défilement apparaisse uniquement si vous pouvez faire défiler la boîte :

Il suffit d'utiliser overflow: auto . Étant donné que, par défaut, votre contenu passe à la ligne suivante lorsqu'il ne tient pas sur la ligne en cours, une barre de défilement horizontale ne sera pas créée (à moins qu'elle ne se trouve sur un élément pour lequel le retour à la ligne est désactivé). Pour ce qui est de la barre verticale, elle permettra au contenu de s'étendre jusqu'à la hauteur que vous avez spécifiée. S'il dépasse cette hauteur, il affichera une barre de défilement verticale pour visualiser le reste du contenu, mais n'affichera pas de barre de défilement s'il ne dépasse pas la hauteur.

6 votes

L'utilisation de overflow : auto crée en quelque sorte un gigantesque bloc d'espace vide en bas de la page. Est-ce un phénomène courant ?

297voto

Milap Points 2217

Essayez comme ça.

<div style="overflow-y: scroll; height:400px;">

1 votes

Bonne solution, mais le défilement est toujours visible, quelle que soit la hauteur.

7 votes

Si vous définissez la valeur overflow-y à 'auto', le scroll sera visible après la hauteur définie. par exemple <div style = "overflow-y : auto ; height:200">

144voto

VVS Points 20

Pour une hauteur de fenêtre de 100%, utilisez :

overflow: auto;
max-height: 100vh;

0 votes

Merci pour la hauteur maximale. C'est plus souvent nécessaire dans mon cas d'utilisation.

59voto

Second Rikudo Points 59550

Utilisez overflow-y: auto; sur le div.

Vous devez également définir la largeur.

15 votes

Pourquoi est-il impératif de définir la largeur ?

1 votes

@LeeGee vous avez besoin de la largeur pour calculer si le contenu de la div a dépassé les limites de la div et donc s'il faut activer le défilement ou non.

0 votes

La largeur n'est-elle pas de 100% par défaut ?

33voto

divykj Points 516

Vous pouvez utiliser ce code à la place.

<div id="" style="overflow-y:scroll; overflow-x:hidden; height:400px;">

débordement-x : La propriété overflow-x spécifie ce qu'il faut faire avec les bords gauche/droit du contenu - s'il déborde de la zone de contenu de l'élément.
débordement-y : La propriété overflow-y spécifie ce qu'il faut faire avec les bords supérieurs et inférieurs du contenu - s'il déborde de la zone de contenu de l'élément.

Valeurs
visible : Valeur par défaut. Le contenu n'est pas coupé, et il peut être rendu en dehors de la boîte de contenu.
caché : Le contenu est coupé - et aucun mécanisme de défilement n'est prévu.
défilement : Le contenu est écrêté et un mécanisme de défilement est prévu.
auto : Devrait entraîner la mise en place d'un mécanisme de défilement pour les boîtes qui débordent.
initial : Définit cette propriété à sa valeur par défaut.
hériter de Hérite de cette propriété de son élément parent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X