Table des matières
Drive :where pseudo sélecteur
Exemple: composants de table configurables
Propriétés personnalisées CSS
Couche en cascade
Résumer
Maison interface Web tutoriel CSS Ne combattez pas la cascade, contrôlez-la!

Ne combattez pas la cascade, contrôlez-la!

Mar 15, 2025 am 10:13 AM

Maître la cascade CSS: dites au revoir au chaos et embrassez le contrôle! Cet article explorera comment utiliser les nouvelles fonctionnalités CSS pour contrôler les cascades pour écrire le code CSS plus concis et plus efficace. Dans le passé, les styles provenant de différentes sources ont souvent rendu les cascades difficiles à gérer et ont finalement produit du code redondant. Même avec des méthodes comme ITCSS et BEM, nous sommes toujours confrontés à des défis posés par les cascades, tels que la nécessité de contrôler avec précision la position de la déclaration @import ou de recourir !important Heureusement, de nouveaux outils sont sortis, ce qui nous permet de contrôler efficacement la cascade.

Ne combattez pas la cascade, contrôlez-la!

Drive :where pseudo sélecteur

:where le pseudo-électror nous permet de supprimer la particularité du sélecteur afin qu'il ne soit plus élevé que le style par défaut de l'agent utilisateur, quel que soit l'ordre de chargement CSS. Cela signifie que la particularité du sélecteur est en fait nul, ce qui est très utile pour les composants à usage général.

Par exemple, utilisez :where définir un style de table commun:

 : où (table) {
  Color en arrière-plan: Tan;
}
Copier après la connexion

Même si d'autres styles de table étaient définis avant cela:

 tableau {
  Color en arrière-plan: hotpink;
}

: où (table) {
  Color en arrière-plan: Tan;
}
Copier après la connexion

La couleur de l'arrière-plan du tableau est toujours tan car :where élimine la particularité du sélecteur. Cela fait :where parfait pour CSS réinitialise.

:where 's Brother Selector :is l'effet inverse:

La particularité du :is() pseudo-classe est déterminée par la particularité de ses paramètres les plus spéciaux. Par conséquent, les sélecteurs écrits avec :is() n'ont pas nécessairement la même spécialité que les sélecteurs équivalents écrits sans :is() . —— Spécification de niveau 4 de l'élector

Continuez avec l'exemple précédent:

 est (table) {
  --tbl-bgc: orange;
}
tableau {
  --TBL-BGC: Tan;
}
: où (table) {
  --tbl-bgc: hotpink;
  Color d'arrière-plan: var (- tbl-bgc);
}
Copier après la connexion

La couleur d'arrière-plan de la table sera tan car :is la même particularité que table , et table est située derrière. Mais si nous le changeons en:

 est (table, .c-tbl) {
  --tbl-bgc: orange;
}
Copier après la connexion

La couleur d'arrière-plan sera orange parce que :is le même poids que son sélecteur le plus spécial.c .c-tbl .

Exemple: composants de table configurables

Construisons un composant de table avec le HTML suivant:

Ensuite, nous enroulons .c-tbl dans :where sélecteur et ajoutant les coins arrondis:

 : où (.c-tbl) {
  Border-Collapse: séparé;
  Espacement des bordures: 0;
  Table-Layout: Auto;
  Largeur: 99,9%;
}
Copier après la connexion

Les cellules de table utilisent différents styles:

 : où (.c-tbl thead th) {
  / * ... * /
}
: où (.c-tbl tbody td) {
  / * ... * /
}
Copier après la connexion

En raison des coins arrondis et border-collapse: separate , nous devons ajouter des styles supplémentaires:

 : où (.c-tbl tr td: premier de type) {
  / * ... * /
}
/ * ... * /
Copier après la connexion

Maintenant, nous pouvons créer des variations du composant de la table en injectant d'autres styles avant ou après le style général (bénéficie de :where 's Specialty Elimination):

 .c-tbl --purple th {
  Color en arrière-plan: HSL (330, 50%, 40%)
}
/ * ... * /
Copier après la connexion

Propriétés personnalisées CSS

Nous utiliserons data-component pour définir le composant:

Copier après la connexion
Copier après la connexion

Des styles génériques seront appliqués à toutes les instances de composants, et les styles pour des instances de composants spécifiques seront inclus dans la classe générale, et les propriétés personnalisées du composant commun sont utilisées.

 : où ([data-component = "table"]) {
  / * ... * /
}
.c-tbl --puple {
  / * ... * /
}
Copier après la connexion

Dans un composant commun, chaque propriété CSS pointe vers une propriété personnalisée. Les attributs qui doivent agir sur des éléments enfants (tels que border-color ) sont spécifiés à la racine de la composante générale:

 : où ([data-component = "table"]) {
  --tbl-hue: 200;
  / * ... * /
}
: où ([data-component = "table"] td) {
  Border-Color: var (- TBL-BDC);
}
Copier après la connexion

D'autres propriétés peuvent être définies des valeurs statiques ou configurées à l'aide de propriétés personnalisées. Si vous utilisez des propriétés personnalisées, n'oubliez pas de définir une valeur par défaut pour une utilisation lorsque des classes de variantes sont manquantes.

 : où ([data-component = "table"]) {
  Color d'arrière-plan: var (- tbl-bgc, transparent);
  / * ... * /
}
Copier après la connexion

