Alinear img verticalmente css. Bloques DIV de centrado CSS: horizontal y vertical

En el proceso de diseño de una página web, la tarea de centrar bloques es bastante común. Este puede ser un centrado vertical u horizontal.

Por ejemplo, si el sitio tiene un ancho fijo, sería racional alinearlo en el centro de la ventana del navegador, porque esto hace que el texto sea más fácil de leer (especialmente si el monitor es grande). Algunos diseños generalmente implican colocar el bloque en el centro de la ventana del navegador, es decir, centrado tanto vertical como horizontal.

Primero, hablemos del centrado horizontal. La técnica más popular es centrar el bloque estableciendo las dimensiones de la derecha y la izquierda. margen a "automático". Digamos que queremos centrar un bloque con id = "contenedor" y un ancho de 860 px. En este caso, en el archivo CSS debes escribir:

#contenedor (
color de fondo: #EEE;
ancho: 860 px;
margen: 0px automático;
}

Sin embargo, es decir. Las versiones anteriores (5.0 por ejemplo) no alinearán este bloque centrado. Por supuesto, ya nadie usa navegadores tan antiguos (de mis 1800 visitantes diarios, solo 1), pero por si acaso, es mejor hacerlo funcionar allí también :)

Para hacer esto, el elemento padre, es decir, aquel dentro del cual centramos nuestro bloque (generalmente el elemento padre es la etiqueta BODY), necesita configurar el parámetro alineación de texto: centro. En este caso, el bloque estará alineado al centro, pero todo su contenido también estará alineado al centro, pero no lo necesitamos. Por lo tanto, dentro de este bloque configuramos la alineación predeterminada: alineación de texto: izquierda .

cuerpo (alineación de texto: centro)

#contenedor (
color de fondo: #EEE;
ancho: 860 px;
margen: 0px automático;
alineación de texto: izquierda;
}

También hay otra forma de alinear horizontalmente un bloque, basada en . Como probablemente sepa, de forma predeterminada, cualquier elemento de bloque se presiona en el borde izquierdo del elemento principal. Por lo tanto, para alinearlo al centro necesitas:

2. Muévalo hacia la derecha el 50% del ancho de la ventana del navegador.

3. Usando relleno negativo, muévalo hacia la izquierda una distancia igual a la mitad del ancho del bloque.

De esta forma el bloque quedará centrado. Para mayor claridad, mire el video a continuación:

Ejemplo de código CSS:

#contenedor (
color de fondo:#559964;
posición:absoluta;
izquierda: 50%;
margen izquierdo: -430px;

ancho: 860 px;
}

Cabe señalar que si desea colocar un bloque no en relación con la ventana del navegador, sino, por ejemplo, en relación con otro bloque, entonces para este otro bloque debe configurar posición: relativa;

Digamos que nuestro bloque #container, que necesita estar centrado, se encuentra dentro del bloque #wrap. Entonces el código se verá así:

#wrap(posición:relativa)

#contenedor (
color de fondo:#559964;
posición:absoluta;
izquierda: 50%;
margen izquierdo: -430px;

ancho: 860 px;
}

Ahora veamos el caso en el que necesita alinear un bloque con el centro de la página, es decir. Aplicar centrado horizontal y vertical simultáneamente. Aquí el posicionamiento vuelve a entrar en juego. Entonces necesitamos:

1. Configure el bloque en posicionamiento absoluto.

2. Muévalo hacia la derecha un 50% y hacia abajo un 50%, colocando así su esquina superior izquierda en el centro de la ventana del navegador.

3. Usando relleno negativo, muévalo hacia arriba una distancia igual a la mitad de la altura del bloque y hacia la izquierda una distancia igual a la mitad del ancho del bloque.

Esto colocará el bloque en el centro de la página web.

Digamos que la altura de nuestro bloque es de 600 px y el ancho es de 860 px. Entonces el código CSS se verá así:

#contenedor (
color de fondo:#559964;
posición:absoluta;
arriba: 50%;

izquierda: 50%;
margen superior: -300px;
margen izquierdo: -430px;

altura: 600 px;
ancho: 860 px;
}

Espero que el principio en sí sea claro para usted.

Califica esta lección: 1 2 3 4 5

Comentarios:

¡¡¡Seré el primero en ver la lección!!!

Eh... Segundo =) Recientemente encontré este problema en IE, lo sufrí durante mucho tiempo)) Gracias =)

Gracias, página marcada como favorita)))

