{"id":1184,"date":"2023-04-28T18:41:08","date_gmt":"2023-04-28T17:41:08","guid":{"rendered":"https:\/\/geekcommunicant.com\/blog\/?p=1184"},"modified":"2024-11-18T22:53:42","modified_gmt":"2024-11-18T21:53:42","slug":"animer-variables-css","status":"publish","type":"post","link":"https:\/\/geekcommunicant.com\/blog\/2023\/04\/28\/animer-variables-css\/","title":{"rendered":"Animer les variables CSS"},"content":{"rendered":"\n<p>La semaine derni\u00e8re j&rsquo;ai rapidement mentionn\u00e9 qu&rsquo;il \u00e9tait maintenant possible d&rsquo;animer les variables CSS.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">L&rsquo;utilit\u00e9 des variables CSS<\/h2>\n\n\n\n<p>Les <a href=\"https:\/\/developer.mozilla.org\/fr\/docs\/Web\/CSS\/Using_CSS_custom_properties\" target=\"_blank\" rel=\"noreferrer noopener\">variables CSS<\/a> (\u00e9galement appel\u00e9es \u00ab\u00a0propri\u00e9tes personnalis\u00e9es\u00a0\u00bb) permettent de stocker des valeurs sp\u00e9cifiques. Et ces valeurs peuvent \u00eatre modifi\u00e9es par des \u00e9v\u00e9nement JS ou des pseudos classes CSS (comme par exemple <code>:hover<\/code>).<\/p>\n\n\n\n<p>Elles se d\u00e9clarent et se modifient comme ceci :<code> --my-property: 123;<\/code>, et s&rsquo;utilisent comme cela : <code>var(--my-property)<\/code>.<\/p>\n\n\n\n<p>L&rsquo;int\u00e9ret de ces variables vient quand on a besoin de pr\u00e9ciser un seul param\u00e8tre dans une longue d\u00e9claration (comme par exemple une position dans une d\u00e9claration de d\u00e9grad\u00e9) ou alors pour indiquer une couleur qui peut \u00eatre amen\u00e9e \u00e0 changer et qui est utilis\u00e9e dans diff\u00e9rentes classes.<\/p>\n\n\n\n<p>Le probl\u00e8me de ces variables, c&rsquo;est qu&rsquo;il n&rsquo;est pas possible de les animer. C&rsquo;est l\u00e0 qu&rsquo;intervient la at-rule <a rel=\"noreferrer noopener\" href=\"https:\/\/developer.mozilla.org\/fr\/docs\/Web\/CSS\/@property\" target=\"_blank\"><code>@property<\/code><\/a>.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Une nouvelle notation<\/h2>\n\n\n\n<p>Cette nouvelle syntaxe (actuellement impl\u00e9ment\u00e9e seulement dans les navigateurs de la famille Chromium) permettant de pr\u00e9ciser exactement le type de donn\u00e9es que contient cette variable, se pr\u00e9sente comme suit :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: css; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n@property --my-property {\n    syntax: &lt;type de la variable&gt;;\n    inherits: false;\n    initial-value: &lt;valeur initiale&gt;;\n}\n<\/pre><\/div>\n\n\n<p>La <code>syntax<\/code> peut \u00eatre de type <code>&lt;color&gt;<\/code> ou encore <code>&lt;percentage&gt;<\/code> (voir la <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/@property\/syntax\" target=\"_blank\" rel=\"noreferrer noopener\">liste compl\u00e8te<\/a> sur MDN).<\/p>\n\n\n\n<p>La <code>initial-value<\/code> (valeur initiale) doit \u00eatre indiqu\u00e9e avec l&rsquo;unit\u00e9 correspondant \u00e0 la syntaxe : <code>#1f1f1f<\/code> si il s&rsquo;agit d&rsquo;une couleur, <code>50%<\/code> si il s&rsquo;agit d&rsquo;un pourcentage&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Application<\/h2>\n\n\n\n<p>Pour l&rsquo;application de cette nouvelle notation, je vais revenir sur l&rsquo;exemple d\u00e9j\u00e0 donn\u00e9 pr\u00e9c\u00e9demment d&rsquo;un texte avec un d\u00e9grad\u00e9 bougeant au survol de la souris.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: css; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n\/* D\u00e9claration de la propri\u00e9t\u00e9 *\/\n@property --gradient-left-position {\n    syntax: &#039;&lt;percentage&gt;&#039;;\n    inherits: false;\n    initial-value: 100%;\n}\n\n.gradient-text {\n    \/* On utilise la variable dans la d\u00e9claration *\/\n    background:radial-gradient(circle at var(--gradient-left-position) 50%, yellow, orange, red);                \n    \n    \/* On ne montre la couleur de fond que dans le texte *\/\n    background-clip: text; \n    -webkit-background-clip: text;\n    color: #0000;\n    font-weight: bold;\n    font-size: 2em;\n    \n    \/* R\u00e8gle de transition sur la propri\u00e9t\u00e9 *\/\n    transition: --gradient-left-position 2s;\n}\n\n.gradient-text:hover {\n    \/* On change la propri\u00e9t\u00e9 au survol de la souris *\/\n    --gradient-left-position: 0%;\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">R\u00e9sultat<\/h2>\n\n\n\n<p class=\"has-background\" style=\"background-color:#eabdbd\">\/!\\ Compatible uniquement avec Chrome, Op\u00e9ra et Edge \/!\\<\/p>\n\n\n\n<p><span class=\"gradient-text\">Le petit bonhomme en mousse<\/span><\/p>\n<style type=\"text\/css\">\n@property --gradient-left-position {\n    syntax: '<percentage>';\n    inherits: false;\n    initial-value: 100%;\n}\n\n.gradient-text {\n    cursor: default;\n    background:radial-gradient(circle at var(--gradient-left-position) 50%, yellow, orange, red);                \n    background-clip: text; \n    -webkit-background-clip: text;\n    color: #0000;\n    font-weight: bold;\n    font-size: 2em;\n    transition: --gradient-left-position 2s;\n}\n\n.gradient-text:hover {\n    --gradient-left-position: 0%;\n}\n<\/style>\n\n\n\n<p>Edit : depuis juillet 2024, les propri\u00e9t\u00e9s CSS sont support\u00e9es par Firefox (voir la <a href=\"https:\/\/www.mozilla.org\/en-US\/firefox\/128.0\/releasenotes\/\">release note<\/a>).<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La semaine derni\u00e8re j&rsquo;ai rapidement mentionn\u00e9 qu&rsquo;il \u00e9tait maintenant possible d&rsquo;animer les variables CSS. L&rsquo;utilit\u00e9 des variables CSS Les variables CSS (\u00e9galement appel\u00e9es \u00ab\u00a0propri\u00e9tes personnalis\u00e9es\u00a0\u00bb) permettent de stocker des valeurs sp\u00e9cifiques. Et ces valeurs peuvent \u00eatre modifi\u00e9es par des \u00e9v\u00e9nement &hellip; <a href=\"https:\/\/geekcommunicant.com\/blog\/2023\/04\/28\/animer-variables-css\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[53],"tags":[59],"class_list":["post-1184","post","type-post","status-publish","format-standard","hentry","category-css","tag-animation"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2IoOb-j6","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1085,"url":"https:\/\/geekcommunicant.com\/blog\/2023\/01\/27\/gloubi-tuto-texte-changeant-couleur\/","url_meta":{"origin":1184,"position":0},"title":"Gloubi tuto &#8211; texte changeant de couleur","author":"geekc","date":"27\/01\/2023","format":false,"excerpt":"Cette fois-ci encore, j\u2019ai d\u00e9cid\u00e9 de m\u2019attaquer \u00e0 un autre gloubi script d\u2019effet sur texte, le texte changeant de couleur. Une fois de plus, d\u00fb \u00e0 l\u2019\u00e9volution des technologies, plus besoin de JavaScript pour obtenir un r\u00e9sultat identique (ou en tout cas tr\u00e8s proche). Fonctionnement du script On indique au\u2026","rel":"","context":"Dans &quot;CSS&quot;","block_context":{"text":"CSS","link":"https:\/\/geekcommunicant.com\/blog\/category\/css\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1175,"url":"https:\/\/geekcommunicant.com\/blog\/2023\/04\/21\/animer-degrade-css\/","url_meta":{"origin":1184,"position":1},"title":"Animer un d\u00e9grad\u00e9 en CSS","author":"geekc","date":"21\/04\/2023","format":false,"excerpt":"La semaine derni\u00e8re je vous ai pr\u00e9sent\u00e9 comment cr\u00e9er un texte en d\u00e9grad\u00e9 avec uniquement du CSS. Aujourd'hui je vais vous montrer comment animer ce d\u00e9grad\u00e9 au survol de la souris. Le principe L'\u00e9l\u00e9ment sur lequel on veut placer un d\u00e9grad\u00e9 ne laisse voir qu'une partie de ce d\u00e9grad\u00e9, et\u2026","rel":"","context":"Dans &quot;CSS&quot;","block_context":{"text":"CSS","link":"https:\/\/geekcommunicant.com\/blog\/category\/css\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1011,"url":"https:\/\/geekcommunicant.com\/blog\/2022\/12\/23\/degrades-css\/","url_meta":{"origin":1184,"position":2},"title":"Les d\u00e9grad\u00e9s en CSS","author":"geekc","date":"23\/12\/2022","format":false,"excerpt":"Comme sous-entendu dans un pr\u00e9c\u00e9dent gloubi tuto, il est maintenant possible avec CSS3 de cr\u00e9er des d\u00e9grad\u00e9s de couleurs. Pour CSS, les d\u00e9grad\u00e9s sont consid\u00e9r\u00e9s comme des images, et donc doivent \u00eatre utilis\u00e9s dans l\u2019attribut background ou background-image d\u2019une d\u00e9claration de style. Il existe en CSS 3 types de d\u00e9grad\u00e9s\u2026","rel":"","context":"Dans &quot;CSS&quot;","block_context":{"text":"CSS","link":"https:\/\/geekcommunicant.com\/blog\/category\/css\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":334,"url":"https:\/\/geekcommunicant.com\/blog\/2014\/04\/11\/comment-marche-html\/","url_meta":{"origin":1184,"position":3},"title":"Comment marche le HTML ?","author":"geekc","date":"11\/04\/2014","format":false,"excerpt":"Comme vu pr\u00e9c\u00e9demment le HTML est un des piliers du Web. Nous allons voir ici comment \u00e7a marche. Les balises La base du HTML est le principe de balises. Une balise est l\u00e0 pour d\u00e9limiter une zone. en HTML, une balise s'\u00e9crit \u00e0 l'aide de chevrons; exemple: <p>. En HTML,\u2026","rel":"","context":"Dans &quot;Pour les nuls&quot;","block_context":{"text":"Pour les nuls","link":"https:\/\/geekcommunicant.com\/blog\/category\/pour-les-nuls\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":326,"url":"https:\/\/geekcommunicant.com\/blog\/2014\/04\/06\/comment-marche-le-web\/","url_meta":{"origin":1184,"position":4},"title":"Comment marche le Web ?","author":"geekc","date":"06\/04\/2014","format":false,"excerpt":"Vous vous \u00eates toujours demand\u00e9 quelle diff\u00e9rence il pouvait y avoir entre le HTML et le PHP, entre le CSS et le JavaScript ? Cet article est fait pour vous. Apr\u00e8s l'avoir lu, vous serez incollables, ou presque, sur les technologies du Web. HTML et CSS Le HTML est la\u2026","rel":"","context":"Dans &quot;Pour les nuls&quot;","block_context":{"text":"Pour les nuls","link":"https:\/\/geekcommunicant.com\/blog\/category\/pour-les-nuls\/"},"img":{"alt_text":"HTML, CSS, et JavaScript","src":"https:\/\/i0.wp.com\/geekcommunicant.com\/blog\/wp-content\/uploads\/logo_html5-300x175.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":162,"url":"https:\/\/geekcommunicant.com\/blog\/2012\/10\/12\/jquery-une-horloge-sous-forme-de-diagramme\/","url_meta":{"origin":1184,"position":5},"title":"[jQuery] Une horloge sous forme de diagramme","author":"geekc","date":"12\/10\/2012","format":false,"excerpt":"Avant de m'essayer \u00e0 l'horloge pr\u00e9sent\u00e9e dans l'article pr\u00e9c\u00e9dent, je m'\u00e9tait pos\u00e9 la question de trouver une forme plus originale d'afficher l'heure. Apr\u00e8s quelques recherches et essai, je suis arriv\u00e9 \u00e0 ce r\u00e9sultat. Le but de cet article est de vous expliquer le code que j'ai utilis\u00e9. Structure d'une barre:\u2026","rel":"","context":"Dans &quot;jQuery&quot;","block_context":{"text":"jQuery","link":"https:\/\/geekcommunicant.com\/blog\/category\/jquery\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/posts\/1184","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/comments?post=1184"}],"version-history":[{"count":0,"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/posts\/1184\/revisions"}],"wp:attachment":[{"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/media?parent=1184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/categories?post=1184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geekcommunicant.com\/blog\/wp-json\/wp\/v2\/tags?post=1184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}