L’essentiel en bref
- Un dégradé linéaire répété reproduit ses arrêts de couleur le long de la ligne du dégradé, et la longueur d’une répétition est la position du dernier arrêt.
- Les rayures nettes viennent de deux couleurs placées à la même position, si bien que la couleur change instantanément au lieu de se fondre.
- Les rayures diagonales faites avec repeating-linear-gradient se raccordent sans jointure à n’importe quel angle, contrairement à un dégradé linéaire en mosaïque avec background-size.
- repeating-radial-gradient() crée des anneaux et des ondulations, et repeating-conic-gradient() des rayons et des soleils.
- Les bords de couleur nets peuvent paraître crénelés à l’écran, et une transition d’un demi-pixel à un pixel les adoucit.
Sur cette page
Un dégradé linéaire répété en CSS reproduit une courte séquence d’arrêts de couleur le long d’une ligne jusqu’à remplir l’élément. Écrivez repeating-linear-gradient(45deg, #f472b6 0 14px, #fdf2f8 14px 28px) et vous obtenez des rayures roses en diagonale de 14 pixels chacune, sans fichier image. La longueur d’une répétition est fixée par le dernier arrêt, ici 28px. Appliquez la même idée avec repeating-radial-gradient() pour les anneaux et repeating-conic-gradient() pour les rayons.
Comment fonctionne repeating-linear-gradient()
La syntaxe est identique à celle d’un dégradé linéaire ordinaire. La différence tient à ce qui se passe après le dernier arrêt : au lieu de garder la couleur finale, le navigateur recommence le motif. Deux règles font l’essentiel du travail.
- La position du dernier arrêt est la longueur du motif. Des arrêts à
0,14pxet28pxse répètent tous les 28 pixels. - Deux couleurs à la même position créent un bord net.
#f472b6 0 14px, #fdf2f8 14px 28pxpasse du rose au rose pâle à 14px, sans fondu. - Chaque arrêt peut prendre deux positions.
#f472b6 0 14pxsignifie rose uni de 0 à 14px, plus court que d’écrire la couleur deux fois. - Utilisez des longueurs, pas des pourcentages, pour les rayures. Les pourcentages sont relatifs à la ligne du dégradé : les rayures s’étirent quand l’élément change de taille.
/* 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); }Des motifs de rayures à copier
Le papier ligné est un bon exemple de répétition asymétrique : 22 pixels de papier, un pixel de ligne. Le même motif surmonté d’une ligne de marge rouge donne un cahier convaincant. D’autres idées de motifs, dont les grilles et les pois, se trouvent dans les motifs CSS.
Dégradés répétés ou background-size
Vous pouvez aussi créer des rayures avec un linear-gradient() ordinaire et background-size, qui répète en mosaïque une petite image du dégradé. Les deux fonctionnent. Ils se comportent différemment en biais.
linear-gradient + background-size
- Répète un rectangle : des rayures à 45 degrés demandent des calculs soignés pour s’aligner
- Précis au pixel pour les rayures horizontales et verticales
- Facile à combiner avec d’autres tuiles dans une grille
- S’anime en déplaçant
background-positiond’une tuile
repeating-linear-gradient
- Se répète le long de la ligne du dégradé, se raccorde proprement à tout angle
- Largeur des rayures fixée directement en pixels
- Une seule déclaration, aucune taille à synchroniser
- S’anime en déplaçant
background-positionle long de la ligne
Pour tout ce qui est en diagonale, pensez d’abord à la version répétée. Pour les damiers et les grilles, où il faut deux directions à la fois, background-size avec des dégradés superposés est plus simple.
.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. Le damier est le fond classique de la transparence ; la grille convient aux pages techniques et aux tableaux de bord.La seconde couleur du damier commence à la position 0. Un arrêt ne peut jamais se trouver avant le précédent : le navigateur le remonte donc là où la couleur précédente s’arrêtait, ce qui crée un bord net sans répéter le nombre. C’est un raccourci pratique dans tout dégradé, répété ou non.
Des anneaux avec repeating-radial-gradient()
La version radiale se répète vers l’extérieur depuis un centre : les rayures deviennent des anneaux. Déplacez le centre avec at pour créer des ondulations qui partent d’un coin. Comme pour les dégradés radiaux, circle garde les anneaux ronds ; l’ellipse par défaut les étire à la forme de la boîte.
Des rayons avec repeating-conic-gradient()
Les dégradés coniques tournent autour d’un point : leurs arrêts sont donc des angles. Choisissez une répétition qui divise 360 exactement, comme 20, 30 ou 45 degrés, sinon le dernier rayon n’aura pas la même largeur que les autres. Pour un fond, gardez les deux couleurs proches en valeur ; des rayons très contrastés vibrent à l’écran et détournent l’attention de tout le reste. La syntaxe complète se trouve dans les dégradés coniques CSS.
Corriger les bords crénelés des rayures
Les bords nets en biais peuvent paraître en escalier, et à certains niveaux de zoom les navigateurs les rendent de façon inégale : quelques rayures semblent plus épaisses que d’autres. La solution consiste à donner à chaque bord une infime transition au lieu d’un saut parfait.
/* 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
);
}Une barre de progression animée façon enseigne de barbier
Déplacer background-position d’exactement une répétition fait défiler les rayures sans saut. Pour un motif à 45 degrés avec une répétition de 28px, la distance sur l’axe horizontal est la répétition divisée par le sinus de l’angle, soit environ 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 provoque un nouveau rendu, réservez-la aux petits éléments.Pour des fonds animés plus grands, voyez les dégradés animés en CSS, qui présente des techniques moins coûteuses. Rayures et anneaux sont parfaits pour les détails, les billets et les états de chargement. Pour un fond que l’on reconnaît comme le vôtre, les Marks de Gradiently ajoutent la matière, la lumière et le grain qu’un motif répété ne peut pas offrir, et s’affichent à toutes les tailles dans lesquelles vous créez.
Les questions qu’on nous pose
Quelle différence entre linear-gradient et repeating-linear-gradient ?
Un dégradé linéaire garde sa dernière couleur après l’arrêt final. Un dégradé linéaire répété recommence ses arrêts, si bien qu’un motif court remplit tout l’élément.
Comment faire des rayures en CSS ?
Utilisez des arrêts nets dans un dégradé répété : repeating-linear-gradient(45deg, #f472b6 0 14px, #fdf2f8 14px 28px) crée des rayures diagonales de 14 pixels.
Comment définir la taille d’un dégradé répété ?
La position du dernier arrêt de couleur fixe la longueur d’une répétition. Utilisez des longueurs en pixels pour que les rayures gardent la même largeur quelle que soit la taille de l’élément.
Pourquoi mes rayures CSS paraissent-elles crénelées ?
Des bords parfaitement nets en biais peuvent produire du crénelage. Laissez un écart d’environ un pixel entre chaque paire d’arrêts pour que le navigateur puisse lisser le bord.
Peut-on créer des anneaux ou des rayons avec des dégradés répétés ?
Oui. repeating-radial-gradient() crée des anneaux et repeating-conic-gradient() des rayons ; les arrêts coniques sont des angles plutôt que des longueurs.
Écrit par Gradiently
L’équipe derrière Gradiently, un outil de création construit autour des Marks : des dégradés vivants qui donnent à tout ce que vous créez votre propre signature.
Voir notre profil