¡Muchas gracias Andrey por las nuevas lecciones!

Solo gracias, no creo que haya nada que agregar aquí))

Gracias por la lección, literalmente intenté hacer esto hace un par de días, sufrí un poco y lo dejé de lado temporalmente.

Pero tengo un problema: el sitio en Mozille Firefox no quiere alinearse, se queda pegado al borde izquierdo y listo, nada de lo anterior ayuda (lo mismo en Opera).

¿Por qué esto no funciona? - "si desea posicionar un bloque no en relación con la ventana del navegador, sino, por ejemplo, en relación con otro bloque, para este otro bloque debe establecer la posición: relativa;"

¡¡Muchas gracias!! simplemente un GIGANTE de gracias!

Todo está bien, pero por alguna razón todas las imágenes aparecen en su lugar solo después de actualizar el navegador. ¿Por favor dime por qué sucede esto?

Andrey, agregue una búsqueda en el sitio.

Añade un comentario.

Al crear bloques div, probablemente te hayas encontrado con situaciones en las que necesitas centrar tu div horizontal y verticalmente usando CSS puro. Por ejemplo, al crear ventanas emergentes con . Hay varias formas de implementar el centrado y en este artículo compartiré mis formas favoritas y más sencillas, usando CSS o jQuery.

Primero, lo básico:

Centrado horizontal en CSS

Esto es fácil de hacer, usamos margen para nuestro div bloquear.

Nombre de clase( margen:0 automático; ancho:200px; alto:200px; )

Para centrar un bloque div solo horizontalmente, debe determinar el ancho del bloque (width), use la propiedad auto para márgenes izquierda y derecha. Este método funcionará para todos los elementos del bloque (div, p, h1, etc.). Para aplicar centrado horizontal a elementos en línea (enlaces, imágenes...), es necesario aplicar el parámetro mostrar:bloquear;

Centrado horizontal y vertical en CSS

Centrar un bloque div horizontal y verticalmente al mismo tiempo es un poco más complicado. Necesita conocer las dimensiones del bloque div de antemano.

Nombre de clase( ancho:300px; alto:200px; posición:absoluta; izquierda:50%; arriba:50%; margen:-100px 0 0 -150px; )

Al usar absoluto Al posicionar un bloque, podemos separarlo de los elementos circundantes y determinar su posición en relación con el tamaño de la ventana del navegador. Mueva el bloque div a 50% a la izquierda y en la parte superior de la ventana. La esquina superior izquierda del bloque ahora está en el centro de la ventana del navegador. Todo lo que queda es instalar el bloque div en el centro de la página moviéndolo a la mitad de su ancho izquierda y la mitad de su altura arriba. ¡Hurra! El resultado fue un excelente centrado de bloques utilizando código CSS puro.

Centrado horizontal y vertical con jQuery

Como se mencionó anteriormente, el método de centrado CSS solo funciona con dimensiones fijas. Si las dimensiones no están definidas, el método jQuery vendrá al rescate:

