CONCEPTOS BASE

CSS

Lenguaje que define el aspecto de una página web: colores, tipografías, espaciados y cómo se coloca cada elemento según el tamaño de la pantalla.

Nivel · principiante3 min de lecturaActualizado 23 ago 2026
También conocido como: Cascading Style Sheets, Hojas de estilo

Definición

CSS (Cascading Style Sheets) es el lenguaje que decide cómo se ve el HTML. Colores, tipos de letra, tamaños, espacios, posiciones y cómo cambia todo eso según el ancho de la pantalla.

La idea de fondo es la separación de responsabilidades: el HTML dice qué es cada cosa y el CSS dice cómo se ve. Cuando esa frontera se respeta, puedes rediseñar una web entera sin tocar el contenido.

Una regla de CSS tiene dos partes: un selector que dice a qué elementos se aplica, y un bloque de declaraciones con las propiedades y sus valores.

.precio {
  font-size: 1.5rem;
  color: #00e5ff;
}

La cascada y la especificidad

La primera C de CSS es de cascading, y es la parte que más quebraderos de cabeza da. Cuando varias reglas afectan al mismo elemento, gana una. El orden de desempate:

  1. Importancia: !important gana a todo lo demás.
  2. Especificidad: cuanto más concreto es el selector, más pesa. Un id (#precio) pesa más que una clase (.precio), y una clase más que una etiqueta (p).
  3. Orden: a igual especificidad, gana la última que se declaró.

Aquí nace el error más común del oficio: cuando algo no se aplica, la tentación es poner !important. Funciona esa vez y crea el problema siguiente, porque a partir de ahí solo se puede pisar con otro !important. La solución correcta casi siempre es bajar la especificidad de la regla que estorba, no subir la de la tuya.

Colocar cosas: flexbox y grid

Durante años colocar elementos en CSS fue un sufrimiento de floats y trucos. Hoy hay dos herramientas hechas para eso y resuelven casi todo:

  • Flexbox, para una dimensión: una fila o una columna. Ideal para barras de navegación, listas de botones, alinear un icono con su texto.
  • Grid, para dos dimensiones: filas y columnas a la vez. Ideal para maquetar la página entera o una rejilla de tarjetas.

Con gap para separar, y ya no hacen falta márgenes que se colapsan ni se duplican.

Ejemplo práctico

En la web de IMDICA teníamos una rejilla de productos que se descuadraba en tablet. Estaba hecha con anchos en porcentaje y márgenes calculados a mano, y cada vez que se añadía una columna había que recalcularlo todo.

Sustituirlo por una línea de Grid con repeat(auto-fit, minmax(280px, 1fr)) resolvió el problema entero: la rejilla decide sola cuántas columnas caben según el ancho disponible, sin un solo media query.

Y una cosa que aprendí de la manera dura en esta misma web: un elemento con mx-auto dentro de un contenedor flex no se estira, se encoge al contenido. Una página salía 400 píxeles más estrecha que las demás con exactamente las mismas clases. No era un error de CSS: era CSS haciendo justo lo que dice la especificación. Media hora midiendo el árbol de elementos para encontrarlo.

Errores comunes

  • !important como solución. Es deuda técnica inmediata.
  • Selectores kilométricos. .contenedor .lista .item .titulo span es imposible de pisar y frágil ante cualquier cambio de estructura.
  • Píxeles fijos para el texto. Usar rem respeta el tamaño de letra que el usuario haya configurado en su navegador. Con px lo ignoras.
  • No pensar en móvil desde el principio. Es más fácil ampliar que encoger: empieza por la pantalla pequeña.
  • Definir un color solo dentro de un @media. Si el otro caso no lo define, ahí se queda sin color.
  • Olvidar el foco del teclado. Quitar el outline porque "queda feo" deja la web inutilizable para quien navega con Tab. Si lo quitas, pon otro visible.

Cuándo usarlo

Siempre, aunque uses Tailwind, Bootstrap o cualquier otra cosa: todos generan CSS por debajo, y cuando algo no encaja hay que entender la cascada para arreglarlo.

Lo que sí ha cambiado es cuánto CSS escribes a mano. Con un sistema de utilidades escribes muchas menos reglas propias, pero necesitas entender exactamente lo mismo.

Referencias

Tagsprogramacionwebfrontenddiseño
Escrito por
Antonio Echeverría

Dirijo IMDICA, una empresa de suministro industrial, desde 2007. Escribo estas definiciones desde el lado de quien las usa para decidir, no desde el de quien las estudia.

Si necesitas que alguien construya esto de verdad y no solo lo explique, eso es lo que hago en AE Works.