Rendere scorrevole un div verticalmente usando i CSS


560

Questo

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

offre divall'utente la possibilità di scorrere sia in orizzontale che in verticale. Come posso cambiarlo in modo che il div sia scorrevole solo verticalmente?


36
C'è overflow-xe overflow-yin CSS3, che fa quello che vuoi.
Marc B

Risposte:


699

Hai coperto a parte l'utilizzo della proprietà sbagliata. La barra di scorrimento può essere attivato con qualsiasi proprietà overflow, overflow-xo overflow-ye ciascuno può essere impostata su qualsiasi visible, hidden, scroll, auto, o inherit. Attualmente stai guardando questi due:

  • auto- Questo valore esaminerà la larghezza e l'altezza della scatola. Se sono definiti, non consentirà alla casella di espandersi oltre tali limiti. Invece (se il contenuto supera tali limiti), verrà creata una barra di scorrimento per entrambi i limiti (o entrambi) che supera la sua lunghezza.

  • scroll- Questo valore forza una barra di scorrimento, qualunque cosa accada, anche se il contenuto non supera il limite impostato. Se non è necessario scorrere il contenuto, la barra apparirà come "disabilitata" o non interattiva.

Se vuoi sempre che appaia la barra di scorrimento verticale:

Si dovrebbe usare overflow-y: scroll. Ciò forza la visualizzazione di una barra di scorrimento per l'asse verticale indipendentemente dal fatto che sia necessaria. Se non è possibile scorrere il contesto, verrà visualizzato come una barra di scorrimento "disabilitata".

Se desideri visualizzare solo una barra di scorrimento, puoi scorrere la casella:

Basta usare overflow: auto. Dal momento che il tuo contenuto per impostazione predefinita si interrompe alla riga successiva quando non può adattarsi alla riga corrente, non verrà creata una barra di scorrimento orizzontale (a meno che non si trovi su un elemento che ha il ritorno a capo disattivato). Per la barra verticale, consentirà al contenuto di espandersi fino all'altezza specificata. Se supera tale altezza, mostrerà una barra di scorrimento verticale per visualizzare il resto del contenuto, ma non mostrerà una barra di scorrimento se non supera l'altezza.


4
usando overflow: auto in qualche modo crea un gigantesco blocco di spazio vuoto nella parte inferiore della pagina. È un evento comune?
Stupid.Fat.Cat

268

Prova così.

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


1
Buona soluzione, ma lo scorrimento è sempre visibile indipendentemente dall'altezza
FindOutIslamNow

7
se si imposta il valore di overflow-y su "auto", lo scorrimento sarà visibile dopo l'altezza definita. ad esempio <div style = "overflow-y: auto; height: 200">
Umair Gul

123

Per un'altezza del viewport del 100% utilizzare:

overflow: auto;
max-height: 100vh;

52

Utilizzare overflow-y: auto;sul div.

Inoltre, dovresti impostare anche la larghezza.


13
Perché è indispensabile impostare la larghezza?
LeeGee,

1
@LeeGee è necessario larghezza per calcolare se il contenuto del div è andato oltre i confini del div e quindi se abilitare lo scorrimento o meno.
Roberto Bonini,

La larghezza non è al 100% per impostazione predefinita?
LeeGee,

1
@LeeGee No, è di autodefault. Di solito, ciò significa il 100% della larghezza del genitore, ma non sempre.
Madara's Ghost

31

È possibile utilizzare questo codice invece.

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


overflow-x : la proprietà overflow-x specifica cosa fare con i bordi sinistro / destro del contenuto - se trabocca l'area del contenuto dell'elemento.
overflow-y : la proprietà overflow-y specifica cosa fare con i bordi superiore / inferiore del contenuto - se trabocca l'area del contenuto dell'elemento.

Valori
visibili : valore predefinito. Il contenuto non viene ritagliato e potrebbe essere reso al di fuori della casella del contenuto.
nascosto : il contenuto è troncato e non viene fornito alcun meccanismo di scorrimento.
scroll : il contenuto viene troncato e viene fornito un meccanismo di scorrimento.
auto : dovrebbe causare un meccanismo di scorrimento per le caselle di overflow.
iniziale : imposta questa proprietà sul valore predefinito.
eredita Eredita questa proprietà dal suo elemento genitore.


15

È possibile utilizzare overflow-y: scrollper lo scorrimento verticale.

<div  style="overflow-y:scroll; height:400px; background:gray">
  Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
  
  Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
  
  Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
  
  Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
  
  Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
  
 </div>


9

Il problema con tutte queste risposte per me era che non rispondevano. Ho dovuto avere un'altezza fissa per un div genitore che non volevo. Inoltre, non volevo passare un sacco di tempo a pensare alle domande dei media. Se stai usando angolare, puoi usare il tabset bootstrap e farà tutto il duro lavoro per te. Sarai in grado di scorrere il contenuto interno e sarà reattivo. Quando configuri la scheda, fallo in questo modo: $scope.tab = { title: '', url: '', theclass: '', ative: true };... il punto è che non vuoi un titolo o l'icona di un'immagine. quindi nascondi il contorno della scheda in cs in questo modo:

.nav-tabs {
   border-bottom:none; 
} 

e anche questo .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {border:none;} e infine per rimuovere la scheda invisibile su cui è ancora possibile fare clic se non si implementa questo:.nav > li > a {padding:0px;margin:0px;}

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.