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; }
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!