¿Cómo alinear 3 divs (izquierda / centro / derecha)dentro de otro div?


Quiero tener 3 divs alineados dentro de un div de contenedor, algo como esto:

[[LEFT]       [CENTER]        [RIGHT]]

El div del contenedor es 100% ancho (sin ancho establecido), y el div del centro debe permanecer en el centro después de cambiar el tamaño del contenedor.

Así que puse:

#container{width:100%;}
#left{float:left;width:100px;}
#right{float:right;width:100px;}
#center{margin:0 auto;width:100px;}

Pero se convierte en:

[[LEFT]       [CENTER]              ]
                              [RIGHT]

¿Algún consejo?

Author: Michael_B, 0000-00-00

5 answers

Con ese CSS, pon tus divs así (flota primero):

<div id="container">
  <div id="left"></div>
  <div id="right"></div>
  <div id="center"></div>
</div>

P.d. También puedes flotar a la derecha, luego a la izquierda, luego al centro. Lo importante es que las carrozas vienen antes de la sección central "principal".

P. P. S. A menudo quieres last inside #container este fragmento: <div style="clear:both;"></div> que se extenderá #container verticalmente para contener ambos flotadores laterales en lugar de tomar su altura solo de #center y posiblemente permitir que los lados sobresalgan por la parte inferior.

 324
Author: dkamins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-13 04:23:30

Si no desea cambiar su estructura HTML, también puede hacerlo agregando text-align: center; al elemento wrapper y un display: inline-block; al elemento centrado.

#container {
    width:100%;
    text-align:center;
}

#left {
    float:left;
    width:100px;
}

#center {
    display: inline-block;
    margin:0 auto;
    width:100px;
}

#right {
    float:right;
    width:100px;
}

Demostración en Vivo: http://jsfiddle.net/CH9K8/

 112
Author: fruechtemuesli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-11 00:52:29

Alineando Tres Divs Horizontalmente Usando Flexbox

Aquí hay un método CSS3 para alinear divs horizontalmente dentro de otro div.

#container {
  display: flex;                  /* establish flex container */
  flex-direction: row;            /* default value; can be omitted */
  flex-wrap: nowrap;              /* default value; can be omitted */
  justify-content: space-between; /* switched from default (flex-start, see below) */
  background-color: lightyellow;
}
#container > div {
  width: 100px;
  height: 100px;
  border: 2px dashed red;
}
<div id="container">
  <div></div>
  <div></div>
  <div></div>
</div>

JsFiddle

La propiedad justify-content toma cinco valores:

  • flex-start (por defecto)
  • flex-end
  • center
  • space-between
  • space-around

En todos los casos, los tres divs están en la misma línea. Para una descripción de cada valor ver: https://stackoverflow.com/a/33856609/3597276


Beneficios de flexbox:

  1. código mínimo; muy eficiente
  2. el centrado, tanto vertical como horizontalmente, es simple y fácil
  3. las columnas de igual altura son simples y fáciles
  4. múltiples opciones para alinear elementos flex
  5. es sensible
  6. a diferencia de los flotadores y las tablas, que ofrecen una capacidad de diseño limitada porque nunca fueron diseñados para diseños de edificios, flexbox es una técnica moderna (CSS3) con una amplia gama de opciones.

Para obtener más información sobre flexbox visite:


Navegador apoyo: Flexbox es compatible con todos los navegadores principales, excepto IE . Algunas versiones recientes del navegador, como Safari 8 e IE10, requieren prefijos de proveedor. Para una forma rápida de agregar prefijos use Autoprefixer . Más detalles en esta respuesta.

 88
Author: Michael_B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:28

La propiedad Float en realidad no se usa para alinear el texto.

Esta propiedad se usa para agregar un elemento a la derecha, a la izquierda o al centro.

div > div { border: 1px solid black;}
<html>
     <div>
         <div style="float:left">First</div>
         <div style="float:left">Second</div>
         <div style="float:left">Third</div>

         <div style="float:right">First</div>
         <div style="float:right">Second</div>
         <div style="float:right">Third</div>
     </div>
</html>

Para float:left la salida será [First][second][Third]

Para float:right la salida será [Third][Second][First]

Eso significa que la propiedad float = > left agregará su siguiente elemento a la izquierda del anterior, el mismo caso con right

También debe considerar el ancho del elemento padre, si la suma de anchos de elementos hijos excede el ancho del elemento padre entonces el siguiente elemento se agregará en la siguiente línea

 <html>
     <div style="width:100%">
       <div style="float:left;width:50%">First</div>
       <div style="float:left;width:50%">Second</div>
       <div style="float:left;width:50%">Third</div>
     </div>
</html>

[Primero] [Segundo]

[Tercero]

Por lo que debe considerar todos estos aspectos para obtener el resultado perfecto

 19
Author: Rajiv Pingale,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-27 14:15:31

Me gustan mis barras apretadas y dinámicas. Esto es para CSS 3 & HTML 5

     12
    Author: ,
    Warning: date() expects parameter 2 to be long, string given in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61