Со следующими HTML
иCSS
.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>
Внутренняя div
часть по желанию занимает всю головку контейнера. Если я сейчас добавлю в контейнер какой-нибудь другой, поток, контент, например:
.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>
Затем контейнер прокручивается по желанию, однако абсолютно позиционированный элемент больше не прикрепляется к дну контейнера, а останавливается на начальном видимом дне контейнера. У меня вопрос; есть ли способ, чтобы абсолютно позиционированный элемент был полной высотой прокрутки своего контейнера без использования JS
?
top: 0;
просто больше не работает.innerHeight
это будет сложно. К сожалениюposition:fixed
, не работает внутри контейнера, потому что он находится вне потока, поэтому этот «обходной путь» также не сработает :(Ответы:
Вам нужно обернуть текст в
div
элемент и включить в него абсолютно позиционированный элемент.CSS:
Установка
relative
положения внутреннего блока div в положение делает элементы абсолютного положения внутри него основанием для своего положения и высоты на нем, а не на.container
div, который имеет фиксированную высоту. Без внутреннего, относительно позиционированногоdiv
,.full-height
div всегда будет вычислять свои размеры и положение на основе.container
.Показать фрагмент кода
http://jsfiddle.net/M5cTN/
источник
fill-height
Элемент явно скроллинг с содержанием, не ОП хочу это якорь? (Изменив синий фон на фоновое изображение, вы поймете, что я имею в виду, когда говорю, что он не привязан к jsfiddle.net/M5cTN/82 )position: fixed;
решит вашу проблему. В качестве примера рассмотрим мою реализацию наложения фиксированной области сообщения (заполняемой программно):А в HTML
Когда экран
#data
становится длиннее,#mess
сохраняет свое положение на экране, пока#data
прокручивается под ним.источник
transform: translate3d(0,0,0);
на родителя заставитposition: fixed
стать относительным к родителю. Источник coderwall.com/p/2wzj-a/…Итак, gaiour прав, но если вы ищете элемент в полную высоту, который не прокручивается вместе с содержимым, а фактически является высотой контейнера, вот исправление. Имейте родительский элемент с высотой, вызывающей переполнение, контейнер содержимого, который имеет высоту 100%
overflow: scroll
, и тогда родственный брат может быть расположен в соответствии с размером родительского элемента, а не размером элемента прокрутки. Вот скрипка: http://jsfiddle.net/M5cTN/196/и соответствующий код:
html:
css:
источник
Я столкнулся с этой ситуацией, и создание лишнего div было непрактичным. В итоге я просто установил
full-height
div наheight: 10000%; overflow: hidden;
Конечно, не самое чистое решение, но работает очень быстро.
источник