Le fonctionnement de cet effet est très simple. L'élément reçoit un arrière-plan qui est le gradient. Il passe d'une couleur à l'autre en fonction des couleurs et des pourcentages d'arrêt de couleur qui lui sont attribués.
Par exemple, dans l'échantillon de texte de l'arc-en-ciel (notez que j'ai converti le gradient dans la syntaxe standard) :
- Le gradient commence à la couleur
#f22
sur 0%
(c'est-à-dire le bord gauche de l'élément). La première couleur est toujours supposée commencer à 0%
même si le pourcentage n'est pas mentionné explicitement.
- Entre
0%
à 14.25%
la couleur passe de #f22
à #f2f
progressivement. Le pourcenatge est fixé à 14.25
parce qu'il y a sept changements de couleur et que nous cherchons à obtenir des parts égales.
- Sur
14.25%
(de la taille du conteneur), la couleur sera exactement #f2f
selon le gradient spécifié.
- De même, les couleurs passent de l'une à l'autre en fonction des bandes spécifiées par les pourcentages d'arrêt des couleurs. Chaque bande doit être un échelon de
14.25%
.
Ainsi, nous obtenons un gradient comme dans le snippet ci-dessous. Cela signifie que l'arrière-plan s'applique à l'ensemble de l'élément et pas seulement au texte.
.rainbow {
background-image: linear-gradient(to right, #f22, #f2f 14.25%, #22f 28.5%, #2ff 42.75%, #2f2 57%, #2f2 71.25%, #ff2 85.5%, #f22);
color: transparent;
}
<span class="rainbow">Rainbow text</span>
Étant donné que le dégradé ne doit être appliqué qu'au texte et non à l'élément dans son ensemble, nous devons demander au navigateur d'écrêter l'arrière-plan des zones situées en dehors du texte. Pour ce faire, il faut définir background-clip: text
.
( Notez que le background-clip: text
est une propriété expérimentale et n'est pas supportée à grande échelle. )
Maintenant, si vous voulez que le texte ait un simple dégradé de 3 couleurs (c'est-à-dire rouge - orange - marron), il suffit de modifier la spécification du dégradé linéaire comme suit :
- Le premier paramètre est la direction du gradient. Si la couleur doit être rouge sur le côté gauche et marron sur le côté droit, utilisez la direction suivante
to right
. Si elle doit être rouge à droite et brune à gauche, donnez la direction comme suit to left
.
- L'étape suivante consiste à définir les couleurs du dégradé. Puisque notre gradient doit commencer en rouge sur le côté gauche, il suffit de spécifier
red
comme première couleur (le pourcentage est supposé être de 0 %).
- Maintenant, puisque nous avons deux changements de couleur (rouge - orange et orange - marron), les pourcentages doivent être définis comme 100 / 2 pour des divisions égales. Si des répartitions égales ne sont pas nécessaires, nous pouvons attribuer les pourcentages comme nous le souhaitons.
- Alors à
50%
la couleur devrait être orange
et la couleur finale serait brown
. La position de la couleur finale est toujours supposée être à 100%.
Ainsi, la spécification du gradient devrait se lire comme suit :
background-image: linear-gradient(to right, red, orange 50%, brown).
Si nous formons les dégradés à l'aide de la méthode mentionnée ci-dessus et que nous les appliquons à l'élément, nous pouvons obtenir l'effet souhaité.
.red-orange-brown {
background-image: linear-gradient(to right, red, orange 50%, brown);
color: transparent;
-webkit-background-clip: text;
background-clip: text;
}
.green-yellowgreen-yellow-gold {
background-image: linear-gradient(to right, green, yellowgreen 33%, yellow 66%, gold);
color: transparent;
-webkit-background-clip: text;
background-clip: text;
}
<span class="red-orange-brown">Red to Orange to Brown</span>
<br>
<span class="green-yellowgreen-yellow-gold">Green to Yellow-green to Yellow to Gold</span>
0 votes
Il existe de nombreux sites web qui proposent la même chose, comme cssmatic.com
2 votes
Quel est le problème ? Modifiez le dégradé comme vous le souhaitez. Si vous posez des questions sur les outils/générateurs (ce qui me semble être le cas), votre question sera classée comme hors sujet/opinion.
1 votes
Cela ne s'applique qu'au arrière-plan pas la couleur du texte elle-même :|
0 votes
J'essaye de savoir comment obtenir le même effet que le texte arc-en-ciel échantillon mais avec d'autres couleurs @Harry ne demandant pas un générateur perse une solution sur la façon de définir simplement les couleurs moi-même / comment la arc-en-ciel des exemples de travaux seraient également d'une grande aide.
0 votes
J'aimerais bien savoir comment ça marche. Parce que la réponse donnée utilise une approche différente (qui fonctionne, mais j'aimerais quand même savoir) @Harry