$(ventana).resize(function())( $(".className").css(( posición:"absoluta", izquierda: ($(window).width() - $(".className").outerWidth ( ))/2, arriba: ($(ventana).height() - $(".className").outerHeight())/2 )); // Para ejecutar la función cuando la ventana está cargada: $(window).resize();

El funcionamiento de este método es ejecutar la función resize() usando la línea $(ventana).redimensionar(). Esta función funciona siempre que se cambia el tamaño de la ventana del navegador. Usamos ancho exterior() Y altura exterior(), porque en contraste ancho() Y altura(), incluyen relleno y grosor del borde en el tamaño que devuelven. La última línea inicia el proceso de centrar el bloque div cuando se carga la página.

La ventaja de utilizar este método es que es posible que no sepas qué tamaño tiene el div. El principal inconveniente es que sólo funciona cuando JavaScript está habilitado. Por tanto, este método es aceptable para interfaces multifuncionales como VKontakte, Facebook, etc.

Como siempre, puedes sugerir tu método favorito para centrar bloques comentando.

Alinear elementos en una página web puede ser una tarea desafiante, especialmente cuando se trata de alinear texto verticalmente. Esta pregunta se encuentra a menudo en los foros y resolver este problema es especialmente difícil para los usuarios novatos. Pero en realidad aquí no hay nada complicado. Todo lo que necesitas es un poco de conocimiento de las hojas de estilo en cascada CSS. Ya que todo esto se hace según sus reglas.

La alineación vertical del texto se puede lograr al menos de cinco maneras diferentes. Cada uno de ellos es bueno a su manera, dadas las circunstancias y detalles de la situación. Consideraremos varios ejemplos y, según las condiciones, usted elegirá la rotación adecuada para usted.

Primer método con altura de línea.

El primer método es muy banal y tiene un gran inconveniente que limita su aplicación. Pero aún así, digan lo que digan, puede ser útil e incluso producir el resultado deseado. Esta será una alineación condicional, ya que esencialmente estamos configurando la altura de la línea para que coincida con la altura del bloque usando la propiedad line-height.

primer ejemplo. demostración n.° 1

primer ejemplo. demostración n.° 1

/* No.1 */ .talign1( border: 1px solid red; height:200px;/* block height */ ) .talign1 > p( line-height:200px;/* establece la altura de la línea de acuerdo con la altura del bloque * / margin :0;/* eliminar el relleno exterior, si lo hay */ text-align:center;/* alinear el texto horizontalmente con el centro */ padding: 0;/* eliminar el relleno interior, si lo hay */ ) /* end N° 1*/

Exactamente de la misma manera, es posible implementar la imagen en el centro vertical, pero agregando una nueva propiedad vertical-align: middle; .

Ejemplo. Demostración n.° 2

Ejemplo. Demostración n.° 2

/* No.2 */ .talign2( border: 1px solid red; line-height:200px;/* bloquear la altura de la línea */ ) .talign2 div( text-align:center;/* alinear elementos horizontalmente en el centro */ ) .talign2 img( vertical-align:middle;/* alinear las imágenes verticalmente en el centro */ border: 1px solid black; ) /* end №2*/

Alineación con propiedad de posición

Este método se usa ampliamente en muchas tareas de CSS, incluida nuestra tarea. Pero cabe señalar que no es del todo perfecto y tiene sus efectos secundarios. Esto se debe a que el porcentaje de centrado del elemento se centrará en el borde superior izquierdo del bloque interior.

Por lo tanto, es necesario establecer un valor negativo para los márgenes. El tamaño de la hendidura en la parte superior debe corresponder a la mitad de la altura del bloque interno y la hendidura de la izquierda debe corresponder a la mitad del ancho. Así obtenemos el centro absoluto.

En esta opción, probablemente sea obligatorio conocer la altura y el ancho exactos del elemento hijo. De lo contrario, podría producirse un centrado incorrecto.

/* No.3 */ .talign3( borde: 1px rojo sólido; altura:200px;/* altura del bloque */ posición: relativa; ) .talign3 div( posición: absoluta; arriba: 50%; izquierda: 50%; altura : 30%; ancho: 50%; margen: -5% 0 0 -25%; 1px negro sólido;

Alineación con la propiedad de la tabla.

Aquí utilizamos una técnica antigua, convirtiendo los elementos en una tabla con celdas. En este caso, las etiquetas de la tabla

no se aplicará, pero utilizará propiedades CSS como display: table; , mostrar: tabla-celda; . En versiones anteriores de IE, este método no funciona y no es necesario. ¿Alguien más realmente los usa?

Ejemplo. demostración n.° 4

Ejemplo. demostración n.° 4

/* No.4 */ .talign4( border: 1px solid red; height:200px;/* block height */ display: table; width: 100%; ) .talign4 div( display: table-cell; vertical-align: medio; alineación de texto:centro) /* final #4*/

Alineación con propiedad flexible

Esta es una opción más específica con propiedades que no se encuentran tan a menudo en el diseño de un sitio web. Pero, sin embargo, en casos raros resultan muy útiles.

En general, centrar elementos HTML en una página no es una cuestión difícil. En algunos casos... los desarrolladores web tienen que devanarse los sesos para encontrar la mejor solución.

Centrar los elementos horizontalmente no es tan difícil; verticalmente ya plantea preguntas, pero combinarlos en general puede resultar desconcertante. En la era del diseño responsivo, rara vez tenemos claras las dimensiones exactas de determinados elementos. Conté 6 formas diferentes de centrar elementos usando CSS. Comencemos con ejemplos simples y terminemos con otros más complejos. Funcionará con el mismo código HTML:

Alineación horizontal usando alineación de texto

A veces la solución más sencilla es la mejor:

Div.center (text-align: center; fondo: hsl(0, 100%, 97%); ) div.center img (ancho: 33%; alto: auto;)

Aquí no hay centrado vertical: para ello deberá agregar las propiedades de margen superior y margen inferior al div.

Centrado con margen: auto

Otra solución para la alineación horizontal:

Div.center (fondo: hsl(60, 100%, 97%); ) div.center img (pantalla: bloque; ancho: 33%; alto: auto; margen: 0 auto;)

Tenga en cuenta que para este método debe configurar la propiedad display: block.

Centrado usando celda de tabla

Al usar display:table-cell, podemos asegurarnos de que el elemento esté centrado tanto vertical como horizontalmente. Pero aquí necesitamos anidar la imagen en otro elemento div.

Alineado al centro (pantalla: tabla; fondo: hsl(120, 100%, 97%); ancho: 100%; ) .center-core (pantalla: tabla-celda; alineación de texto: centro; alineación vertical: medio; ) .center-core img (ancho: 33%; alto: automático;)

Para que todo funcione correctamente, el div debe establecerse en ancho: 100%. Para centrar el elemento verticalmente utilizaremos técnicas estándar estableciendo la altura. Funciona en todas partes, incluido IE8+.

alineación absoluta

Una solución muy interesante. La idea es que necesitas establecer la altura del contenedor exterior:

Alineado absoluto ( posición: relativa; altura mínima: 500 px; fondo: hsl (200, 100 %, 97 %); ) .img alineado absoluto ( ancho: 50 %; ancho mínimo: 200 px; altura: automático; desbordamiento : automático; margen: automático; posición: superior: 0;

Centrar usando traducir

Una nueva solución que utiliza transformaciones CSS. Proporciona alineación horizontal y vertical:

Centro (fondo: hsl(180, 100%, 97%); posición: relativa; altura mínima: 500px; ) .center img (posición: absoluta; arriba: 50%; izquierda: 50%; transformar: traducir(-50 %, -50%); ancho: 30%; alto: automático)

Hay varias desventajas:

  • La propiedad de transformación CSS requiere prefijos del navegador
  • No funciona en versiones anteriores de IE (8 y anteriores)
  • Es necesario darle una altura al contenedor exterior.
  • Si hay texto dentro del contenedor, es posible que esté un poco borroso.

Centrado usando el tipo de pantalla flexible

Probablemente la opción más sencilla.

Centro (fondo: hsl(240, 100%, 97%); visualización: flex; justify-content: center; align-items: center; ) .center img (ancho: 30%; alto: auto;)

No funciona en todas las versiones de IE (aunque puedes protegerte usando display: table-cell además). CSS completo:

Centro ( fondo: hsl(240, 100%, 97%); display: -webkit-box; /* Safari, iOS 6 y anterior; Android, WebKit anterior */ display: -moz-box; /* Firefox (puede y error) */ pantalla: -ms-flexbox /* IE 10 */ pantalla: -webkit-flex /* Chrome 21+ */ pantalla: flex /* Opera 12.1+, Firefox 22+ */ -webkit- box; -align: centro; -moz-box-align: centro; -webkit-align-items: centro; -webkit-box-pack: centro; -box-pack: centro; -justificar-contenido: centro;

Centrar usando calc

En algunos casos, este método es más versátil que usar flexbox:

Centro (fondo: hsl(300, 100%, 97%); altura mínima: 600px; posición: relativa;) .center img (ancho: 40%; altura: auto; posición: absoluta; arriba:calc(50% - 20%); izquierda: calc(50% - 20%);

Es muy sencillo, podemos calcular las dimensiones que necesitamos en función de todo el diseño de la página. Los cálculos son muy simples, el 50% es el punto central del contenedor, pero nuestra tarea es colocar la esquina superior izquierda de la imagen en estas coordenadas. Luego, resta la mitad del alto y el ancho de la imagen. La fórmula es la siguiente:

Arriba: calc(50% - (40% / 2)); izquierda: calc(50% - (40% / 2));

En la práctica, es posible que este método funcione bien si conocemos las dimensiones de los elementos:

Centro img ( ancho: 500px; alto: 500px; posición: absoluta; arriba: calc(50% - (300px / 2)); izquierda: calc(50% - (300px - 2)); )

Este método es compatible con Firefox; a partir de la versión 4, deberá registrar los prefijos del navegador. No funciona en IE 8. Código completo:

Centro img (ancho: 40%; alto: automático; posición: absoluta; arriba: -webkit-calc(50% - 20%); izquierda: -webkit-calc(50% - 20%); arriba: -moz-calc (50% - 20%); izquierda: -moz-calc(50% - 20%); arriba: calc(50% - 20%);

Espero que estos métodos sean suficientes para que encuentres la mejor solución para ti.

Vlad Merzhevich

Debido al hecho de que el contenido de las celdas de la tabla se puede alinear simultáneamente horizontal y verticalmente, se amplían las posibilidades para controlar la posición de los elementos entre sí. Las tablas le permiten establecer la alineación de imágenes, texto, campos de formulario y otros elementos entre sí y con la página web en su conjunto. En general, la alineación es necesaria principalmente para establecer conexiones visuales entre diferentes elementos, así como para agruparlos.

Centrado vertical

Una forma de mostrarle al visitante el enfoque y el nombre del sitio es utilizar una página de presentación. Esta es la primera página en la que, por regla general, hay una pantalla de presentación flash o una imagen que expresa la idea principal del sitio. La imagen también es un enlace a otras secciones del sitio. Debe colocar esta imagen en el centro de la ventana del navegador, independientemente de la resolución del monitor. Para ello, puede utilizar una mesa con un ancho y alto del 100% (ejemplo 1).

Ejemplo 1: centrar el dibujo

Alineación



En este ejemplo, la alineación horizontal se establece utilizando el parámetro de etiqueta align="center" y es posible que el contenido de la celda no esté centrado verticalmente, ya que esta es la posición predeterminada.

Para establecer la altura de la mesa al 100%, debe eliminar, el código deja de ser válido.

Usar el ancho y el alto para cubrir toda el área disponible de la página web garantiza que el contenido de la tabla estará alineado exactamente en el centro de la ventana del navegador, independientemente de su tamaño.

Alineación horizontal

Combinando los atributos align (alineación horizontal) y valign (alineación vertical) de la etiqueta , está permitido establecer varios tipos de posiciones de elementos entre sí. En la figura. La Figura 1 muestra formas de alinear elementos horizontalmente.

Veamos algunos ejemplos de alineación de texto según la siguiente figura.

Alineación superior

Para especificar la alineación superior del contenido de la celda, para una etiqueta debe establecer el atributo valign con el valor superior (ejemplo 2).

Ejemplo 2: uso de valign

Alineación

Columna 1 Columna 2


En este ejemplo, las características de la celda se controlan mediante parámetros de etiqueta. , pero también es más conveniente cambiar de estilo.

En particular, la alineación en las celdas se especifica mediante las propiedades de alineación vertical y alineación de texto (ejemplo 3).

Alineación

Columna 1 Columna 2


Ejemplo 3: Aplicar estilos para la alineación

Para acortar el código, este ejemplo utiliza agrupación de selectores porque las propiedades de alineación vertical y relleno se aplican a dos celdas al mismo tiempo.

La alineación inferior se realiza de la misma manera, pero en lugar del valor superior, se utiliza el valor inferior.

Alineación central

De forma predeterminada, el contenido de las celdas está alineado con el centro de su línea vertical, por lo que si las columnas tienen diferentes alturas, debe establecer la alineación con el borde superior.

A veces aún es necesario dejar el método de alineación original, por ejemplo, al colocar fórmulas, como se muestra en la Fig. 2.

Alineación

(18.6)


En este caso, la fórmula se encuentra estrictamente en el centro de la ventana del navegador y su número se encuentra en el borde derecho. Para organizar los elementos de esta manera, necesitará una tabla con tres celdas. Las celdas exteriores deben tener las mismas dimensiones, en la celda del medio la alineación se realiza en el centro y en la de la derecha, a lo largo del borde derecho (ejemplo 4). Esta cantidad de celdas es necesaria para garantizar que la fórmula esté ubicada en el centro.

Ejemplo 4: alineación de fórmulas

Utilizando tablas, es conveniente determinar la posición de los campos del formulario, especialmente cuando están intercalados con texto. Una de las opciones de diseño del formulario, destinada a ingresar un comentario, se muestra en la Fig. 3.

Para asegurarse de que el texto junto a los campos del formulario esté alineado a la derecha y los elementos del formulario estén alineados a la izquierda, necesitará una tabla con un borde invisible y dos columnas. La columna de la izquierda contendrá el texto en sí y la columna de la derecha contendrá campos de texto (ejemplo 5).

Ejemplo 5: Alinear campos de formulario

Alineación

Nombre
Correo electrónico
Comentario


En este ejemplo, para aquellas celdas donde se requiere alineación correcta, se agrega el atributo align="right".




Desplazarse hacia arriba