¿Por qué el margen: no centra automáticamente una imagen?


93
<html>
<head>
<title>Test</title>
</head>
<body>
    <div>
        <img src="queuedError.jpg" style="margin:auto; width:200px;" />
    </div>
</body>
</html>

El se divexpande al 100% como debería, pero la imagen no se centra. ¿Por qué?

Respuestas:



10

Necesita renderizarlo como nivel de bloque;

img {
   display: block;
   width: auto;
   margin: auto;
}

¿Por qué solo se alinea horizontalmente y no verticalmente?
Mr Bell

4
La alineación vertical no es tan sencilla como podría haber esperado. Todo depende de
TheDeadMedic

8

Añadir style="text-align:center;"

prueba el código siguiente

<html>
<head>
<title>Test</title>
</head>
<body>
    <div style="text-align:center;vertical-align:middle;">
        <img src="queuedError.jpg" style="margin:auto; width:200px;" />
    </div>
</body>
</html>

No creo que su respuesta sea incorrecta, pero la suya carece de explicación sobre el tipo de pantalla.
Joe Phillips

Aunque su respuesta puede considerarse como una solución alternativa, no la recomendaría. La razón es el hecho de que si agrega algo más dentro del div, un encabezado, por ejemplo, se alinearía en el centro con la imagen. Para alinear el título a la izquierda, tendría que escribir más estilos para él. Tendrá que seguir haciendo esto para cualquier cosa que agregue al div. Por lo tanto, display: block;se recomienda encarecidamente agregar a la imagen.
Devner

2

Sé que esta es una publicación antigua, pero quería compartir cómo resolví el mismo problema.

Mi imagen heredaba un flotador: dejado de una clase principal. Al configurar float: none, pude hacer que margin: 0 auto y display: block funcionen correctamente. Espero que pueda ayudar a alguien en el futuro.


1

Descubrí que debo definir un ancho específico para el objeto o nada más lo centrará. Un ancho relativo no funciona.


2
Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar una aclaración de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones y, una vez que tenga suficiente reputación , podrá comentar cualquier publicación .
Kristijan Iliev

Mi punto fue que, si bien varias personas han dado respuestas que funcionan, solo funcionan si el código incluye una definición específica del ancho del objeto. Por ejemplo: <img [... etc., Etc., ...] style = "display: block; margin: auto; width: 200px" /> funcionará, pero no use un tamaño relativo, como "width : 50% ". Por supuesto, si usa "ancho: 100%", entonces el centrado no es un problema, porque entonces no hay margen a la izquierda o derecha del objeto.
Catwoman

0

abrir y divluego poner

style="width:100% ; margin:0px auto;" 

image etiqueta (o) contenido

cerrar div


0
<div style="text-align:center;">
    <img src="queuedError.jpg" style="margin:auto; width:200px;" />
</div>

0

He encontrado ... margin: 0 auto; funciona para mi. Pero también he visto que NO funciona debido a que la clase fue superada por otra especificidad que tenía ... float: left; así que tenga cuidado con lo que puede necesitar agregar ... float: none; esto funcionó en mi caso ya que estaba codificando una consulta de medios.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.