Con lo siguiente HTML
yCSS
.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>
El interior div
ocupa la cabeza completa del recipiente como se desee. Si ahora agrego algún otro contenido de flujo al contenedor, como:
.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>
Luego, el contenedor se desplaza como se desee, sin embargo, el elemento absolutamente posicionado ya no está anclado al fondo del contenedor, sino que se detiene en el fondo visible inicial del contenedor. Mi pregunta es; ¿Hay alguna forma de que el elemento absolutamente posicionado tenga la altura de desplazamiento completa de su contenedor sin usarlo JS
?
top: 0;
, simplemente ya no funciona.innerHeight
, eso será difícil. Desafortunadamenteposition:fixed
, no funciona dentro del contenedor porque está fuera del flujo, por lo que esta 'solución alternativa' no funcionaría también :(Respuestas:
Debe envolver el texto en un
div
elemento e incluir el elemento absolutamente posicionado dentro de él.CSS:
Establecer la posición del div interno
relative
hace que los elementos de posición absoluta dentro de él basen su posición y altura en él en lugar de en el.container
div, que tiene una altura fija. Sin el interior, relativamente posicionadodiv
, el.full-height
div siempre calculará sus dimensiones y posición basándose en.container
.Mostrar fragmento de código
http://jsfiddle.net/M5cTN/
fuente
fill-height
elemento se desplaza claramente con el contenido, ¿no quería el OP que estuviera anclado? (Al cambiar el fondo azul a una imagen de fondo, puede ver lo que quiero decir cuando digo que no está anclado jsfiddle.net/M5cTN/82 )position: fixed;
resolverá tu problema. Como ejemplo, revise mi implementación de una superposición de área de mensajes fija (poblada mediante programación):Y en el HTML
Cuando
#data
se alarga la pantalla,#mess
mantiene su posición en la pantalla, mientras se#data
desplaza por debajo de ella.fuente
transform: translate3d(0,0,0);
en el padre haráposition: fixed
que se vuelva pariente del padre. Fuente coderwall.com/p/2wzj-a/…Así que gaiour tiene razón, pero si está buscando un elemento de altura completa que no se desplace con el contenido, pero que en realidad sea la altura del contenedor, aquí está la solución. Tener un padre con una altura que provoque desbordamiento, un contenedor de contenido que tenga una altura del 100%
overflow: scroll
y un hermano que se pueda colocar de acuerdo con el tamaño del padre, no el tamaño del elemento de desplazamiento. Aquí está el violín: http://jsfiddle.net/M5cTN/196/y el código correspondiente:
html:
css:
fuente
Me encontré con esta situación y crear un div extra no fue práctico. Terminé configurando el
full-height
div enheight: 10000%; overflow: hidden;
Claramente no es la solución más limpia, pero funciona muy rápido.
fuente