Maison > interface Web > tutoriel CSS > Nouvelles valeurs et fonctions en CSS

Nouvelles valeurs et fonctions en CSS

Barbara Streisand
Libérer: 2024-09-19 22:25:00
original
729 Les gens l'ont consulté

Remarque : en raison de sa récente version et de son statut actuel de version de travail, de nombreuses fonctionnalités décrites dans cet article vont changer et elles ne seront pas disponibles dans tous les navigateurs (certains le sont !).

Le 13 septembre 2024, le groupe de travail CSS a publié le premier projet de travail public pour le module Valeurs et unités CSS niveau 5. Il s'agit d'une extension du niveau précédent qui inclut quelques ajouts intéressants.

Des choses qui étaient inimaginables il n'y a pas si longtemps font leur apparition dans les spécifications : des valeurs aléatoires, l'utilisation d'attributs comme valeurs dans n'importe quelle propriété, la possibilité d'utiliser l'ordre dans les calculs... Cela semble prometteur.

Beaucoup de ces fonctionnalités ont un dénominateur commun : elles simplifient le code CSS. Des choses qui nécessitaient auparavant plusieurs règles ou des solutions hacky seront possibles avec une ou deux lignes de CSS. Comme je l'ai dit, cela semble prometteur. Voici une liste des nouveaux changements (plus de détails ci-dessous) :

  • Modifications de la fonction attr() : elle peut donc être utilisée avec n'importe quel attribut et dans n'importe quelle propriété CSS (pas seulement sur le contenu).
  • Fonction calc-size() : utilise des valeurs intrinsèques telles que auto ou min-content dans les calculs.
  • Nouvelle fonction first-valid() pour éviter les problèmes avec les propriétés personnalisées avec des valeurs non valides.
  • Nouvelle famille de fonctions *-mix() avec une nouvelle notation pour les ratios.
  • Nouvelle famille de fonctions *-progress() pour calculer le taux de progression entre une plage ou au sein d'un média ou d'un conteneur.
  • Randomisation avec les nouvelles fonctions random() et random-item(), pour renvoyer des valeurs aléatoires à partir d'une plage ou d'une liste (enfin !)
  • Nouvelles fonctions sibling-count() et sibling-index() qui fournissent des valeurs entières à utiliser en fonction de l'ordre et de la taille.
  • Nouvelle fonction toggle() pour styliser les éléments imbriqués en parcourant facilement une liste de valeurs.
  • Nouvelle notation fonctionnelle pour les arguments avec des listes de valeurs séparées par des virgules, pour éviter toute ambiguïté avec la virgule séparant les arguments.
  • Nouveaux modificateurs d'URL pour offrir plus de contrôle sur les requêtes url().
  • Extension du type de position pour autoriser des valeurs relatives au débit.

Nouvelles fonctionnalités et mises à jour

Modifications de la fonction attr()

Lire un attribut et l'utiliser en CSS n'est pas nouveau. C'était déjà possible avec attr(), mais une plainte courante concernait la limitation des fonctionnalités, ne fonctionnant qu'avec des chaînes et dans le contenu.

La fonction attr() subira quelques mises à jour, donc tout attribut de données indépendant de son type de données peut être utilisé dans n'importe quelle propriété. Ce sera aussi simple que de spécifier le type et, si nous le souhaitons, une valeur de secours au cas où quelque chose ne se passerait pas comme prévu.

C'est une mise à jour très attendue qui fera le bonheur de nombreux développeurs.

New Values and Functions in CSS


Opérations avec des valeurs intrinsèques utilisant calc-size()

Ce module introduit également une nouvelle fonction capable de fonctionner en toute sécurité avec des valeurs intrinsèques (auto, max-content, fit-content, etc.). C'est une fonctionnalité qui sera particulièrement utile dans les transitions et les animations.

Il ajoute également de nouveaux mots-clés (taille) pour offrir plus de flexibilité aux calculs, facilitant ainsi le travail avec les tailles.

