Sé que la configuración margin: 0 auto;
de un elemento se usa para centrarlo (izquierda-derecha). Sin embargo, sé que el elemento y su elemento primario deben cumplir ciertos criterios para que funcione el margen automático, y parece que nunca puedo obtener la magia correcta.
Entonces, mi pregunta es simple: ¿qué propiedades CSS deben establecerse en un elemento y su elemento primario para margin: 0 auto;
poder centrar de izquierda a derecha al elemento secundario?
margin: 0 auto;
correctamente solo en modo estándar, por lo que necesita un doctype (como si antes no fuera necesario).Respuestas:
La parte superior de mi cabeza:
display: block
odisplay: table
Fuera de la cabeza de otras personas:
width
que no seaauto
2Tenga en cuenta que todas estas condiciones deben ser ciertas para que el elemento esté centrado para que funcione.
1 Hay una excepción a esto: si su fijo o elemento con posición absoluta tiene
left: 0; right: 0
, que se centrará en los márgenes de automóviles .2 Técnicamente,
margin: 0 auto
funciona con un ancho automático, pero el ancho automático tiene prioridad sobre los márgenes automáticos y, como resultado, los márgenes automáticos se ponen a cero, por lo que parece que "no funcionan".fuente
ol start
atributo (y no es posible lograrlo en Markdown) :(Fuera de mi cabeza, necesita un
width
. Debe especificar el ancho del contenedor que está centrando (no el ancho principal).fuente
Regla completa para CSS:
display: block
Ywidth
no automático) Odisplay: table
float: none
position: relative
fuente
Fuera de mi cabeza, si el elemento no es un elemento de bloque, hazlo así.
y luego darle un ancho.
fuente
También funcionará con display: table: una propiedad de visualización útil en este caso porque no requiere que se establezca un ancho. (Sé que esta publicación tiene 5 años, pero aún es relevante para los transeúntes;)
fuente
Desde la parte superior de la cabeza de mi gato, asegúrese de que el
div
que está tratando de centrar no esté configuradowidth: 100%
.Si es así, las reglas establecidas en los divs secundarios son lo que importará.
fuente
Vaya a este ejemplo rápido que he creado jsFiddle . Espero que sea fácil de entender. Puede usar un
wrapper
div con el ancho del sitio para centrar la alineación. La razón por la que debe indicarlowidth
es que el navegador sabe que no va por un diseño líquido.fuente
Aquí está mi sugerencia:
fuente
Quizás sea interesante que no tenga que especificar el ancho de un
<button>
elemento para que funcione, solo asegúrese de que tengadisplay:block
: http://jsfiddle.net/muhuyttr/fuente
Para cualquiera que acabe de responder esta pregunta y no pueda solucionarlo
margin: 0 auto
, he aquí algo que descubrí que puede encontrar útil: untable
elemento sin ancho especificado debe tenerdisplay: table
y nodisplay: block
paramargin: auto
poder trabajar. Esto puede ser obvio para algunos, ya que la combinación dedisplay: block
y elwidth
valor predeterminado dará una tabla que se expande para llenar su contenedor, pero si desea que la tabla tome su ancho "natural" y esté centrada, necesitadisplay: table
fuente
display: block
, no cumplirá la condición 4 de la respuesta aceptada)margin: 0 auto
) y tampoco pude especificar el ancho de la tabla, ya que su contenido podría tener diferentes anchos. En este caso, la única solución que funciona (es decir, renderiza la tabla de la manera normal pero la centra) no es una regla de ancho,display: table
ymargin: 0 auto