<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="https://chierchia.fr/wp-content/plugins/pretty-rss-feeds/xslt/pretty-feed.xsl" type="text/xsl" media="screen" ?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>css - Ange Chierchia</title>
	<atom:link href="https://chierchia.fr/tag/css/feed/" rel="self" type="application/rss+xml" />
	<link>https://chierchia.fr/tag/css/</link>
	<description>Développeur Web full-stack</description>
	<lastBuildDate>Sun, 08 Feb 2026 16:11:25 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://chierchia.fr/wp-content/uploads/cropped-16350293-SSDKVqo3-32x32.jpg</url>
	<title>css - Ange Chierchia</title>
	<link>https://chierchia.fr/tag/css/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
					<title>Menu horizontal CSS : les sprites, c’était malin en 2009, beaucoup moins en 2026</title>
					<link>https://chierchia.fr/2026/02/menu-horizontal-css-sprites-2026/</link>
					<comments>https://chierchia.fr/2026/02/menu-horizontal-css-sprites-2026/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Mon, 16 Feb 2026 06:45:00 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">https://chierchia.fr/?p=8600</guid>

					<description><![CDATA[En 2009, les sprites CSS optimisaient les menus horizontaux. En 2026, Flexbox, SVG et CSS modernes permettent des menus accessibles, responsives et maintenables.]]></description>
										<content:encoded><![CDATA[<div class='e-content'>
<p>La technique des sprites CSS a longtemps été une excellente solution pour optimiser les menus à base d&rsquo;image, mais en plus de 15 ans, le Web a bien évolué. En 2026, on peut (on doit <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f914.png" alt="🤔" class="wp-smiley" style="height: 1em; max-height: 1em;" />) construire des menus horizontaux plus souples, responsives et accessibles. Dans cet article, on va voir comment recréer l&rsquo;idée d&rsquo;un « <a href="https://chierchia.fr/2009/06/creer-un-menu-horizontal-avec-des-sprites-css/" type="post" id="1417">menu horizontal avec sprites CSS</a> » en utilisant des techniques modernes, en gardant les mêmes objectifs qu&rsquo;à l&rsquo;époque : esthétique et performance.</p>



<span id="more-8600"></span>



<h2 class="wp-block-heading">Pourquoi les sprites CSS ne sont plus la solution par défaut</h2>



<p>La technique des sprites consistait à regrouper tous les états graphiques (normal, survol, actif) dans une seule grande image, puis à afficher la bonne portion via <code>background-position</code>. Ça réduisait le nombre de requêtes HTTP nécessaires, ce qui était crucial avant l&rsquo;arrivée de HTTP/2.</p>



<p>Aujourd&rsquo;hui, cette approche a plusieurs limites pour un menu de navigation, même si elle fonctionne toujours :</p>



<ul class="wp-block-list">
<li>Maintenance lourde : chaque changement de pictogramme ou de texte implique de recalculer les positions.</li>



<li>Mauvaise adaptation aux écrans haut densité (Retina, 4K), sauf en multipliant les versions d&rsquo;images.</li>



<li>Accessibilité limitée : le texte est souvent masqué au profit d&rsquo;images purement décoratives.</li>



<li>Utilité réduite : HTTP/2, les formats d&rsquo;image modernes (WebP, SVG) rendent ce gain de requêtes moins critique.</li>
</ul>



<p>La technique des sprites reste pertinente pour certains cas (animations, jeux en HTML5), mais pour un simple menu de navigation, des alternatives modernes font clairement mieux le job aujourd&rsquo;hui.</p>



<h2 class="wp-block-heading">Structure HTML moderne</h2>



<p>La base n&rsquo;a pas fondamentalement changé depuis 2009 : une liste non ordonnée reste un excellent choix pour construire une navigation. En revanche, on va profiter d&rsquo;HTML5, des attributs ARIA et des bonnes pratiques en matière d&rsquo;accessibilité.</p>



<pre class="wp-block-code"><code>&lt;nav class="main-nav" aria-label="Navigation principale"&gt;
    &lt;a class="main-nav__logo" href="/"&gt;
        &lt;span class="sr-only"&gt;Retour à l'accueil&lt;/span&gt;
        &lt;!-- Logo SVG inline ou image --&gt;
        &lt;svg aria-hidden="true" viewBox="0 0 100 20"&gt;
            &lt;!-- ... --&gt;
        &lt;/svg&gt;
    &lt;/a&gt;
    
    &lt;button class="main-nav__toggle" aria-expanded="false" aria-controls="main-menu"&gt;
        &lt;span class="sr-only"&gt;Ouvrir le menu&lt;/span&gt;
        &lt;span class="main-nav__toggle-bar"&gt;&lt;/span&gt;
        &lt;span class="main-nav__toggle-bar"&gt;&lt;/span&gt;
        &lt;span class="main-nav__toggle-bar"&gt;&lt;/span&gt;
    &lt;/button&gt;

    &lt;ul id="main-menu" class="main-nav__list"&gt;
        &lt;li class="main-nav__item"&gt;
            &lt;a class="main-nav__link is-active" href="/" aria-current="page"&gt;Home&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class="main-nav__item"&gt;
            &lt;a class="main-nav__link" href="/services"&gt;Services&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class="main-nav__item"&gt;
            &lt;a class="main-nav__link" href="/references"&gt;Références&lt;/a&gt;
        &lt;/li&gt;
        &lt;li class="main-nav__item"&gt;
            &lt;a class="main-nav__link" href="/contact"&gt;Contact&lt;/a&gt;
        &lt;/li&gt;
    &lt;/ul&gt;
&lt;/nav&gt;</code></pre>



<p>Quelques points importants : </p>



<ul class="wp-block-list">
<li>Utilisation de <code>&lt;nav&gt;</code> et <code>aria-label</code> pour expliciter le rôle de la zone.</li>



<li>Un bouton de type « hamburger » pour le mobile, relié à la liste via <code>aria-controls</code>.</li>



<li>Une classe <code>is-active</code> pour gérer l&rsquo;onglet actif côté CSS.</li>
</ul>



<h2 class="wp-block-heading">Mise en page avec Flexbox (bye-bye <code>float</code> !)</h2>



<p>Là où mon article d&rsquo;origine utilisait <code>float: left</code> sur les <code>&lt;li&gt;</code>, on peut aujourd&rsquo;hui aligner le menu avec Flexbox. Plus simple et plus&#8230; flexible ! (ouais, je suis un marrant <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f923.png" alt="🤣" class="wp-smiley" style="height: 1em; max-height: 1em;" />).</p>



<pre class="wp-block-code"><code>.main-nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    padding: 0.75rem 1.5rem;
    background: linear-gradient(90deg, #1f2933, #111827);
    color: #ffffff;
}

.main-nav__logo {
    display: inline-flex;
    align-items: center;
    text-decoration: none;
    color: inherit;
}

.main-nav__list {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.main-nav__link {
    position: relative;
    display: inline-flex;
    align-items: center;
    padding: 0.25rem 0;
    font-weight: 500;
    color: #e5e7eb;
    text-decoration: none;
    transition: color 200ms ease-out;
}</code></pre>



<p>Ici, la liste devient une simple rangée flex, ce qui rend l&rsquo;ajout ou la suppression d&rsquo;éléments beaucoup plus naturel que la gestion de coordonnées de sprites. On peut aussi, si besoin, passer sur CSS Grid pour gérer un en-tête plus complexe.</p>



<h2 class="wp-block-heading">Effets de survol modernes</h2>



<p>Au lieu de gérer les états normal/hover/actif via une image sprite, on peut recréer des effets visuels sophistiqués en pur CSS : soulignement animé, fond dégradé, « pill » qui se déplace, etc.</p>



<h3 class="wp-block-heading">Exemple : soulignement animé avec un pseudo-élément</h3>



<pre class="wp-block-code"><code>.main-nav__link::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: -0.2rem;
    width: 100%;
    height: 2px;
    border-radius: 999px;
    background: linear-gradient(90deg, #f59e0b, #ec4899);
    transform-origin: center;
    transform: scaleX(0);
    transition: transform 0.2s ease-out;
}

.main-nav__link:hover::after,
.main-nav__link:focus-visible::after,
.main-nav__link.is-active::after {
    transform: scaleX(1);
}

.main-nav__link:hover,
.main-nav__link:focus-visible,
.main-nav__link.is-active {
    color: #fff;
}</code></pre>



<p>Avec cette approche, on reproduit l&rsquo;idée d&rsquo;un état survolé distinct, sans aucune image et avec un rendu parfaitement net sur tous les écrans. On améliore aussi l&rsquo;accessibilité en stylant <code>:focus-visible</code> pour la navigation au clavier.</p>



<h2 class="wp-block-heading">Icônes : du sprite bitmap au SVG</h2>



<p>Autre gros virage : la façon d’intégrer des icônes. Là où l&rsquo;on utilisait auparavant une sprite PNG, on privilégie maintenant :</p>



<ul class="wp-block-list">
<li>une « Icon Font » (de moins en moins recommandée),</li>



<li>des SVG inline (avec <code>&lt;svg&gt;</code> dans le HTML),</li>



<li>ou une sprite SVG via <code>&lt;symbol&gt;</code> et <code>&lt;use&gt;</code></li>
</ul>



<h3 class="wp-block-heading">Exemple avec une sprite SVG</h3>



<pre class="wp-block-code"><code>&lt;svg aria-hidden="true" style="display:none"&gt;
    &lt;symbol id="icon-home" viewBox="0 0 24 24"&gt;
        &lt;!-- … --&gt;
    &lt;/symbol&gt;
    &lt;symbol id="icon-services" viewBox="0 0 24 24"&gt;
        &lt;!-- … --&gt;
    &lt;/symbol&gt;
&lt;/svg&gt;

&lt;nav class="main-nav" aria-label="Navigation principale"&gt;
    &lt;ul class="main-nav__list"&gt;
        &lt;li class="main-nav__item"&gt;
            &lt;a class="main-nav__link is-active" href="#home"&gt;
                &lt;svg class="main-nav__icon" aria-hidden="true"&gt;
                    &lt;use href="#icon-home"&gt;&lt;/use&gt;
                &lt;/svg&gt;
                &lt;span&gt;Home&lt;/span&gt;
            &lt;/a&gt;
        &lt;/li&gt;
        &lt;!-- … --&gt;
    &lt;/ul&gt;
&lt;/nav&gt;</code></pre>



<pre class="wp-block-code"><code>.main-nav__icon {
    width: 1.1rem;
    height: 1.1rem;
    margin-right: 0.4rem;
    flex-shrink: 0;
}
</code></pre>



<p>Les avantages sont nombreux : un rendu vectoriel, une couleur facilement personnalisable en CSS (via <code>fill</code> et optionnellement <code>currentColor</code>), et plus aucune gymnastique de <code>background-position</code> !</p>



<h2 class="wp-block-heading">Rendre le menu responsive</h2>



<p>Un menu horizontal moderne doit s&rsquo;adapter à toutes les tailles de fenêtre. On peut combiner CSS à un petit peu de JavaScript pour gérer l&rsquo;ouverture et la fermeture du menu sur mobile.</p>



<h3 class="wp-block-heading">CSS : basculer en mode « hamburger » sur mobile</h3>



<pre class="wp-block-code"><code>.main-nav__toggle {
    display: none;
    border: none;
    background: transparent;
    cursor: pointer;
    padding: 0.25rem;
}

.main-nav__toggle-bar {
    display: block;
    width: 1.5rem;
    height: 2px;
    margin: 0.2rem 0;
    border-radius: 999px;
    background-color: #e5e7eb;
    transition: transform 0.2s ease-out, opacity 0.2s ease-out;
}

/* Mobile */
@media (max-width: 768px) {
    .main-nav {
        flex-wrap: wrap;
        align-items: center;
        row-gap: 0;
    }

    .main-nav__toggle {
        display: flex;
        flex-direction: column;
        margin-left: auto;
    }

    .main-nav__list {
        flex-basis: 100%;
        flex-direction: column;
        align-items: flex-start;
        gap: 0.75rem;
        max-height: 0;
        overflow: hidden;
        transition: max-height 0.25s ease-out;
    }

    .main-nav__list.is-open {
        max-height: unset;
        overflow: initial;
    }
}</code></pre>



<h3 class="wp-block-heading">JavaScript : gestion de l&rsquo;état « ouvert »</h3>



<pre class="wp-block-code"><code>const navToggle = document.querySelector('.main-nav__toggle');
const navList = document.querySelector('#main-menu');

if (navToggle &amp;&amp; navList) {
    navToggle.addEventListener('click', () =&gt; {
        const isOpen = navToggle.getAttribute('aria-expanded') === 'true';
        navToggle.setAttribute('aria-expanded', String(!isOpen));
        navList.classList.toggle('is-open', !isOpen);
    });
}</code></pre>



<p>Ce petit script suffit amplement pour un menu responsive classique, tout en respectant les attributs ARIA pour les lecteurs d&rsquo;écran. Des implémentations plus avancées peuvent gérer le focus, l&rsquo;échappement au clavier ou les sous-menus (dropdown, mega menu, etc.)</p>



<h2 class="wp-block-heading">Accessibilité et UX, à ne surtout plus ignorer</h2>



<p>Si mon article d&rsquo;origine se concentrait surtout sur la technique des sprites et l&rsquo;optimisation des requêtes HTTP, un menu moderne doit aussi intégrer de vraies bonnes pratiques d&rsquo;accessibilité (et on aurait dû s&rsquo;en rendre compte déjà à l&rsquo;époque des mises en page en&nbsp;<code>&lt;table&gt;</code>&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f631.png" alt="😱" class="wp-smiley" style="height: 1em; max-height: 1em;" />).</p>



<p>Quelques points clés :</p>



<ul class="wp-block-list">
<li>Utiliser des textes visibles plutôt que de les masquer derrière une image.</li>



<li>Prévoir des styles de <code>:focus-visible</code> suffisamment contrastés pour la navigation clavier.</li>



<li>S&rsquo;assurer que le contraste texte/fond est suffisant pour une lecture confortable.</li>



<li>Gérer l&rsquo;état actif (<code>aria-current="page"</code>) pour que l&rsquo;utilisateur sache où il se trouve.</li>
</ul>



<h2 class="wp-block-heading">17 ans de progrès en un menu</h2>



<p>En 2009, les sprites CSS étaient une astuce magique pour booster les performances d&rsquo;un menu horizontal un peu « design ». Aujourd&rsquo;hui, grâce à Flexbox, SVG, des CSS modernes et un peu de JavaScript (bye jQuery ! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f92d.png" alt="🤭" class="wp-smiley" style="height: 1em; max-height: 1em;" />), on obtient un résultat plus performant, plus accessible et infiniment plus maintenable. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f60e.png" alt="😎" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="codepen" data-height="300" data-default-tab="result" data-slug-hash="wBWYPdP" data-pen-title="Untitled" data-user="nighcrawl" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
      <span>See the Pen <a href="https://codepen.io/nighcrawl/pen/wBWYPdP">
  Untitled</a> by Ange Chierchia (<a href="https://codepen.io/nighcrawl">@nighcrawl</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
      </p>
      <script async src="https://public.codepenassets.com/embed/index.js"></script>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://chierchia.fr/2026/02/menu-horizontal-css-sprites-2026/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title>Anchor Positioning in CSS</title>
					<link>https://chierchia.fr/2025/09/anchor-positioning-in-css/</link>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Mon, 15 Sep 2025 05:00:00 +0000</pubDate>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[front-end]]></category>
		<guid isPermaLink="false">https://chierchia.fr/?p=4701</guid>

					<description><![CDATA[Bookmarked The Basics of Anchor Positioning by Ahmad Shadeed. C’est toujours le même problème : t’as besoin de positionner un élément par rapport à un autre… mais ils sont pas dans la même boîte. Résultat : t’injectes du JS, tu bidouilles le DOM, tu fais des hacks moches avec position: absolute. Et là, paf. Anchor [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class='e-content'>
<div class="wp-block-indieblocks-bookmark"><div class="u-bookmark-of h-cite"><p><i>Bookmarked <a class="u-url p-name" href="https://ishadeed.com/article/anchor-positioning/">The Basics of Anchor Positioning</a> by <span class="p-author">Ahmad Shadeed</span>.</i></p></div></div>



<p class="p1">C’est toujours le même problème : t’as besoin de positionner un élément par rapport à un autre… mais ils sont pas dans la même boîte. Résultat : t’injectes du JS, tu bidouilles le DOM, tu fais des hacks moches avec position: absolute.</p>



<p class="p1">Et là, paf. Anchor Positioning débarque avec une promesse sexy : tu peux cibler un autre élément comme ancre de positionnement — même s’il est plus haut dans le DOM. anchor() fait le job. position-try() ajoute même une logique de fallback. Et cerise sur le gâteau : pas besoin que ce soit le parent direct.</p>



<p class="p1">C’est encore un draft. Mais franchement, vu le nombre de fois où j’ai dû recoder des tooltips, popups ou menus qui s’ouvrent “vers la bonne direction”… j’ai envie d’y croire.</p>



<p class="p1">Et c’est typiquement le genre de feature CSS que t’aurais rêvé d’avoir avant : puissante, propre, explicite.</p>
</div>]]></content:encoded>
					
		
		
			</item>
		<item>
					<title>Un-Sass’ing my CSS</title>
					<link>https://chierchia.fr/2025/09/un-sassing-my-css/</link>
					<comments>https://chierchia.fr/2025/09/un-sassing-my-css/#comments</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Mon, 01 Sep 2025 08:30:00 +0000</pubDate>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[Sass]]></category>
		<guid isPermaLink="false">https://chierchia.fr/?p=4649</guid>

					<description><![CDATA[Bookmarked Un-Sass’ing my CSS &#124; Always Twisted. Ça m’a fait sourire. On a tous eu notre période Sass : mixins partout, variables, nesting à outrance. C’était grisant, ça donnait l’impression d’être plus « pro ». Mais le temps passe, le CSS a grandi, et beaucoup de ces artifices ne servent plus à grand-chose. L’article raconte [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class='e-content'>
<div class="wp-block-indieblocks-bookmark"><div class="u-bookmark-of h-cite"><p><i>Bookmarked <a class="u-url p-name" href="https://www.alwaystwisted.com/articles/UnSassing-my-CSS">Un-Sass’ing my CSS | Always Twisted</a>.</i></p></div></div>



<p>Ça m’a fait sourire. On a tous eu notre période Sass : mixins partout, variables, nesting à outrance. C’était grisant, ça donnait l’impression d’être plus « pro ». Mais le temps passe, le CSS a grandi, et beaucoup de ces artifices ne servent plus à grand-chose.  </p>



<p>L’article raconte ce cheminement : désapprendre Sass pour réapprendre le CSS brut. Pas comme une régression, mais comme un gain de clarté. Quand tu enlèves la couche intermédiaire, tu te rends compte que ton code respire mieux, que le navigateur fait déjà pas mal de choses tout seul.  </p>



<p>Ça m’a fait réfléchir à ma propre boîte à outils. On accumule, on optimise, on complexifie… et puis un jour on redécouvre que la simplicité, c’est aussi une forme de puissance. Peut-être qu’au fond, le vrai luxe en dev, c’est d’avoir moins à maintenir.  </p>



<p>Un rappel utile : parfois, coder mieux, c’est surtout coder moins.</p>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://chierchia.fr/2025/09/un-sassing-my-css/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
					<title>CSS Relative Colors</title>
					<link>https://chierchia.fr/2025/08/css-relative-colors/</link>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Mon, 25 Aug 2025 07:30:00 +0000</pubDate>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[accessibilité]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[front-end]]></category>
		<guid isPermaLink="false">https://chierchia.fr/?p=4657</guid>

					<description><![CDATA[Bookmarked CSS Relative Colors by Ahmad Shadeed. Le “Relative Color Syntax” change la façon dont on pense nos palettes : on ne stocke plus des variantes figées, on décrit des relations. En clair : une seule source (&#8211;brand) et des dérivés cohérents pour hover, focus, borders, badges… avec color(from …). Tu ajustes luminosité, saturation, alpha [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class='e-content'>
<div class="wp-block-indieblocks-bookmark"><div class="u-bookmark-of h-cite"><p><i>Bookmarked <a class="u-url p-name" href="https://ishadeed.com/article/css-relative-colors/">CSS Relative Colors</a> by <span class="p-author">Ahmad Shadeed</span>.</i></p></div></div>



<p class="p1">Le “Relative Color Syntax” change la façon dont on pense nos palettes : on ne stocke plus des variantes figées, on décrit des relations. En clair : une seule source (&#8211;brand) et des dérivés cohérents pour hover, focus, borders, badges… avec color(from …). Tu ajustes luminosité, saturation, alpha ou canal par canal sans bricoler des HSL magiques ni multiplier les tokens.</p>



<p class="p1">Ce que j’aime dans l’article : il reste ancré dans le réel. Des exemples lisibles, des patterns qu’on rencontre tous les jours (états de boutons, overlays, dégradés, dark mode) et surtout une logique de design system : la couleur devient une fonction, pas une valeur. Tu peux faire évoluer ta teinte de base sans réécrire la moitié du CSS. Et les deltas (légèrement plus sombre, un peu plus saturé) gardent la cohérence de marque.</p>



<p class="p1">Pragmatiquement, je vois trois gains : 1) moins de variables à maintenir, 2) des thèmes plus fiables, 3) une accessibilité plus maîtrisée (contrastes ajustables sans casser l’identité). Mon conseil : commence petit. Définis 1–2 couleurs sources, dérive &#8211;brand-hover, &#8211;brand-outline, &#8211;surface-elevated avec color(from …), et observe la simplification. Une base solide, des variantes “calculées”, et un design qui respire.</p>
</div>]]></content:encoded>
					
		
		
			</item>
		<item>
					<title>Creating CSS Theme Variables from a JS file</title>
					<link>https://chierchia.fr/2025/08/20250820190407/</link>
					<comments>https://chierchia.fr/2025/08/20250820190407/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Thu, 21 Aug 2025 05:00:00 +0000</pubDate>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">https://chierchia.fr/?p=4660</guid>

					<description><![CDATA[Bookmarked CSS { In Real Life } &#124; Creating CSS Theme Variables from a JS file. Les design tokens, c’est la promesse d’une cohérence. Mais dans la pratique, on se retrouve souvent avec un fichier SCSS, un fichier JS, un fichier Figma… et des incohérences qui s’accumulent. L’idée proposée ici est toute bête mais super [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class='e-content'>
<div class="wp-block-indieblocks-bookmark"><div class="u-bookmark-of h-cite"><p><i>Bookmarked <a class="u-url p-name" href="https://css-irl.info/creating-css-variables-from-a-js-file/">CSS { In Real Life } | Creating CSS Theme Variables from a JS file</a>.</i></p></div></div>



<p>Les design tokens, c’est la promesse d’une cohérence. Mais dans la pratique, on se retrouve souvent avec un fichier SCSS, un fichier JS, un fichier Figma… et des incohérences qui s’accumulent. L’idée proposée ici est toute bête mais super efficace : un seul fichier JavaScript, qui définit tes tokens (couleurs, tailles, etc.), et qui crache directement des variables CSS prêtes à l’emploi. Plus besoin de jongler, tout le monde boit à la même source.</p>



<p>Ce que j’aime, c’est la simplicité. Pas besoin de grosse usine à gaz ni de tooling lourd façon “style dictionary”. Tu écris tes valeurs une fois, tu génères les :root { &#8211;variable: valeur }, et basta. Côté dev, tu consommes les tokens en JS et en CSS sans jamais les dédoubler.</p>



<p>Ça ne remplacera pas une infra complète pour une grosse équipe produit, mais pour un projet à taille humaine, c’est pile le bon compromis : un point de vérité unique, une synchro JS/CSS sans douleur, et une dette technique évitée dès le départ. Bref, ça mérite d’être testé sur ton prochain side project.</p>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://chierchia.fr/2025/08/20250820190407/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title>Bringing Back Parallax With Scroll-Driven CSS&#160;Animations</title>
					<link>https://chierchia.fr/2025/08/bringing-back-parallax-with-scroll-driven-css-animations/</link>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Wed, 13 Aug 2025 05:30:00 +0000</pubDate>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[parallax]]></category>
		<guid isPermaLink="false">https://chierchia.fr/?p=4602</guid>

					<description><![CDATA[Bookmarked https://css-tricks.com/bringing-back-parallax-with-scroll-driven-css-animations/. Franchement, j’avais enterré le parallax avec les carrousels autoplay et les splash pages en Flash. Mais là, j’ai été surpris. Avec les scroll-driven animations, le truc retrouve une seconde vie : fluide, natif, et surtout sans les usines à gaz JS d’avant. L’article de CSS-Tricks décortique la méthode avec pédagogie en mode : [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class='e-content'>
<div class="wp-block-indieblocks-bookmark"><div class="u-bookmark-of h-cite"><p><i>Bookmarked <a class="u-url" href="https://css-tricks.com/bringing-back-parallax-with-scroll-driven-css-animations/">https://css-tricks.com/bringing-back-parallax-with-scroll-driven-css-animations/</a>.</i></p></div></div>



<p class="p1">Franchement, j’avais enterré le parallax avec les carrousels autoplay et les splash pages en Flash. Mais là, j’ai été surpris.</p>



<p class="p1">Avec les scroll-driven animations, le truc retrouve une seconde vie : fluide, natif, et surtout sans les usines à gaz JS d’avant.</p>



<p class="p1">L’article de CSS-Tricks décortique la méthode avec pédagogie en mode : t’as une timeline liée au scroll, tu cales tes keyframes dessus, et roule ma poule.</p>



<p class="p1">Ce que j’ai aimé, c’est qu’on n’est plus dans le « waouh » pour faire waouh.</p>



<p class="p1">C’est clean, subtil, et ça s’intègre bien dans un design qui respecte l’utilisateur.</p>



<p class="p1">Tu peux même jouer avec la perspective ou l’échelle d’un élément selon sa progression dans la page, sans flinguer les perfs.</p>



<p class="p1">Bref, si t’avais lâché l’affaire avec le parallax, c’est le bon moment pour t’y remettre.</p>
</div>]]></content:encoded>
					
		
		
			</item>
		<item>
					<title>Tous les éditeurs de code que j’ai utilisé</title>
					<link>https://chierchia.fr/2025/03/tous-les-editeurs-de-code-que-jai-utilise/</link>
					<comments>https://chierchia.fr/2025/03/tous-les-editeurs-de-code-que-jai-utilise/#comments</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Sat, 22 Mar 2025 18:48:45 +0000</pubDate>
				<category><![CDATA[Journal]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[coda]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[personnel]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[vscode]]></category>
		<guid isPermaLink="false">https://chierchia.fr/?p=4429</guid>

					<description><![CDATA[Ceci est un post que j’ai eu envie d’écrire pour aucune autre raison que celle d’être tombé sur l’un des premiers article du blog de Paweł Gryzbek. Je ne vais pas partager mon «&#160;setup&#160;» mais plutôt tous les IDE, au sens large, que j’ai utilisé jusqu’à maintenant pour le développement Web. J’ai adoré utiliser Espresso [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class='e-content'>
<p>Ceci est un post que j’ai eu envie d’écrire pour aucune autre raison que celle d’être tombé sur <a href="https://pawelgrzybek.com/my-web-development-setup/" target="_blank" rel="noreferrer noopener">l’un des premiers article</a> du blog de Paweł Gryzbek. Je ne vais pas partager mon «&nbsp;setup&nbsp;» mais plutôt tous les IDE, au sens large, que j’ai utilisé jusqu’à maintenant pour le développement Web.</p>



<ul class="wp-block-list">
<li>Microsoft FrontPage <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f922.png" alt="🤢" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>



<li>Dreamweaver MX</li>



<li>Komodo Edit</li>



<li>Espresso</li>



<li>Coda</li>



<li>Adobe Brackets</li>



<li>Sublime Text 2</li>



<li>Sublime Text 3</li>



<li>Atom</li>



<li>Visual Studio Code</li>
</ul>



<p>J’ai adoré utiliser Espresso pour le CSS et Coda pour le PHP, mais j’avoue que mon préféré jusqu’ici c’est VSCode. Déjà avant que GitHub soit racheté par Microsoft j’adorais coder dans Atom. Ça fait maintenant plus de 6 ans que je code dans VSCode et je ne compte pas changer !</p>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://chierchia.fr/2025/03/tous-les-editeurs-de-code-que-jai-utilise/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
					<title>Should masonry be part of CSS grid? – Ahmad Shadeed</title>
					<link>https://chierchia.fr/2024/11/3500/</link>
					<comments>https://chierchia.fr/2024/11/3500/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Sat, 02 Nov 2024 07:49:57 +0000</pubDate>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[display]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[masonry]]></category>
		<guid isPermaLink="false">https://chierchia.fr/?p=3500</guid>

					<description><![CDATA[If we go with the new syntax (display: masonry), it will need a few years to become supported in all major browsers. Let’s be honest, a layout is a major part of a web page that makes it hard to apply progressive enhancement. You either have a masonry or not, right? Making it part of [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class='e-content'>
<div class="wp-block-indieblocks-bookmark"><div class="u-bookmark-of h-cite"><p><i>Bookmarked <a class="u-url p-name" href="https://ishadeed.com/article/css-grid-masonry/">Should masonry be part of CSS grid?</a> by <span class="p-author">Ahmad Shadeed</span>.</i></p></div><div class="e-content">
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>If we go with the new syntax (<code>display: masonry</code>), it will need a few years to become supported in all major browsers. Let’s be honest, a layout is a major part of a web page that makes it hard to apply progressive enhancement. You either have a masonry or not, right?</p>



<p>Making it part of CSS grid will at least guarantee that the layout will work, but without the masonry stuff.</p>
</blockquote>
</div></div>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://chierchia.fr/2024/11/3500/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title>CSS Cap Unit &#8211; Ahmad Shadeed</title>
					<link>https://chierchia.fr/2024/08/css-cap-unit-ahmad-shadeed/</link>
					<comments>https://chierchia.fr/2024/08/css-cap-unit-ahmad-shadeed/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Sat, 24 Aug 2024 19:20:28 +0000</pubDate>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[astuce]]></category>
		<category><![CDATA[css]]></category>
		<guid isPermaLink="false">https://chierchia.fr/blog/2024/08/css-cap-unit-ahmad-shadeed</guid>

					<description><![CDATA[A look at how I solved a design problem with CSS cap unit.]]></description>
										<content:encoded><![CDATA[<div class='e-content'>
<div class="wp-block-indieblocks-bookmark"><div class="u-bookmark-of h-cite"><p><i>Bookmarked <a class="u-url p-name" href="https://ishadeed.com/article/css-cap-unit">CSS Cap Unit</a> by <span class="p-author">Ahmad Shadeed</span>.</i></p></div><div class="e-content">
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>A look at how I solved a design problem with CSS cap unit.</p>
</blockquote>
</div></div>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://chierchia.fr/2024/08/css-cap-unit-ahmad-shadeed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
					<title>Double your specificity with this one weird trick &#8211; Cirrus&#8217;s Realm</title>
					<link>https://chierchia.fr/2024/08/2959/</link>
					<comments>https://chierchia.fr/2024/08/2959/#respond</comments>
		
		<dc:creator><![CDATA[<span class='p-author h-card'>Ange Chierchia</span>]]></dc:creator>
		<pubDate>Thu, 22 Aug 2024 07:49:32 +0000</pubDate>
				<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[astuce]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[spécificité]]></category>
		<guid isPermaLink="false">https://chierchia.fr/?p=2959</guid>

					<description><![CDATA[Je me souviens avoir déjà utilisé cette technique par le passé, mais c’était un rappel nécessaire pour moi. J’utilise beaucoup trop souvent !important à mon goût. Une autre technique que j’utilise c’est d’ajouter un sélecteur d’attribut en plus, mais c’est moins joli.]]></description>
										<content:encoded><![CDATA[<div class='e-content'>
<div class="wp-block-indieblocks-bookmark"><div class="u-bookmark-of h-cite"><p><i>Bookmarked <a class="u-url p-name" href="https://cirrus.twiddles.com/blog/2024/08/21/double-your-specificity-with-this-one-weird-trick">Double your specificity with this one weird trick | Cirrus&rsquo;s Realm</a>.</i></p></div><div class="e-content">
<p>Je me souviens avoir déjà utilisé cette technique par le passé, mais c’était un rappel nécessaire pour moi. J’utilise beaucoup trop souvent <code>!important</code> à mon goût.</p>



<p>Une autre technique que j’utilise c’est d’ajouter un sélecteur d’attribut en plus, mais c’est moins joli.</p>
</div></div>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://chierchia.fr/2024/08/2959/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
