Notes

  • Anchor Positioning in CSS

    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 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.

    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.

    Et c’est typiquement le genre de feature CSS que t’aurais rêvé d’avoir avant : puissante, propre, explicite.


  • We accidentally built the wrong internet

    Je suis tombé sur cet article de Karim Jedda et je suis resté scotché.

    Voici le truc : on a construit Internet avec logins par e-mail, mots de passe, et formulaires bancaires archaïques. Tout paraît fragile, intrusif, mal foutu. Mais c’est pas juste technique : c’est un produit de commodité, de paresse collective. Comme si, au lieu de créer un outil simple, sécurisé, privé, on a préféré le moindre effort, ce qui coûte cher à terme.

    Ce que je retiens le plus, c’est cette idée géniale que le bon système ne gagne pas parce qu’il est plus intelligent, mais parce qu’il est plus léger. On s’en fout de la tech la plus safe du monde si c’est une galère pour l’utiliser. Le vrai challenge est là : construire des outils qui te laissent maître de ton identité, sans te demander d’être un expert en sécurité ou crypto.

    Pas de promo sauvage, pas de jargon de startup. Juste une question qui t’effleure la tête : et si, au lieu de taper des mots de passe, tu validais juste avec un toucher ? Un système où tu paies d’un geste, comme filer du liquide, mais numérique. C’est simple, léger, et puissant. L’idée n’est pas de faire de toi un pro de crypto, juste de rendre le bon choix confortable. Je trouve ça beau, et urgent.


  • jeudi 11 septembre 2025 @ 13:47:00

    Je fais du CSS depuis 2003 et je découvre seulement que : `.box .child { border-radius: inherit; }` ajoute le border-radius de l’élément parent… On est jamais à l’abris d’une claque dans la tronche ! 🤯


  • lundi 08 septembre 2025 @ 20:37:26

    On est allé chez Basic-Fit avec ma compagne, on avait les baskets de rechange, les serviettes et le cadenas à code pour le casier. Jusque là pas de soucis, mais au moment de fermer le casier, le code qu’on avait configuré il y’a des années ne fonctionnait plus… Cette vidéo nous a sauvé la mise, sinon on était bon pour racheter un cadenas…


  • Setting Line Length in CSS (and Fitting Text to a Container)

    On sous-estime la longueur de ligne. Dès que la ligne devient trop longue, l’œil se perd, on relit, on décroche. La règle pratique : rester sous ~80 caractères, idéalement dans la zone 60–70. En CSS, c’est bête comme max-width: 65ch sur le bloc de texte. Simple, robuste, lisible. 

    Ensuite, je veux une taille qui s’adapte sans faire le yo-yo : font-size: clamp(1rem, 1.2vw + 0.2rem, 1.25rem). Ça donne une typo fluide, bornée, sans surprise. Et si l’UI est component-driven, j’utilise les unités de requête de conteneur (cqi, cqw) pour que chaque carte garde sa cohérence, indépendamment du viewport. 

    Dernier point : “remplir” un container avec du texte. Il y a plusieurs approches : responsive type avec clamp(), requêtes de conteneur pour affiner par composant, et, en dernier recours, un peu de JS si tu dois vraiment auto-ajuster au pixel près (genre titres très courts qui doivent occuper toute la largeur). Le bon choix dépend du contexte, mais la base ne change pas : longueur de ligne confortable d’abord, micro-ajustements ensuite.


  • Getting Creative With Images in Long-Form Content

    On sous-estime souvent le pouvoir des images dans un texte long. Pas seulement pour “illustrer” une idée, mais pour créer un rythme, installer des respirations, parfois même provoquer une surprise.

    Un bloc de texte dense fatigue vite. Le cerveau décroche. Mais si on ose placer une image de travers, en plein milieu, ou dans un format qui casse la ligne, tout change : la lecture se relance, l’œil se réveille. C’est comme une ponctuation visuelle.

    Ça demande un peu de culot, et surtout de sortir des habitudes “image centrée, légende en dessous”. Mais c’est là que ça devient intéressant : quand la mise en page raconte autant que le contenu.

    Bref, jouer avec les images, c’est jouer avec la perception. Et pour un article long, c’est peut-être le meilleur moyen d’éviter qu’il reste… long.


  • Un-Sass’ing my CSS

    Ç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 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.

    Ç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.

    Un rappel utile : parfois, coder mieux, c’est surtout coder moins.


  • CSS-only scrollspy effect using scroll-marker-group and :target-current

    On connaissait les “CSS Carousels”. Voilà le pendant qui m’intéresse vraiment : un scrollspy lisible et accessible, sans JavaScript. L’idée : garder une table des matières sémantique (une liste de liens vers les sections), activer scroll-target-group sur le conteneur, puis utiliser :target-current pour styler le lien dont la section est visible. Résultat : un état actif natif, pas de classes à bidouiller, et moins de code à maintenir.

    Ce que j’aime : on n’invente rien côté HTML. Le <nav> reste un vrai <nav>. Les liens, de vrais liens. Le comportement “actif” vient de CSS et du navigateur. C’est propre, ça respecte l’accessibilité de base, et ça colle à l’intention : guider la lecture, pas jouer au carrousel.

    Nuance utile : c’est neuf, support encore partiel, donc à prototyper avant de livrer en prod. Mais la direction est bonne. On remplace une logique JS souvent fragile par une API CSS pensée pour ça. Et ça, c’est le genre d’évolution qui rend le front agréable : moins de friction, plus de sémantique, meilleur UX par défaut


  • CSS Relative Colors

    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 (–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.

    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.

    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 –brand-hover, –brand-outline, –surface-elevated avec color(from …), et observe la simplification. Une base solide, des variantes “calculées”, et un design qui respire.


  • 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 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.

    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 { –variable: valeur }, et basta. Côté dev, tu consommes les tokens en JS et en CSS sans jamais les dédoubler.

    Ç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.


  • Why I’m Writing Pure HTML & CSS in 2025

    Je suis tombé sur ce billet de Joel Dare qui explique pourquoi il écrit (de nouveau) des sites en pur HTML et CSS en 2025. Pas de build, pas de tooling, pas de JavaScript. Juste des fichiers statiques, lisibles, maintenables, pérennes.

    Et franchement, ça m’a parlé.
    Pas juste parce que je suis nostalgique du web d’avant, mais parce qu’au fond, on passe notre temps à complexifier des trucs simples. On ajoute des outils pour compenser d’autres outils, on encapsule des composants qui ne font qu’appeler d’autres composants, et on finit par passer plus de temps à lire la doc qu’à coder.

    J’ai eu ce déclic moi aussi, plus d’une fois. Cette envie de tout jeter, de repartir de zéro, avec juste un `index.html` et une feuille de style. Et ça fait un bien fou.

    On n’est pas obligé de tout faire simple tout le temps, mais savoir qu’on peut… c’est déjà une libération.


  • vendredi 15 août 2025 @ 21:34:53

    Premières armes sur GitHub Actions la nuit dernière et aujourd’hui. J’ai passé mon CV en Eleventy avec build, création de la version PDF et déploiement sur OVH automatique à chaque commit sur la branche `master`.

    Ça devait être relativement simple à la base, mais finalement non, pas mal de petites galères, notamment avec la génération de PDF, mais maintenant c’est réglé et ça fonctionne du feu de Dieu ! 🎉