css - 在 CSS calc() 中使用百分比作为乘数
问题描述
假设我定义一个 CSS 变量--half
等于50%
.
:root {
--half: 50%;
}
然后我可以设置的width
东西是50%
这样的:
.partial {
width: var(--half);
}
到目前为止,一切都很好。假设我有一个tall
要垂直填充视口的元素:
.tall {
height: 100vh;
}
伟大的。最后,如果使用,我希望我的tall
元素仅填充垂直空间的一半(即50vh
)partial
。所以我尝试了这个:
.tall.partial {
height: calc(100vh * var(--half));
}
糟糕,这似乎不起作用。如果我重新定义--half
为 equal ,它确实有效0.50
:
:root {
--half: 0.50;
}
但是我width
上面的设置不能单独使用变量。
问题 A 部分:如何XX%
在 CSScalc()
表达式中使用名称并将其解释为百分比值作为乘法的一个因素?
问题 B 部分:如果无法做到这一点,有没有办法可以根据实际值定义百分比值,反之亦然,例如以下虚构的定义?(我宁愿不定义重复的“镜像”值,一个是百分比值,一个是小数点值。)
:root {
--half-factor: 0.50;
--half: calc(var(half-factor) * 100)%;
}
解决方案
将单位视为变量,您可以按如下方式执行:
:root {
--quarter:25;
--half:50;
--threeQuarter:75;
}
* {
--quarter-R:calc(var(--quarter) * var(--u,1%));
--half-R:calc(var(--half) * var(--u,1%));
--threeQuarter-R:calc(var(--threeQuarter) * var(--u,1%));
}
.box {
height:50px;
background:red;
margin:5px;
width:var(--half-R);
}
<div class="box"></div>
<div class="box" style="--u:1vw"></div>
<div class="box" style="--u:1vw;width:var(--threeQuarter-R);"></div>
<div class="box" style="--u:1vw;width:var(--quarter-R);"></div>
<div class="box" style="--u:1vh"></div>
推荐阅读
- javascript - 如何对单个图像执行或处理多个操作?
- reactjs - react-jss displayName被injectSheets覆盖
- image - Google Apps 脚本 - 将 base 64 图像源转换为图像文件
- c++ - 为什么包含与 RTCZero 库不兼容?
- sql - 在循环中插入来自不同表的 UNION ALL 记录?
- regex - 保护转义字符免受模式结尾的影响
- c - 在c中创建文件没有重复
- c# - 取消合并excel行和重复数据c#
- excel - VBA 在工作表之间复制和粘贴
- wordpress - is_home() 类似 WordPress 自定义帖子类型的函数