Centra l'immagine usando il centro di allineamento del testo?


Risposte:


1087

Ciò non funzionerà poiché la text-alignproprietà si applica ai contenitori di blocchi, non agli elementi inline ed imgè un elemento inline. Vedi le specifiche W3C .

Usa questo invece:

img.center {
    display: block;
    margin: 0 auto;
}
<div style="border: 1px solid black;">
<img class="center" src ="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a">

</div>


5
ho provato questo metodo e funziona! ma quando ho provato 2 immagini, non ha funzionato, si sono semplicemente sovrapposte l'una sull'altra come un totem, qualche idea su come allineare 2 immagini sulla stessa linea nel mezzo?
— PatrickGamboa,

1
In che modo non è supportato dal W3C? Potete fornire collegamenti per sostenere tale richiesta?
— Madara's Ghost

1
@SecondRikudo: text-alignserve per centrare il testo, come suggerisce il nome. Per gli elementi a blocchi, margin: 0 auto;è l' approccio raccomandato .
— Mrchief,

4
@Mrchief Le immagini sono elementi incorporati, non blocchi. text-alignfunziona altrettanto bene su di loro.
— Madara's Ghost

4
Questa spiegazione è strana, no? Dici che 'text-align' si applica ai blocchi e non alle linee, cosa che credo, quindi lo cambi letteralmente in un elemento a blocchi evitando di usare text-align. Intendo che il tuo codice funziona, ma quel paragrafo deve essere completamente riformulato, imo.
— Polpo,

118

Non funziona sempre ... in caso contrario, prova:

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

87

Mi sono imbattuto in questo post e ha funzionato per me:

img {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
}
<div style="border: 1px solid black; position:relative; min-height: 200px">
  <img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a">

</div>

(Allineamento verticale e orizzontale)


48

Un altro modo per farlo sarebbe centrare un paragrafo allegato:

<p style="text-align:center; border:1px solid black"><img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a"></p>


19
Non sarei d'accordo, penso che questo risponda alla domanda. L'OP ha chiesto se la proprietà text-align: centerè un buon modo per centrare un'immagine e non ha specificato che la proprietà doveva far parte del tag img. Questa risposta utilizza la proprietà in questione nel tentativo di fornire una soluzione (che funzioni).
— MandM

2
Questo ha funzionato per me quando display: block, ecc. No.
— matthewsheets,

14

Tu puoi fare:

<center><img src="..." /></center>


9
sfortunatamente, <center>non è supportato in HTML5, ma accidenti, funziona.
— Ayrat,

13

In realtà, l'unico problema con il tuo codice è che l' text-alignattributo si applica al testo (sì, le immagini contano come testo) all'interno del tag. Dovresti mettere un spantag attorno all'immagine e impostarne lo stile su text-align: center, in questo modo:

span.centerImage {
     text-align: center;
}
<span class="centerImage"><img src="http://placehold.it/60/60" /></span>

L'immagine sarà centrata. In risposta alla tua domanda, è il modo più semplice e più sicuro per centrare le immagini, purché ti ricordi di applicare la regola al contenuto span(o div) dell'immagine .


2
Un spanelemento è display: inline;di default, quindi questo si presenta nello stesso problema del posizionamento text-align: center;su imgse stesso. È necessario impostare spansu display: block;o sostituirlo con a divaffinché funzioni.
— Web_Designer

10

Esistono tre metodi per centrare un elemento che posso suggerire:

  1. Utilizzando la text-alignproprietà

        .parent {
        text-align: center;
    }
        <div class="parent">
        <img src="https://placehold.it/60/60" />
    </div>

  2. Utilizzando la marginproprietà

    img {
        display: block;
        margin: 0 auto;
    }
    <img src="https://placehold.it/60/60" />

  3. Utilizzando la positionproprietà

    img {
        display: block;
        position: relative;
        left: -50%;
    }
    .parent {
        position: absolute;
        left: 50%;
    }
    <div class="parent">
        <img src="https://placehold.it/60/60" />
    </div>


Il primo e il secondo metodo funzionano solo se il genitore è largo almeno quanto l'immagine. Quando l'immagine è più larga del suo genitore, l'immagine non rimarrà centrata !!!

Ma: il terzo metodo è un buon modo per farlo!

Ecco un esempio:

img {
    display: block;
    position: relative;
    left: -50%;
}
.parent {
    position: absolute;
    left: 50%;
}
<div class="parent">
    <img src="http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/img_01.jpg" />
</div>


# 3 è così preciso che sono stato in grado di centrare un imgdentro un giustificato divin un WebViewcon iniezione CSS. Grazie!
— JorgeAmVF

8

Solo se è necessario supportare versioni precedenti di Internet Explorer.

L'approccio moderno è quello di fare margin: 0 autonel tuo CSS.

Esempio qui: http://jsfiddle.net/bKRMY/

