css - 如何将速记 CSS 属性(边框、左边框、右边框...)导出为 CSS 变量
问题描述
如果我这样做:
.a {
border: var(--a-border);
border-left: var(--a-border-left);
border-right: var(--a-border-right);
border-top: var(--a-border-top);
border-bottom: var(--a-border-bottom);
}
设置--a-border
永远不会起作用,因为单个属性(如a-border-left
已重置值)。我在想的是,我没有为这些导出的变量提供任何默认值。因此,如果--a-border
设置了,它应该优先于其他未设置的值。
解决方案
正如我在上一个答案中解释的那样,使用border-left: var(--a-border-left)
它意味着无论border-left
CSS 变量的定义如何,它都将始终具有有效值。考虑到这一点,您的速记属性将始终被忽略,因为速记属性将始终覆盖它。
一种解决方法是考虑回退属性并重新定义在每个单独属性的简写中使用的变量:
.a {
border: var(--a-border);
border-left: var(--a-border-left,var(--a-border));
border-right: var(--a-border-right,var(--a-border));
border-top: var(--a-border-top,var(--a-border));
border-bottom: var(--a-border-bottom,var(--a-border));
width: 200px;
height: 100px;
display:inline-block;
}
:root {
--a-border: 5px solid red;
}
<div class="a"></div>
<div class="a" style="--a-border-bottom:5px solid green"></div>
推荐阅读
- reactjs - 如果我正在解构我的道具,我如何调用 props.history.push() ?
- typescript - 在打字稿功能中似乎没有充分考虑泛型
- python - Pandas - 如何按一个数字列分组并按每组的中位数过滤每组中的行?
- html - 如何在引导程序 4 下拉菜单上禁用悬停
- java - Collectors.Counting 的时间复杂度 (java)
- ios - Firebase observeSingleEvent 完成处理程序
- c - 了解父子进程执行顺序
- node.js - 如何开玩笑地模拟 AWS TimestreamWrite
- android - TypeError:尝试从 android 模拟器访问本地 API 时网络请求失败。反应原生
- python - 创建一个面临名称错误的预订程序