css - una - Dos Divs en la misma fila y centro alinean ambos
div en css (7)
¿Podría esto hacer por ti? Revisa mi JSFiddle
Y el código:
HTML
<div class="container">
<div class="div1">Div 1</div>
<div class="div2">Div 2</div>
</div>
CSS
div.container {
background-color: #FF0000;
margin: auto;
width: 304px;
}
div.div1 {
border: 1px solid #000;
float: left;
width: 150px;
}
div.div2 {
border: 1px solid red;
float: left;
width: 150px;
}
Tengo dos divs asi
<div style="border:1px solid #000; float:left">Div 1</div>
<div style="border:1px solid red; float:left">Div 2</div>
Quiero que se muestren en la misma fila, así que usé float:left
.
Quiero que ambos estén en el centro de la página, así que traté de envolverlos con otro div como este
<div style="width:100%; margin:0px auto;">
<div style="border:1px solid #000; float:left">Div 1</div>
<div style="border:1px solid red; float:left">Div 2</div>
</div>
Pero no funciona. Si cambio el código a este
<div style="width:100%; margin-left:50%; margin-right:50%">
<div style="border:1px solid #000; float:left">Div 1</div>
<div style="border:1px solid red; float:left">Div 2</div>
</div>
luego va hacia el centro, pero la barra de desplazamiento horizontal está ahí y parece que tampoco está realmente centrada.
¿Puede por favor sugerirme amablemente cómo puedo lograr esto? Gracias.
Edición: Quiero que la división interna (Div 1 y Div 2) también esté alineada en el centro.
Alinear al centro, usando la display: inline-block
y text-align: center
.
.outerdiv
{
height:100px;
width:500px;
background: red;
margin: 0 auto;
text-align: center;
}
.innerdiv
{
height:40px;
width: 100px;
margin: 2px;
box-sizing: border-box;
background: green;
display: inline-block;
}
<div class="outerdiv">
<div class="innerdiv"></div>
<div class="innerdiv"></div>
</div>
Alinear al centro usando la display: flex
y justify-content: center
.outerdiv
{
height:100px;
width:500px;
background: red;
display: flex;
flex-direction: row;
justify-content: center;
}
.innerdiv
{
height:40px;
width: 100px;
margin: 2px;
box-sizing: border-box;
background: green;
}
<div class="outerdiv">
<div class="innerdiv"></div>
<div class="innerdiv"></div>
</div>
Alinear al centro vertical y horizontalmente usando la display: flex
, justify-content: center
y align-items:center
.
.outerdiv
{
height:100px;
width:500px;
background: red;
display: flex;
flex-direction: row;
justify-content: center;
align-items:center;
}
.innerdiv
{
height:40px;
width: 100px;
margin: 2px;
box-sizing: border-box;
background: green;
}
<div class="outerdiv">
<div class="innerdiv"></div>
<div class="innerdiv"></div>
</div>
Ambos divs flotados necesitan tener un ancho!
Establecer el 50% de ancho a ambos y funciona.
Por cierto, el div exterior, con su margin: 0 auto
solo se centrará en sí mismo, no los que están dentro.
Mejor manera hasta ahora:
Si das display: inline-block; a los divs internos, los elementos hijos de los divs internos también obtendrán esta propiedad y perturbarán la alineación de los divs internos.
Una mejor manera es usar dos clases diferentes para divs internos con ancho, margen y flotación.
La mejor manera hasta ahora:
Utilice flexbox.
Podrias hacer esto
<div style="text-align:center;">
<div style="border:1px solid #000; display:inline-block;">Div 1</div>
<div style="border:1px solid red; display:inline-block;">Div 2</div>
</div>
http://jsfiddle.net/jasongennaro/MZrym/
- envuélvalo en un
div
context-align:center;
- Dale la pantalla de
div
sa interiordisplay:inline-block;
en lugar de unfloat
Mejor también poner ese css en una hoja de estilo.
Por favor, eche un vistazo a Flex , le ayudará a hacer las cosas bien,
en el div divisor principal css display :flex
el div es que dentro de css: flex:1 1 auto;
enlace jsfiddle adjunto como ejemplo disfrutar :)
Votaría en contra de display: inline-block
ya que no es compatible con todos los navegadores, IE <8 específicamente.
.wrapper {
width:500px; /* Adjust to a total width of both .left and .right */
margin: 0 auto;
}
.left {
float: left;
width: 49%; /* Not 50% because of 1px border. */
border: 1px solid #000;
}
.right {
float: right;
width: 49%; /* Not 50% because of 1px border. */
border: 1px solid #F00;
}
<div class="wrapper">
<div class="left">Div 1</div>
<div class="right">Div 2</div>
</div>
EDITAR: Si no se desea espacio entre las celdas, simplemente cambie tanto .left
como .right
para usar float: left;