Comment rendre la barre de défilement sur un div visible uniquement lorsque cela est nécessaire?


151

J'ai ce div:

<div style='overflow:scroll; width:400px;height:400px;'>here is some text</div>

Les barres de défilement sont toujours visibles, même si le texte ne déborde pas. Je souhaite que les barres de défilement ne soient visibles que lorsque cela est nécessaire, c'est-à-dire uniquement lorsque la zone contient suffisamment de texte pour qu'elles soient nécessaires. Comme le fait une zone de texte. Comment puis-je faire cela? Ou est ma seule option pour styliser une zone de texte pour qu'elle ressemble à un div?


Et ça. Affiche uniquement la barre de défilement lorsqu'elle est survolée. Je ne sais pas si cela vous est utile. stackoverflow.com/questions/7125185/…
Ryan Beaulieu

codepen.io/anon/pen/QwLeMG J'espère que cela peut vous aider
vishalkin

overflow: auto;ne fonctionne pas sur Android :-(
aioobe

Réponses:


313

Utilisez overflow: auto. Les barres de défilement n'apparaîtront qu'en cas de besoin.

(Sidenote, vous pouvez également spécifier uniquement la barre de défilement x ou y: overflow-x: autoet overflow-y: auto).


5
Notez que overflow-y ne fonctionne que si vous spécifiezmax-height
Black

1
overflow-y n'a pas besoin de hauteur maximale. Je n'ai jamais utilisé max-height avec overflow-y et cela fonctionnait à chaque fois.
Sumafu

1
@Sumafu vous en aurez peut-être besoin selon le cas, comme je pourrais en faire l'expérience maintenant.
David

1
Vous devez heightou max-heightdéfinir si vous utilisez absoluteou fixedpositionnez sur l'élément de débordement, car ils empêchent l'élément de se redimensionner en fonction des limites de la page ou de la fenêtre.
Scott Schupbach

15

essaye ça:

<div style='overflow:auto; width:400px;height:400px;'>here is some text</div>

7

essayer

<div style='overflow:auto; width:400px;height:400px;'>here is some text</div>

6

essayer

<div id="boxscroll2" style="overflow: auto; position: relative;" tabindex="5001">

0

J'ai trouvé que la hauteur de la div est toujours affichée, qu'elle contient du texte ou non. Vous pouvez donc l'utiliser pour de meilleurs résultats.

<div style=" overflow:auto;max-height:300px; max-width:300px;"></div>

0

Vous pouvez essayer avec ci-dessous un:

  <div style="width: 100%; height: 100%; overflow-x: visible; overflow-y: scroll;">Text</div>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.