ventana toda que pantalla ocupe div contenido calcular bootstrap attribute ancho altura alto ajustar html css html5 css3

html - toda - div que ocupe todo el ancho de la pantalla



Rellene el espacio vertical restante: solo CSS (9)

Necesito llenar el espacio vertical restante de #wrapper en #first con #second div.

Necesito una única solución CSS.

HTML:

<div id="wrapper"> <div id="first"></div> <div id="second"></div> </div>

CSS:

#wrapper { width:300px; height:100%; } #first { width:300px; height:200px; background-color:#F5DEB3; } #second { width:300px; height:100%; //<-----This should fill the remaining space background-color:#9ACD32; }


Solución Flexbox

Nota: Agregue los prefijos del proveedor de flex si sus navegadores compatibles lo requieren.

html, body { height: 100%; } .wrapper { display: flex; flex-direction: column; width: 300px; height: 100%; } .first { height: 50px; } .second { flex-grow: 1; }

<div class="wrapper"> <div class="first" style="background:#b2efd8">First</div> <div class="second" style="background:#80c7cd">Second</div> </div>


¿Has intentado cambiar la altura de la envoltura a vh en lugar de%?

#wrapper { width:300px; height:100vh; }

Eso funcionó muy bien para mí cuando quería llenar mi página con un fondo degradado, por ejemplo ...


Puede utilizar CSS Flexbox en lugar de otro valor de visualización. El módulo Flexbox Layout (Caja flexible) tiene como objetivo proporcionar una forma más eficiente de diseñar, alinear y distribuir el espacio entre los elementos en un contenedor, incluso cuando su tamaño es desconocido y / o dinámico.

Ejemplo

/* CONTAINER */ #wrapper { width:300px; height:300px; display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */ display: -ms-flexbox; /* TWEENER - IE 10 */ display: -webkit-flex; /* NEW - Chrome */ display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */ -ms-flex-direction: column; -moz-flex-direction: column; -webkit-flex-direction: column; flex-direction: column; } /* SOME ITEM CHILD ELEMENTS */ #first { width:300px; height: 200px; background-color:#F5DEB3; } #second { width:300px; background-color: #9ACD32; -webkit-box-flex: 1; /* OLD - iOS 6-, Safari 3.1-6 */ -moz-box-flex: 1; /* OLD - Firefox 19- */ -webkit-flex: 1; /* Chrome */ -ms-flex: 1; /* IE 10 */ flex: 1; /* NEW, */ }

jsfiddle Ejemplo

Si quieres tener soporte completo para navegadores antiguos como IE9 o inferior, deberás usar polyfills como flexy , este polyfill habilita el soporte para el modelo Flexbox pero solo para las especificaciones de 2012 del modelo flexbox.

Recientemente encontré otro polyfill para ayudarte con Internet Explorer 8 y 9 o cualquier navegador más antiguo que no tenga soporte para el modelo de flexbox, todavía no lo he probado pero dejo el enlace here

Puede encontrar una útil y completa guía sobre el modelo Flexbox de Chris Coyer aquí


Puedes hacer esto con la position:absolute; en el #second div como este:

FIDDLE

CSS:

#wrapper{ position:relative; } #second { position:absolute; top:200px; bottom:0; left:0; width:300px; background-color:#9ACD32; }

EDIT: solución alternativa

Dependiendo de su diseño y el contenido que tenga en esos divs, podría hacerlo mucho más simple y con menos marcado de esta manera:

FIDDLE

HTML:

<div id="wrapper"> <div id="first"></div> </div>

CSS:

#wrapper { height:100%; width:300px; background-color:#9ACD32; } #first { background-color:#F5DEB3; height: 200px; }


Si no desea tener alturas de fijación para su contenedor principal (superior, inferior, ...), simplemente puede usar este css-file para obtener un contenedor flexible que utiliza el espacio restante incl. ¡¡¡trabajando!!! barras de desplazamiento

Fiddler

<!DOCTYPE html> <html > <head> <title>Flex Container</title> <link rel="stylesheet" href="http://demo.qooxdoo.org/5.0/framework/indigo-5.0.css"> <style> .cont{ background-color: blue; position: absolute; height: 100%; width: 100%; } .headerContainer { background-color: green; height: 100px; width: 100%; } .mainContainer { background-color: white; width: 100%; overflow: scroll } .footerContainer { background-color: gray; height: 100px; width: 100%; } </style> </head> <body class="qx-flex-ready" style="height: 100%"> <div class="qx-vbox cont"> <div class="headerContainer">Cell 1: flex1</div> <div class="mainContainer qx-flex3"> x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br> x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br> x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br> x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br> x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br> </div> <div class="footerContainer" >Cell 3: flex1</div> </div> </body> </html>


Si puede agregar un par adicional de divs para que su html se vea así:

<div id="wrapper"> <div id="first" class="row"> <div class="cell"></div> </div> <div id="second" class="row"> <div class="cell"></div> </div> </div>

Puede hacer uso de la display:table propiedades de la display:table :

#wrapper { width:300px; height:100%; display:table; } .row { display:table-row; } .cell { display:table-cell; } #first .cell { height:200px; background-color:#F5DEB3; } #second .cell { background-color:#9ACD32; }

Example


Solo puede agregar la opción de desbordamiento: automático :

#second { width:300px; height:100%; overflow: auto; background-color:#9ACD32; }


Todo lo que necesitas es un poco de marcado mejorado. Envuelve el segundo dentro del primero y se renderizará debajo.

<div id="wrapper"> <div id="first"> Here comes the first content <div id="second">I will render below the first content</div> </div> </div>

Demo


necesita javascript y algunos cálculos del lado del cliente: http://jsfiddle.net/omegaiori/NERE8/2/

necesitarás jquery para lograr de manera efectiva lo que deseas. esta función es muy simple pero muy efectiva:

(function () { var heights = $("#wrapper").outerHeight(true); var outerHeights = $("#first").outerHeight(true); jQuery(''#second'').css(''height'', (heights - outerHeights) + "px"); })();

primero detecta la altura de la envoltura, ya que está configurada al 100%, es diferente cada vez (depende de qué pantalla esté aterrizando). en el segundo paso, le da a #second div la altura apropiada restando de la altura de la envoltura la #first altura del div. el resultado es la altura disponible en el envoltorio div