Maison > interface Web > tutoriel CSS > Comment les propriétés personnalisées de portée CSS gèrent-elles l'héritage et le remplacement ?

Comment les propriétés personnalisées de portée CSS gèrent-elles l'héritage et le remplacement ?

Patricia Arquette
Libérer: 2024-12-19 04:37:26
original
923 Les gens l'ont consulté

How Do CSS Scoped Custom Properties Handle Inheritance and Overriding?

Propriétés personnalisées CSS : compréhension de la portée et de l'héritage

Lors de la définition des propriétés personnalisées CSS, il est crucial de comprendre leur portée pour obtenir les effets souhaités. Les propriétés personnalisées déclarées dans un élément s'étendent à cet élément et à ses descendants. Cependant, cette portée peut parfois conduire à un comportement inattendu, comme illustré dans cette question.

Le problème vient du fait que dans le code fourni, la propriété personnalisée --scale est définie au niveau racine puis remplacée dans les éléments enfants. Ce comportement prioritaire n'est pas attendu lors de l'utilisation de propriétés personnalisées étendues.

Pour illustrer ce problème, analysons le CSS :

:root {
  --size-1: calc(1 * var(--scale, 1) * 1rem);
  --size-2: calc(2 * var(--scale, 1) * 1rem);
  --size-3: calc(3 * var(--scale, 1) * 1rem);
}

.scale-1x {
  --scale: 1;
}

.scale-2x {
  --scale: 2;
}

.scale-3x {
  --scale: 3;
}
Copier après la connexion

Ici, les propriétés --size-* dépendent de la valeur de --échelle. Cependant, lors de la définition de --scale dans les classes .scale-1x, .scale-2x et .scale-3x, il remplace la valeur définie dans :root.

Le comportement attendu serait pour -- propriété scale à évaluer sur chaque élément où elle est définie, ce qui entraîne des tailles de police différentes pour chaque liste. Toutefois, cela ne se produit pas car la propriété personnalisée est déjà évaluée au niveau racine.

Pour résoudre ce problème et obtenir l'effet souhaité, envisagez d'utiliser les propriétés personnalisées étendues de manière plus cohérente. Par exemple, définissez --size-1, --size-2 et --size-3 dans chaque classe .scale-*, en vous assurant qu'elles s'appliquent uniquement à cet élément. Cela permettra une mise à l'échelle indépendante de chaque liste en fonction de la valeur de --scale définie dans sa classe respective.

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:php.cn
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