Nouveauté CSS – 2023

:has()

Cette nouvelle pseudo-class, permet de mettre en page les éléments HTML selon leur contenu. Par exemple :

Pour une liste d’articles, on pourrait en avoir certains contenant une images et d’autres sans images. On pourrait alors dire au CSS, mon article à par défaut une taille de texte à 42px et par contre, si mon article comprend une balise “img” tu réduis la taille du titre à 24px. Cela permet de manière très simple d’équilibrer visuellement les articles avec ou sans images.

/!\ au 24 août 2023, il n’est pas encore compatible avec Firefox

article h2 {
     font-size: 42px;
}
article:has(img) h2 {
    font-size: 24px;
}

En savoir plus ici : MDN web docs


@container

Le @container est une nouvelle règle en CSS qui permet de mettre en forme les éléments par rapport au container parent. C’est à dire qu’aujourd’hui, on peut dire à si mon header fait moins que 400px tu executes cette mise en page, sinon tu mets les propriétés par défaut. Concrètement, en CSS ça donnerait :

   header {
       container: header / inline-size;
       display: flex;
       flex-direction: row;
   }


   /* Si la largeur du container 'header' est plus petit que 400px */

   @container header (width < 400px) {
       flex-direction: column;
   }

En savoir plus ici : MDN web docs


Transform (obsolète)

Il y a moins d’une année, le transform était encore obligatoire et depuis CSS3 nous simplifie la vie en ayant séparer chacune des valeurs “transform” en propriété unique, concrètement :

div {
    /* avant 2023 */
    transform: rotate(90deg) translate(10px, 10px) scale(2);

    /* maintenant */
    rotate: 90deg;
    translate: 10px 10px;
    scale: 2;
}

Voir : Scale // Translate // Rotate

Laisser un commentaire