Appearance
A6. Posicionamiento
Objetivo
Experimentar con las propiedades de posicionamiento CSS para comprender cómo afectan a la ubicación de los elementos, al flujo normal del documento y a su superposición.
En esta actividad trabajarás con position, top, right, bottom, left, z-index, float y clear.
1. Preparación del proyecto
A partir de esta actividad, todos los ejercicios de DIW que incluyan código deberán almacenarse en tu repositorio usuario-diw, comenzando por los ejercicios de esta unidad (UD2).
En el repositorio distinguiremos dos partes:
- Documentación (
docs/): Contendrá los archivos Markdown con las explicaciones, capturas y resultados de las actividades, manteniendo la organización utilizada hasta ahora. - Ejercicios (
exercises/): Contendrá el código fuente de los ejercicios prácticos. Cada ejercicio tendrá su propio directorio con todos los archivos necesarios para ejecutarlo.
La estructura del repositorio será similar a la siguiente:
text
usuario-diw/
├── docs/ # Documentación en Markdown
│ ├── index.md
│ ├── ud1/
│ └── ud2/
│ └── s1/
│ ├── a1-css-syntax.md
│ ├── a2-ways-to-apply-css.md
│ ├── a3-inheritance.md
│ ├── a4-selectors.md
│ ├── a5-test-your-knowledge.md
│ └── a6-positioning.md
│
├── exercises/ # Código fuente de los ejercicios
│ └── ud2/
│ └── s1/
│ ├── a2-ways-to-apply-css/
│ ├── a3-inheritance/
│ ├── a4-selectors/
│ ├── a5-test-your-knowledge/
│ └── a6-positioning/
│ ├── index.html
│ └── styles.css
│
└── ... # Resto de archivos de la plantillaDocumentación y código fuente
La estructura anterior es orientativa. Cada ejercicio tendrá su documentación y, solo cuando requiera trabajar con código, un directorio con sus archivos fuente.
docs/: Documentación del trabajo realizado mediante explicaciones, capturas y respuestas a las preguntas.exercises/: Archivos del ejercicio (.html,.css,.js, imágenes, etc.) necesarios para consultarlo y ejecutarlo.
No todos los ejercicios necesitan un directorio en exercises/. Deberás revisar cada enunciado para determinarlo.
No es necesario incluir el código completo en la documentación, ya que estará disponible en exercises/.
Deberás incorporar al repositorio los ejercicios anteriores de esta unidad que contengan código y continuar utilizando esta organización en las siguientes actividades.
Para este ejercicio:
- Crea el directorio
exercises/ud2/s1/a6-positioning/. - Crea un archivo
index.htmly una hoja de estilos externastyles.css. - Organiza el documento HTML en secciones independientes, una para cada apartado práctico, identificadas mediante un título.
- Incluye los elementos HTML y las reglas CSS necesarias para comprobar el comportamiento de las propiedades estudiadas.
- Documenta los resultados en el apartado correspondiente
docs/ud2/s1/a6-positioning.md, manteniendo la estructura de documentación existente. - Guarda los cambios mediante Git y súbelos a tu repositorio remoto de GitHub.
2. Flujo normal y posicionamiento relativo
Partiendo del siguiente código HTML y CSS, experimenta con el posicionamiento relativo y observa cómo afecta al flujo normal del documento.
Código inicial
index.html
html
<section class="relative-example">
<h2>Posicionamiento relativo</h2>
<div class="box box-1">Caja 1</div>
<div class="box box-2">Caja 2</div>
<div class="box box-3">Caja 3</div>
</section>styles.css
css
.relative-example {
padding: 20px;
border: 2px solid #333;
}
.box {
width: 150px;
height: 80px;
margin: 10px;
padding: 10px;
border: 2px solid #333;
}
.box-1 {
background-color: lightcoral;
}
.box-2 {
background-color: lightblue;
}
.box-3 {
background-color: lightgreen;
}Realiza las siguientes pruebas:
- Comprueba cómo se distribuyen inicialmente las tres cajas siguiendo el flujo normal del documento.
- Aplica
position: relativea la segunda caja. - Desplázala
30pxhacia abajo y40pxhacia la derecha mediantetopyleft. - Observa qué ocurre con el espacio que ocupaba originalmente y con la posición de las otras dos cajas.
- Modifica los valores de
topyleftpara provocar una superposición entre cajas.
Responde:
- ¿La segunda caja conserva su espacio original?
- ¿La tercera caja cambia de posición?
- ¿Qué ocurre cuando dos cajas se superponen?
- ¿Qué diferencia observas entre la posición visual de la segunda caja y el espacio que ocupa en el flujo normal?
3. Posicionamiento absoluto
Crea un contenedor rectangular de 500px de ancho y 300px de alto, con un borde visible.
Dentro del contenedor, incluye tres cajas pequeñas.
- Establece
position: relativeen el contenedor. - Aplica
position: absolutea las tres cajas. - Sitúa la primera en la esquina superior izquierda.
- Sitúa la segunda en la esquina superior derecha.
- Sitúa la tercera en la esquina inferior derecha.
- Utiliza desplazamientos de
10pxrespecto a los bordes correspondientes.
A continuación:
- Elimina temporalmente
position: relativedel contenedor. - Observa qué ocurre con la posición de las cajas.
- Restablece la propiedad.
Responde:
- ¿Por qué se utiliza
position: relativeen el contenedor? - ¿Qué sucede cuando se elimina?
- ¿Las cajas posicionadas absolutamente ocupan espacio en el flujo normal?
4. Posicionamiento fijo y sticky
Crea una sección de la página que contenga:
- Una cabecera con un título.
- Una barra de navegación.
- Varias subsecciones con suficiente contenido para generar desplazamiento vertical.
- Un botón situado en la esquina inferior derecha de la ventana.
La barra de navegación deberá encontrarse dentro de un contenedor con suficiente altura para poder observar el comportamiento de sticky.
Realiza las siguientes modificaciones:
- Aplica
position: stickyytop: 0a la barra de navegación. - Comprueba cómo se comporta al desplazarte verticalmente por la página.
- Aplica
position: fixedal botón. - Sitúalo a
20pxdel borde inferior y a20pxdel borde derecho. - Comprueba si el botón permanece visible mientras te desplazas por la página.
Responde:
- ¿Qué diferencia existe entre el comportamiento de
fixedysticky? - ¿Qué ocurre si eliminas
top: 0de la barra de navegación? - ¿Qué diferencia existe entre ambos valores respecto al flujo normal del documento?
- ¿Qué ocurre con la barra de navegación cuando termina el contenedor en el que se encuentra?
5. Superposición y z-index
Crea un contenedor con tres cajas cuadradas de 150px de lado.
- Aplica
position: relativeal contenedor. - Aplica
position: absolutea las tres cajas. - Utiliza
topyleftpara conseguir que se superpongan parcialmente. - Asigna un color de fondo diferente a cada caja.
- Establece los siguientes valores de
z-index:- Primera caja:
1. - Segunda caja:
3. - Tercera caja:
2.
- Primera caja:
- Comprueba el orden de superposición.
- Modifica los valores para conseguir que la primera caja aparezca por encima de las demás.
Responde:
- ¿Qué relación existe entre
z-indexy el orden de superposición? - ¿Es necesario utilizar valores muy elevados de
z-index?
Contextos de apilamiento
Investiga qué es un contexto de apilamiento (stacking context) y cómo afecta al funcionamiento de z-index.
A continuación:
- Crea dos contenedores hermanos con
position: relative. - Asigna
z-index: 1al primero yz-index: 2al segundo. - Dentro del primer contenedor, crea una caja con
z-index: 9999y un posicionamiento adecuado. - Dentro del segundo contenedor, crea otra caja con
z-index: 10y un posicionamiento adecuado. - Ajusta las posiciones y tamaños para que ambas cajas se superpongan visualmente.
- Comprueba cuál aparece por encima.
Responde:
- ¿Por qué la caja con
z-index: 9999puede aparecer por debajo de la caja conz-index: 10? - ¿Qué relación existe entre los contextos de apilamiento de los contenedores y los valores de
z-indexde sus descendientes?
6. Float y clear
Crea una sección con:
- Una imagen de aproximadamente
150pxde ancho. - Dos párrafos de texto.
- Un bloque final con un color de fondo diferente.
Realiza los siguientes pasos:
- Aplica
float: lefta la imagen. - Añade un margen derecho de
15px. - Comprueba cómo se distribuye el texto alrededor de la imagen.
- Cambia
float: leftporfloat: righty observa las diferencias. - Ajusta la cantidad de texto o la altura de la imagen para conseguir que, antes de aplicar
clear, el bloque final pueda situarse junto a la imagen flotante. - Aplica
clear: bothal bloque final. - Comprueba cómo cambia su posición respecto a la imagen flotante.
Responde:
- ¿Qué efecto produce
floatsobre el texto? - ¿Para qué sirve
clear: both? - ¿Qué diferencia observas en la posición del bloque final antes y después de aplicar
clear: both? - ¿Por qué actualmente no se recomienda utilizar
floatpara construir la estructura general de una página web?
7. Comparación de los métodos de posicionamiento
Elabora una tabla comparativa con los cinco valores principales de position:
static.relative.absolute.fixed.sticky.
Para cada uno, indica:
- Si conserva su espacio en el flujo normal.
- Respecto a qué referencia se posiciona habitualmente.
- Si permanece visible al desplazarse por la página.
- Un ejemplo de utilización habitual.
Entrega
La entrega se realizará mediante un único documento PDF en AULES. Además, el código fuente deberá estar disponible en tu repositorio usuario-diw de GitHub.
Repositorio GitHub
Comprueba que:
- Has incorporado los ejercicios anteriores de la UD2 que contienen código, cada uno en su directorio correspondiente.
- El directorio
exercises/ud2/s1/e6/contiene todos los archivos necesarios para ejecutar esta actividad. - Los cambios están correctamente registrados mediante Git y subidos al repositorio remoto.
Documento PDF
El documento PDF deberá incluir:
- Enlace al directorio del ejercicio en tu repositorio de GitHub.
- Capturas de pantalla de los resultados obtenidos en cada apartado práctico.
- Explicaciones breves de las modificaciones realizadas y del comportamiento observado.
- Respuestas a todas las preguntas planteadas.
- Tabla comparativa del último apartado.
Las capturas deben permitir comprobar visualmente el funcionamiento de las propiedades CSS estudiadas.
No es necesario incluir todo el código fuente en el PDF, ya que estará disponible en GitHub, pero sí los fragmentos relevantes cuando sean necesarios para explicar los resultados.