La proprietà è text-align: center;
un buon modo per centrare un'immagine usando i CSS?
img {
text-align: center;
}
La proprietà è text-align: center;
un buon modo per centrare un'immagine usando i CSS?
img {
text-align: center;
}
Risposte:
Ciò non funzionerà poiché la text-align
proprietà 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>
text-align
serve per centrare il testo, come suggerisce il nome. Per gli elementi a blocchi, margin: 0 auto;
è l' approccio raccomandato .
text-align
funziona altrettanto bene su di loro.
Non funziona sempre ... in caso contrario, prova:
img {
display: block;
margin: 0 auto;
}
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)
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>
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).
Tu puoi fare:
<center><img src="..." /></center>
<center>
non è supportato in HTML5, ma accidenti, funziona.
In realtà, l'unico problema con il tuo codice è che l' text-align
attributo si applica al testo (sì, le immagini contano come testo) all'interno del tag. Dovresti mettere un span
tag 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 .
span
elemento è display: inline;
di default, quindi questo si presenta nello stesso problema del posizionamento text-align: center;
su img
se stesso. È necessario impostare span
su display: block;
o sostituirlo con a div
affinché funzioni.
Esistono tre metodi per centrare un elemento che posso suggerire:
Utilizzando la text-align
proprietà
.parent {
text-align: center;
}
<div class="parent">
<img src="https://placehold.it/60/60" />
</div>
Utilizzando la margin
proprietà
Utilizzando la position
proprietà
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>
img
dentro un giustificato div
in un WebView
con iniezione CSS. Grazie!
Solo se è necessario supportare versioni precedenti di Internet Explorer.
L'approccio moderno è quello di fare margin: 0 auto
nel 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.
img{
display: block;
margin-right: auto;
margin-left: auto;
}
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;
}
img.class
o aggiungerei anche una img.class
versione. Grazie per questo.
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.
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 .
auto auto auto auto
e 0 auto
significa 0 auto 0 auto
... e per impostazione predefinita auto per il margine inferiore e superiore è 0
quindi aggiungere 0 o meno è esattamente lo stesso in questo caso che ti fa rispondere a un ennesimo duplicato di quelli già forniti
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ì.
i++
sono gli stessi i+=1
)
Puoi usare text-align: center
il genitore e cambiare img
in display: inline-block
→, quindi si comporta come un elemento di testo ed è centrato se il genitore ha una larghezza!
img {
display: inline-block
}
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-align
proprietà 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.
text-align
proprietà: e potrebbe essere che non ti piacerebbe questo effetto collaterale.Riferimenti
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 */
}
display: block
con margin: 0
non ha funzionato per me, né avvolgersi con un text-align: center
elemento.
Questa è la mia soluzione:
img.center {
position: absolute;
transform: translateX(-50%);
left: 50%;
}
margin: 0 auto;
? La chiave sta impostando margin-left
e margin-right
su auto
. margin: 0 auto;
è solo una scorciatoia per quello.
margin: 0 auto
, margin: 0
e margin: auto
nessuno 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)
relative
posizionamento piuttosto che absolute
entrambi funzionano abbastanza bene.
Ho scoperto che se ho un'immagine e del testo all'interno di una div
, allora posso usare text-align:center
per 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
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;
}
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.