CSS (*Cascading Style Sheets*) define el aspecto de un documento HTML: colores, tamaños, disposición de los elementos. Se escribe en archivos .css enlazados desde el HTML.
<link rel="stylesheet" href="styles.css">
/* selector { propiedad: valor; } */
h1 {
color: #1a1a1a;
font-size: 2rem;
}
.card {
border: 1px solid #ddd;
padding: 1rem;
}
| Selector | Aplica a |
|---|---|
p | Todos los elementos <p> |
.card | Elementos con class=“card” |
#main | El elemento con id=“main” |
nav a | Enlaces dentro de <nav> |
input[type=email] | Inputs de tipo email |
nav a {
text-decoration: none;
}
input[type=email] {
border-color: #4a90d9;
}
Cuando varios selectores aplican al mismo elemento, gana el más específico: el id supera a la clase y la clase al selector de elemento.
Cada elemento es una caja con contenido, padding, border y margin:
┌─────────── margin ───────────┐ │ ┌──────── border ─────────┐ │ │ │ ┌───── padding ─────┐ │ │ │ │ │ contenido │ │ │ │ │ └───────────────────┘ │ │ │ └─────────────────────────┘ │ └──────────────────────────────┘
* {
box-sizing: border-box; /* el ancho incluye padding y borde */
}
.card {
padding: 1rem;
margin-bottom: 0.5rem;
}
Flexbox distribuye los hijos de un contenedor en una dirección:
.catalog {
display: flex;
gap: 1rem;
flex-wrap: wrap;
}
.catalog .card {
flex: 1 1 200px; /* crece, encoge, base */
}
| Propiedad | Función |
|---|---|
display: flex | Activa el modo flex en el contenedor |
justify-content | Distribución en el eje principal |
align-items | Alineación en el eje cruzado |
gap | Separación entre elementos |
flex-wrap | Permite saltar de línea |
body {
font-size: 1rem;
max-width: 60rem;
margin: 0 auto;
}
@media (max-width: 600px) {
.catalog .card {
flex-basis: 100%;
}
}
rem, %) frente a píxeles fijos.max-width y margin: auto centran el contenido.