Introducción a CSS
CSS (Cascading Style Sheets o Hojas de Estilo en Cascada) es el lenguaje que se utiliza para describir la presentación visual de un documento HTML.
Con CSS puedes cambiar colores, fuentes, tamaños, márgenes, posiciones y en general la apariencia de una página web.
¿Qué es CSS?
CSS significa Cascading Style Sheets.
- Cascading (cascada): las reglas se aplican siguiendo un orden jerárquico y de prioridad.
- Style (estilo): define cómo se ve un elemento en la página.
- Sheets (hojas): porque se organizan en archivos (generalmente
.css
).
Cómo se aplica CSS
Existen tres formas principales de aplicar CSS a un documento HTML:
- En línea (inline): dentro del atributo
style
de una etiqueta.
<p style="color:red;">Texto en rojo</p>
- En el documento HTML, usando
<style>
:
<style>
p {
color: blue;
}
</style>
- En un archivo externo (recomendado):
<link rel="stylesheet" href="styles.css" />
✅ Ejercicio:
Crea un archivo index.html
y conéctalo a un archivo styles.css
. Cambia el color de fondo de la página.
Selectores básicos
Un selector en CSS es la forma de decirle al navegador a qué elemento aplicar un estilo.
- Por etiqueta: selecciona todos los elementos de un tipo.
p {
color: green;
} /* Todos los párrafos serán verdes */
- Por clase (
.
): se aplica a elementos con un atributoclass
.
.texto {
font-size: 18px;
}
- Por id (
#
): se aplica a un elemento con un identificador únicoid
.
#principal {
background: yellow;
}
📌 Especificidad:
Si dos reglas afectan al mismo elemento, el navegador aplica la más específica:
id
> clase
> etiqueta
.
✅ Ejercicio:
Aplica un estilo a todos los párrafos, uno distinto a una clase llamada .importante
, y un color de fondo a un id llamado #titulo
.
Colores y unidades
Colores en CSS
- Por nombre:
red
,blue
,green
- HEX:
#ff0000
(rojo) - RGB:
rgb(255, 0, 0)
(rojo) - HSL:
hsl(0, 100%, 50%)
(rojo)
Unidades en CSS
- Absolutas:
px
(píxeles, fijos).
- Relativas:
%
(porcentaje relativo al contenedor).em
(relativo al tamaño de la fuente del elemento padre).rem
(relativo al tamaño de la fuente raíz del documento).
- Viewport:
vh
(altura de la pantalla).vw
(ancho de la pantalla).
✅ Ejercicio:
Haz un texto en rgb(0, 128, 255)
, con un tamaño en 2em
.
Propiedades de texto
Las propiedades de texto permiten controlar cómo se ve el contenido escrito.
p {
color: navy; /* Color del texto */
font-size: 18px; /* Tamaño de la fuente */
font-family: Arial, sans-serif; /* Tipo de letra */
text-align: center; /* Alineación */
line-height: 1.5; /* Espacio entre líneas */
letter-spacing: 2px; /* Espacio entre letras */
}
✅ Ejercicio:
Crea un párrafo con fuente personalizada, centrado y con espacio extra entre letras.
Fondos y bordes
body {
background-color: lightgray; /* Fondo de color */
background-image: url('fondo.png'); /* Fondo con imagen */
background-repeat: no-repeat; /* No repetir la imagen */
background-size: cover; /* Escalar al tamaño de la pantalla */
}
div {
border: 2px solid black; /* Grosor, estilo y color */
border-radius: 10px; /* Bordes redondeados */
}
✅ Ejercicio:
Crea un div
con fondo de color, borde redondeado y sombra (box-shadow
).
Modelo de Caja (Box Model)
El Box Model es la forma en que CSS representa cada elemento como una caja con 4 áreas:
- Content (contenido) → el texto o imagen dentro del elemento.
- Padding (relleno interno) → espacio entre el contenido y el borde.
- Border (borde) → línea alrededor del padding.
- Margin (margen) → espacio externo respecto a otros elementos.
div {
width: 200px;
padding: 20px;
border: 5px solid red;
margin: 10px;
}
✅ Ejercicio:
Dibuja un div
con diferentes valores de margin y padding para ver la diferencia.
Posicionamiento
La propiedad position
define cómo se coloca un elemento en la página.
- static: posición normal.
- relative: relativo a su posición original.
- absolute: relativo al primer contenedor con posición distinta de
static
. - fixed: fijo en la pantalla, incluso al hacer scroll.
- sticky: se comporta como
relative
, pero se fija al hacer scroll.
.caja1 {
position: static;
}
.caja2 {
position: relative;
top: 10px;
left: 20px;
}
.caja3 {
position: absolute;
top: 0;
right: 0;
}
.caja4 {
position: fixed;
bottom: 10px;
right: 10px;
}
✅ Ejercicio:
Crea un botón que quede fijo en la esquina inferior derecha.
Listas, enlaces y tablas
Enlaces con pseudoclases
a {
color: blue;
}
a:hover {
color: red;
} /* Cuando el ratón pasa por encima */
a:visited {
color: purple;
} /* Enlaces ya visitados */
Tablas
table {
border-collapse: collapse;
width: 100%;
}
td,
th {
border: 1px solid black;
padding: 8px;
}
tr:hover {
background-color: lightyellow;
}
✅ Ejercicio:
Crea una tabla con filas alternadas de colores.
Flexbox (introducción)
Flexbox (Flexible Box) es un sistema de diseño que facilita organizar elementos en filas o columnas.
.container {
display: flex; /* Activa flexbox */
justify-content: space-between; /* Distribución horizontal */
align-items: center; /* Alineación vertical */
}
✅ Ejercicio:
Crea un contenedor con 3 cajas distribuidas horizontalmente con espacio entre ellas.
Grid (introducción)
Grid es un sistema de diseño en dos dimensiones (filas y columnas).
.container {
display: grid; /* Activa grid */
grid-template-columns: 1fr 1fr 1fr; /* 3 columnas iguales */
gap: 10px; /* Espacio entre celdas */
}
✅ Ejercicio:
Crea un grid de 3 columnas con 6 cajas.
Responsividad (básico)
Responsive Design permite que una web se adapte a distintos tamaños de pantalla.
Se logra con media queries: reglas CSS que se aplican solo en ciertos anchos de pantalla.
@media (max-width: 600px) {
body {
background: lightblue;
}
p {
font-size: 14px;
}
}
✅ Ejercicio:
Haz que el fondo cambie de color en pantallas pequeñas.
Buenas prácticas y cierre
- Usa siempre un archivo externo (
styles.css
). - Reutiliza clases, evita usar
id
para estilos. - Usa variables CSS (Custom Properties):
:root {
--color-principal: #3498db;
}
button {
background: var(--color-principal);
color: white;
}
🎯 Proyecto final
Crea una página personal sencilla con:
- Un encabezado y un menú de navegación.
- Una sección con texto e imágenes.
- Una tabla y una lista.
- Estilos aplicados con Flexbox y/o Grid.
- Diseño responsive con media queries.