Pourquoi avoir une toute nouvelle fonction alors que calc() est déjà là ? Comme l'explique le document, il existe une compatibilité ascendante et des raisons pratiques pour lesquelles cela a été fait de cette façon (par exemple, des interpolations fluides dans tous les cas, en particulier lorsque vous travaillez en pourcentage.)

New Values and Functions in CSS


Nouvelle fonction first-valid()

Une nouvelle méthode est introduite : first-valid(). L'idée est de transmettre une liste de valeurs à la fonction ; ils seront résolus, et le premier valide sera celui utilisé. Cela sera particulièrement utile lorsqu'il s'agira de propriétés personnalisées CSS (alias variables CSS).

Un problème lors de l'utilisation de variables CSS est que, dans une déclaration, elles sont considérées comme une valeur valide, même si la valeur réelle contenue n'est pas valide. Définir une valeur de secours n'aidera pas non plus, et une déclaration de secours sera également ignorée.

Avec cette méthode, nous pourrions simplifier le code en consolidant toutes les déclarations de secours en une seule avec first-valid().

New Values and Functions in CSS


Nouvelle famille de fonctions *-mix()

Il introduit également une nouvelle fonction, mix(), qui peut être utilisée pour simplifier les différentes fonctions *-mix. Vous souhaitez mélanger les couleurs ? Vous pouvez faire quelque chose comme un mélange de couleurs (rouge 60 %, bleu) ou un mélange plus simple (60 %, rouge, bleu) fera également l'affaire. Et comme on dit couleurs, on pourrait aussi mélanger les longueurs, transformer les fonctions, etc.

Cette notation est également étendue à l'autre famille de fonctions *-mix :

  • calc-mix()
  • mélange de couleurs()
  • fondu enchaîné()
  • palette-mix()

Si aucune fonction d'assouplissement n'est spécifiée dans le paramètre de progression (le premier), linéaire sera appliqué par défaut.

New Values and Functions in CSS


Nouvelle famille de fonctions *-progress()

Ils représentent la progression proportionnelle d'une valeur donnée d'une valeur de départ à une autre valeur finale. Le résultat est un nombre compris entre 0 et 1 qui peut être utilisé dans des opérations, mais il sera particulièrement pratique lorsqu'il sera combiné avec la famille de fonctions *-mix décrite précédemment.

Il y a trois fonctions dans cette famille :

  • progress() : générique, pour toute fonction mathématique.
  • media-progress() : pour les fonctionnalités multimédias.
  • content-progress() : pour les requêtes de conteneur.
![](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xljw52r92rrd8o6cqa0p.jpg)

Fonctions de randomisation en CSS

Les designs amusants ont un certain niveau de randomisation, quelque chose qui manquait dans CSS. Mais ce module introduit deux nouvelles fonctions qui renvoient des valeurs aléatoires à partir d'une liste (random-item()) ou entre une plage (random()).

Plus d'astuces ou de dépendances à d'autres langages pour y parvenir. La syntaxe est également simple et puissante, avec la possibilité de calculer le nombre aléatoire par sélecteur ou élément.

New Values and Functions in CSS


Nouvelles fonctions frères et sœurs

Parfois, vous souhaiterez peut-être proposer différents styles en fonction de l'ordre des éléments dans un conteneur. Malheureusement, les compteurs ne peuvent pas être utilisés comme ça en CSS (je laisserai cette diatribe pour un autre jour).

Avec l'introduction de deux nouvelles fonctions qui renvoient un nombre, permettant d'opérer avec elles, cet obstacle est supprimé :

  • sibling-count() : renvoie le nombre de frères et sœurs.
  • sibling-index() : renvoie la position/l'ordre de l'élément dans la liste des frères et sœurs.

Plus besoin de définir des propriétés personnalisées sur chaque élément ou d'écrire des sélecteurs individuels avec nth-child.

