2012-07-13 33 views
5

En mi página html tengo dos divs dentro de un contenedor div. Los dos div interiores tienen una 'posición: aboslute'. Debido a que deben colocarse en la esquina inferior izquierda del contenedor div.Divs absolutos uno al lado del otro

Esto funciona muy bien cuando el contenedor div solo tiene un div interno. Pero cuando agrego un 2º div, entonces el 2º div se coloca encima del primer div interno. Lo cual tiene sentido por supuesto. Pero ahora estoy tratando de encontrar una forma de tenerlos uno al lado del otro en lugar de superponerse entre ellos.

Se generan los divs internos. Entonces no puedo agregarles manualmente una ID. Todo lo que tienen es un nombre de clase.

Example:

<div id="container"> 
    <div class="icon">ICON1</div> 
    <div class="icon">ICON2</div> 
</div> 
#container { 
    position: relative; 
    width: 200px; 
    height: 200px; 
    border: 1px solid red; 
} 

.icon { 
    position: absolute; 
    bottom: 0; 
    left: 0; 
    border: 1px solid green; 
} 

Alguien tiene alguna idea de cómo resolver esto?

+0

puede colocarlos relativamente posicionados, porque entonces mantienen el diseño relativo a su elemento principal (contenedor) – jeschafe

+0

¿Qué hay de colocar cada ICONO en un elemento 'li', en oposición al elemento 'div'? ¡Los artículos de la lista de estilos son muy flexibles y simples! – Liggy

+0

solo use first-child/last-child, vea mi respuesta – Huangism

Respuesta

6

Utilice el posicionamiento absoluto en un elemento de envoltura en lugar de cada icono individual, entonces se puede flotar o la posición de los iconos de la forma en que le gusta dentro de ese contenedor:

<div id="container"> 
    <div class="icon-wrapper"> 
     <div class="icon">ICON1</div> 
     <div class="icon">ICON2</div> 
    </div> 
</div> 
#container { 
    position: relative; 
    width: 200px; 
    height: 200px; 
    border: 1px solid red; 
} 
.icon { 
    border: 1px solid green; 
    float:left; 
} 
.icon-wrapper { 
    position: absolute; 
    bottom: 0; 
    left: 0; 
} 

Demostración: http://jsfiddle.net/sYGfq/3/

0

Si solo hay 2, puede usar: primer hijo o: último hijo en el CSS, sin necesidad de agregar html adicional. Unas pocas líneas de CSS se hará cargo de ella

ejemplo aquí http://jsfiddle.net/sYGfq/6/

CSS para el último hijo

.icon:last-child { 
    left: 200px; 
    border: 1px solid green; 
} 
+0

Gracias, pero no creo que last-child sea compatible con IE7 (no estoy seguro acerca de IE8). – w00

+0

luego use first-child, uno de ellos es compatible, vea http://jsfiddle.net/sYGfq/8/ en IE 7 – Huangism

+0

@Huangism ¿Lo ha comprobado en IE, porque uno de ellos se cae del contenedor div? Además, ¿de qué sirve el 'primer hijo' cuando tienes 3 o más íconos? – Vivendi

0

Ponga los dos divs en células separadas en una tabla, eliminar todas las fronteras y el relleno de la tabla y colóquela absolutamente en la esquina inferior izquierda del div principal.

<div id="container"> 
<table class="none" id="table1"> 
<tr class="none"> 
<td class="none"> 
<div class="icon">ICON1</div> 
</td> 
<td class="none"> 
<div class="icon">ICON2</div> 
</td> 
</tr> 
</table> 
</div> 

#container { 
    position: relative; 
    width: 200px; 
    height: 200px; 
    border: 1px solid red; 
} 

.icon { 
    border: 1px solid green; 
} 

.none { 
    border: 0; 
    padding: 0; 
} 

#table1 { 
    position: absolute; 
    bottom: 0; 
    left: 0; 
} 

Presto!

Cuestiones relacionadas