HTML:

<p>Hello the following image is centered</p>
<p class="pic"><img src="https://twimg0-a.akamaihd.net/profile_images/440228301/StackoverflowLogo_reasonably_small.png"/></p>
<p>Did it work?</p>

CSS:

p.pic {
    width: 48px;
    margin: 0 auto;
}

L'unico problema qui è che la larghezza del paragrafo deve essere uguale alla larghezza dell'immagine . Se non si inserisce una larghezza nel paragrafo, non funzionerà, poiché assumerà il 100% e l'immagine verrà allineata a sinistra, a meno che ovviamente non si usi text-align:center.

Prova il violino e sperimentalo se vuoi.


6
img{
    display: block;
    margin-right: auto;
    margin-left: auto;      
 }

1
cacciatore di sogni, se stai proponendo un modo alternativo di centrare un'immagine usando CSS, allora devi espandere un po 'la tua domanda. Potresti spiegare come e perché questa proposta alternativa sarebbe un modo migliore per raggiungere l'obiettivo dell'interrogante, magari includendo un collegamento alla documentazione pertinente. Ciò lo renderebbe più utile per loro e anche più utile per altri lettori del sito che sono alla ricerca di soluzioni a problemi simili.
— Vince Bowdren,

6

Se stai usando una classe con un'immagine, allora farà quanto segue

class {
    display: block;
    margin: 0 auto;
}

Se è solo un'immagine in una classe specifica che si desidera allineare al centro, attenersi alla seguente procedura:

class img {
    display: block;
    margin: 0 auto;
}

Vorrei cambiare quello in basso per essere img.classo aggiungerei anche una img.classversione. Grazie per questo.
— Chuck Savage,

6

Sull'immagine contenente il contenitore è possibile utilizzare un Flexbox CSS 3 per centrare perfettamente l'immagine all'interno, sia in verticale che in orizzontale.

Supponiamo che tu abbia <div class = "container"> come titolare dell'immagine:

Quindi come CSS devi usare:

.container {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
}

E questo renderà tutti i tuoi contenuti all'interno di questo div perfettamente centrati.


quale può essere il contenuto giustificato può usare per impostare l'allineamento in <p> ??
— Manjitha teshara,

Questo è quello che volevo. Grazie.
— Dionne Kim,

5

La soluzione più semplice che ho trovato è stata aggiungere questo al mio img-element:

style="display:block;margin:auto;"

Sembra che non sia necessario aggiungere "0" prima di "auto" come suggerito da altri. Forse è il modo corretto, ma funziona abbastanza bene per i miei scopi anche senza lo "0". Almeno sugli ultimi Firefox, Chrome e Edge .


solo auto significa auto auto auto autoe 0 autosignifica 0 auto 0 auto... e per impostazione predefinita auto per il margine inferiore e superiore è 0quindi aggiungere 0 o meno è esattamente lo stesso in questo caso che ti fa rispondere a un ennesimo duplicato di quelli già forniti
— Temani Afif

Il tuo commento spiega perché funziona. Grande. Ma quale delle risposte precedenti diceva che anche "auto" senza "0" funziona? Non vale la pena menzionare questo fatto?
— Panu Logic,

in questo caso dovrebbe essere un commento, perché in questo caso particolare sono entrambi uguali. Non credo che dovremmo avere una risposta per tutti i valori equivalenti, in questo caso possiamo scrivere: auto, auto auto, auto auto auto, auto auto auto auto, 0 auto 0, 0 auto, 0 auto 0 auto, e così via ... tu pensi che ognuno merita una risposta diversa? Io non la penso così.
— Temani dopo il

Non direi che se due diversi segmenti di CSS producono lo stesso risultato finale, quei due segmenti di CSS "sono gli stessi". Il loro output è lo stesso ma il loro codice sorgente non è lo stesso. Proprio come in generale è possibile scrivere un numero qualsiasi di programmi diversi che producono lo stesso output. Quindi è utile sapere (e dire alle persone che chiedono) quale di questi programmi "equivalenti" sembra essere il più semplice e il più breve da scrivere.
— Panu Logic,

e tutto ciò dovrebbe essere scritto in un'unica risposta. Ecco perché questa risposta è più adatta come commento di una risposta completamente nuova. Dovremmo presentare tutte le cose equivalenti insieme e non renderle separate, il che può sembrare che siano completamente diverse perché non è il caso [la mia opinione tra l'altro, non c'è bisogno di essere d'accordo o discutere il contrario]. E non sto parlando di programmi diversi che producono lo stesso output, è una cosa completamente diversa in quanto la logica potrebbe non essere la stessa. Qui stiamo parlando della stessa proprietà e dello stesso valore (come i++sono gli stessi i+=1)
— Temani Afif

4

Cambia semplicemente allineamento genitore :)

Prova questo sulle proprietà principali:

