Muy a menudo la tarea es alinear un bloque en el centro de la página/pantalla, y aun así sin un script Java, sin establecer dimensiones rígidas o sangrías negativas, y para que las barras de desplazamiento funcionen para el padre si el bloque excede su tamaño. . En Internet hay muchos ejemplos monótonos sobre cómo alinear un bloque con el centro de la pantalla. Como regla general, la mayoría de ellos se basan en los mismos principios.

A continuación se detallan las principales formas de resolver el problema, sus pros y sus contras. Para comprender la esencia de los ejemplos, recomiendo reducir el alto/ancho de la ventana de Resultados en los ejemplos de los enlaces proporcionados.

Opción 1: sangría negativa.

Posicionamiento bloquear utilizando los atributos superior e izquierdo en un 50% y conociendo la altura y el ancho del bloque de antemano, establezca un margen negativo, que es igual a la mitad del tamaño bloquear. Una gran desventaja de esta opción es que es necesario contar las sangrías negativas. También bloquear no se comporta del todo correctamente cuando está rodeado de barras de desplazamiento; simplemente se corta porque tiene márgenes negativos.

Padre (ancho: 100%; alto: 100%; posición: absoluta; arriba: 0; izquierda: 0; desbordamiento: automático;) .block (ancho: 250px; alto: 250px; posición: absoluta; arriba: 50%; izquierda : 50%; margen: -125px 0 0 -125px; img (ancho máximo: 100%; alto: automático; visualización: bloque; margen: 0 automático; borde: ninguno; ) )

Opción 2. Sangría automática.

Menos común, pero similar al primero. Para bloquear Establecemos el ancho y el alto, colocamos los atributos arriba a la derecha, abajo a la izquierda en 0 y configuramos el margen automático. La ventaja de esta opción es que funcionan las barras de desplazamiento. padre, si este último tiene 100% de ancho y alto. La desventaja de este método es el ajuste rígido de las dimensiones.

