Mam element div position: fixed
w układzie, jako pasek boczny. Zostałem poproszony o pozostawienie części zawartości na górze (wewnętrznie), a resztę do przewinięcia , jeśli przepełni ona spód div.Przewiń część zawartości w kontenerze o ustalonej pozycji
Spojrzałem na this answer, jednak przedstawione tam rozwiązanie nie działa z kontenerami position: fixed
lub position: absolute
, co jest uciążliwe.
Zrobiłem demonstrację JSFiddle mojego problemu here. Duża ilość tekstu powinna idealnie przewijać, a nie przepełniać na dole strony. Wysokość nagłówka może się różnić w zależności od treści i może być animowana.
JSFiddle przykładowy kod:
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>
Bez stałej nagłówku, mogę po prostu dodać overflow-y: scroll
do div.sidebar
i mogę szczęśliwie przewijać całą jego zawartość jeśli przepełni dno pojemnika. Występują jednak problemy z posiadaniem stałego nagłówka o zmiennej wysokości u góry paska bocznego i posiadającego dowolną zawartość pod tym zwinięciem, jeśli jest zbyt długi, aby zmieścił się w kontenerze.
div.sidebar
koniecznością pobyt position: fixed
, a ja bardzo chciałbym to zrobić bez żadnych hacków, jak zrobić to jak krzyż przeglądarki, jak to możliwe. Próbowałem różnych rzeczy, ale żaden z nich nie działa i nie jestem pewien, co tu wypróbować.
Jak utworzyć element div wewnątrz kontenera position: fixed
przewijać tylko w kierunku Y, gdy zawartość przepełnia zawartość elementu div zawierającego stały nagłówek o zmiennej, nieokreślonej wysokości? Bardzo chciałbym trzymać się z dala od JS, ale jeśli będę musiał to wykorzystać, to zrobię.
Nie jestem pewien, czy to czysty roztwór css istnieje dla tego produktu. Zasadniczo próbujesz naprawić div # naprawiony, jednak gdy robisz to, biorąc go poza normalny przepływ dokumentu, więc wysokość nie będzie naciskać innych elementów w dół strony. –
Biorąc pod uwagę, że nie przewijający się element div znajduje się na górze zawartości paska bocznego, nie musi to być 'position: fixed' - może po prostu normalnie siedzieć. Chcę wiedzieć, czy istnieje sposób, aby przesunąć wierzchołek elementu 'overflow: scroll' w dół o wysokość nierozwijającego się div. W rzeczywistości nie jest to 'position: fixed'. Miałem na myśli "naprawiony", jak w "nie przewija się z przepełnieniem". – Bojangles
Wygląda na to, że zrobiłeś jakiś postęp na skrzypcach, jeśli usuniesz właściwość dolną na pasku bocznym div #, div rozwinie się, dopasowując do zawartości. –