Ho un div position: fixed
in un layout, come barra laterale. Mi è stato chiesto di avere parte del suo contenuto rimanendo fisso in cima (internamente), e il resto dello scroll per scorrere se trabocca dal fondo del div.Scorri parte del contenuto nel contenitore di posizione fissa
Ho dato un'occhiata a this answer, tuttavia la soluzione presentata non funziona con i contenitori position: fixed
o position: absolute
, il che è un problema.
Ho fatto una dimostrazione JSFiddle del mio problema here. La grande quantità di testo dovrebbe idealmente scorrere, invece di traboccare nella parte inferiore della pagina. L'altezza dell'intestazione può variare a seconda del contenuto e può essere animata.
codice di esempio JSFiddle:
CSS:
div.sidebar {
padding: 10px;
border: 1px solid #ccc;
background: #fff;
position: fixed;
top: 10px;
left: 10px;
bottom: 10px;
width: 280px;
}
div#fixed {
background: #76a7dc;
padding-bottom: 10px;
color: #fff;
}
div#scrollable {
overlow-y: scroll;
}
HTML:
<div class="sidebar">
<div id="fixed">
Fixed content here, can be of varying height using jQuery $.animate()
</div>
<div id="scrollable">
Potentially long content
</div>
</div>
Senza un colpo di testa fissa, posso semplicemente aggiungere overflow-y: scroll
a div.sidebar
e posso tranquillamente scorrere tutto il suo contenuto se trabocca il fondo del contenitore. Tuttavia, sto riscontrando problemi con l'intestazione fissa e variabile dell'altezza nella parte superiore della barra laterale e l'eventuale presenza di contenuto al di sotto di tale scorrimento se è troppo lungo per essere inserito nel contenitore.
div.sidebar
must soggiorno position: fixed
, e mi piacerebbe molto fare questo senza alcun hack, così come rendere il più cross browser possibile. Ho provato varie cose, ma nessuna funziona, e non sono sicuro su cosa provare da qui.
Come posso fare un div all'interno di uno scroll position: fixed
per il contenitore solo nella direzione Y quando il suo contenuto supera il div contenente, con un'intestazione fissa di altezza variabile e variabile? Mi piacerebbe molto stare lontano da JS, ma se dovessi usarlo lo farò.
Non sono sicuro se esiste una soluzione css pura per questo. Fondamentalmente il tuo tentativo di correggere il div # è stato corretto, tuttavia quando lo fai lo togli dal normale flusso del documento in modo che l'altezza non spinga altri elementi lungo la pagina. –
Considerando che il div non scrolling è nella parte superiore del contenuto della barra laterale, non deve essere "position: fixed" - può semplicemente stare nel flusso normale. Voglio sapere se c'è un modo per spingere verso l'alto l'elemento 'overflow: scroll' verso il basso all'altezza del div non scrolling. In realtà non è 'position: fixed'. Intendevo "fisso" come in "non scorre con overflow". – Bojangles
sembra che tu abbia fatto dei progressi sul tuo violino, se rimuovi la proprietà in basso sulla barra laterale div # il div si espanderà per adattarsi al contenuto. –