CSS 作用域自定义属性:了解作用域和继承
定义 CSS 自定义属性时,了解其作用域对于实现所需效果至关重要。元素内声明的自定义属性的范围仅限于该元素及其后代。然而,这种范围有时会导致意外的行为,如本问题所示。
问题源于以下事实:在提供的代码中,自定义属性 --scale 在根级别定义,然后被覆盖在子元素内。使用作用域自定义属性时,不会出现这种覆盖行为。
为了演示此问题,让我们分析 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; }
这里, --size-* 属性取决于值的--规模。但是,在 .scale-1x、.scale-2x 和 .scale-3x 类中定义 --scale 时,它会覆盖 :root 中定义的值。
预期的行为是 --在定义它的每个元素处评估缩放属性,从而导致每个列表的字体大小不同。但是,这种情况不会发生,因为自定义属性已在根级别进行评估。
要解决此问题并达到所需的效果,请考虑更一致地使用作用域自定义属性。例如,在每个 .scale-* 类中定义 --size-1、--size-2 和 --size-3,确保它们的范围仅限于该元素。这将允许根据各自类中定义的 --scale 值对每个列表进行独立缩放。
以上是CSS 作用域自定义属性如何处理继承和覆盖?的详细内容。更多信息请关注PHP中文网其他相关文章!