Padre (ancho: 100%; alto: 100%; posición: absoluta; arriba: 0; izquierda: 0; desbordamiento: automático;) .block (ancho: 250px; alto: 250px; posición: absoluta; arriba: 0; derecha: 0; abajo: 0; izquierda: 0; margen: automático; img (ancho máximo: 100%; alto: automático; visualización: bloque; margen: 0 automático; borde: ninguno;)

Opción 3. Mesa.

preguntemos padre estilos de tabla, celda padre Establece la alineación del texto al centro. A bloquear Configuramos el modelo de bloque de líneas. Las desventajas que tenemos son las barras de desplazamiento que no funcionan y, en general, la estética de la “emulación” de la tabla no lo es.

Padre ( ancho: 100%; alto: 100%; pantalla: tabla; posición: absoluta; arriba: 0; izquierda: 0; > .inner ( pantalla: tabla-celda; alineación de texto: centro; alineación vertical: medio; ) ) .block ( mostrar: bloque en línea; img ( mostrar: bloque; borde: ninguno; ) )

Para agregar un pergamino a este ejemplo, tendrás que agregar un elemento más al diseño.
Ejemplo: jsfiddle.net/serdidg/fk5nqh52/3.

Opción 4. Pseudoelemento.

Esta opción carece de todos los problemas enumerados en los métodos anteriores y también resuelve los problemas originales. El caso es que padre establecer estilos pseudo elemento antes, es decir, 100% de altura, alineación central y modelo de bloque en línea. Es lo mismo con bloquear Se coloca un modelo de bloque de líneas, centrado. A bloquear no "cayó" bajo pseudo elemento, cuando las dimensiones del primero son mayores que padre, indicar padre espacio en blanco: nowrap y tamaño de fuente: 0, después de lo cual bloquear cancele estos estilos con lo siguiente: espacio en blanco: normal. En este ejemplo, se necesita font-size: 0 para eliminar el espacio resultante entre padre Y bloquear debido al formato del código. El espacio se puede eliminar de otras formas, pero se considera mejor simplemente evitarlo.

Padre (ancho: 100%; alto: 100%; posición: absoluta; arriba: 0; izquierda: 0; desbordamiento: automático; espacio en blanco: nowrap; alineación de texto: centro; tamaño de fuente: 0; &:antes ( altura: 100%; visualización: bloque en línea; alineación vertical: medio; contenido: "";

O, si necesita que el padre ocupe solo el alto y el ancho de la ventana, y no toda la página:

Padre (posición: fija; arriba: 0; derecha: 0; abajo: 0; izquierda: 0; desbordamiento: automático; espacio en blanco: nowrap; alineación de texto: centro; tamaño de fuente: 0; &:antes (altura: 100%; pantalla: bloque en línea; alineación vertical: medio; contenido: "" (pantalla: bloque; borde: ninguno;))

Opción 5. Caja flexible.

Una de las formas más sencillas y elegantes es utilizar flexbox. No requiere movimientos corporales innecesarios, describe con bastante claridad la esencia de lo que está sucediendo y es muy flexible. Lo único que vale la pena recordar al elegir este método es la compatibilidad con IE desde la versión 10 inclusive. caniuse.com/#feat=flexbox

Padre (ancho: 100%; alto: 100%; posición: fija; arriba: 0; izquierda: 0; pantalla: flex; align-items: center; align-content: center; justify-content: center; overflow: auto; ) .block (fondo: #60a839; img (pantalla: bloque; borde: ninguno;))

Opción 6. Transformar.

Adecuado si estamos limitados por la estructura y no hay forma de manipular el elemento padre, pero el bloque necesita estar alineado de alguna manera. La función CSS traducir() vendrá al rescate. Un valor de posicionamiento absoluto del 50% ubicará la esquina superior izquierda del bloque exactamente en el centro, luego un valor de traducción negativo moverá el bloque en relación con sus propias dimensiones. Tenga en cuenta que pueden aparecer efectos negativos en forma de bordes borrosos o estilos de fuente. Además, este método puede generar problemas al calcular la posición del bloque usando java-script. A veces, para compensar la pérdida del 50% del ancho debido al uso de la propiedad izquierda de CSS, se puede utilizar la regla especificada para el bloque. ayuda: margen derecho: -50%;

Padre (ancho: 100%; alto: 100%; posición: fija; arriba: 0; izquierda: 0; desbordamiento: automático;) .block (posición: absoluta; arriba: 50%; izquierda: 50%; transformar: traducir( -50%, -50%); img (pantalla: bloque;))

Opción 7. Botón.

Opción de producción az del usuario donde bloquear enmarcado en una etiqueta de botón. El botón tiene la propiedad de centrar todo lo que hay dentro de él, es decir, los elementos del modelo en línea y de bloque en línea (bloque en línea). En la práctica no recomiendo usarlo.

Padre (ancho: 100%; alto: 100%; posición: absoluta; arriba: 0; izquierda: 0; desbordamiento: automático; fondo: ninguno; borde: ninguno; contorno: ninguno; ) .block (display: inline-block; img (pantalla: bloque;; borde: ninguno; ) )

Prima

Usando la idea de la cuarta opción, puede establecer márgenes externos para bloquear, y este último se mostrará adecuadamente rodeado de barras de desplazamiento.
Ejemplo: jsfiddle.net/serdidg/nfqg9rza/2.

También puedes alinear la imagen al centro, y si la imagen es más grande padre, escale al tamaño padre.
Ejemplo: jsfiddle.net/serdidg/nfqg9rza/3.
Ejemplo con una imagen grande:

Alinear texto verticalmente en CSS- un trabajo muy difícil. He visto a suficientes personas luchar con esto y sigo encontrando errores "críticos" cuando se trata del diseño responsivo real.

Pero no temas: si ya estás luchando con la alineación vertical de CSS, has venido al lugar correcto.

Hablemos de la propiedad de alineación vertical de CSS.

Cuando comencé a trabajar en desarrollo web, tuve algunos problemas con esta propiedad. Pensé que debería funcionar como una propiedad clásica." alineación de texto" Oh, si todo fuera tan simple...

propiedad CSS de alineación vertical Funciona muy bien con tablas, pero no con divs u otros elementos. Cuando lo usas en un div, alinea el elemento en relación con otros divs, pero no con su contenido. En este caso, la propiedad sólo funciona con display: inline-block; .

ver ejemplo

¡Queremos centrar el contenido, no el div en sí!

Tienes dos opciones. Si solo tiene elementos div con texto, puede usar la propiedad line-height. Esto significa que necesita saber la altura del elemento, pero no puede configurarla. De esta manera tu texto siempre estará en el centro.

La verdad sobre este enfoque. Alineación vertical CSS hay un inconveniente. Si el texto tiene varias líneas, la altura de la línea se multiplicará por el número de líneas. Lo más probable es que, en este caso, termines con una página terriblemente diseñada.

Echa un vistazo a este ejemplo.

Si el contenido que desea centrar consta de más de una línea, entonces es mejor usar divs de tabla. También puedes utilizar tablas, pero esto no es semánticamente correcto. Si necesita pausas para fines de respuesta, es mejor utilizar elementos div.

Para que esto funcione, debe haber un contenedor principal con display: table y dentro de él el número deseado de columnas que desea centrar usando display: table-cell y vertical-align: middle.

ver ejemplo

¿Por qué funciona esto con el marcado de la tabla pero no con los elementos div? Porque las filas de la tabla tienen la misma altura. Cuando el contenido de una celda de una tabla no utiliza todo el espacio de altura disponible, el navegador agrega automáticamente relleno vertical para centrar el contenido.

propiedad de posición

Comencemos con los conceptos básicos de la alineación vertical de divs CSS:

  • posición: estática es la predeterminada. El elemento se representa según el orden HTML;
  • posición: absoluta: se utiliza para determinar la posición exacta de un elemento. Esta posición siempre está relacionada con el elemento padre relativamente más cercano (no estático). Si no determinas la posición exacta de un elemento, perderás el control sobre él. Aparecerá de forma aleatoria, ignorando por completo el flujo del documento. De forma predeterminada, el elemento aparece en la esquina superior izquierda;
  • posición: relativa: se utiliza para colocar un elemento en relación con su posición normal (estática). Este valor conserva el orden del flujo de documentos;
  • posición: fija: se utiliza para colocar el elemento en relación con la ventana del navegador para que siempre esté visible en la ventana gráfica.

Nota: algunas propiedades ( índice superior y z) sólo funciona si el elemento está configurado en posición (no estático).

¡Pongámonos manos a la obra!

¿Quieres implementar Alineación central vertical CSS? Primero cree un elemento con posición y dimensiones relativas. Por ejemplo: 100% en ancho y alto.

El segundo paso puede variar según los navegadores de destino, pero puede utilizar una de dos opciones:

  • Propiedad antigua: es necesario saber el tamaño exacto de la ventana para eliminar la mitad del ancho y la mitad del alto. ver ejemplo;
  • Nueva propiedad CSS3: Puedes agregar una propiedad de transformación con un valor de traducción del 50% y el bloque siempre estará en el centro. Ver ejemplo.

Básicamente, si quieres centrar el contenido, nunca usar la parte superior: 40% o izquierda: 300px. Esto funciona bien en las pantallas de prueba, pero no está centrado.

¿Recuerda la posición: fija? Puede hacer lo mismo con él que con una posición absoluta, pero no necesita una posición relativa para el elemento principal; siempre estará ubicado en relación con la ventana del navegador.

¿Has oído hablar de la especificación flexbox?

Puedes usar flexbox. Esto es mucho mejor que cualquier otra opción. centrar la alineación del texto CSS verticalmente. Con flexbox, gestionar elementos es como un juego de niños. El problema es que es necesario descartar algunos navegadores, como IE9 y las versiones siguientes. A continuación se muestra un ejemplo de cómo centrar verticalmente un bloque:

Ver ejemplo

Con un diseño de caja flexible, puede centrar varios bloques.

Si aplica lo que aprende de estos ejemplos, podrá dominar Alineación de bloques verticales CSS lo antes posible.

Enlaces y lecturas adicionales

Aprender el marcado CSS

Rana FlexBox

Caja de arena flexible

Traducción del artículo “ Alineación vertical CSS para todos (maniquíes incluidos)” fue preparado por el amigable equipo del proyecto.

Buen día suscriptores y lectores de esta publicación. Hoy quiero entrar en detalle y contaros cómo centrar texto en CSS. En algunos artículos anteriores, toqué indirectamente este tema, para que tengas algunos conocimientos en esta área.

Sin embargo, en esta publicación le contaré las diferentes formas de alinear objetos y también le explicaré cómo sangrar y marcar párrafos. ¡Así que comencemos a aprender el material!

HTML y su descendencia
y alinear

Este método casi nunca se utiliza, ya que ha sido reemplazado por herramientas de hojas de estilos en cascada. Sin embargo, saber que existe dicha etiqueta no le hará ningún daño.

En cuanto a la validación (este término se describe en detalle en el artículo ""), la propia especificación html condena el uso < centro>, ya que para su validez es necesario utilizar una transición TIPO DE DOCUMENTO>.

este tipopermite el paso de elementos prohibidos.

CENTRO



Ahora pasemos al atributo. alinear. Establece la alineación horizontal de los objetos y se ajusta después de la declaración de etiqueta. Normalmente, se puede utilizar para alinear el contenido a la izquierda ( izquierda), a lo largo del borde derecho ( bien), centrado ( centro) y por el ancho del texto ( justificar).

A continuación daré un ejemplo en el que colocaré la imagen y el párrafo en el centro.

alinear

Este contenido estará centrado.



Tenga en cuenta que para la imagen el atributo que estamos analizando tiene significados ligeramente diferentes.

En el ejemplo que usé alinear="medio". Gracias a esto, la imagen quedó alineada de manera que la frase quedara ubicada claramente en el centro de la imagen.

Herramientas de centrado en css

Las propiedades CSS diseñadas para alinear bloques, texto y contenido gráfico se utilizan con mucha más frecuencia. Esto se debe principalmente a la conveniencia y flexibilidad de implementar estilos.

Entonces, comencemos con la primera propiedad del centrado de texto: esta es texto-alinear.

Funciona de la misma manera que alinear en . Entre las palabras clave, puedes seleccionar una de la lista general o heredar las características de un antepasado ( heredar).

Me gustaría señalar que en CSS3 puedes configurar 2 parámetros más: comenzar– dependiendo de las reglas de escritura del texto (de derecha a izquierda o viceversa), establece la alineación hacia la izquierda o hacia la derecha (similar al trabajo hacia la izquierda o hacia la derecha) y fin– lo contrario de inicio (al escribir texto de izquierda a derecha actúa como derecho, al escribir de derecha a izquierda – izquierda).

alineación de texto

frase de la derecha

Oración usando fin



Te cuento un pequeño truco. Al seleccionar un valor justificar la última línea puede colgar de manera poco atractiva desde abajo. Para, por ejemplo, posicionarlo en el centro, puede utilizar la propiedad alineación-texto-último.

Para alinear verticalmente el contenido del sitio o las celdas de la tabla, use la propiedad alineación vertical. A continuación he descrito las principales palabras clave del elemento.

Palabra clave Objetivo
base Especifica la alineación con una línea ancestral, denominada línea base. Si el objeto ancestro no tiene dicha línea, entonces la alineación se produce a lo largo del borde inferior.
medio La mitad del objeto mutado está alineada con la línea base, a la que se agrega la altura mínima del elemento principal.
abajo La parte inferior del contenido seleccionado se ajusta a la parte inferior del objeto debajo de él.
arriba Similar al fondo, pero con la parte superior del objeto.
súper Hace que el carácter sea superíndice.
sub Hace que el elemento sea subíndice.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 alineación vertical
do EN mi tACERCA DEA


alineación vertical

do EN mi tACERCA DEA


Sangrías

Y finalmente llegamos a las sangrías de párrafo. El lenguaje CSS utiliza una propiedad especial llamada sangría de texto.

Con su ayuda puedes hacer tanto una línea roja como una protuberancia (debes especificar un valor negativo).

sangría de texto

Para crear una línea roja solo necesitas conocer un parámetro.

Esta es la propiedad de sangría de texto simple.



Alabo a quienes probaron cada ejemplo en la práctica. Envía enlaces a mi blog a tus amigos y no olvides suscribirte. ¡Buena suerte! ¡Adiós!

Saludos cordiales, Roman Chueshov

Leer: 675 veces

Los diseñadores web utilizan DIV en su trabajo todos los días. Sin eufemismos, esta es la etiqueta más popular. Abra el código fuente de cualquier sitio web y verá que la mayoría, si no dos tercios, de los objetos están encerrados en

. Incluso con la llegada de HTML5 y la aparición de competidores serios en forma de artículo o encabezado, se sigue insertando en el marcado en todas partes. Por lo tanto, le sugiero que comprenda el tema del formateo y centrado de bloques div.

¿Qué es DIV?

El nombre del elemento proviene de la palabra inglesa division, que significa división. Al escribir marcas, se utiliza para dividir elementos en bloques. Los DIV encierran grupos de contenido en una página web. Por ejemplo, imágenes, párrafos con texto. La etiqueta no afecta de ninguna manera la visualización del contenido y no tiene ninguna carga semántica.

DIV admite todos los atributos globales. Pero para el diseño web solo necesitas dos: clase e identificación. Sólo recordarás a los demás en casos exóticos, y eso no es un hecho. El atributo align, que solía usarse para centrar o alinear divs a la izquierda, ha quedado obsoleto.

Cuándo usar DIV

Imagine que el sitio es un refrigerador y los DIV son contenedores de plástico en los que debe clasificar el contenido. No pondrías fruta en el mismo recipiente que la paté de hígado. Colocarás cada tipo de producto por separado. El contenido web se genera de manera similar.

Abra cualquier sitio web y divídalo en bloques significativos. Encabezado arriba, pie de página abajo, texto principal en el centro. En el lateral suele haber una columna más pequeña con contenido publicitario o una nube de etiquetas.

Documento



Ahora mira cada sección con más detalle. Comience con el encabezado. El encabezado del sitio tiene un logotipo independiente, navegación, encabezado de primer nivel y, a veces, un eslogan. Asigne a cada bloque semántico su propio contenedor. Esto no sólo separará los elementos del flujo, sino que también facilitará su formato. Le resultará mucho más fácil centrar un objeto en una etiqueta DIV dándole una clase o ID.

Centrar DIV usando márgenes

Al representar elementos web, el navegador considera tres propiedades: relleno, margen y borde. El relleno es el espacio entre el contenido y su borde. Margen: campos que separan un objeto de otro. La frontera son las líneas a lo largo de los bloques. Se pueden asignar a todos a la vez o sólo a un lado:

div( borde: 1px sólido #333; borde izquierdo: ninguno; )

Estas propiedades agregan espacio entre los objetos y le ayudan a alinearlos y colocarlos correctamente. Por ejemplo, si es necesario desplazar un bloque con una imagen desde el borde izquierdo al centro en un 20%, asigna un margen izquierdo al elemento con un valor del 20%:

Bloquear con img (margen izquierdo: 20%;)

Los elementos también se pueden formatear utilizando sus valores de ancho y relleno negativo. Por ejemplo, hay un bloque con dimensiones de 200 px por 200 px. Primero, asignémosle una posición absoluta y movámoslo al centro un 50%.

Div( posición: absoluta; izquierda: 50%; )

Ahora, para asegurarnos de que el DIV centrado esté perfectamente posicionado, le damos un margen negativo a la izquierda igual al 50% de su ancho, es decir -100 píxeles:

Margen izquierdo: -100px;

En CSS esto se llama "eliminación de aire". Pero tiene un inconveniente importante: la necesidad de realizar cálculos constantes, lo cual es bastante difícil de hacer para elementos con varios niveles de anidamiento. Si se especifican los valores de relleno y ancho de borde, el navegador calculará de forma predeterminada las dimensiones del contenedor como la suma del grosor de los bordes, el relleno a la derecha e izquierda y el contenido en sí dentro, lo que puede también viene como una sorpresa.

Entonces, cuando necesite centrar un DIV, use la propiedad box-sizing con el valor border-box. Esto evitará que el navegador agregue valores de relleno y borde al ancho total del elemento DIV. Para subir o bajar un elemento, utilice también valores negativos. Pero en este caso, se pueden asignar al campo superior o inferior del contenedor.

Cómo centrar un bloque DIV usando márgenes automáticos

Esta es una manera fácil de centrar bloques grandes. Simplemente asigna el ancho del contenedor y la propiedad de margen a automático. El navegador colocará un bloque en el medio con márgenes iguales a la izquierda y a la derecha, haciendo todo el trabajo por sí mismo. Como resultado, no corre el riesgo de confundirse en los cálculos matemáticos y ahorra mucho tiempo.

Utilice el método de campo automático cuando desarrolle aplicaciones responsivas. Lo principal es asignar un valor de ancho al contenedor en em o porcentaje. El código del ejemplo anterior centrará el DIV y en cualquier dispositivo, incluidos los teléfonos móviles, ocupará el 90% de la pantalla.

Alineación mediante propiedad de visualización: bloque en línea

De forma predeterminada, los elementos DIV se consideran elementos de bloque y su valor de visualización es bloque. Para este método deberá anular esta propiedad. Sólo apto para DIV con un contenedor principal:

cualquier texto

A un elemento con la clase external-div se le asigna una propiedad de alineación de texto con un valor de centro, que centra el texto en el interior. Pero por ahora el navegador ve el DIV anidado como un objeto de bloque. Para que la propiedad text-align funcione, el div interno debe tratarse como minúscula. Entonces, en la tabla CSS para el selector de div interno, escribe el siguiente código:

Inner-div (pantalla: bloque en línea;)

Cambia la propiedad de visualización de bloque a bloque en línea.

método de transformación/traducción

Las hojas de estilo en cascada permiten mover, sesgar, rotar y transformar elementos web a voluntad. Para ello se utiliza la propiedad transform. Los valores indican el tipo y grado de transformación deseado. En este ejemplo trabajaremos con traducir:

transformar: traducir (50%, 50%);

La función de traducción mueve un elemento desde su posición actual hacia la izquierda/derecha y hacia arriba/abajo. Se pasan dos valores entre paréntesis:

  • grado de movimiento horizontal;
  • grado de movimiento vertical.

Si es necesario mover un elemento solo a lo largo de uno de los ejes de coordenadas, después de la palabra traducir se indica el nombre del eje y entre paréntesis la cantidad del desplazamiento requerido:

Transformar: traducirY(-20%);

En algunos manuales puedes encontrar transformaciones con prefijos de proveedores:

Transformación de Webkit: traducir (50%, 50%); -ms-transform: traducir(50%, 50%); transformar: traducir (50%, 50%);

En 2018, esto ya no es necesario; la propiedad es compatible con todos los navegadores, incluidos Edge e IE.

Para poder centrar el DIV que queremos, la función de traducción CSS se escribe con un valor del 50% para el eje vertical y horizontal. Esto hará que el navegador desplace el elemento de su posición actual a la mitad de su ancho y alto. Se deben especificar las propiedades de ancho y alto:

Documento



Tenga en cuenta que el elemento al que se aplica la propiedad de transformación se mueve independientemente de los objetos que lo rodean. Por un lado, esto es conveniente, pero a veces, al moverse, el DIV puede superponerse a otro contenedor. Por lo tanto, este método de centrar componentes web se considera no estándar y se utiliza sólo en casos de extrema necesidad. Para la animación se utilizan transformaciones según todos los cánones de CSS.

Trabajar con el diseño Flexbox

Flexbox se considera una forma sofisticada de diseñar diseños web. Pero si lo dominas, te darás cuenta de que es mucho más sencillo y agradable que los métodos de formato estándar. La especificación Flexbox es una forma flexible e increíblemente poderosa de manejar elementos. El nombre del módulo se traduce del inglés como "contenedor flexible". Los valores de ancho, alto y disposición de los elementos se ajustan automáticamente, sin calcular sangrías ni márgenes.

En ejemplos anteriores, ya trabajamos con la propiedad de visualización, pero la configuramos en valores de bloque y bloque en línea. Para crear diseños flexibles usaremos display:flex. Primero necesitamos un contenedor flexible:



Para convertirlo a un contenedor flexible en tablas en cascada, escribimos:

Contenedor flexible (pantalla: flex;)

Todos los objetos anidados, pero sólo los descendientes directos, serán elementos flexibles:

Primero
Segundo
Tercero
Cuatro


Si coloca una lista dentro de un contenedor flexible, los elementos de la lista li no se consideran elementos flexibles. El diseño de Flexbox solo funcionará en ul:

Reglas para colocar elementos flexibles.

Para administrar elementos flexibles, necesita justificar contenido y alinear elementos. Dependiendo de los valores que especifique, estas dos propiedades colocan automáticamente los objetos según sea necesario. Si necesitamos centrar todos los DIV anidados, escribimos justify-content: center, align-items: center y nada más. El navegador hará el resto del trabajo por sí mismo:

Documento

Primero
Segundo
Tercero
Cuatro


Para centrar el texto en DIV que son elementos flexibles, puede utilizar la técnica estándar de alineación de texto. O puede hacer que cada DIV anidado también sea un contenedor flexible y administrar el contenido usando justify-content. Este método es mucho más racional si incluye una variedad de contenido, incluidos gráficos, otros objetos anidados, incluidas listas de varios niveles.

Del autor: Os doy la bienvenida nuevamente a las páginas de nuestro blog. En el artículo de hoy me gustaría hablar sobre varias técnicas de alineación que se pueden aplicar tanto a los bloques como a su contenido. En particular, cómo alinear bloques en CSS, así como la alineación de texto.

Alinear bloques al centro

En CSS, centrar un bloque es fácil. Esta es la técnica más conocida para muchos, pero me gustaría hablar de ella ahora mismo, antes que nada. Esto significa alineación centrada horizontalmente con respecto al elemento principal. ¿Cómo se hace? Digamos que tenemos un contenedor y nuestro sujeto experimental está en él:

< div id = "wrapper" >

< div id = "header" > < / div >

< / div >

Supongamos que este es el encabezado del sitio. No se extiende por todo el ancho de la ventana y debemos centrarlo. Escribimos así:

#encabezamiento(

ancho/máximo-ancho: 800px;

margen: 0 automático;

Necesitamos especificar el ancho exacto o máximo y luego escribir la propiedad clave: margen: 0 auto. Establece los márgenes exteriores de nuestro encabezado, el primer valor determina los márgenes superior e inferior, y el segundo determina los márgenes derecho e izquierdo. El valor auto le dice al navegador que calcule automáticamente el relleno en ambos lados para que el elemento esté exactamente centrado en su padre. ¡Cómodo!

Alineación de texto

Esta también es una técnica muy sencilla. Para alinear todos los elementos en línea, puede usar la propiedad text-align y sus valores: izquierda, derecha, centro. Este último centra el texto, que es lo que necesitamos. Incluso puedes alinear una imagen de la misma manera, porque también es un elemento en línea por defecto.

Alinear el texto verticalmente

Pero esto es más complicado. De forma predeterminada, no existe una propiedad simple y conocida que centre fácilmente el texto verticalmente en un contenedor de bloques. Sin embargo, existen varias técnicas que los maquetadores han ideado a lo largo de los años.

Establezca la altura del bloque usando relleno. La forma no es establecer una altura explícita usando la altura, sino crearla artificialmente usando rellenos en la parte superior e inferior, que deberían ser iguales. Creemos cualquier bloque y escribamos en él las siguientes propiedades:

div(fondo: #ccc; relleno: 30px 0; )

div(

antecedentes: #ccc;

relleno: 30px 0;

El fondo es sólo para mostrar visualmente los bordes y el relleno. Ahora la altura del bloque se compone de estas dos sangrías y la línea misma, y ​​todo se ve así:

Defina la altura de línea para el bloque. Creo que esta es una forma más correcta si necesitas alinear una línea de texto. Con él, puedes escribir la altura de forma normal, usando la propiedad de altura. Después de esto, también necesita establecer la altura de la línea, la misma que la altura del bloque en su conjunto.

div (altura: 60 px; altura de línea: 60 px;)

div(

altura: 60 píxeles;

altura de línea: 60 px;

El resultado será similar a la imagen de arriba. Todo funcionará incluso si agrega relleno. Sin embargo, sólo para una línea. Si necesita más texto en el elemento, este método no funcionará.

Convierte un bloque en una celda de tabla. La esencia de este método es que la celda de la tabla tiene la propiedad vertical-align: middle, que centra el elemento verticalmente. En consecuencia, en este caso el bloque debe configurarse de la siguiente manera:

div (pantalla: celda de tabla; alineación vertical: medio;)

div(

mostrar: tabla - celda;

vertical - alinear: medio;

Este método es bueno porque puedes alinear todo el texto que quieras en el centro. Pero es mejor escribir display: table en el bloque en el que está anidado nuestro div; de lo contrario, es posible que no funcione.

Bueno, aquí llegamos a la última técnica de hoy: esta es la alineación vertical de los propios bloques. Hay que decir que, una vez más, no existe ninguna propiedad destinada específicamente a esto, pero hay algunos trucos que debes conocer.

Establezca sangrías como porcentaje. Si conoce la altura de un elemento principal y coloca otro elemento de bloque dentro de él, puede centrarlo usando un porcentaje de relleno. Por ejemplo, el padre tiene una altura de 600 píxeles. Colocas un bloque en él que tiene 300 píxeles de alto. ¿Cuánto necesitas retroceder en la parte superior e inferior para centrarlo? 150 píxeles cada uno, que es el 25% de la altura de los padres.

Este método permite la alineación sólo cuando las dimensiones permiten realizar cálculos. Y si tu padre tiene 887 píxeles de altura, entonces no podrás registrar nada con precisión, esto ya está claro.

Insertar un elemento en una celda de la tabla. Nuevamente, si transformamos el elemento principal en una celda de la tabla, el bloque insertado en él se centrará automáticamente verticalmente. Para hacer esto, el padre solo necesita configurar vertical-align: middle.

Y si, además de esto, también escribimos margen: 0 auto, ¡entonces el elemento quedará centrado horizontalmente!



Este artículo también está disponible en los siguientes idiomas: tailandés

  • Próximo

    MUCHAS GRACIAS por la información tan útil del artículo. Todo se presenta muy claramente. Parece que se ha trabajado mucho para analizar el funcionamiento de la tienda eBay.

    • Gracias a ti y a otros lectores habituales de mi blog. Sin ustedes, no estaría lo suficientemente motivado como para dedicar mucho tiempo al mantenimiento de este sitio. Mi cerebro está estructurado de esta manera: me gusta profundizar, sistematizar datos dispersos, probar cosas que nadie ha hecho antes ni visto desde este ángulo. Es una lástima que nuestros compatriotas no tengan tiempo para comprar en eBay debido a la crisis en Rusia. Compran en Aliexpress desde China, ya que los productos allí son mucho más baratos (a menudo a expensas de la calidad). Pero las subastas en línea de eBay, Amazon y ETSY fácilmente darán a los chinos una ventaja en la gama de artículos de marca, artículos antiguos, artículos hechos a mano y diversos productos étnicos.

      • Próximo

        Lo valioso de sus artículos es su actitud personal y su análisis del tema. No abandonéis este blog, vengo aquí a menudo. Deberíamos ser muchos así. Envíame un correo electrónico Recientemente recibí un correo electrónico con una oferta de que me enseñarían cómo operar en Amazon y eBay.

  • Y recordé tus artículos detallados sobre estos oficios. área Releí todo nuevamente y concluí que los cursos son una estafa. Todavía no he comprado nada en eBay. No soy de Rusia, sino de Kazajstán (Almaty). Pero tampoco necesitamos ningún gasto adicional todavía.
    Te deseo buena suerte y mantente a salvo en Asia.