CSS y web

Patrones CSS con degradados repetidos

Los cortes duros convierten los degradados en formas, y background-size convierte las formas en teselas. Con esas dos ideas puedes dibujar la mayoría de los patrones clásicos en pocas líneas, sin archivos de imagen.

GradientlyCuenta verificada de Gradiently··5 min de lectura
Portada: Burnt Expedition · GR·5E64·EH

La versión corta

  • Los patrones CSS se dibujan con degradados que usan cortes duros, de modo que los colores cambian al instante en lugar de mezclarse.
  • Las funciones repeating-linear-gradient, repeating-radial-gradient y repeating-conic-gradient repiten sus puntos para llenar el elemento, lo que dibuja rayas, anillos y rayos.
  • background-size convierte un solo degradado en una tesela, que es como se construyen las cuadrículas de puntos y de líneas, los tableros de ajedrez y el vichy.
  • Las posiciones de los puntos escritas en píxeles mantienen las rayas nítidas y uniformes, mientras que los porcentajes pueden producir bordes desiguales y borrosos.
  • Los patrones detrás del texto deben mantener poco contraste, para que las palabras sigan siendo fáciles de leer.
En esta página

Los patrones CSS son fondos repetidos, como rayas, cuadrículas, puntos y cuadros, dibujados por completo con funciones de degradado. Dos ideas los hacen funcionar. Los cortes duros, donde dos puntos comparten una posición, convierten un degradado en un borde nítido. La repetición, con las funciones de degradado repeating-* o con el mosaico de background-size, convierte un borde en un patrón. El resultado pesa unos pocos bytes, escala a la perfección y toma sus colores de tus variables CSS.

Seis patrones, cada uno un único degradado repetido. Copia cualquiera directamente en background.

Cómo hacen formas los cortes duros

Un degradado se mezcla entre puntos vecinos. Si el siguiente punto empieza justo donde acabó el último, no hay distancia sobre la que mezclar, así que el color cambia con una línea dura. La abreviatura para esto es un color con dos posiciones, como #1e293b 0 10px, que mantiene ese color liso de 0 a 10 píxeles. La guía del degradado lineal CSS cubre en detalle los puntos, las pistas y los cortes duros.