Nous pouvons utiliser des propriétés personnalisées pour contrôler l'alignement et la largeur des colonnes:

 : où ([data-component = "table"] tr> *: nth-of-type (1)) {
  Text-Align: var (- CA1, initial);
  / * ... * /
}
Copier après la connexion

Maintenant, créons un style de composant spécifique, en utilisant la classe régulière .c-tbl :

 .c-tbl {
  --tbl-hue: 330;
}
Copier après la connexion

Nous avons juste besoin de mettre à jour les propriétés sans écrire un tout nouveau CSS! Modifiez une propriété pour mettre à jour la couleur de la table.

Nous pouvons écrire des styles plus complexes, tels que les rayures zébrées:

 .c-tbl tr: nth-child (même) td {
  --tbl-td-bgc: hsl (var (- tbl-hue), var (- tbl-sat), 95%);
}
Copier après la connexion

Ajouter des paramètres à l'aide d'un autre data-attribute

Nous pouvons ajouter une autre propriété data-param pour ajouter plus de paramètres:

Copier après la connexion
Copier après la connexion

Ensuite, dans CSS, nous pouvons utiliser le sélecteur de propriétés pour faire correspondre le mot entier dans la liste des paramètres. Par exemple, une rangée de rayures zébrés:

 [data-component = "Table"] [Data-Param ~ = "Zebrarow"] tr: nth-child (même) td {
  --tbl-td-bgc: var (- tbl-zebra-bgc);
}
Copier après la connexion

Ou colonne de bandes zébrés:

 [data-component = "Table"] [Data-Param ~ = "Zebracol"] TD: Nth-of-Type (Odd) {
  --tbl-td-bgc: var (- tbl-zebra-bgc);
}
Copier après la connexion

Couche en cascade

Le dernier outil pour contrôler la cascade est la "Couche de cascade". Actuellement, il s'agit d'une caractéristique expérimentale qui peut être accessible dans Safari ou Chrome pour activer le drapeau #enable-cascade-layers .

La couche de cascade nous permet d'injecter des feuilles de style dans un ordre spécifique. Une structure simplifiée est la suivante:

 @layer générique, composants;
Copier après la connexion

Cela détermine l'ordre des couches. Il y a d'abord un style général, puis un style spécifique aux composants.

Même si le style de composant est écrit avant le style général, le calque de style composant a toujours la priorité:

 @layer Components {
  corps {
    Color en arrière-plan: LightEagreen;
  }
}

@layer générique { 
  corps {
    Color en arrière-plan: tomate;
  }
}
Copier après la connexion

Résumer

:where et :is pseudo-selecteurs nous permettent data-attribute contrôler la spécificité; CSS Cascade n'est plus un ennemi, mais un outil que nous pouvons contrôler.

Image de Stephen Leonardi sur Unsplash

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Vue 3 Vue 3 Apr 02, 2025 pm 06:32 PM

Il est sorti! Félicitations à l'équipe Vue pour l'avoir fait, je sais que ce fut un effort massif et une longue période à venir. Tous les nouveaux documents aussi.

Pouvez-vous obtenir des valeurs de propriété CSS valides du navigateur? Pouvez-vous obtenir des valeurs de propriété CSS valides du navigateur? Apr 02, 2025 pm 06:17 PM

J'ai eu quelqu'un qui écrivait avec cette question très légitime. Lea vient de bloguer sur la façon dont vous pouvez obtenir les propriétés CSS valides elles-mêmes du navigateur. C'est comme ça.

Un peu sur CI / CD Un peu sur CI / CD Apr 02, 2025 pm 06:21 PM

Je dirais que "Site Web" correspond mieux que "Application mobile" mais j'aime ce cadrage de Max Lynch:

Cartes empilées avec un positionnement collant et une pincée de sass Cartes empilées avec un positionnement collant et une pincée de sass Apr 03, 2025 am 10:30 AM

L'autre jour, j'ai repéré ce morceau particulièrement charmant sur le site Web de Corey Ginnivan où une collection de cartes se cassent les uns sur les autres pendant que vous faites défiler.

Utilisation de Markdown et de la localisation dans l'éditeur de blocs WordPress Utilisation de Markdown et de la localisation dans l'éditeur de blocs WordPress Apr 02, 2025 am 04:27 AM

Si nous devons afficher la documentation à l'utilisateur directement dans l'éditeur WordPress, quelle est la meilleure façon de le faire?

Comparaison des navigateurs pour une conception réactive Comparaison des navigateurs pour une conception réactive Apr 02, 2025 pm 06:25 PM

Il existe un certain nombre de ces applications de bureau où l'objectif montre votre site à différentes dimensions en même temps. Vous pouvez donc, par exemple, écrire

Comment utiliser la grille CSS pour les en-têtes et pieds de page collants Comment utiliser la grille CSS pour les en-têtes et pieds de page collants Apr 02, 2025 pm 06:29 PM

CSS Grid est une collection de propriétés conçues pour faciliter la mise en page qu'elle ne l'a jamais été. Comme tout, il y a un peu une courbe d'apprentissage, mais Grid est

Fontes variables de polices Google Fontes variables de polices Google Apr 09, 2025 am 10:42 AM

Je vois que Google Fonts a déployé un nouveau design (tweet). Comparé à la dernière grande refonte, cela semble beaucoup plus itératif. Je peux à peine faire la différence

See all articles