2011-11-18 11 views
44

He estado buscando en Google esto toda la mañana y parece que no puede conseguir que funcione:CSS - relativa posicionado div padre no se extiende a la altura div infantil absoluta

tengo un DIV padre con posicionamiento relativo y dos Configuración secundaria DIV de columna dentro de ella, ambas posicionadas Absoluta. Necesito la altura del DIV padre para estirar con el contenido de los DIV internos.

He intentado poner un tipo de bit .clearfix antes de las etiquetas de cierre para #content pero no estoy flotando nada. También intenté agregar un atributo float al #content div en vano. ¿Puede alguien señalarme la dirección correcta aquí? Claramente, me falta algo con la forma en que las pantallas anidadas se afectan entre sí.

CSS:

#content { 
width: 780px; 
padding: 10px; 
position: relative; 
background: #8b847d; 
} 

#leftcol { 
width: 500px; 
position: absolute; 
} 

#rightcol { 
width: 270px; 
position: absolute; 
left: 500px; 
margin-left: 10px; 
text-align: center; 
} 

HTML:

<div id="content"> 

<div id="leftcol"> 
<p>Lorem Ipsum</p> 
</div><!-- /leftcol --> 

<div id="rightcol"> 
<img src="images/thumb1.jpg"> 
<img src="images/thumb2.jpg"> 
</div><!-- /rightcol --> 

<br style="clear:both;"> 

</div><!-- /content --> 
+5

¿Hora de recoger una respuesta? –

Respuesta

1

No es necesario position: absolute para esta tarea.

#content { 
    width: 780px; 
    padding: 10px; 
    position: relative; 
    background: #8b847d; 
} 

#leftcol { 
    width: 500px; 
    float: left; 
} 

#rightcol { 
    width: 270px; 
    position: relative; 
    margin-left: 510px; 
    text-align: center; 
} 
+0

Esto funciona pero no me da la capacidad de tener la columna derecha o izquierda presionar la altura del div principal, sin embargo agradezco su respuesta y aprendí algo de su respuesta. – user1054093

+1

La altura del div principal debe crecer con la altura de los divs secundarios. necesita dejar el elemento 'clear: both' como en el html de su pregunta – DanielB

4

Los divisores de columna no afectarán a su div mientras tengan posiciones absolutas, ya que se eliminan del flujo de página normal.

En su lugar, intente flotarlos y luego tener un div con claro: ambos; después de ellos.

+0

Entonces, ¿mi mejor apuesta para que el div padre siempre se extienda por debajo del contenido sería un flotante de cada columna a la izquierda y a la derecha, respectivamente? – user1054093

+0

Puede hacer flotar ambos a la izquierda, o flotarlos a la derecha, o flotar uno en cada dirección que no importe. Si luego tiene un div con claro: ambos; debajo de ellos (aún dentro del div principal) tu div principal se extenderá hasta la parte inferior de tus dos columnas. – Helen

6

despejando funciona pero he tenido resultados extraños. luego encontré una publicación que lo hace mucho más fácil y perfecto en todos los navegadores.

Configure sus divisiones secundarias para que flote: izquierda/derecha. Luego ponga "overflow: hidden" en el padre. Como no ha especificado una altura, se ajustará perfectamente a los elementos secundarios. No he usado clearing por años ahora.

+7

¡Esto no hace que la altura del div principal crezca con el elemento secundario absoluto! – Nielsm

+0

@Nielsm lo sé, por lo tanto, por qué dije "configurar los divs de su hijo para flotar" (en lugar de posición absoluta). intente leer toda la respuesta antes de comentar en el futuro, le ahorra un aspecto tonto. – Lee

+0

Lo siento, escribí mal mi comentario. De hecho, reemplacé la posición: absoluta con flotación: izquierda. No funciona el truco en mi caso. – Nielsm

101

El lado oscuro de la fuerza es un camino hacia muchas habilidades que algunos consideran antinaturales.

$(document).ready(function() 
{ 
    var objHeight = 0; 
    $.each($('#content').children(), function(){ 
      objHeight += $(this).height(); 
    }); 
    $('#content').height(objHeight); 
});​ 
+4

He votado esto exclusivamente por su descripción. – Beans

2

acabo de estado luchando con esto por un tiempo y encontré una solución real CSS sólo es cambiar el posicionamiento de divs 'absolutos' a 'relativo'. Esto realmente funciona!

Probado en un Mac, utilizando Safari 5.1.5 y Chrome 21.0 ....

Esperamos que esto ayude a alguien más.

+8

Esto no resuelve el problema si se requieren divs absolutos –

Cuestiones relacionadas