Perché non margin: centra automaticamente un'immagine?


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

Si divespande al 100% come dovrebbe ma l'immagine non si centra. Perché?

Risposte:



10

Devi renderlo come livello di blocco;

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

Perché si allinea solo orizzontalmente e non verticalmente?
— Mr Bell

4
L'allineamento verticale non è così semplice come avresti sperato. Dipende tutto dalle specifiche CSS: dai un'occhiata a questo articolo meravigliosamente conciso sull'argomento - phrogz.net/css/vertical-align/index.html
— TheDeadMedic

8

Inserisci style="text-align:center;"

prova sotto il codice

<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>

Non credo che la tua risposta sia errata ma alla tua manca qualsiasi spiegazione del tipo di visualizzazione.
— Joe Phillips

Sebbene la tua risposta possa essere considerata una soluzione alternativa, non la consiglierei. Il motivo è il fatto che se aggiungi qualcos'altro all'interno del div, ad esempio un'intestazione, si allinea il centro con l'immagine. Per allineare l'intestazione a sinistra, dovresti scrivere più stili per essa. Dovrai continuare a farlo per qualunque cosa aggiungi nel div. Quindi l'aggiunta display: block;all'immagine è altamente raccomandata.
— Devner

2

so che questo è un vecchio post, ma volevo condividere come ho risolto lo stesso problema.

La mia immagine ereditava un float: lasciato da una classe genitore. Impostando float: none sono stato in grado di far funzionare margin: 0 auto e display: block. Spero che possa aiutare qualcuno in futuro.


1

Ho scoperto che devo definire una larghezza specifica per l'oggetto o nient'altro lo farà centrare. Una larghezza relativa non funziona.


2
Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti a un autore, lascia un commento sotto il suo post: puoi sempre commentare i tuoi post e, una volta che avrai una reputazione sufficiente, potrai commentare qualsiasi post .
— Kristijan Iliev

Il punto era che, sebbene diverse persone abbiano dato risposte che funzionano, funzionano solo se il codice include una definizione specifica della larghezza dell'oggetto. Es: <img [... etc., Etc., ...] style = "display: block; margin: auto; width: 200px" /> funzionerà, ma non usare una dimensione relativa, come "width : 50% ". Ovviamente, se usi "larghezza: 100%", la centratura non è un problema, perché non c'è margine a sinistra oa destra dell'oggetto.
— Catwoman

0

apri divquindi metti

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

image tag (o) contenuto

chiudere div


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

0

Ho trovato ... margin: 0 auto; per me va bene. Ma ho anche visto che NON funziona perché la classe è stata superata da un'altra specificità che aveva ... float: left; quindi attenzione potrebbe essere necessario aggiungere ... float: none; questo ha funzionato nel mio caso mentre stavo codificando una media query.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.