El comportamiento predeterminado de divs es tomar todo el ancho disponible en su contenedor principal.
Esto es lo mismo que si le dieras a los divs internos un ancho del 100%.
Al flotar los divs, ignoran su valor predeterminado y dimensionan su ancho para ajustarse al contenido. Todo lo que está detrás de él (en el HTML), se coloca debajo del div (en la página representada).
Esta es la razón por la que se alinean uno al lado del otro.
El flotador propiedad CSS especifica que un elemento debe tomarse de el flujo normal y se coloca a lo largo del lado izquierdo o derecho de su contenedor , donde los elementos de texto y en línea se envuelva alrededor de él. Un elemento flotante es aquel en el que el valor calculado de float no es ninguno.
Fuente: https://developer.mozilla.org/en-US/docs/Web/CSS/float
Deshacerse de la flotación, y los divs estarán alineados debajo de los otros.
Si esto no sucede, tendrá algún otro css en divs o hijos de wrapper que definan un comportamiento flotante o una visualización en línea.
Si desea mantener el flotador, por cualquier razón, puede usar clear
en el 2º div para restablecer las propiedades flotantes de los elementos antes de ese elemento.
clear
tiene 5 valores válidos: none | left | right | both | inherit
.No se borran los flotantes (utilizados para anular las propiedades heredadas), los flotadores izquierdo o derecho o ambos flotadores. Heredar significa que heredará el comportamiento del elemento padre
Además, debido al comportamiento predeterminado, no es necesario establecer el ancho y alto en automático.
Solo necesita esto si desea establecer un alto/ancho codificado. P.ej. 80%/800px/500em/...
<div id="wrapper">
<div id="inner1"></div>
<div id="inner2"></div>
</div>
CSS es
#wrapper{
margin-left:auto;
margin-right:auto;
height:auto; // this is not needed, as parent container, this div will size automaticly
width:auto; // this is not needed, as parent container, this div will size automaticly
}
/*
You can get rid of the inner divs in the css, unless you want to style them.
If you want to style them identicly, you can use concatenation
*/
#inner1, #inner2 {
border: 1px solid black;
}
¿Por qué los dejaron flotar si se quiere que sean uno debajo del otro? Simplemente elimine las propiedades de flotación y está bien. – enguerranws