Hogar›Teléfono›Tipos de posicionamiento css. Posicionamiento absoluto en CSS: entenderlo de una vez por todas
Tipos de posicionamiento css. Posicionamiento absoluto en CSS: entenderlo de una vez por todas
Del autor: Te saludo. El posicionamiento de elementos CSS es un tema muy importante en la creación de sitios web. En este artículo, propongo considerar con más detalle todas las formas de mover bloques por una página web.
cuales son los tipos
Si hablamos del posicionamiento de los elementos del bloque, se establece mediante la propiedad de posición. Tiene cuatro significados y cada uno merece una consideración por separado.
posicionamiento absoluto
Esta es la primera especie conocida. Se establece así: posición: absoluta. Después de esto, el bloque pierde sus propiedades habituales y se sale completamente del flujo normal. ¿Qué es esta corriente? Intente colocar varios elementos de bloque seguidos en su marcado. ¿Cómo se convertirán? Uno tras otro, y no de otra manera.
Este es el comportamiento normal de los bloques por defecto. Pero ¿qué pasa con un bloque que tiene definido un posicionamiento absoluto? Se sale completamente del flujo normal, otros bloques simplemente dejan de notarlo, como si nunca hubiera existido, pero el elemento permanece en la página. El posicionamiento absoluto en CSS se utiliza a menudo para la colocación precisa de elementos decorativos, iconos y otros elementos de diseño.
Ahora se puede mover usando las propiedades izquierda, derecha, superior e inferior. De forma predeterminada, el movimiento es relativo a los bordes de la ventana del navegador, pero si el elemento principal tiene una posición: relativa, entonces el movimiento es relativo al bloque principal.
El elemento se moverá a la esquina inferior derecha. Noto que a menudo hacen el botón superior de esta manera: simplemente lo colocan absolutamente en la esquina. Aquí hay otro ejemplo en el que mostraré primero el posible marcado:
En este ejemplo, primero asignamos un posicionamiento relativo al contenedor principal (relativo; hablaremos más sobre esto más adelante en el artículo) y luego configuramos un posicionamiento absoluto para el mismo elemento.bloque. Como resultado, las coordenadas no se contarán desde la ventana del navegador, sino desde los bordes del elemento principal, es decir, el bloque contenedor.
Posicionamiento relativo de elementos CSS.
Este es el siguiente tipo y se escribe así: posición: relativa. Las coordenadas se especifican mediante las mismas propiedades que para la posición absoluta. La única diferencia significativa es que el elemento no se sale formalmente del flujo: queda espacio para él.
El funcionamiento de este valor se puede comparar con la visibilidad: oculta, cuando el elemento está oculto de la página, pero el espacio debajo de él permanece intacto. Lo mismo sucede con la ubicación relativa: el bloque se puede mover a cualquier lugar, pero el espacio permanece vacío y no será ocupado por otras partes.
También es importante saber que el desplazamiento no se produce desde los bordes de la ventana del navegador web, sino desde el lugar donde se encontraba originalmente el bloque. Eso es:
El bloque se moverá 50 píxeles hacia la derecha y 10 hacia la izquierda.
Fijación
Probablemente hayas visto más de una vez en sitios de Internet cuando, al desplazarte, algún banner no desaparecía, sino que continuaba en tu zona de visibilidad, como si estuviera pegado a un solo lugar. Esto se implementa principalmente mediante posicionamiento fijo. Para hacer esto necesitas escribir:
Posición: posición estática o estática normal
El último tipo es estático, este es el comportamiento normal de los elementos del bloque. No es necesario especificarlo porque es el predeterminado, pero aún necesita conocer el cuarto valor. A veces, position: static se escribe para anular otro tipo de posicionamiento cuando ocurren ciertos eventos en una página web.
¿Cómo posicionar correctamente los bloques en CSS?
Hemos discutido los significados, pero esto no es suficiente para cerrar este tema por nosotros mismos. En realidad, es necesario comprender dónde y qué tipos de posicionamiento se deben aplicar. Ya les he dado un ejemplo con fijo: se puede usar para crear columnas laterales, encabezados o pies de página fijos.
El posicionamiento relativo ayudará cuando necesite mover ligeramente un bloque en relación con su posición y al mismo tiempo mantener su lugar en el flujo. También se les da a los bloques principales el uso de movimiento absoluto para elementos secundarios.
Otras técnicas: centrar, bloques flotantes.
La propiedad de posición no resuelve todos los problemas con la ubicación de elementos de bloque. ¿Cómo crearías, por ejemplo, una cuadrícula de sitio usándolo? No tengo buenas ideas. Aquí es donde otras propiedades acuden al rescate.
Las cuadrículas a menudo se crean usando flotadores en CSS. La propiedad le permite presionar un bloque hacia el borde izquierdo o derecho del padre (flotante: izquierda, flotante: derecha), permitiendo que varios elementos del bloque se alineen en una línea, lo cual es común en cualquier sitio.
El centrado se realiza así: el bloque debe escribirse con un cierto ancho y luego establecer la propiedad margen: 0 auto. Es el valor automático el que lo alineará horizontalmente exactamente en el centro. Naturalmente, para ello debe ser el único en su línea, de lo contrario nada funcionará.
Todos los tipos de posicionamiento enumerados en este artículo pueden resultar útiles para un desarrollador web. En algún lugar debe insertar un ícono (posición: absoluta), en algún lugar debe ajustar ligeramente la posición del bloque, dejando algo de espacio detrás de él (posición: relativa) y en algún lugar debe arreglar el widget (posición: fija). En general, el conocimiento de esta propiedad definitivamente no será superfluo.
Bueno, para aprender aún más del mundo de la creación de sitios web, asegúrese de suscribirse a nuestro blog y recibir nuevos materiales de capacitación. También te aconsejo que mires el nuestro, donde también se plantea un tema similar. (posicionamiento de elementos)
¡Ubicación inusual!
¡Decide qué elemento mostrar al frente!
¡Los elementos pueden superponerse!
Posicionamiento
Las propiedades de posicionamiento CSS le permiten posicionar un elemento. También pueden colocar un elemento detrás de otro y especificar qué debe suceder cuando el contenido del elemento es demasiado grande.
Los elementos se pueden colocar usando las propiedades superior, inferior, izquierda y derecha. Sin embargo, estas propiedades no funcionarán a menos que se establezca la propiedad de posición. También funcionan de manera diferente según el método de posicionamiento.
Hay cuatro métodos de posicionamiento diferentes.
Posicionamiento estático
Los elementos HTML se colocan estáticamente de forma predeterminada. Un elemento colocado estáticamente siempre se coloca de acuerdo con el flujo estándar de elementos en la página.
Los elementos colocados estáticamente no se ven afectados por las propiedades superior, inferior, izquierda y derecha.
Posicionamiento fijo
Un elemento de posición fija se coloca en relación con la ventana del navegador.
No se moverá incluso si se desplaza la ventana:
Comentario: IE7 e IE8 admiten el valor fijo solo si se especifica el tipo de documento. DOCTYPE.
Los elementos fijos se eliminan del flujo normal. El documento y otros elementos se comportan como si el elemento fijo no existiera.
Los elementos fijos pueden superponerse a otros elementos.
Posicionamiento relativo
Un elemento relativamente posicionado está posicionado con respecto a su posición normal.
Los elementos relativamente posicionados se utilizan a menudo como contenedores para elementos absolutamente posicionados.
Posicionamiento absoluto
Un elemento en posición absoluta se coloca en relación con el primer elemento principal que no está en una posición estática. :
Si no se encuentra dicho elemento, el elemento padre se toma como
Los elementos absolutamente posicionados se eliminan del flujo de elementos estándar. El documento y otros elementos se comportan como si el elemento posicionado absolutamente no existiera.
Los elementos absolutamente posicionados pueden superponerse a otros elementos.
Elementos superpuestos
Cuando los elementos están ubicados fuera del flujo estándar, pueden superponerse a otros elementos.
La propiedad del índice z especifica el orden vertical de un elemento (qué elemento debe colocarse delante o detrás de otros elementos).
Un elemento puede tener un orden vertical positivo o negativo:
Comentario: Un elemento con mayor orden vertical siempre está delante de elementos con menor orden vertical.
Si dos elementos posicionados se superponen y no se especifica ningún orden vertical, el elemento ubicado más adelante en el código HTML se mostrará en la parte superior.
Más ejemplos Establecer la forma del elemento
Este ejemplo demuestra cómo definir la forma de un elemento. El elemento se recorta a esta forma y luego se muestra. Cómo mostrar un elemento desbordado mediante desplazamiento
Este ejemplo demuestra cómo configurar la propiedad de desbordamiento para crear una barra de desplazamiento cuando el contenido del elemento es demasiado grande para caber en el área especificada. Cómo forzar al navegador a manejar automáticamente el desbordamiento
Este ejemplo demuestra cómo forzar al navegador a manejar automáticamente el desbordamiento. Cambiando el cursor
Este ejemplo demuestra cómo cambiar el cursor.
Todas las propiedades de posicionamiento CSS
El número en la columna "CSS" indica en qué versión de CSS está definida la propiedad (CSS1 o CSS2).
Propiedad
Descripción
Valores
CSS
Hoy en día, los desarrolladores web pueden crear diseños de páginas web complejos utilizando varias técnicas CSS. Algunas de estas técnicas tienen una larga historia (floating), otras (flexbox) han ganado popularidad en los últimos años.
En este artículo, analizaremos más de cerca algunas cosas poco conocidas sobre el posicionamiento CSS.
Resumen de los métodos de posicionamiento disponibles
La propiedad de posición CSS determina el tipo de posicionamiento de un elemento.
Opciones de posicionamiento
static es el valor de propiedad de posicionamiento predeterminado. Le recomendamos que este elemento no utilice posicionamiento; el posicionamiento solo se aplica si especifica un tipo de posicionamiento distinto al predeterminado.
Para hacer esto, debe establecer la propiedad de posición en uno de los siguientes valores:
relativo
absoluto
fijado
pegajoso
Y solo después de configurar el posicionamiento, puede usar propiedades que desplacen el elemento:
bien
abajo
El valor inicial de estas propiedades es la palabra clave auto.
Se debe tener en cuenta que si un elemento tiene su propiedad de posición establecida en absoluta o fija, entonces es un elemento en posición absoluta. Además, la propiedad del índice z comienza a funcionar para los elementos posicionados, lo que determina el orden de apilamiento.
Diferencias entre los principales métodos de posicionamiento.
Ahora veamos rápidamente tres diferencias básicas entre los tipos de posicionamiento disponibles:
Los elementos posicionados absolutamente (absolutos) se eliminan por completo de la corriente y sus vecinos más cercanos ocupan su lugar.
relativamente posicionados (relativo) y pegados (pegajosos) conservan su lugar en el flujo y sus vecinos más cercanos no lo ocupan. Sin embargo, el relleno de estos elementos no ocupa espacio, sino que otros elementos lo ignoran por completo y esto puede provocar la superposición de elementos.
Los elementos fijos (y el posicionamiento fijo es un tipo de absoluto) siempre se colocan en relación con el área de visibilidad (ignorando la presencia de posicionamiento en los ancestros), mientras que los elementos fijos se colocan en relación con el ancestro más cercano con desplazamiento (desbordamiento: automático). Y solo en ausencia de tales antepasados se ubican en relación con la zona de visibilidad.
Puedes ver esto con más detalle en la demostración:
Nota: El posicionamiento fijo sigue siendo una tecnología experimental con soporte limitado en los navegadores. Por supuesto, si lo desea, puede utilizar un polyfill para agregar esta funcionalidad al navegador, pero dada su baja prevalencia, esta propiedad no se tratará en el artículo.
Elementos de posicionamiento con tipo de posicionamiento absoluto
Estoy seguro de que la mayoría de la gente sabe cómo funciona el posicionamiento absoluto. Sin embargo, muchas cosas al respecto pueden confundir a los principiantes.
Por lo tanto, decidí comenzar con él al describir características poco conocidas del posicionamiento.
Por lo tanto, un elemento en posición absoluta se desplaza en relación con su ancestro posicionado más cercano. Por supuesto, esto funciona si alguno de los ancestros tiene una posición que no sea estática; si el elemento no tiene ancestros posicionados, se desplaza en relación con el área de visibilidad.
Esto se demuestra con el siguiente ejemplo:
En esta demostración, el bloque verde se coloca inicialmente de forma absoluta con relleno cero en bottom:0 y left:0, su antecesor (el bloque rojo) no se posicionó en absoluto.
Sin embargo, hemos posicionado relativamente la envoltura exterior (un elemento con clase jumbotron). Observe cómo cambia la posición del bloque verde cuando cambia el tipo de posición de sus antecesores.
Los elementos absolutamente posicionados ignoran la propiedad flotante
Si aplicamos posicionamiento absoluto o fijo a un elemento flotante, la propiedad flotante se establecerá en none. En cambio, si configuramos un posicionamiento relativo, el elemento permanecerá flotante.
Eche un vistazo a la demostración correspondiente:
En este ejemplo, definimos dos elementos diferentes que flotan hacia la derecha. Tenga en cuenta que cuando un bloque rojo se posiciona absolutamente, ignora el valor de la propiedad flotante, mientras que un bloque verde relativamente posicionado conserva el valor flotante.
Los elementos en línea absolutamente posicionados se convierten en elementos de bloque
Un elemento en línea con posicionamiento absoluto o fijo adquiere las propiedades de un elemento de bloque. La conversión de elementos en línea a elementos de bloque se describe con más detalle en la tabla.
En este caso, creamos dos elementos diferentes. El primero (bloque verde) es un elemento de bloque y el segundo (bloque rojo) es un elemento en línea. Inicialmente, sólo es visible el bloque verde.
El cuadro rojo no es visible porque sus propiedades de ancho y alto solo funcionan con elementos de bloque y de bloque en línea, y como no tiene contenido, no tiene dimensiones.
Cuando asigna una posición absoluta o fija a un bloque rojo, se convierte en un bloque y los tamaños de bloque especificados en él entran en vigor.
Los elementos absolutamente posicionados no tienen colapso del acolchado.
Por defecto, cuando dos márgenes verticales se tocan, se combinan en uno igual al máximo de ellos. A esto se le llama colapso de márgenes.
El comportamiento de los elementos absolutamente posicionados aquí es similar al de los elementos flotantes: su relleno no se combina con el de sus vecinos.
En esta demostración, al elemento se le asigna un relleno de 20 píxeles. Su relleno colapsa con el relleno del elemento principal, que también es de 20 píxeles. Como puede ver, sólo con el posicionamiento absoluto no hay colapso.
Pero ¿cómo podemos evitar que los márgenes colapsen? Necesitamos poner algún tipo de separador entre ellos.
Puede ser relleno o borde y se puede aplicar tanto al elemento principal como al secundario. Otra opción es agregar un clearfix al elemento principal.
Posicionamiento de elementos con píxeles y porcentajes.
¿Alguna vez has usado porcentajes en lugar de píxeles para posicionar elementos? Si la respuesta es sí, entonces sabes que el desplazamiento de un elemento depende de las unidades elegidas (píxeles o porcentajes).
Es un poco confuso, ¿no? Primero veamos qué dice la especificación sobre el porcentaje de compensación:
Desplazamiento como porcentaje del ancho (para izquierda y derecha) o alto (superior o inferior) del bloque principal. Para elementos pegados, el desplazamiento se calcula como un porcentaje del ancho (para izquierda y derecha) o la altura (superior o inferior) del flujo. Los valores negativos son aceptables.
Como se mencionó, cuando establece el desplazamiento como un porcentaje, la posición del elemento depende del ancho y alto de su padre.
La demostración muestra esta diferencia:
Este ejemplo utiliza píxeles y porcentajes para el desplazamiento. Por supuesto, cuando especifica un desplazamiento en píxeles, el elemento se mueve donde sea necesario.
Y si elegimos un porcentaje para el desplazamiento, el resultado dependerá del tamaño del elemento padre. Aquí hay una visualización que muestra cómo se calcula la nueva posición:
Nota: Como probablemente sepa, la propiedad de transformación (junto con las diversas funciones de traducción) también le permite cambiar la posición de un elemento. Pero en este caso, cuando se utilizan porcentajes, el cálculo se basará en el tamaño del elemento en sí y no en su padre.
Conclusión
Espero que este artículo te haya ayudado a comprender mejor el posicionamiento en CSS y haya aclarado algunos de los desafíos.
Una de las mejores cosas de CSS es que los estilos nos brindan la posibilidad de colocar contenido y elementos en una página de casi cualquier forma imaginable. Esto agrega estructura a nuestro diseño y ayuda a que el contenido sea más visual.
Hay varios tipos diferentes de posicionamiento en CSS, cada uno de estos tipos tiene su propio alcance. En este capítulo, veremos algunos casos de uso diferentes (creación de diseños reutilizables y colocación única de elementos desechables), además de describir algunos métodos para hacerlo.
Posicionamiento mediante flotador
Una forma de posicionar elementos en una página es mediante la propiedad flotante. Esta propiedad es bastante versátil y se puede utilizar de muchas maneras diferentes.
Básicamente, la propiedad flotante toma un elemento, lo elimina del flujo normal de la página y lo coloca a la izquierda o derecha de su elemento principal. Todos los demás elementos de la página se ajustarán a dicho elemento. Por ejemplo, los párrafos se ajustarán alrededor de una imagen si el elemento Se establece la propiedad flotante.
Cuando la propiedad flotante se aplica a varios elementos a la vez, es posible crear un diseño con elementos flotantes uno al lado del otro o uno frente al otro, como se muestra en un diseño de varias columnas.
La propiedad flotante toma varios valores, siendo los dos más populares izquierda y derecha, que permiten que el elemento flote hacia la izquierda o hacia la derecha de su padre.
Img (flotante: izquierda;)
flotar en la práctica
Creemos un diseño de página general con un encabezado en la parte superior, dos columnas en el centro y un pie de página en la parte inferior. Idealmente, esta página debería estar marcada con elementos.
,
,
......
Demostración de un diseño sin flotador.
Aquí están los elementos Y
Sección ( float: left; ) a un lado ( float: right; )
Como referencia, los elementos flotantes se colocan a lo largo del borde del elemento principal. Si no hay ningún padre, el elemento flotante se colocará a lo largo del borde de la página.
Cuando configuramos un elemento para que flote, lo eliminamos del flujo normal del documento HTML. Esto hace que el ancho predeterminado de ese elemento se convierta en el ancho de su contenido. A veces, como cuando creamos columnas para un diseño reutilizable, este comportamiento no es deseable. Esto se puede solucionar agregando una propiedad de ancho con un valor fijo para cada columna. Además, para evitar que los elementos flotantes se toquen entre sí, provocando que el contenido de un elemento quede al lado de otro, podemos usar la propiedad de margen para establecer el espacio entre elementos.
A continuación ampliamos el bloque de código anterior agregando un margen y un ancho para cada columna para dar forma mejor al resultado deseado.
Sección ( flotante: izquierda; margen: 0 1,5%; ancho: 63%; ) a un lado ( flotante: derecha; margen: 0 1,5%; ancho: 30%; )
Demostración de diseño con flotador
float puede cambiar el valor de visualización del elemento
Para un elemento flotante, también es importante comprender que el elemento se elimina del flujo normal de la página y que el valor de visualización predeterminado del elemento puede cambiar. La propiedad flotante depende de que el valor de visualización del elemento esté configurado en bloque y puede cambiar el valor de visualización predeterminado del elemento si aún no está representado como un elemento de bloque.
Por ejemplo, un elemento cuya visualización se especifica como inline, como inline , ignora cualquier propiedad de alto o ancho. Sin embargo, si especifica un flotante para un elemento en línea, el valor de visualización cambiará a bloque y luego el elemento ya podrá tomar las propiedades de alto o ancho.
Cuando hacemos flotar un elemento, debemos tener cuidado con cómo afecta el valor de la propiedad de visualización.
Para dos columnas puede configurar flotante, una columna como izquierda y la otra como derecha, pero para varias columnas tendremos que cambiar nuestro enfoque. Digamos, por ejemplo, que nos gustaría tener una fila de tres columnas entre nuestros elementos. Y
......
...
...
Para organizar estos tres elementos en una fila de tres columnas, debemos establecer float para todos los elementos como izquierda. También necesitamos ajustar el ancho. teniendo en cuenta columnas adicionales y colocándolas una al lado de la otra.
Aquí tenemos tres columnas, todas con el mismo ancho y valor de margen, y el flotador está configurado a la izquierda.
Demostración de un diseño de tres columnas con flotador.
Borrar y flotar contenido
La propiedad flotante se diseñó originalmente para permitir que el contenido fluya alrededor de las imágenes. A una imagen se le puede dar un flotador y todo el contenido alrededor de esa imagen fluye naturalmente a su alrededor. Si bien esto funciona muy bien para imágenes, la propiedad flotante en realidad no fue diseñada para usarse con fines de diseño y posicionamiento y, por lo tanto, presenta algunos inconvenientes.
Uno de estos errores es que a veces los estilos adecuados no aparecen en un elemento adyacente o padre de un elemento flotante. Cuando un elemento se configura como flotante, se elimina del flujo normal de la página y, como resultado, los estilos de los elementos alrededor de ese elemento flotante pueden verse afectados negativamente.
A menudo, los valores de las propiedades de margen y relleno se interpretan incorrectamente, lo que hace que se mezclen con el elemento flotante. Otras propiedades también pueden verse afectadas.
Otro error es que a veces el contenido no deseado comienza a rodear el elemento flotante. Eliminar un elemento del flujo del documento permite que todos los elementos alrededor del elemento flotante lo omitan y ocupen cualquier espacio disponible alrededor del elemento flotante, lo que a menudo no es deseable.
En nuestro ejemplo anterior de dos columnas, después de agregar un flotante a los elementos Y
Demostración de diseño sin limpieza flotante
Para evitar que el contenido se enrolle alrededor de elementos flotantes, debemos borrar el flotador y devolver la página a su flujo normal. Veremos cómo borrar los flotadores y luego veremos su contenido.
Flotadores de limpieza
La limpieza de un flotante se produce mediante la propiedad clear, que toma varios valores diferentes: los valores más utilizados son left, right y ambos.
Div (claro: izquierda;)
El valor left borra los flotantes izquierdos, mientras que el valor right borra los flotantes derechos. Sin embargo, el valor de ambos borrará los flotadores izquierdo y derecho y suele ser la opción más ideal.
Volviendo a nuestro ejemplo anterior, si usamos la propiedad clear con un valor de ambos en un elemento
Pie de página (claro: ambos;)
Demostración de diseño con limpieza de flotador
contenido flotante
En lugar de borrar float, otra opción es establecer el contenido en float. El resultado será prácticamente el mismo, pero el contenido flotante realmente garantiza que todos nuestros estilos se mostrarán correctamente.
Para establecer contenido flotante, los elementos flotantes deben estar dentro del elemento padre, este actuará como un contenedor, dejando el flujo del documento completamente normal fuera de él. El estilo de este elemento principal está representado por una clase de grupo, como se muestra aquí:
No hay mucho que hacer aquí, pero esencialmente todo lo que hace CSS es borrar todos los elementos flotantes dentro del elemento de grupo y devolver el documento al flujo normal.
Más específicamente, los pseudoelementos ::before y ::after, como se analizó en la Lección 4, generan dinámicamente elementos encima y debajo de un elemento con grupo de clase. Estos elementos no incluyen ningún contenido y se representan como elementos de tabla, similares a los elementos de bloque. Un elemento generado dinámicamente después de un elemento de grupo borra el flotador dentro del elemento de grupo, tal como lo hizo clear antes. Finalmente, el elemento de grupo también borra cualquier flotante que pueda aparecer antes en caso de que haya un flotante con el valor left o right . También se incluye un pequeño truco que hace que los navegadores más antiguos funcionen bien.
Aquí hay más código que solo el comando clear: ambos, pero puede ser bastante útil.
Teniendo en cuenta nuestro diseño de página de dos columnas, podríamos ajustar Y
La técnica que se muestra aquí se conoce como "clearfix" y a menudo se ve en otros sitios con el nombre de clase clearfix o cf. Elegimos utilizar el nombre de clase grupo porque representa un grupo de elementos y expresa mejor el contenido.
Cuando los elementos se configuran para que floten, es importante monitorear cómo afectan el flujo de la página y garantizar que el flujo de la página se restablezca mediante la limpieza o el contenido flotante según lo previsto. De lo contrario, realizar un seguimiento de los flotantes puede causar muchos dolores de cabeza, especialmente en páginas que contienen varias filas, cada una con varias columnas.
En la práctica
Volvamos al sitio de la Conferencia de estilos e intentemos agregar elementos flotantes a algún contenido.
Lo primero es lo primero, antes de aplicar flotación a cualquier elemento, proporcionemos contenido a esos elementos flotantes agregando clearfix a nuestro CSS. En el archivo main.css, justo debajo de nuestros estilos de cuadrícula, agregaremos clearfix debajo del nombre de la clase de grupo, como antes.
Ahora que podemos usar float, definámoslo para el main elemento interior
como a la izquierda y deje que el resto del contenido del encabezado fluya hacia la derecha.
Para hacer esto, agregue la clase logo al elemento.
. A continuación, dentro de nuestro CSS, agregaremos una nueva sección de estilo para el encabezado principal. En este apartado seleccionaremos el elemento
/* ======================================= Encabezado principal ====== = =================================== */ .logo (flotante: izquierda;) Mientras estamos aquí, agreguemos un poco más de detalle a nuestro logotipo. Empecemos colocando el elemento.
o un salto de línea entre las palabras "Estilos" y "Conferencia" para forzar que el texto de nuestro logotipo aparezca en dos líneas.
flotado, queremos configurar el contenido para que flote. Padre inmediato para es un elemento
...
entonces le agregaremos una clase grupal. Esto aplicará los estilos clearfix que configuramos anteriormente. Elemento
A diferencia del elemento sin embargo, no aplicaremos la clase directamente al elemento flotante. Esta vez agregaremos una clase al elemento principal del elemento flotante y usaremos un selector CSS único para seleccionar el elemento y luego le daremos un flotante.
Comencemos agregando la clase de pie de página principal al elemento.
Ahora que la clase de pie de página principal está configurada en el elemento
Para comprobarlo, aquí seleccionamos el elemento. , que debe estar dentro de un elemento con un valor de atributo de clase de pie de página principal, como nuestro elemento
Finalmente, agregaremos un poco de relleno en la parte superior e inferior del elemento.
Pie de página principal ( padding-bottom: 44px; padding-top: 44px; )
Teniendo en cuenta todos estos cambios en los elementos Y
Arroz. 5.01. Usando múltiples elementos flotantes Y
Posicionamiento mediante bloque en línea
Además de usar flotante, otra forma en que podemos posicionar el contenido es usando la propiedad de visualización en combinación con el valor de bloque en línea. El método de bloque en línea, como veremos más adelante, es principalmente útil para diseñar páginas o para colocar elementos en una línea uno al lado del otro.
Recuerde que el valor de bloque en línea para la propiedad de visualización muestra elementos en una línea y les permite adoptar todas las propiedades del modelo de caja, incluidas altura, ancho, relleno, borde y margen. El uso de inline-block nos permite aprovechar al máximo el modelo de bloques sin tener que preocuparnos por eliminar los flotadores.
bloque en línea en la práctica
Echemos un vistazo a nuestro ejemplo de tres columnas desde el principio. Comenzaremos guardando nuestro HTML de esta manera:
......
...
...
Ahora en lugar de flotar para nuestros tres elementos cambiaremos su valor de visualización a inline-block, dejando las propiedades de margen y ancho como estaban anteriormente. Como resultado, nuestro CSS se verá así:
Sección (pantalla: bloque en línea; margen: 0 1,5%; ancho: 30%;)
Desafortunadamente, este código por sí solo no es suficiente para hacer el truco y el último elemento es empujado a una nueva línea. Recuerde, debido a que los elementos de bloque en línea aparecen en una línea uno al lado del otro, incluyen un único espacio entre ellos. Cuando el tamaño de cada espacio individual se suma al ancho y al valor del margen horizontal de todos los elementos en una fila, el ancho total se vuelve demasiado grande, desplazando al último elemento. a una nueva línea. Para mostrar todos los elementos en una línea, debes eliminar el espacio en blanco entre cada
.
Demostración de elementos de bloque en línea con espacio.
Eliminar espacio entre elementos de bloque en línea
Existen varios métodos para eliminar espacio entre elementos de bloques en línea y algunos son más complejos que otros. Nos centraremos en los dos métodos más simples, los cuales ocurren dentro de HTML.
La primera solución es poner cada nueva etiqueta de elemento de apertura. en la misma línea que la etiqueta de cierre del elemento anterior . En lugar de usar una nueva línea para cada elemento, terminamos comenzando los elementos en la misma línea. Nuestro HTML podría verse así:
...
...
...
...
Escribir elementos de bloque en línea de esta manera garantiza que no haya espacio entre dichos elementos en HTML. Por lo tanto, el espacio no aparecerá cuando se muestre la página.
Demostración de elementos de bloque en línea sin espacios.
Otro método para eliminar espacio entre elementos de bloque en línea es abrir un comentario HTML inmediatamente después de la etiqueta de cierre del elemento. Luego cierre el comentario justo antes de la etiqueta de apertura del siguiente elemento. Esto permite que los elementos del bloque en línea comiencen y terminen en líneas separadas en HTML y "comentará" cualquier espacio potencial entre elementos. El código resultante se verá así:
...
...
...
...
Ninguna de estas opciones es perfecta, pero son útiles. Tiendo a favorecer el uso de comentarios para una mejor organización, pero la opción que elijas depende totalmente de ti.
Crear diseños reutilizables
Al crear un sitio, siempre es mejor escribir estilos modulares que puedan reutilizarse en otros lugares, y los diseños reutilizables están en la parte superior de la lista de código reutilizable. Los diseños se pueden crear utilizando elementos flotantes o de bloques en línea, pero ¿cuál funciona mejor y por qué?
La cuestión de si los elementos flotantes o de bloque en línea son mejores para la estructura de la página está abierta a debate. Mi enfoque es usar elementos de bloque en línea para crear una cuadrícula o un diseño de página, y luego usar un flotante cuando quiero que el contenido fluya alrededor del elemento (que es para lo que se diseñaron los flotantes cuando se trabaja con imágenes). En general, también encuentro que es más fácil trabajar con elementos de bloque en línea.
Sin embargo, utilice lo que funcione mejor para usted. Si está más familiarizado con un enfoque que con otro, utilícelo.
Hay nuevas especificaciones CSS en proceso, específicamente propiedades flexibles y de cuadrícula, que lo ayudarán a decidir cuál es la mejor manera de diseñar sus páginas. Esté atento a estos métodos cuando comiencen a aparecer.
En la práctica
Con un conocimiento firme de los diseños reutilizables, es hora de implementar uno en nuestro sitio de Styles Conference.
Para el sitio web de Styles Conference, crearemos un diseño de tres columnas utilizando elementos de bloque en línea. Haremos esto para obtener tres columnas del mismo ancho, o dos columnas con el ancho total dividido entre ellas como 2/3 para una y 1/3 para la otra.
Primero, crearemos clases que definan el ancho de estas columnas. Llamaremos a estas dos clases col-1-3 para un tercio y col-2-3 para dos tercios. En la sección Cuadrícula de nuestro archivo main.css, avancemos y definamos estas clases y sus anchos correspondientes.
Queremos que ambas columnas aparezcan como elementos de bloque en línea. También debemos asegurarnos de que su alineación vertical esté establecida en la parte superior de cada columna.
Creemos dos nuevos selectores que compartan visualización y alineación vertical.
Col-1-3, .col-2-3 (pantalla: bloque en línea; alineación vertical: arriba;)
Eche un vistazo a CSS nuevamente. Creamos dos selectores de clases col-1-3 y col-2-3 separados por una coma. Una coma al final del primer selector significa que le sigue otro selector. Después del segundo selector hay una llave de apertura, que indica que comienza la descripción del estilo. Al usar una coma para separar los selectores, podemos vincular un estilo a varios selectores al mismo tiempo.
Queremos dejar algo de espacio entre las columnas para ayudar a dividir el contenido. Esto se puede hacer agregando relleno horizontal a cada columna.
Esto funciona bien, sin embargo, cuando se colocan dos columnas una al lado de la otra, el ancho del espacio entre ellas será el doble que el espacio desde el borde exterior. Para equilibrar esto, colocaremos todas nuestras columnas en una cuadrícula y le agregaremos el mismo relleno.
Usemos la clase grid para definir nuestra grilla y luego demos el mismo relleno horizontal a las clases grid, col-1-3 y col-2-3. Con comas nuevamente separando nuestros selectores, nuestro CSS se ve así:
Cuando configuramos el relleno horizontal, debemos tener cuidado. Recuerde, en la última lección creamos un contenedor con la clase contenedor para centrar todo nuestro contenido en la página con un ancho de 960 píxeles. Actualmente, si pusiéramos un elemento de cuadrícula dentro de un elemento contenedor, su relleno horizontal colapsaría y nuestras columnas no aparecerían proporcionales al ancho del resto de la página.
Haremos esto dividiendo el antiguo conjunto de reglas del contenedor en lo siguiente:
Ahora cualquier elemento con la clase contenedor o grid tendrá 960 píxeles de ancho y estará ubicado en el centro de la página. Además, hemos conservado el relleno horizontal existente para cualquier elemento con la clase de contenedor moviéndolo a un conjunto de reglas nuevo e independiente.
Bien, toda la parte difícil de configurar la malla está completa. Ahora es el momento de trabajar con nuestro HTML y ver cómo funcionan estas clases.
Comenzaremos con los avances en la página de inicio, en el archivo index.html, alineados en tres columnas. Actualmente los avances están envueltos en elementos. con la clase de contenedor. Queremos cambiar la clase de contenedor a cuadrícula para poder comenzar a colocar columnas dentro.
...
...
...
...
Y finalmente, dado que cada una de nuestras columnas es un elemento de bloque en línea, debemos asegurarnos de eliminar cualquier espacio en blanco entre ellas. Para hacer esto usaremos comentarios y agregaremos documentación a cada sección para organizar mejor nuestro código.
...
...
...
Para comprobarlo, dejamos un comentario en la línea 3 identificando la sección “Oradores” que le sigue. Al final de la línea 7, abrimos un comentario inmediatamente después de la etiqueta de cierre. Dentro de este comentario, en la línea 9 definimos el siguiente apartado "Horario". Luego cierre el comentario al comienzo de la línea 11, justo antes de la etiqueta de apertura. . Aparece una estructura de comentarios similar en las líneas 13 a 17 entre los dos elementos. , justo antes de la sección Lugar. En general, comentamos cualquier posible espacio en blanco entre columnas y, al mismo tiempo, utilizamos los mismos comentarios para identificar nuestras secciones.
Ahora tenemos una cuadrícula de tres columnas reutilizable que admite diferentes diseños, utilizando anchos de columna de 1/3 y 2/3. Nuestra página de inicio ahora contiene tres columnas, que separan todos los avances.
Arroz. 5.02. La página de inicio de Styles Conference ahora incluye un diseño de tres columnas
Demostración y código fuente
A continuación puede ver el sitio web de Styles Conference en su estado actual, así como descargar el código fuente actual del sitio.
Posicionamiento único del elemento
Tarde o temprano todo el mundo querrá posicionar un elemento con precisión, pero los elementos flotantes o de bloque en línea no permiten ese truco. Los elementos flotantes que eliminan un elemento del flujo de la página a menudo producen resultados no deseados porque los elementos circundantes se envuelven alrededor del elemento flotante. Los elementos de bloque en línea, a menos que estemos creando columnas, pueden ser bastante complicados cuando se trata de posicionarlos correctamente. Para situaciones como esta, podemos usar la propiedad de posición en combinación con las propiedades de desplazamiento del bloque.
La propiedad de posición determina cómo se coloca el elemento en la página y si se mostrará en el flujo normal del documento. Se utiliza junto con las propiedades de desplazamiento del bloque top , right , bottom e left , que determinan exactamente dónde se ubicará el elemento moviéndolo en diferentes direcciones.
De forma predeterminada, el valor de posición de cada elemento se establece en estático, lo que significa que el elemento existe en el flujo normal del documento y no requiere ninguna propiedad para posicionarlo. El valor estático suele ser sobrescrito por el valor relativo o absoluto, que veremos a continuación.
Posicionamiento relativo
Establecer la propiedad de posición en relativa permite que los elementos aparezcan en el flujo normal de la página, reservando espacio para el elemento según lo previsto y evitando que otros elementos fluyan a su alrededor. Sin embargo, también le permite modificar la posición de un elemento utilizando propiedades de desplazamiento. Por ejemplo, considere el siguiente HTML y CSS:
con la clase de desplazamiento el valor de posición se establece en relativo, así como dos propiedades de desplazamiento: izquierda y superior. Esto mantiene la posición original del elemento y no se permite que otros elementos se muevan a esa área. Además, las propiedades de desplazamiento mueven el elemento empujándolo 20 píxeles desde la izquierda y 20 píxeles desde la parte superior de la ubicación original.
Para elementos relativamente posicionados, es importante saber que las propiedades de desplazamiento del bloque determinan dónde se moverá el elemento, dada su posición original. Entonces, una propiedad izquierda con un valor de 20 píxeles en realidad empuja el elemento hacia la derecha 20 píxeles. Una propiedad superior con un valor de 20 px empujará el elemento hacia abajo 20 px.
Cuando posicionamos un elemento usando las propiedades de desplazamiento, el elemento se superpone al elemento debajo de él, en lugar de empujarlo hacia abajo como lo hacen las propiedades de margen o relleno.
posicionamiento absoluto
El valor absoluto de la propiedad de posición difiere del valor relativo en que el elemento en posición absoluta no aparece en el flujo normal del documento y el espacio y la posición originales del elemento en posición absoluta no están reservados.
Además, los elementos en posición absoluta se mueven en relación con su elemento principal en posición relativa más cercano. Si no existe un padre en posición relativa, entonces el elemento en posición absoluta se ubicará en relación con el elemento.
. Esta es una pequeña información; echemos un vistazo a cómo funciona dentro de algún código:
En este ejemplo el elemento se coloca en relación con, pero no incluye ninguna propiedad de desplazamiento. Por tanto, su posición no cambia. Elemento
con la clase de compensación incluye el valor de posición como absoluto. Desde el elemento es el elemento padre relativamente más cercano a
, entonces el elemento
se posicionará en relación con el elemento
.
Para elementos relativamente posicionados, las propiedades de desplazamiento determinan en qué dirección se moverá el elemento con respecto a sí mismo. Para elementos absolutamente posicionados, las propiedades de desplazamiento determinan en qué dirección se moverá el elemento en relación con su padre posicionado relativo más cercano.
Como resultado de las propiedades derecha y superior, el elemento
Aparecerá 20 píxeles desde la derecha y 20 píxeles desde la parte superior interior.
.
Desde el elemento
posicionado de manera absoluta, no se ubica en el flujo normal de la página y se superpondrá a cualquier elemento que lo rodee. Además, la posición inicial
no se guarda y otros elementos pueden ocupar su lugar. En general, la mayor parte del posicionamiento puede realizarse sin utilizar las propiedades de posición y de desplazamiento, pero en algunos casos pueden resultar extremadamente útiles.
Reanudar
Aprender a posicionar contenidos en HTML y CSS es un gran paso hacia el dominio de estos lenguajes. Agregue a esto el modelo de bloques y estamos en camino de convertirnos en desarrolladores front-end.
El posicionamiento en CSS parece bastante simple. Indique qué bloque y dónde debe ubicarse. Sin embargo, no todo es tan sencillo como parece a primera vista. Hay varios puntos que pueden confundir a los novatos. Puede obtener muchos más beneficios del posicionamiento si comprende en detalle cómo funciona.
Modelo de caja en CSS y tipos de posicionamiento.
Antes de comenzar, te aconsejo que leas el artículo Modelo de caja en CSS. En pocas palabras: cada elemento en html es un rectángulo para el cual puedes especificar los valores de los márgenes interior y exterior, así como el borde que los separa.
Los esquemas de posicionamiento definen dónde debe ubicarse este rectángulo, así como cómo debe afectar a los elementos que lo rodean.
La propiedad de posición en CSS puede tomar cinco valores:
absoluto
relativo
fijado
estático
heredar
El valor estático es el predeterminado. Cualquier elemento con posicionamiento estático está en el flujo general del documento. Las reglas para su colocación vienen determinadas por el modelo Box. Para dichos elementos, se ignorarán las propiedades top, right, bottom e left. Para utilizar estas propiedades, el posicionamiento del elemento debe ser absoluto, relativo o fijo.
El valor heredado, como ocurre con todas las demás propiedades de CSS, se utiliza para garantizar que el elemento utilice el mismo valor que su elemento principal.
posicionamiento absoluto
El posicionamiento absoluto elimina un elemento del flujo general del documento. En cuanto a los elementos alrededor, en este caso simplemente ignoran el buscado, como si tuviera configurada la propiedad display: none; . Si no desea que el espacio para dicho elemento se llene con otros elementos, entonces debe idear un enfoque diferente.
La posición de un elemento se establece con posicionamiento absoluto utilizando las propiedades top, left, right y bottom. Sólo necesita especificar dos de ellos, arriba o abajo e izquierda o derecha. Si no se especifica ninguna propiedad, el par superior izquierdo se establece en 0.
La clave para el posicionamiento absoluto es comprender cuál es su punto de referencia. Si la propiedad superior se establece en 20 px, ¿desde dónde deberían contarse?
La respuesta es simple: dichos elementos se ubican en relación con el elemento principal más cercano, que tiene una posición distinta a la estática. Si no existe tal elemento, entonces el elemento se coloca en relación con el documento principal. Es decir, al configurar el posicionamiento absoluto, CSS le dice al navegador que mire el elemento principal y, si su posicionamiento no es estático, entonces debe alinear el elemento actual con respecto a él.
Posicionamiento relativo.
Los elementos relativamente posicionados se colocan en función de su propia posición, el desplazamiento habitual con respecto a su ubicación normal. Esto es similar a agregar relleno a un elemento usando la propiedad de margen. Sin embargo, hay una diferencia significativa: los elementos adyacentes, cuando se utiliza el posicionamiento, no tienen en cuenta este desplazamiento.
Imagínelo de esta manera: una determinada imagen se mueve y en su lugar queda un "fantasma", todos los elementos están ubicados en relación con este "fantasma". Esto nos permite superponer elementos uno encima del otro.
Por lo tanto, los elementos con posicionamiento relativo se toman del flujo normal del elemento, pero aún influyen en la ubicación de los elementos vecinos, que se comportan de manera que el elemento original todavía está en el flujo del documento.
En este caso, no deberíamos preguntarnos qué elemento está colocado aquí. La respuesta es siempre: flujo normal de documentos. Se parece mucho a que agregó relleno a un elemento, pero al mismo tiempo no afectó a los elementos vecinos.
Posicionamiento fijo
El posicionamiento fijo actúa de manera similar al posicionamiento absoluto, con pequeñas diferencias.
En primer lugar, un elemento de posición fija siempre se coloca en relación con la ventana del navegador y los elementos principales se ignoran.
La segunda diferencia proviene de su nombre. Los elementos fijos están fijos en la página. No se mueven al desplazarse.
índice Z
La página del sitio web es bidimensional. Tiene ancho y alto. El índice Z añade una tercera dimensión, la profundidad.
Cuanto mayor sea este índice, más arriba se ubicará el elemento en la página. Con él podremos conseguir que un elemento quede situado encima de otro. Por defecto, su valor es cero. Los valores negativos también son aceptables.
De hecho, el índice z es mucho más complejo de lo que lo describo aquí, pero ese es un tema para otro artículo. Ahora, lo principal a recordar es la idea misma de la tercera dimensión y el hecho de que sólo los elementos posicionados pueden utilizar esta propiedad.
Problemas de posicionamiento.
Veamos algunos problemas comunes asociados con el posicionamiento, así como algunas palabras sobre cómo resolverlos.
No puede utilizar la propiedad de posición y la propiedad flotante en el mismo elemento al mismo tiempo. Ambas propiedades afectan la posición del elemento, por lo que se utilizará la última propiedad especificada.
De los comentarios:
Puedes usar posición: relativa y flotante al mismo tiempo.
Cuando position:absolute y float se especifican simultáneamente, no se aplica la última propiedad especificada. En este caso, independientemente del orden de estos estilos, se aplica la posición:absoluta y el valor resultante (o calculado) de la propiedad flotante se establece en ninguno, independientemente del valor inicial, es decir. ignorado.
Los márgenes no colapsan en elementos posicionados de forma absoluta. Digamos que hay un párrafo en la página con un margen inferior de 20 píxeles. A continuación hay una imagen con un margen superior de 30 píxeles. La distancia entre la imagen y el texto no será de 50px (20px + 30px), sino de 30px (30px > 20px). Este comportamiento se denomina colapso de márgenes. Dos guiones se combinan en uno. Los elementos absolutamente posicionados no tienen márgenes para colapsar, por lo que el resultado puede no ser el esperado.
IE e índice z. En IE6, un elemento siempre se selecciona en la parte superior de la pila, independientemente de su índice z o del índice z de los elementos circundantes.
IE6 e IE7 tienen otro problema con el índice z. IE mira el elemento principal para determinar en qué grupo de elementos se encuentra la parte superior de la pila; otros navegadores usan el contexto global. Por ejemplo:
Esperamos que el párrafo aparezca más alto que la imagen porque su índice z es más grande. Sin embargo, IE6 e IE7 colocan la imagen más arriba porque están en pilas de documentos diferentes. Una pila es para div, la segunda es para img y la imagen tiene un índice z más alto que el div.
Conclusión
La propiedad de posición establece el comportamiento de posicionamiento de un elemento según uno de los esquemas de posicionamiento. Los valores de propiedad disponibles son absoluto, relativo, fijo, estático (predeterminado) y heredado.
Los esquemas de posicionamiento definen las reglas para colocar un elemento en una página web, así como la influencia en la ubicación de los elementos vecinos.
La propiedad de índice z solo se puede aplicar a elementos con la propiedad de posición establecida. Agrega una tercera dimensión a la página y establece el orden de pila de los elementos.
La propiedad de posición parece fácil de entender, pero funciona un poco diferente de lo que parece a primera vista. A menudo los desarrolladores piensan que necesitan un posicionamiento relativo, aunque lo más probable es que deban utilizar el posicionamiento absoluto. Básicamente, la propiedad flotante se utiliza durante el diseño y la propiedad de posición es necesaria para los elementos que desea "eliminar" del flujo general del documento.
Popular en la categoría:
Cómo fusionar capas en Photoshop en una o combinarlas en un grupo...