Eso no funcionará, ya que la text-alignpropiedad se aplica a los contenedores de bloques, no a los elementos en línea, y imges un elemento en línea. Ver la especificación W3C .
¡Probé este método y funciona! pero cuando probé 2 imágenes, no funcionó, simplemente se apilaron una encima de la otra como un tótem, ¿alguna idea de cómo alinear 2 imágenes en la misma línea en el medio?
PatrickGamboa
1
¿Cómo no es compatible con el W3C? ¿Puede proporcionar enlaces para respaldar ese reclamo?
El fantasma de Madara
1
@SecondRikudo: text-alignes para centrar texto, como su nombre lo indica. Para elementos de bloque, margin: 0 auto;es el enfoque recomendado .
Mrchief
44
@Mrchief Las imágenes son elementos en línea, no bloques. text-alignfunciona igual de bien en ellos.
El fantasma de Madara
44
Esa explicación es un poco rara, ¿no? Dices que 'alineación de texto' se aplica a bloques y no en línea, lo cual creo, luego literalmente lo cambias a un elemento de bloque pero evitas usar la alineación de texto. Quiero decir que su código funciona, pero ese párrafo debe ser completamente redactado, en mi opinión.
Pulpo
118
Eso no siempre funciona ... si no funciona, intente:
No estaría de acuerdo, creo que esto responde la pregunta. El OP preguntó si la propiedad text-align: centeres o no una buena forma de centrar una imagen, y no especificó que la propiedad tenía que ser parte de la etiqueta img. Esta respuesta utiliza la propiedad en cuestión en un esfuerzo por proporcionar una solución (que sí funciona).
MandM
2
Esto funcionó para mí cuando display: block, etc. no funcionaría.
desafortunadamente, <center>no es compatible con html5, pero maldita sea, funciona.
Ayrat
13
En realidad, el único problema con su código es que el text-alignatributo se aplica al texto (sí, las imágenes cuentan como texto) dentro de la etiqueta. Debería colocar una spanetiqueta alrededor de la imagen y establecer su estilo de la text-align: centersiguiente manera:
La imagen estará centrada. En respuesta a su pregunta, es la forma más fácil e infalible de centrar imágenes, siempre que recuerde aplicar la regla al contenido de la imagen span(o div).
Un spanelemento es display: inline;por defecto, por lo que se encuentra con el mismo problema que al colocarlo text-align: center;en imgsí mismo. Debe establecer el spana display: block;o sustituirla por una divpara que esto funcione.
Web_Designer
10
Hay tres métodos para centrar un elemento que puedo sugerir:
El primer y segundo método solo funcionan si el padre es al menos tan ancho como la imagen. ¡Cuando la imagen es más ancha que su padre, la imagen no permanecerá centrada!
Pero: ¡el tercer método es una buena forma de hacerlo!
<p>Hello the following image is centered</p><pclass="pic"><imgsrc="https://twimg0-a.akamaihd.net/profile_images/440228301/StackoverflowLogo_reasonably_small.png"/></p><p>Did it work?</p>
CSS:
p.pic {
width:48px;
margin:0auto;}
El único problema aquí es que el ancho del párrafo debe ser el mismo que el ancho de la imagen . Si no pone un ancho en el párrafo, no funcionará, porque asumirá el 100% y su imagen se alineará a la izquierda, a menos que, por supuesto, usetext-align:center .
Pruebe el violín y experimente con él si lo desea.
cazador de sueños, si está proponiendo una forma alternativa de centrar una imagen usando css, entonces necesita expandir su pregunta un poco. Podría explicar cómo y por qué esta alternativa propuesta sería una mejor manera de lograr el objetivo del interrogador, tal vez incluyendo un enlace a la documentación relevante. Eso lo haría más útil para ellos, y también más útil para otros lectores del sitio que buscan soluciones a problemas similares.
Vince Bowdren
6
Si está utilizando una clase con una imagen, lo siguiente hará
class{
display: block;
margin:0auto;}
Si es solo una imagen en una clase específica que desea centrar la alineación, lo siguiente hará:
Cambiaría el de abajo img.classo agregaría una img.classversión también. Gracias por esto.
Chuck Savage
6
En el contenedor que contiene la imagen, puede usar un CSS 3 Flexbox para centrar perfectamente la imagen en el interior, tanto vertical como horizontalmente.
Supongamos que tiene <div class = "container"> como titular de la imagen:
¿Qué puede usar el contenido de justificación para establecer alinear en <p>?
Manjitha teshara
Esto es lo que quería. Gracias.
Dionne Kim
5
La solución más simple que encontré fue agregar esto a mi elemento img:
style="display:block;margin:auto;"
Parece que no necesito agregar "0" antes del "auto" como lo sugieren otros. Tal vez esa sea la forma correcta, pero funciona lo suficientemente bien para mis propósitos sin el "0" también. Al menos en las últimas versiones de Firefox, Chrome y Edge .
solo significa auto auto auto autoy 0 autosignifica automáticamente 0 auto 0 auto... y por defecto, automático para el margen inferior y superior es, 0por lo tanto, agregar 0 o no es exactamente lo mismo en este caso, lo que hace que responda un enésimo duplicado de los ya proporcionados
Temani Afif
Tu comentario explica por qué funciona. Excelente. Pero, ¿cuál de las respuestas anteriores dijo que 'auto' sin '0' también funciona? ¿No vale la pena mencionar ese hecho?
Panu Logic
en este caso debería ser un comentario, porque en este caso particular ambos son lo mismo. No creo que deberíamos tener una respuesta para todos los valores equivalentes, en este caso podemos escribir: auto, auto auto, auto auto auto, auto auto auto auto, 0 auto 0, 0 auto, 0 auto 0 auto, y así sucesivamente ... usted piensa que cada uno se merece una respuesta diferente? No lo creo.
Temani Afif
No diría que si dos segmentos diferentes de CSS producen el mismo resultado final, esos dos segmentos CSS "son iguales". Su salida es la misma pero su código fuente no es el mismo. Al igual que en general, puede escribir cualquier número de programas diferentes que produzcan el mismo resultado. Entonces es valioso saber (y decirle a la gente que pregunta) cuál de estos programas "equivalentes" parece ser el más simple y el más corto de escribir.
Panu Logic
y todo esto debe escribirse dentro de una respuesta. Es por eso que esta respuesta es más adecuada como comentario que una respuesta completamente nueva. Deberíamos presentar todas las cosas equivalentes juntas y no hacer que sean características separadas, lo que puede parecer que son completamente diferentes porque no es el caso [mi opinión, por cierto, no es necesario estar de acuerdo o argumentar lo contrario]. Y no estoy hablando de diferentes programas que producen la misma salida, es algo completamente diferente ya que la lógica puede no ser la misma. Aquí estamos hablando de la misma propiedad y el mismo valor (como i++son los mismos que i+=1)
Puede usar text-align: centeren el padre y cambiar imga display: inline-block→ por lo tanto, se comporta como un elemento de texto y se centrará si el padre tiene un ancho.
Centrar una imagen sin fondo depende de si desea mostrar la imagen como un elemento en línea (comportamiento predeterminado) o un elemento de bloque.
Caso de en línea
Si desea mantener el comportamiento predeterminado de la propiedad CSS de visualización de la imagen, deberá envolver su imagen dentro de otro elemento de bloque en el que debe establecer text-align: center;
Caso de bloque
Si desea considerar la imagen como un elemento de bloque propio, entonces la text-alignpropiedad no tiene sentido, y debe hacer esto en su lugar:
Es la propiedad text-align: center; ¿Una buena manera de centrar una imagen usando CSS?
Si y no.
Sí, si la imagen es el único elemento dentro de su contenedor.
No, en caso de que tenga otros elementos dentro del contenedor de la imagen porque todos los elementos text-alignsecundarios que son hermanos de la imagen heredarán la propiedad: y es posible que no desee este efecto secundario.
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 */}
quisiste decir margin: 0 auto;? La clave es establecer margin-lefty margin-rightpara auto. margin: 0 auto;es solo un atajo para eso.
Web_Designer
1
@Web_Designer Lo intenté margin: 0 auto, margin: 0y margin: autoninguno funcionó. Tenga en cuenta que en el inspector de Chrome, cuando se usa margin: 0 auto, se activa la propiedad con un signo de exclamación que diceinvalid property value (o lo que sea que eso signifique)
OverCoder
Creo que quisiste decir "posición: absoluta"; en lugar de "display: absolute;"
WebDevDaniel
Gracias @WebDevDaniel por señalar el error tipográfico. Ah, por cierto, es posible que desee utilizar el relativeposicionamiento en lugar de absolute, ambos funcionan bastante bien.
OverCoder
0
Descubrí que si tengo una imagen y algo de texto dentro de a div, entonces puedo usar text-align:centerpara alinear el texto y la imagen de una sola vez.
HTML:
<divclass="picture-group"><h2class="picture-title">Picture #1</h2><imgsrc="http://lorempixel.com/99/100/"alt=""class="picture-img"/><pclass="picture-caption">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Temporibus sapiente fuga, quia?</p></div>
A veces agregamos directamente el contenido y las imágenes en el administrador de WordPress dentro de las páginas. Cuando insertamos las imágenes dentro del contenido y queremos alinear ese centro. El código se muestra como:
Respuestas:
Eso no funcionará, ya que la
text-align
propiedad se aplica a los contenedores de bloques, no a los elementos en línea, yimg
es un elemento en línea. Ver la especificación W3C .Use esto en su lugar:
fuente
text-align
es para centrar texto, como su nombre lo indica. Para elementos de bloque,margin: 0 auto;
es el enfoque recomendado .text-align
funciona igual de bien en ellos.Eso no siempre funciona ... si no funciona, intente:
fuente
Encontré esta publicación , y funcionó para mí:
(Alineación vertical y horizontal)
fuente
Otra forma de hacerlo sería centrar un párrafo adjunto:
fuente
text-align: center
es o no una buena forma de centrar una imagen, y no especificó que la propiedad tenía que ser parte de la etiqueta img. Esta respuesta utiliza la propiedad en cuestión en un esfuerzo por proporcionar una solución (que sí funciona).Tu puedes hacer:
<center><img src="..." /></center>
fuente
<center>
no es compatible con html5, pero maldita sea, funciona.En realidad, el único problema con su código es que el
text-align
atributo se aplica al texto (sí, las imágenes cuentan como texto) dentro de la etiqueta. Debería colocar unaspan
etiqueta alrededor de la imagen y establecer su estilo de latext-align: center
siguiente manera:La imagen estará centrada. En respuesta a su pregunta, es la forma más fácil e infalible de centrar imágenes, siempre que recuerde aplicar la regla al contenido de la imagen
span
(odiv
).fuente
span
elemento esdisplay: inline;
por defecto, por lo que se encuentra con el mismo problema que al colocarlotext-align: center;
enimg
sí mismo. Debe establecer elspan
adisplay: block;
o sustituirla por unadiv
para que esto funcione.Hay tres métodos para centrar un elemento que puedo sugerir:
Usando la
text-align
propiedadUsando la
margin
propiedadUsando la
position
propiedadEl primer y segundo método solo funcionan si el padre es al menos tan ancho como la imagen. ¡Cuando la imagen es más ancha que su padre, la imagen no permanecerá centrada!
Pero: ¡el tercer método es una buena forma de hacerlo!
Aquí hay un ejemplo:
fuente
img
interior justificadodiv
en unaWebView
inyección CSS. ¡Gracias!Solo si necesita admitir versiones antiguas de Internet Explorer.
El enfoque moderno es hacerlo
margin: 0 auto
en tu CSS.Ejemplo aquí: http://jsfiddle.net/bKRMY/
HTML:
CSS:
El único problema aquí es que el ancho del párrafo debe ser el mismo que el ancho de la imagen . Si no pone un ancho en el párrafo, no funcionará, porque asumirá el 100% y su imagen se alineará a la izquierda, a menos que, por supuesto, use
text-align:center
.Pruebe el violín y experimente con él si lo desea.
fuente
fuente
Si está utilizando una clase con una imagen, lo siguiente hará
Si es solo una imagen en una clase específica que desea centrar la alineación, lo siguiente hará:
fuente
img.class
o agregaría unaimg.class
versión también. Gracias por esto.En el contenedor que contiene la imagen, puede usar un CSS 3 Flexbox para centrar perfectamente la imagen en el interior, tanto vertical como horizontalmente.
Supongamos que tiene <div class = "container"> como titular de la imagen:
Luego, como CSS, debes usar:
Y esto hará que todo su contenido dentro de este div esté perfectamente centrado.
fuente
La solución más simple que encontré fue agregar esto a mi elemento img:
Parece que no necesito agregar "0" antes del "auto" como lo sugieren otros. Tal vez esa sea la forma correcta, pero funciona lo suficientemente bien para mis propósitos sin el "0" también. Al menos en las últimas versiones de Firefox, Chrome y Edge .
fuente
auto auto auto auto
y0 auto
significa automáticamente0 auto 0 auto
... y por defecto, automático para el margen inferior y superior es,0
por lo tanto, agregar 0 o no es exactamente lo mismo en este caso, lo que hace que responda un enésimo duplicado de los ya proporcionadosauto
,auto auto
,auto auto auto
,auto auto auto auto
,0 auto 0
,0 auto
,0 auto 0 auto
, y así sucesivamente ... usted piensa que cada uno se merece una respuesta diferente? No lo creo.i++
son los mismos quei+=1
)Simplemente cambie la alineación principal :)
Pruebe este en propiedades principales:
fuente
Puede usar
text-align: center
en el padre y cambiarimg
adisplay: inline-block
→ por lo tanto, se comporta como un elemento de texto y se centrará si el padre tiene un ancho.fuente
Usaría un div para alinear al centro una imagen. Como en:
fuente
Si desea establecer la imagen como fondo, tengo una solución:
fuente
Centrar una imagen sin fondo depende de si desea mostrar la imagen como un elemento en línea (comportamiento predeterminado) o un elemento de bloque.
Caso de en línea
Si desea mantener el comportamiento predeterminado de la propiedad CSS de visualización de la imagen, deberá envolver su imagen dentro de otro elemento de bloque en el que debe establecer
text-align: center;
Caso de bloque
Si desea considerar la imagen como un elemento de bloque propio, entonces la
text-align
propiedad no tiene sentido, y debe hacer esto en su lugar:La respuesta a tu pregunta:
Si y no.
text-align
secundarios que son hermanos de la imagen heredarán la propiedad: y es posible que no desee este efecto secundario.Referencias
fuente
Una forma más de escalar: mostrarlo:
fuente
Use esto para su
img
CSS:fuente
display: block
conmargin: 0
no funcionó para mí, ni envolviendo con untext-align: center
elemento.Esta es mi solución:
translateX
es compatible con la mayoría de los navegadoresfuente
margin: 0 auto;
? La clave es establecermargin-left
ymargin-right
paraauto
.margin: 0 auto;
es solo un atajo para eso.margin: 0 auto
,margin: 0
ymargin: auto
ninguno funcionó. Tenga en cuenta que en el inspector de Chrome, cuando se usamargin: 0 auto
, se activa la propiedad con un signo de exclamación que diceinvalid property value
(o lo que sea que eso signifique)relative
posicionamiento en lugar deabsolute
, ambos funcionan bastante bien.Descubrí que si tengo una imagen y algo de texto dentro de a
div
, entonces puedo usartext-align:center
para alinear el texto y la imagen de una sola vez.HTML:
CSS:
CodePen: https://codepen.io/artforlife/pen/MoBzrL?editors=1100
fuente
A veces agregamos directamente el contenido y las imágenes en el administrador de WordPress dentro de las páginas. Cuando insertamos las imágenes dentro del contenido y queremos alinear ese centro. El código se muestra como:
En ese caso, puede agregar contenido CSS como este:
fuente
Utilizar:
Creo que esta es la forma de centrar una imagen en el marco de Laravel.
fuente
esto hará que la imagen se centre tanto vertical como horizontalmente
fuente