css
/* a soft blend */
background: linear-gradient(90deg, #1e293b, #334155);

/* a hard edge at 50% */
background: linear-gradient(90deg, #1e293b 50%, #334155 50%);

/* the same stripe pair, repeated every 20px */
background: repeating-linear-gradient(90deg, #1e293b 0 10px, #334155 10px 20px);
De mezcla a borde y a patrón, en tres pasos.

Rayas con repeating-linear-gradient

repeating-linear-gradient() repite su lista de puntos a lo largo de la línea del degradado hasta llenar el elemento. La longitud de una repetición es la posición del último punto, así que 0 10px, 10px 20px se repite cada 20 píxeles. Cambia el ángulo para las diagonales y cambia la proporción de las dos bandas para rayas finas o rayas anchas de toldo.

PatrónPuntosEfecto
Rayas uniformesA 0 10px, B 10px 20pxBandas iguales, repetición de 20px
Rayas finasA 0 23px, B 23px 24pxUna línea de 1px cada 24px
ToldoA 0 40px, B 40px 80px a 90degBandas verticales anchas
Doble líneaA 0 20px, B 20px 22px, A 22px 26px, B 26px 28pxDos líneas finas muy juntas
Recetas de rayas. A y B son tus dos colores; el último punto fija la longitud de repetición.

Cuadrículas, puntos y teselas con background-size

Algunos patrones no se pueden dibujar con un solo degradado repetido: una cuadrícula de puntos necesita repetición en dos direcciones. La solución es dibujar una tesela, como un punto o una esquina de cuadrícula, y fijar después background-size al tamaño de la tesela. Los fondos se repiten por defecto, así que la tesela llena el elemento.

css
.grid-lines {
  background-color: #0f172a;
  background-image:
    linear-gradient(rgb(255 255 255 / 0.08) 1px, transparent 1px),
    linear-gradient(90deg, rgb(255 255 255 / 0.08) 1px, transparent 1px);
  background-size: 32px 32px;
}

.dots {
  background-color: #fefce8;
  background-image: radial-gradient(#ca8a04 1.5px, transparent 2px);
  background-size: 20px 20px;
}

.checkerboard {
  background: repeating-conic-gradient(#e2e8f0 0 25%, #ffffff 0 50%) 0 0 / 24px 24px;
}
Una cuadrícula de plano, una cuadrícula de puntos y un tablero de ajedrez. Cada uno es una tesela repetida por background-size.

La cuadrícula son dos degradados: uno dibuja una línea horizontal de 1px arriba de cada tesela, el otro una línea vertical en su borde izquierdo. Los puntos son un pequeño degradado radial que se vuelve transparente tras 2 píxeles. El tablero de ajedrez usa un degradado cónico dividido en cuartos, y por eso solo necesita una capa.

Vichy, cuadros escoceses y zigzags

Superponer rayas semitransparentes crea patrones tejidos: donde se cruzan una banda horizontal y una vertical, sus colores se apilan y el cuadrado se oscurece. Eso es el vichy. Añade un segundo conjunto de rayas más finas de otro color y se convierte en cuadros escoceses. Los zigzags salen de cuatro esquinas triangulares, cada una dibujada con un corte duro del 25% en un ángulo distinto.

css
.gingham {
  background-color: #ffffff;
  background-image:
    linear-gradient(90deg, rgb(220 38 38 / 0.45) 50%, transparent 0),
    linear-gradient(rgb(220 38 38 / 0.45) 50%, transparent 0);
  background-size: 24px 24px;
}

.zigzag {
  background-color: #e0f2fe;
  background-image:
    linear-gradient(135deg, #0ea5e9 25%, transparent 25%),
    linear-gradient(225deg, #0ea5e9 25%, transparent 25%),
    linear-gradient(315deg, #0ea5e9 25%, transparent 25%),
    linear-gradient(45deg, #0ea5e9 25%, transparent 25%);
  background-position: -16px 0, -16px 0, 0 0, 0 0;
  background-size: 32px 32px;
}
Vichy rojo y un zigzag azul cielo. En el zigzag, las dos primeras capas se desplazan media tesela para que los triángulos encajen.

Rayas en movimiento para barras de progreso

Las rayas diagonales animadas son la forma clásica de mostrar que algo sigue funcionando. Dibuja las rayas como una tesela con background-size y mueve después background-position exactamente el ancho de una tesela. Como el fotograma final coincide con el inicial, el bucle no tiene un salto visible. Úsalo solo en elementos pequeños y detenlo para quienes prefieren el movimiento reducido.

css
.progress {
  background-color: #4f46e5;
  background-image: linear-gradient(45deg, rgb(255 255 255 / 0.18) 25%, transparent 25% 50%, rgb(255 255 255 / 0.18) 50% 75%, transparent 75%);
  background-size: 28px 28px;
  animation: crawl 1s linear infinite;
}

@keyframes crawl {
  to { background-position: 28px 0; }
}

@media (prefers-reduced-motion: reduce) {
  .progress { animation: none; }
}
Rayas que avanzan por una barra de progreso. La distancia de la animación es igual al ancho de la tesela, así que el bucle es continuo.

Tamaño, temas y escala de los patrones

Escribe las posiciones de los puntos y los tamaños de las teselas en píxeles o em, no en porcentajes. Los porcentajes dependen del tamaño del elemento, así que las rayas se estiran de forma desigual al cambiar de tamaño y los bordes pueden caer entre píxeles y desenfocarse. Usar em hace que un patrón escale con el texto que lo rodea, lo que encaja con insignias y etiquetas con patrón.

Las propiedades personalizadas hacen reutilizables los patrones. Define los colores y el tamaño una vez y varíalos por componente o por tema, por ejemplo un patrón más claro en modo claro y otro más discreto en modo oscuro.

css
.stripes {
  --a: #1e293b;
  --b: #334155;
  --w: 10px;
  background: repeating-linear-gradient(45deg, var(--a) 0 var(--w), var(--b) var(--w) calc(var(--w) * 2));
}

.stripes--warm {
  --a: #fff7ed;
  --b: #fed7aa;
  --w: 14px;
}
Un patrón, con temas al cambiar tres variables.

Patrones detrás del texto

Evita

  • Rayas de alto contraste justo detrás del texto de cuerpo
  • Patrones finos que centellean al hacer scroll
  • Patrones del mismo color que el texto
  • Varios patrones distintos en una misma pantalla

Haz

  • Patrones de poco contraste, dos tonos próximos de un mismo color
  • Teselas más grandes y serenas en superficies amplias
  • Un panel liso bajo el texto que se apoya sobre un patrón cargado
  • Un patrón como acento reconocible

Los patrones son un tipo de textura, y se aplican las mismas reglas: lo bastante sutiles para sentirse más que leerse. La textura de fondo cubre el grano, el papel y la tela; el texto sobre fondos cargados cubre cómo mantener legibles las palabras encima.

Preguntas frecuentes

¿Cómo hago rayas en CSS?

Usa repeating-linear-gradient() con cortes duros, como repeating-linear-gradient(45deg, #1e293b 0 10px, #334155 10px 20px). Cambia el ángulo para la dirección y las longitudes para el ancho.

¿Cómo hago un patrón de puntos en CSS?

Dibuja un punto con radial-gradient(#ca8a04 1.5px, transparent 2px) y repítelo con background-size: 20px 20px.

¿Cómo hago un tablero de ajedrez en CSS?

Usa repeating-conic-gradient(#e2e8f0 0 25%, #ffffff 0 50%) con un background-size como 24px 24px. Cada tesela contiene cuatro cuadrados.

¿Por qué mis rayas CSS salen borrosas o desiguales?

Las posiciones en porcentaje pueden caer entre píxeles. Usa longitudes en píxeles o em para los puntos y los tamaños de tesela, y deja medio píxel entre puntos en los bordes diagonales.

¿Son mejores los patrones de degradado CSS que los patrones de imagen?

Para patrones geométricos, normalmente sí: no necesitan descarga, se ven nítidos a cualquier tamaño y se pueden recolorear con variables CSS. Las texturas orgánicas o fotográficas siguen necesitando imágenes.

Compartir esta guía

Escrito por GradientlyCuenta verificada de Gradiently

El equipo detrás de Gradiently, una herramienta de diseño creada en torno a los Marks: degradados vivos que hacen que todo lo que diseñas parezca tuyo.

Ver nuestro perfil