Z następującymi HTML
iCSS
.container {
position: relative;
border: solid 1px red;
height: 256px;
width: 256px;
overflow: auto;
}
.full-height {
position: absolute;
top: 0;
left: 0;
right: 128px;
bottom: 0;
background: blue;
}
<div class="container">
<div class="full-height">
</div>
</div>
W razie div
potrzeby wnętrze zajmuje całą głowę pojemnika. Jeśli teraz dodam inną, flow, zawartość do kontenera, taką jak:
.container {
position: relative;
border: solid 1px red;
height: 256px;
width: 256px;
overflow: auto;
}
.full-height {
position: absolute;
top: 0;
left: 0;
right: 128px;
bottom: 0;
background: blue;
}
<div class="container">
<div class="full-height">
</div>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aspernatur mollitia maxime facere quae cumque perferendis cum atque quia repellendus rerum eaque quod quibusdam incidunt blanditiis possimus temporibus reiciendis deserunt sequi eveniet necessitatibus
maiores quas assumenda voluptate qui odio laboriosam totam repudiandae? Doloremque dignissimos voluptatibus eveniet rem quasi minus ex cumque esse culpa cupiditate cum architecto! Facilis deleniti unde suscipit minima obcaecati vero ea soluta odio cupiditate
placeat vitae nesciunt quis alias dolorum nemo sint facere. Deleniti itaque incidunt eligendi qui nemo corporis ducimus beatae consequatur est iusto dolorum consequuntur vero debitis saepe voluptatem impedit sint ea numquam quia voluptate quidem.
</div>
Następnie pojemnik przewija się zgodnie z potrzebą, jednakże element pozycjonowany absolutnie nie jest już zakotwiczony na dnie pojemnika, ale zatrzymuje się na początkowo widocznym dnie pojemnika. Moje pytanie brzmi; czy istnieje sposób, aby element pozycjonowany absolutnie był pełną wysokością przewijania swojego kontenera bez użycia JS
?
top: 0;
go usuniesz , po prostu już nie działa.innerHeight
to będzie trudne. Niestetyposition:fixed
nie działa w kontenerze, ponieważ jest poza przepływem, więc toOdpowiedzi:
Musisz zawinąć tekst w
div
element i umieścić wewnątrz niego element pozycjonowany absolutnie.CSS:
Ustawienie pozycji wewnętrznego elementu DIV tak, aby
relative
absolutnie pozycjonować elementy wewnątrz niego, oprze swoją pozycję i wysokość na nim, a nie na elemencie.container
div, który ma stałą wysokość. Bez wewnętrznego, względnie umiejscowionegodiv
elementu.full-height
div zawsze obliczy swoje wymiary i położenie na podstawie.container
.Pokaż fragment kodu
http://jsfiddle.net/M5cTN/
źródło
fill-height
Element jest wyraźnie przewijanie treści, nie PO chce on zakotwiczony? (Zmieniając niebieskie tło na obraz tła, możesz zobaczyć, co mam na myśli, gdy mówię, że nie jest zakotwiczone. Jsfiddle.net/M5cTN/82 )position: fixed;
rozwiąże Twój problem. Jako przykład, przejrzyj moją implementację nakładki stałego obszaru wiadomości (wypełnianego programowo):Oraz w HTML
Kiedy
#data
staje się dłuższy od ekranu,#mess
utrzymuje swoją pozycję na ekranie,#data
przewijając się pod nim.źródło
transform: translate3d(0,0,0);
na rodzica spowoduje, żeposition: fixed
stanie się spokrewniony z rodzicem. Źródło coderwall.com/p/2wzj-a/…Więc gaiour ma rację, ale jeśli szukasz elementu o pełnej wysokości, który nie przewija się wraz z zawartością, ale w rzeczywistości jest wysokością kontenera, oto poprawka. Mają rodzica, którego wysokość powoduje przepełnienie, kontener zawartości, który ma 100% wysokości
overflow: scroll
, a także rodzeństwo można ustawić zgodnie z rozmiarem nadrzędnym, a nie rozmiarem elementu przewijania. Oto skrzypce: http://jsfiddle.net/M5cTN/196/i odpowiedni kod:
html:
css:
źródło
Wpadłem w taką sytuację i utworzenie dodatkowego div było niepraktyczne. Skończyło się na tym, że
full-height
ustawiłem div naheight: 10000%; overflow: hidden;
Z pewnością nie jest to najczystsze rozwiązanie, ale działa naprawdę szybko.
źródło