Planificación de interfaces web

1.8 POSITION

CONCEPTOS DE POSITION

Antes de empezar a maquetar con la propiedad position, debemos de conocer los siguientes términos:

Espacio reservado

Es el espacio que ocupa un elemento en el navegador.

Flujo de rendimiento

Es el orden en el que se dibujan los elementos (de izquierda a derecha y de arriba a abajo). Hay que tener en cuenta que por defecto el punto 0,0 es la esquina superior izquierda.

Elemento posicionado

El valor tiene la prioridad position con un valor distinto a static (valor por defecto).

Sticking context

Es el orden en el que se apilan las cajas.

PROPIEDADES FUNDAMENTALES DE POSITION

Al posicionar un elemento se activan 5 propiedades que usaremos para mover los elementos en los tres ejes (x,y,z):

top

El elemento se moverá desde la parte superior a la posición que le hayamos indicado. Es importante saber que esta propiedad tiene preferencia sobre el Bottom.

bottom

El elemento se moverá desde la parte inferior a la posición que le hayamos indicado.

left

El elemento se moverá desde la parte izquierda (posición por defecto) a la posición que le hayamos indicado. Es importante saber que esta propiedad tiene preferencia sobre el Right.

right

El elemento se moverá desde la parte derecha, a la posición que le hayamos indicado.

Z-index

El elemento se moverá en el contexto de apilamiento, es decir moviendo el eje z.

Tipos de position

A la propiedad position, le podemos establecer los siguientes tipos de propiedades:

Static

Con position: static :

  • El elemento no se posiciona y no podemos moverlo.
  • Es el valor por defecto de todos los elementos.

Ejemplo con position: static

Creamos un div de color rojo y le aplicamos la propiedad position: static con posición superior de 20px.

div.rojo {
     position: fixed;
     top: 20px;
}

Podemos ver que por mucho que intentemos mover la posición, el div no se mueve.

Relative

Con position: relative :

  • El elemento mantiene su posición y espacio reservado.
  • Mantiene las medidas en el flujo de rendimiento.

IMPORTANTE: Usa la esquina superior izquierda de se posición, como punto de referéncia.

Ejemplo con position: relative

Creamos un div de color rojo y le aplicamos la propiedad position: relative con posición superior de 20px.

div.rojo {
     position: relative;
     top: 20px;
}

Podemos ver que el div de color rojo, se ha movido 20 pixeles de la parte superior.

Ejemplo con position: relative y elementos superpuestos

Creamos un div de color rojo y le aplicamos la propiedad position: relative con posición superior de 40px y creamos un segundo div de color azul con la propiedad position: relative.

div.rojo {
     position: relative;
     top: 40px;
}
 

div.azul {
     position: static;
}

Podemos ver que el div de color azul, se superpone por encima del div de color rojo.

Ejemplo con position: relative y propiedades contradictorias

Creamos un div de color rojo y le aplicamos la propiedad position: relative con posición superior de 20px y posición inferior de 40px.

div.rojo {
     position: relative;
     top: 20px;
     bottom: 40px;
}

Podemos ver que el div de color rojo solo se ha movido 20 píxeles de la parte superior, puesto que la propiedad top prevalece sobre bottom.

Absolute

Con position: absolute :

  • El elemento pierde su posición y espacio reservado.
  • El elemento se posiciona flotando en el elemento padre.

IMPORTANTE: Si no tiene elemento padre, usará el documento HTML.

IMPORTANTE: A los elementos de línea que tengan la propiedad absolute les podrás dar medidas (sin necesidad de usar display block).

Ejemplo con position: absolute

Creamos un div de color rojo y le aplicamos la propiedad position: absolute y luego creamos otro div de color azul.

div.rojo {
     position: absolute;
}

Podemos ver que el div de color rojo flota por encima del div de color azul.

Ejemplo con position: absolute

Creamos un div de color rojo y le aplicamos la propiedad position: absolute y luego creamos otro div de color azul.

div.rojo {
     position: absolute;
}

Podemos ver que el div de color rojo flota por encima del div de color azul.

Ejemplo con position: absolute sin contenedor

Creamos un div de color rojo y le aplicamos la propiedad position: absolute con bottom 0px y luego creamos otro div de color azul y le aplicamos la propiedad position: absolute con top 0px.

div.rojo {
     position: absolute;
     bottom: 0px;
}
 
div.azul {
     position: absolute;
     top: 0px;
}

Podemos ver que el div de color rojo flota en la parte de abajo de la web y el div de color azul flota en la parte superior.

Ejemplo con position: absolute con contenedor

Siguiendo el ejemplo anterior, al div de color azul lo meteremos dentro de otro div de color verde.

div.rojo {
     position: absolute;
     bottom: 0px;
}
 
div.verde {
     position: relative;
}
 
div.azul {
     position: absolute;
     bottom: 0px;
}

Podemos ver que el div de color rojo flota en la parte de abajo de la web y el div de color azul flota en la parte inferior de su elemento padre (en este caso es el div verde).

Fixed

Con position: fixed :

  • El elemento pierde su posición y espacio reservado.

IMPORTANTE: El elemento siempre usará el HTML cómo referencia.

IMPORTANTE: El elemento siempre quedará en la misma posición (por mucho que se haga scroll).

Ejemplo con position: absolute

Creamos un div de color rojo y le aplicamos la propiedad position: fixed y lo ubicamos en la parte inferior derecha de la web.

div.rojo {
     position: fixed;
     bottom: 0px;
     right: 0px;
}

Podemos ver que el div de color rojo se queda fijo en la parte inferior derecha de la web.

Sticky

Con position: sticky :

  • Es una mezcla entre position relative y fixed.
  • Los valores top, left, bottom y right sirven para indicar cuando pasará el elemento a un comportamiento fixed.

Ejemplo con position: sticky

Creamos un div de color rojo y le aplicamos la propiedad position: sticky y le ponemos top 0px.

div.rojo {
     position: sticky;
     top: 0px;
}

Podemos ver que el div de color rojo se queda fijo en la parte superior.