La versión corta
- Un degradado lineal repetido repite sus paradas de color a lo largo de la línea del degradado, y la longitud de cada repetición es la posición de la última parada.
- Las rayas nítidas salen de dar a dos colores la misma posición, de modo que el color cambia de golpe en lugar de fundirse.
- Las rayas diagonales hechas con repeating-linear-gradient encajan sin costura en cualquier ángulo, a diferencia de un degradado lineal en mosaico con background-size.
- repeating-radial-gradient() crea anillos y ondas, y repeating-conic-gradient() crea rayos y destellos de sol.
- Los bordes de color nítidos pueden verse dentados en pantalla, y una transición de medio píxel a un píxel los suaviza.
En esta página
Un degradado lineal repetido en CSS repite un tramo corto de paradas de color a lo largo de una línea hasta llenar el elemento. Escribe repeating-linear-gradient(45deg, #f472b6 0 14px, #fdf2f8 14px 28px) y obtendrás rayas diagonales rosas, de 14 píxeles cada una, sin ningún archivo de imagen. La longitud de cada repetición la fija la última parada, aquí 28px. Aplica la misma idea con repeating-radial-gradient() para anillos y con repeating-conic-gradient() para rayos.
Cómo funciona repeating-linear-gradient()
La sintaxis es idéntica a la de un degradado lineal normal. La diferencia está en lo que pasa después de la última parada: en lugar de mantener el color final, el navegador vuelve a empezar el patrón. Dos reglas hacen casi todo el trabajo.
- La posición de la última parada es la longitud del patrón. Paradas en
0,14pxy28pxse repiten cada 28 píxeles. - Dos colores en la misma posición crean un borde nítido.
#f472b6 0 14px, #fdf2f8 14px 28pxsalta de rosa a rosa pálido en 14px sin mezcla. - Cada parada admite dos posiciones.
#f472b6 0 14pxsignifica rosa sólido de 0 a 14px, más corto que escribir el color dos veces. - Usa longitudes, no porcentajes, para las rayas. Los porcentajes dependen de la línea del degradado, así que las rayas se estiran cuando el elemento cambia de tamaño.
/* Soft repeat: colours blend within each 40px band */
.soft { background-image: repeating-linear-gradient(90deg, #ede9fe 0px, #c4b5fd 20px, #ede9fe 40px); }
/* Hard stripes: two colours share each boundary */
.stripes { background-image: repeating-linear-gradient(45deg, #f472b6 0 14px, #fdf2f8 14px 28px); }
/* Uneven stripes: wide band, thin band */
.ticket { background-image: repeating-linear-gradient(90deg, #0f766e 0 36px, #f0fdfa 36px 40px); }Patrones de rayas para copiar
El papel pautado es un buen ejemplo de repetición asimétrica: 22 píxeles de papel y uno de línea. El mismo patrón con una línea de margen roja encima da un cuaderno muy convincente. Tienes más ideas de patrones, como cuadrículas y puntos, en patrones CSS.
Degradados repetidos o background-size
También puedes crear rayas con un linear-gradient() normal y background-size, que repite en mosaico una pequeña imagen del degradado. Los dos métodos funcionan, pero se comportan distinto en ángulo.
linear-gradient + background-size
- Repite un rectángulo, así que las rayas a 45 grados exigen cálculos cuidadosos para encajar
- Exacto al píxel en rayas horizontales y verticales
- Fácil de combinar con otros mosaicos en una cuadrícula
- Se anima moviendo
background-positionun mosaico
repeating-linear-gradient
- Se repite a lo largo de la línea del degradado y encaja limpio en cualquier ángulo
- Ancho de raya fijado directamente en píxeles
- Una sola declaración, sin tamaño que mantener sincronizado
- Se anima moviendo
background-positiona lo largo de la línea
Para cualquier cosa en diagonal, recurre primero a la versión repetida. Para tableros de ajedrez y cuadrículas, donde necesitas dos direcciones a la vez, background-size con degradados en capas es más sencillo.
.checker {
background-image: repeating-conic-gradient(#e7e5e4 0 25%, #fafaf9 0 50%);
background-size: 24px 24px;
}
.grid {
background-color: #0f172a;
background-image:
linear-gradient(#1e293b 1px, transparent 1px),
linear-gradient(90deg, #1e293b 1px, transparent 1px);
background-size: 32px 32px;
}background-size. El tablero de ajedrez es el fondo clásico de transparencia; la cuadrícula va bien en páginas técnicas y paneles.El segundo color del tablero empieza en la posición 0. Una parada nunca puede quedar antes de la anterior, así que el navegador la adelanta hasta donde terminó el último color, lo que crea un borde nítido sin repetir el número. Es un atajo práctico en cualquier degradado, repetido o no.
Anillos con repeating-radial-gradient()
La versión radial se repite hacia fuera desde un centro, así que las rayas se convierten en anillos. Mueve el centro con at para crear ondas que se extienden desde una esquina. Igual que en los degradados radiales, circle mantiene los anillos redondos; la elipse por defecto los estira hasta la caja.
Rayos con repeating-conic-gradient()
Los degradados cónicos giran alrededor de un punto, así que sus paradas son ángulos. Elige una repetición que divida 360 de forma exacta, como 20, 30 o 45 grados, o el último rayo tendrá un ancho distinto al resto. Para un fondo, mantén los dos colores cercanos en luminosidad; los rayos de alto contraste vibran en pantalla y roban la atención a todo lo demás. Tienes la sintaxis completa en degradados cónicos CSS.
Cómo corregir los bordes dentados de las rayas
Los bordes nítidos en ángulo pueden verse escalonados, y con algunos niveles de zoom los navegadores los dibujan de forma irregular, así que algunas rayas parecen más gruesas que otras. La solución es dar a cada borde una transición mínima en lugar de un salto perfecto.
/* Jagged: a perfect hard edge */
.hard { background-image: repeating-linear-gradient(45deg, #f472b6 0 14px, #fdf2f8 14px 28px); }
/* Smoother: one pixel of blend at each edge */
.smooth {
background-image: repeating-linear-gradient(
45deg,
#f472b6 0 13.5px,
#fdf2f8 14.5px 27.5px,
#f472b6 28.5px
);
}Una barra de progreso animada de barbero
Mover background-position exactamente una repetición hace que las rayas avancen sin saltos. En un patrón a 45 grados con una repetición de 28px, la distancia sobre el eje horizontal es la repetición dividida por el seno del ángulo, unos 39,6px.
.progress {
background-image: repeating-linear-gradient(45deg, #6d28d9 0 14px, #8b5cf6 14px 28px);
/* one horizontal repeat wider than the bar, so it can slide */
background-size: calc(100% + 39.6px) 100%;
background-repeat: no-repeat;
animation: stripes 1s linear infinite;
}
@keyframes stripes {
from { background-position: 0 0; }
to { background-position: -39.6px 0; }
}
@media (prefers-reduced-motion: reduce) {
.progress { animation: none; }
}background-position obliga a repintar, resérvalo para elementos pequeños.Para fondos animados más grandes, consulta degradados animados CSS, que explica técnicas más ligeras. Las rayas y los anillos son ideales para detalles, entradas y estados de carga. Para un fondo que la gente reconozca como tuyo, los Marks de Gradiently añaden materia, luz y grano que un patrón repetido no puede dar, y se renderizan en cada tamaño en el que diseñes.
Preguntas frecuentes
¿Qué diferencia hay entre linear-gradient y repeating-linear-gradient?
Un degradado lineal mantiene su último color después de la parada final. Un degradado lineal repetido vuelve a empezar las paradas, así que un patrón corto llena todo el elemento.
¿Cómo hago rayas en CSS?
Usa paradas nítidas en un degradado repetido: repeating-linear-gradient(45deg, #f472b6 0 14px, #fdf2f8 14px 28px) crea rayas diagonales de 14 píxeles.
¿Cómo fijo el tamaño de un degradado repetido?
La posición de la última parada de color fija la longitud de cada repetición. Usa longitudes en píxeles para que las rayas mantengan el mismo ancho en cualquier tamaño de elemento.
¿Por qué mis rayas CSS se ven dentadas?
Los bordes nítidos perfectos en ángulo pueden producir dientes de sierra. Deja un margen de alrededor de un píxel entre cada par de paradas para que el navegador suavice el borde.
¿Puedo hacer anillos o rayos con degradados repetidos?
Sí. repeating-radial-gradient() crea anillos y repeating-conic-gradient() crea rayos; las paradas cónicas son ángulos en lugar de longitudes.
Escrito por 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