Seguir no funciona. ¿Cuál es el error que estoy haciendo? <html> <head> <style> #over img {display: block; margen izquierdo: auto; margen derecho: auto; } </style> </head> <body> <div id = "over" style = "position: absolute; width: 100%; height: 100%"> <img src = " img8a.flixcart.com/image/ tablet / f / k / t /… "> </div> </body> </html>
nizam.sp
1
Si no utilizamos, display: blockel valor predeterminado es display: inlinesegún w3schools.com/cssref/pr_class_display.asp . ¿Por qué necesitamos usar block? Trabajé para mí, pero no estoy seguro de por qué el bloque centrará el img y en línea no.
user3731622
porque en línea no se mueve en la línea, es, de hecho, en línea. entonces el margen automático es ineficaz.
Solución muy corta y fácil, pero parece que solo funciona con un ancho y una altura fijos, sin porcentaje Sin embargo, funciona con flotadores, por lo que +1 para eso. - jsfiddle.net/2s2nY/2
magnetronnie
1
pero esto solo hace la alineación vertical pero no la horizontal ¿verdad?
V-SHY
1
No funcionará si el ancho de la imagen es mayor que el ancho del div.
Davuz
55
Si eliminamos display: table-cell; Funciona perfectamente.
Ahesanali Suthar
103
Esto también se puede hacer usando el diseño de Flexbox:
TAMAÑO ESTÁTICO
.parent {display: flex;height:300px;/* Or whatever */background-color:#000;}.child {width:100px;/* Or whatever */height:100px;/* Or whatever */margin: auto;/* Magic! */}
*{padding:0;margin:0;}#over
{position:absolute;width:100%;height:100%;text-align: center;/*handles the horizontal centering*/}/*handles the vertical centering*/.Centerer
{display: inline-block;height:100%;vertical-align: middle;}.Centered
{display: inline-block;vertical-align: middle;}
Nota: esta solución es buena para alinear cualquier elemento dentro de cualquier elemento. para IE7, cuando aplique la .Centeredclase en elementos de bloque, deberá usar otro truco para que inline-blockfuncione. (eso porque IE6 / IE7 no funciona bien con bloque en línea en elementos de bloque)
@deathlock es bien conocido. pero estaba apuntando a navegadores IE antiguos (que no admitían pseudo elementos).
avrahamcool
1
No lo es, pero HTML solo debe usarse para estructura, no para presentación. Ese trabajo se deja para CSS, de ahí el pseudo-elemento.
deathlock
1
¿Qué quiere decir "No interrumpir el flujo de documentos (sin flotantes o posicionamiento absoluto)"? ¿Qué es el #over { position:absolute; width:100%; height:100%;?
Rodrigo
1
@Rodrigo, de hecho, si no necesita apuntar a navegadores antiguos, este es el enfoque recomendado.
Realmente no tienen espacios entre ellos (como se ve aquí).
Simplemente básico para evitar estas brechas (inherentes al bloque en línea) entre ellos. ¡Estas brechas se pueden ver entre cada dos palabras que estoy escribiendo en este momento! :-) Entonces ... espero que esto ayude a algunos de ustedes.
He intentado muchos enfoques, pero solo este funciona para múltiples elementos en línea dentro de un contenedor div. Aquí hay un código para alinear todo en div en el medio.
CSS
.divContainer
{
vertical-align: middle;
text-align: center;<!--If you want horizontal center alignment -->}.divContainer >*{
vertical-align: middle;}
Amor css3! Gracias. Sin embargo, es bueno tener en cuenta que esto solo funcionará en los navegadores modernos (excepto IE). Todos los demás navegadores no tendrán efecto.
Neel
2
muchas respuestas sugieren usar, margin:0 autopero esto funciona solo cuando el elemento que intenta centrar no está flotando a la izquierda o la derecha, es decir, el floatatributo css no está configurado. Para hacer esto, aplique el displayatributo table-celly luego aplique el margen de izquierda y derecha a automático para que su estilo se vea comostyle="display:table-cell;margin:0 auto;"
Esto funcionó para mí cuando tienes que centrar la imagen de alineación y tu div padre a la imagen cubre toda la pantalla. es decir, altura: 100% y ancho: 100%
La respuesta marcada para esto no alineará verticalmente la imagen. Una solución adecuada para los navegadores modernos es flexbox. Se puede configurar un contenedor flexible para alinear sus elementos tanto horizontal como verticalmente.
Esta solución responde a la pregunta y funciona, a diferencia de la respuesta marcada. ¿Quizás el votante negativo podría detallar su decisión de votar a favor?
WDuffy
66
De la cola de revisión : ¿Puedo solicitarle que agregue algo de contexto alrededor de su código fuente? Las respuestas de solo código son difíciles de entender. Ayudará tanto al autor de la pregunta como a los futuros lectores si puede agregar más información en su publicación.
RBT
1
Eso no justifica el voto negativo. La respuesta es técnicamente correcta y ayudaría a los futuros lectores. He actualizado el cuerpo de respuestas para cumplir con las reglas de la casa, pero quizás el equipo central debería implementar una solución más directa, ya que identificar las respuestas de solo código es una tarea trivial.
Una manera simple sería crear estilos separados tanto para el div como para la imagen y luego posicionarlos de forma independiente. Digamos que si quiero establecer la posición de mi imagen al 50%, tendría un código similar al siguiente ...
Solo dígame si funciona con todo tipo de navegadores, a pesar de que esto es algo básico que todos los navegadores deben admitir (de lo contrario, no lo llame un navegador)
IMPORTANTE PARA LA PRUEBA: para ejecutar el fragmento de código, haga clic en el botón izquierdo EJECUTAR fragmento de código , luego enlace derecho Página completa
Respuestas:
JSFiddle
fuente
display: block;
Fue mi trampa. TnXdisplay: block
el valor predeterminado esdisplay: inline
según w3schools.com/cssref/pr_class_display.asp . ¿Por qué necesitamos usar block? Trabajé para mí, pero no estoy seguro de por qué el bloque centrará el img y en línea no.fuente
Esto también se puede hacer usando el diseño de Flexbox:
TAMAÑO ESTÁTICO
TAMAÑO DINÁMICO
Encontré el ejemplo en este artículo , que hace un gran trabajo explicando cómo usar el diseño.
fuente
Me parece que también querías que esa imagen estuviera centrada verticalmente dentro del contenedor. (No vi ninguna respuesta que lo proporcionara)
Violín de trabajo:
HTML
CSS
Nota: esta solución es buena para alinear cualquier elemento dentro de cualquier elemento. para IE7, cuando aplique la
.Centered
clase en elementos de bloque, deberá usar otro truco para queinline-block
funcione. (eso porque IE6 / IE7 no funciona bien con bloque en línea en elementos de bloque)fuente
span
, puede usar el pseudo-elemento:before
: jsfiddle.net/xaliber/cj6zhtp0#over { position:absolute; width:100%; height:100%;
?fuente
Puede hacerlo fácilmente usando display: propiedad flex css
fuente
fuente
Todavía tenía algunos problemas con otra solución presentada aquí. Finalmente esto funcionó mejor para mí:
css3:
Puede leer más sobre ese enfoque en esta página .
fuente
Básicamente, establecer el margen derecho e izquierdo en automático hará que la imagen se alinee en el centro.
fuente
Este sería un enfoque más simple
fuente
La respuesta de Daaawx funciona, pero creo que sería más limpio si eliminamos el CSS en línea.
fuente
configurando el img para mostrar: inline-block mientras configura el div superior para text-align: center también hará el trabajo
EDITAR: para aquellas personas que están jugando con display: inline-block >>> no olviden que, por ejemplo, dos divs como
Realmente no tienen espacios entre ellos (como se ve aquí).
Simplemente básico para evitar estas brechas (inherentes al bloque en línea) entre ellos. ¡Estas brechas se pueden ver entre cada dos palabras que estoy escribiendo en este momento! :-) Entonces ... espero que esto ayude a algunos de ustedes.
fuente
SENCILLO. 2018. FlexBox. Para verificar la compatibilidad del navegador: ¿puedo usar una
solución mínima?
Para obtener el soporte de navegador más amplio posible:
fuente
He intentado muchos enfoques, pero solo este funciona para múltiples elementos en línea dentro de un contenedor div. Aquí hay un código para alinear todo en div en el medio.
CSS
HTML
El código de muestra está aquí: https://jsfiddle.net/yogendrasinh/2vq0c68m/
fuente
Archivo CSS
fuente
Prueba este código mínimo:
Y CSS:
fuente
Bueno, estamos en 2016 ... ¿por qué no usar flexbox? También es receptivo. Disfrutar.
fuente
muchas respuestas sugieren usar,
margin:0 auto
pero esto funciona solo cuando el elemento que intenta centrar no está flotando a la izquierda o la derecha, es decir, elfloat
atributo css no está configurado. Para hacer esto, aplique eldisplay
atributotable-cell
y luego aplique el margen de izquierda y derecha a automático para que su estilo se vea comostyle="display:table-cell;margin:0 auto;"
fuente
fuente
HTML:
CSS:
fuente
Para el centro horizontalmente Solo pon
Otro método:
Para el centro verticalmente Solo ponga:
fuente
Esto funcionó para mí:
fuente
Esto hizo el truco para mí.
'Nota: en este caso, no tengo una clase css asociada a' BrandImage '
CSS:
fuente
Esto funcionó para mí cuando tienes que centrar la imagen de alineación y tu div padre a la imagen cubre toda la pantalla. es decir, altura: 100% y ancho: 100%
fuente
Usar posicionamiento. Lo siguiente funcionó para mí ...
Con zoom al centro de la imagen (la imagen llena el div):
Sin acercar al centro de la imagen (la imagen no llena el div):
fuente
La respuesta marcada para esto no alineará verticalmente la imagen. Una solución adecuada para los navegadores modernos es flexbox. Se puede configurar un contenedor flexible para alinear sus elementos tanto horizontal como verticalmente.
fuente
Puedes echar un vistazo a esta solución:
Centrar horizontal y verticalmente una imagen en un cuadro
fuente
Una manera simple sería crear estilos separados tanto para el div como para la imagen y luego posicionarlos de forma independiente. Digamos que si quiero establecer la posición de mi imagen al 50%, tendría un código similar al siguiente ...
fuente
Modifique el valor de altura para su necesidad.
fuente
Esto debería funcionar.
IMPORTANTE PARA LA PRUEBA: para ejecutar el fragmento de código, haga clic en el botón izquierdo EJECUTAR fragmento de código , luego enlace derecho Página completa
fuente