New Values and Functions in CSS


Nouvelle fonction toggle()

Une nouvelle façon pratique de définir des valeurs dans des éléments imbriqués est introduite. La fonction toggle() définit les valeurs que l'élément et ses descendants parcourront, simplifiant considérablement le code. Oubliez les règles complexes ou les redéfinitions : tout sera contenu dans une seule ligne de code.

Par exemple, imaginez que nous ayons une liste avec quatre niveaux imbriqués. Nous voulons que les niveaux impairs aient des disques et que les niveaux pairs soient des carrés. On pourrait s'amuser en faisant ul > li ul> li ul> li ul { ... } à différents niveaux, ou nous pouvons simplement faire quelque chose comme ul { list-style-type: disc, square; }. Boom! Fait!

La seule chose qui est un peu inquiétante à propos de cette fonction est son nom. C'est peut-être juste moi, mais le mot « basculer » a des connotations de « dualité » : on/off, oui/non — deux valeurs qui basculent entre elles. La fonction toggle() peut avoir autant de paramètres que vous le souhaitez, donc ça fait bizarre qu'elle s'appelle "toggle".

New Values and Functions in CSS


Nouvelle notation fonctionnelle pour les arguments

Une chose que vous avez peut-être remarquée est la façon dont certaines des nouvelles fonctions (par exemple, random() ou toggle()) peuvent prendre des arguments qui sont des listes de valeurs séparées par des virgules.

Comment pouvons-nous distinguer un argument du suivant dans ces cas-là ? C'est pourquoi il existe une proposition de « mise à niveau par virgule » pour les notations fonctionnelles. Cela signifie que nous pouvons utiliser un point-virgule (;) au lieu d'une virgule (,) pour séparer les paramètres sans ambiguïté.

Par exemple, imaginez que vous souhaitiez avoir une famille de polices aléatoire sur votre page et spécifiez différentes options :

  • Times, empattements
  • Arial, sans empattement
  • Roboto, sans empattement

Tous ces arguments sont des listes de valeurs séparées par des virgules. Si nous utilisions une virgule pour séparer les arguments, ce serait un énorme gâchis. Mais avec la nouvelle notation, il est facile d'identifier où se termine un argument et où commence le suivant :

.random-font {
  font-family: random-item(Times, serif; Arial, sans-serif; Roboto, sans-serif);
}
Copier après la connexion

New Values and Functions in CSS


Extension du type de poste

CSS possède déjà des propriétés logiques pour la marge, le remplissage et la bordure — des valeurs qui sont relatives au sens d'écriture du texte et peuvent changer d'une langue à l'autre.

Ceci est maintenant introduit pour le type position (à ne pas confondre avec la propriété position). Les propriétés qui indiquent la position (par exemple, position d'arrière-plan, position de l'objet, etc.) peuvent spécifier des valeurs qui seront relatives au flux et à la direction du texte.

Les nouvelles valeurs pouvant être utilisées sont :

  • x-start
  • x-fin
  • y-start
  • fin d'année
  • démarrage en bloc
  • fin de bloc
  • démarrage en ligne
  • fin en ligne

New Values and Functions in CSS


Conclusion

Nous en sommes encore à un stade précoce et les choses vont changer, mais certaines des nouvelles fonctionnalités incluses dans le module Valeurs et unités CSS niveau 5 semblent incroyablement prometteuses.

Certains sont aussi très attendus ! Surtout la possibilité d'utiliser n'importe quel attribut avec n'importe quelle propriété. Je me souviens avoir vu cette option dans les spécifications il y a longtemps. Espérons que c’est l’impulsion dont il a besoin pour en faire une réalité.

N'oubliez pas de consulter la version de travail du module Valeurs et unités CSS niveau 5 pour plus de détails et d'informations. Si vous avez des questions ou des commentaires, enregistrez un ticket sur leur dépôt GitHub.

Bon (CSS) expérimentation et codage !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal