【发布时间】:2020-07-04 01:11:20
【问题描述】:
我正在尝试通过var 自定义属性来缩放大小,以使类可以在不耦合的情况下组合。期望的效果是 3 个列表将具有 3 个不同的比例,但 demonstrated on CodePen 所有 3 个列表的比例相同。我正在寻找关于范围和 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);
}
.size-1 { font-size: var(--size-1) }
.size-2 { font-size: var(--size-2) }
.size-3 { font-size: var(--size-3) }
.scale-1x { --scale: 1 }
.scale-2x { --scale: 2 }
.scale-3x { --scale: 3 }
html {
font: 1em sans-serif;
background: papayawhip;
}
ol {
float: left;
list-style: none;
margin: 1rem;
}
<ol class="scale-1x">
<li class="size-1">size 1</li>
<li class="size-2">size 2</li>
<li class="size-3">size 3</li>
</ol>
<ol class="scale-2x">
<li class="size-1">size 1</li>
<li class="size-2">size 2</li>
<li class="size-3">size 3</li>
</ol>
<ol class="scale-3x">
<li class="size-1">size 1</li>
<li class="size-2">size 2</li>
<li class="size-3">size 3</li>
</ol>
【问题讨论】:
-
@Temani Afif:变量是 CSS3,因为工作组将 CSS3 定义为 CSS2 之外的所有内容,而不是因为变量具有交付实现。 “CSS4”不是官方术语。请注意,变量从第 1 级开始。人们将某些第 3 级或第 1 级功能分类为 CSS3 和其他分类为“CSS4”的方式......很吸引人,说得好听。
-
如果仍然感兴趣,我在我的答案中添加了另一个解决方案的想法,这可能是一个好技巧(用通用选择器
*替换:root)
标签: css scope css-variables