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: blockodisplay: tableFuera de la cabeza de otras personas:
widthque no seaauto2Tenga 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 autofunciona 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 startatributo (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: blockYwidthno automático) Odisplay: tablefloat: noneposition: relativefuente
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
divque 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
wrapperdiv con el ancho del sitio para centrar la alineación. La razón por la que debe indicarlowidthes 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: untableelemento sin ancho especificado debe tenerdisplay: tabley nodisplay: blockparamargin: autopoder trabajar. Esto puede ser obvio para algunos, ya que la combinación dedisplay: blocky elwidthvalor 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: tablefuente
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: tableymargin: 0 auto