text-align:center

3

Puoi usare text-align: centeril genitore e cambiare imgin display: inline-block→, quindi si comporta come un elemento di testo ed è centrato se il genitore ha una larghezza!

img {
    display: inline-block
}

2

Vorrei usare un div per allineare al centro un'immagine. Come in:

<div align="center"><img src="your_image_source"/></div>

2

Se vuoi impostare l'immagine come sfondo, ho una soluzione:

.image {
    background-image: url(yourimage.jpg);
    background-position: center;
}

2

Centrare un'immagine non di sfondo dipende dal fatto che si desideri visualizzare l'immagine come in linea (comportamento predefinito) o come elemento a blocchi.

Caso di in linea

Se si desidera mantenere il comportamento predefinito della proprietà CSS di visualizzazione dell'immagine, sarà necessario avvolgere l'immagine all'interno di un altro elemento a blocchi su cui è necessario impostare text-align: center;

Caso di blocco

Se vuoi considerare l'immagine come un elemento a blocchi a sé stante, allora la text-alignproprietà non ha senso, e dovresti invece farlo:

IMG.display {
    display: block;
    margin-left: auto;
    margin-right: auto;
}

La risposta alla tua domanda:

La proprietà text-align: center; un buon modo per centrare un'immagine usando i CSS?

Sì e no.

  • Sì, se l'immagine è l'unico elemento all'interno del suo involucro.
  • No, nel caso in cui tu abbia altri elementi all'interno dell'involucro dell'immagine perché tutti gli elementi figli che sono fratelli dell'immagine erediteranno la text-alignproprietà: e potrebbe essere che non ti piacerebbe questo effetto collaterale.

Riferimenti

  1. Elenco di elementi incorporati
  2. Centrare le cose

1

Un altro modo per ridimensionare: visualizzalo:

img {
  width: 60%; /* Or required size of image. */
  margin-left: 20% /* Or scale it to move image. */
  margin-right: 20% /* It doesn't matters much if using left and width */
}

1

Usa questo per il tuo imgCSS:

img {
  margin-right: auto;
  margin-left: auto;
}

0

display: blockcon margin: 0non ha funzionato per me, né avvolgersi con un text-align: centerelemento.

Questa è la mia soluzione:

img.center {
    position: absolute;
    transform: translateX(-50%);
    left: 50%;
}

translateX è supportato dalla maggior parte dei browser


1
intendevi margin: 0 auto;? La chiave sta impostando margin-lefte margin-rightsu auto. margin: 0 auto;è solo una scorciatoia per quello.
— Web_Designer

1
@Web_Designer Ho provato margin: 0 auto, margin: 0e margin: autonessuno ha funzionato. Si noti che nell'ispettore di Chrome, quando si utilizza margin: 0 auto, colpisce la proprietà con un punto esclamativo che dice invalid property value(o qualunque cosa significhi)
— OverCoder

Penso che volevi dire "posizione: assoluto;" anziché "display: absolute;"
— WebDevDaniel,

Grazie @WebDevDaniel per aver segnalato l'errore di battitura. Oh comunque, potresti voler usare il relativeposizionamento piuttosto che absoluteentrambi funzionano abbastanza bene.
— OverCoder,

0

Ho scoperto che se ho un'immagine e del testo all'interno di una div, allora posso usare text-align:centerper allineare il testo e l'immagine in un colpo solo.

HTML:

    <div class="picture-group">
        <h2 class="picture-title">Picture #1</h2>
        <img src="http://lorempixel.com/99/100/" alt="" class="picture-img" />
        <p class="picture-caption">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Temporibus sapiente fuga, quia?</p>
    </div>

CSS:

.picture-group {
  border: 1px solid black;
  width: 25%;
  float: left;
  height: 300px;
  #overflow:scroll;
  padding: 5px;
  text-align:center;
}

CodePen: https://codepen.io/artforlife/pen/MoBzrL?editors=1100


0

A volte aggiungiamo direttamente il contenuto e le immagini sull'amministratore di WordPress all'interno delle pagine. Quando inseriamo le immagini all'interno del contenuto e vogliamo allineare quel centro. Il codice viene visualizzato come:

 **<p><img src="https://abcxyz.com/demo/wp-content/uploads/2018/04/1.jpg" alt=""></p>**

In tal caso è possibile aggiungere contenuti CSS in questo modo:

article p img{
    margin: 0 auto;
    display: block;
    text-align: center;
    float: none;
}

0

Uso:

<dev class="col-sm-8" style="text-align: center;"><img src="{{URL('image/car-trouble-with-clipping-path.jpg')}}" ></dev>

Penso che questo sia il modo di centrare un'immagine nel framework Laravel.


0
.img-container {
  display: flex;
}

img {
  margin: auto;
}

questo renderà l'immagine centrale sia in verticale che in orizzontale

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.