aCSStuces et découvertes du jour.

Petit florilège des trucs passés sur la River ces derniers temps et traînant dans ma riditléteur...

Preloader les font

source https://htmhell.dev/adventcalendar/2024/25/

On peut faire un preload des fontes importantes avec un lien dans le header afin d'avoir un design propre le plus tôt possible:

<link
  rel="preload"
  href="/nova-sans.woff2"
  as="font"
  type="font/woff2"
  crossorigin="anonymous"
>

Transition de height:auto à display:none 🤩 (mais c'est expérimental 🤬 )

quand tu découvres calc-size(), @starting-style, interpolate-size etc... 😅

source https://blog.css-weekly.com/transition-to-height-auto-display-none-using-pure-css

Toggle la visibilité d'un élément simplement

source https://lehollandaisvolant.net/?id=20250125165124

button.addEventListener('click', function(){
element.hidden = !element.hidden;
});

ou avec mon VanillaJS

on("click","button",function(){
    element.hidden = !element.hidden;
});

Lazy loading simplifié avec content-visibility

source https://links.kalvn.net/shaare/fUwLcQ

content-visibility:auto; pour que l'élément soit chargé/visible juste avant d'être dans la fenêtre.

Lier une animation au défilement animation-timeline: scroll();

source https://www.alsacreations.com/article/lire/1935-animations-liees-au-scroll-en-css.html

On utilise animation-timeline qu'on définit à scroll() pour lier au défilement ou à view() pour lier à l'apparition/disparition de la vue.

L'article mérite vraiment d'être lu : il définit clairement tous les paramètres avec lesquels jouer.

Déclencher simplement des animations via JS avec animate()

source https://developer.mozilla.org/fr/docs/Web/API/Element/animate

document.getElementById("tunnel").animate(
  [
    // étapes/keyframes
    { transform: "translateY(0px)" },
    { transform: "translateY(-300px)" },
  ],
  {
    // temporisation
    duration: 1000,
    iterations: Infinity,
  },
);

On utilise animate(keyframes, delay);

Placer des éléments avec anchor positionning

source https://css-tricks.com/fancy-menu-navigation-using-anchor-positioning/

pour le moment, que sur chrome/opera 🤬

L'exemple propose un menu avec cette méthode, mais la page dont on trouve le lien en début d'article parle d'un autre cas d'école requérant des prises de tête habituellement: un tooltip bien placé... (https://css-tricks.com/css-anchor-positioning-guide/)

TLDR;

En gros, anchor-positionning permet de placer un élément relativement à un autre:

  • l'objet Anchor sera utilisé comme référence
  • l'objet Target sera placé en absolute en utilisant la position d'Anchor .

On utilisera les propriétés anchor-name et position-anchor comme suit:

.anchor {
  anchor-name: --my-anchor;
}
.target {
  position: absolute;
  position-anchor: --my-anchor;
}

Le choix du positionnement se fera ensuite grâce à position-area, position-visibility.

En savoir plus...

Dwarf Fortress Creator Explains its Complexity & Origins | Noclip Interview - YouTube

ça me rappelle ça

Donc, en gros, les cadavres de chats s'accumulent dans les tavernes de Dwarf Fortress... Enquête du débugger:

  • on a implémenté le service à table dans les tavernes
  • ⮕ les Nains jettent les verres par terre parce qu'ils s'en foutent de la propreté,
  • ⮕ l'alcool se répand par terre
  • ⮕ les chats se baladent dans les tavernes
  • ⮕ comme le programmeur a implémenté les tâches de liquide pour les tâches de sang dans les batailles, les chats ont de l'alcool sous leurs papattes
  • ⮕ les nains tâchés de sang dans les batailles avaient du sang dans les yeux et ils se les lavaient avec du savon, ce qui était étrange
  • ⮕ le programmeur implémente les paupières pour que le nain «se nettoie lui-même»
  • ⮕ le programmeur implémente le fait que les chats se nettoient eux-mêmes aussi en se léchant les papattes parce que c'est «si mignon»
  • ⮕ les chats des tavernes se nettoient en se léchant les pattes pleines d'alcool
  • ⮕ les chats sont bourrés
  • ⮕ ils finissent par crever parce que ils lèchent l'équivalent d'un verre d'alcool CE QUI EST FUCKING BEAUCOUP TROP POUR LE VOLUME D'UN CHAT ET QUE C'EST FUCKING PRÉVU DANS LE JEU QUI GÈRE LE TAUX D'ALCOOLÉMIE
  • ⮕ ILS MEURENT MÊME DE SYMPTÔMES RÉELS



Via la nouvelle version d'ALT-TAB (à base de shaarli ): https://alt-tab.org/

Mes lectures préférés de 2024 - Chez Sammy

Mais Sammy, comment tu fais ?! J'arrive pas à suivrheuuuuuu ! Déjà que tu m'as fait reprendre l'intégrale de Joe Abercombrie et que je dois relire Ficciones de Borges que je n'ai pas ouvert depuis 30 ans ...

J'avais adoré L’espace d’un an de Becky Chambers : la SF feel good, l'univers... tout.

Donc, je me note la mer de la tranquillité et station eleven, que je ne rappelle pas d'avoir lu et le déchronologue que, avec ton sens de la formule, tu m'as super bien vendu ! (salaud ! )

[EDIT] Et allez, continue surtout... Mais c'est pas vrai ! T'es pas humain ?! Liste de voitures balai (alors qu'en vrai, c'est moi la voiture balai... loin derrière !)

Via https://www.sammyfisherjr.net/Shaarli/
ans

sebsauvage: Dietpi et nextcloud

C'est pas pour critiquer OpenMediaVault (il a ses mérites), mais je reviens de DietPi: NextCloud c'est UNE case à cocher dans dietpi-software. Et en deux minutes j'ai un NextCloud en toute dernière version qui tourne magnifiquement. L'OS complet + NextCloud chargé (avec MariaDB, nginx, php-fpm, redis et tout le bordel) occupe... 382 Méga-octet de RAM. (Et le système met 5 secondes à démarrer dans la VM.)

ooh mais que ça m'intéresse ça, oooooh !

Liens

Email obfuscation: What works in 2024?

Donc, pour bloquer le harvesting d'adresse email par les bots, il y a des astuces qui foncionnent à 100% - pour le moment...

Notes perso (la page d'origine est très complète)

1. Utiliser un SVG

// Le HTML
<object class="email" width="130" height="24" data="email.svg" type="image/svg+xml"></object>

// Le SVG: email.svg
<svg viewBox="0 0 130 24" xmlns="http://www.w3.org/2000/svg">

// le CSS
<style>
@import url('https://fonts.googleapis.com/css2?family=Indie+Flower&amp;display=swap');

text {
    dominant-baseline: middle;
    fill: #000;
    font-family: 'Indie Flower';
    font-size: 16px;
    text-anchor: middle;
}
</style>

<text x="50%" y="50%">email@example.com</text>

</svg>
CSS
object.email {
    height: 2em;
    margin: -1em 0;
    vertical-align: middle;
}

2. cacher une partie de l'email via CSS

L'utilisateur n'accède qu'à l'email alors que le bot récupère le faux email avec la chaîne parasite.

CSS
span.email b {
    display: none;
}

3. utiliser JS pour concaténer les caractères de l'email.

Mais bon, si JS est bloqué: poufcétou

<script>document.write('a'+'i'+'@'+'e'+'m'+'a'+'i'+'l'+'.'+'s'+'p'+'e'+'n'+
'c'+'e'+'r'+'m'+'o'+'r'+'t'+'e'+'n'+'s'+'e'+'n'+'.'+'c'+'o'+'m');</script>

4. Utiliser JS pour effectuer une rotation Rot18

Conseil supplémentaire, effectuer une rotation différente selon le type de caractèe (lettre ou chiffre, voyelle ou consonne ...)

HTML
<head>
    <script src="https://warriordudimanche.net/text-rot18.js" defer></script>
</head>

D'autres méthodes sont efficaces mais cassent l'accessibilité

L'utilisation d'une image, l'utilisation d'un pseudo élément associé à content:"email@domaine.com", l'utilisation de CSS pour renverser le texte, les instructions à l'utilisateur (retirer ou remplacer une partie)...

D'autres pistes

L'auteur marque comme «en test» d'autres méthodes: le chiffrement par AES, la conversion...

via : https://book.knah-tsaeb.org/shaare/18sqjg

Comment dompter la hauteur de ligne en CSS - Grafikart

Comprendre les polices de caractère, le line-height et pourquoi ça fait chier en CSS...

solutions :

  1. text-box-trim 👍 résout le pb - 👎 pas supporté
  2. réduire les marges 👍 fonctionne - 👎 pas propre et très empirique
  3. marges négatives 👍 résout aussi le pb sans être sale - 👎 nécessite l'utilisation d'une app de calcul



Smooth Multi-Page Experiences with Just a Few Lines of CSS - HTMHell

Des transitions entre les pages en une ligne ?!

@view-transition {navigation: auto;}

Pas mal mais pas sur firefox pour le moment... https://caniuse.com/view-transitions

Un fallback que j'avais utilisé, jouer sur onload et l'opacité du body: https://snippetvamp.warriordudimanche.net/index.php?snippet=5EEB0F5F-C4F9-432E-97EE-558E4BA8E4B8

C'est loin d'être parfait mais bon...

/* Dans le Head */
<style type="text/css">body{opacity: 0;transition: opacity 1s}</style>

/* balise body */
<body onload="document.body.style.opacity=1" >

Via https://links.kalvn.net/shaare/65veMA

Friction Motion graphics

Un outil d'animation à tester ?

Friction is a powerful and versatile motion graphics application that allows you to create vector and raster animations for web and video platforms with ease.

Fil RSS des articles