【发布时间】:2021-09-04 06:17:54
【问题描述】:
我无法从我能找到的任何解释中确定css变量的值何时设置。所以我进行了测试
html
<div class="flex">
<div class="item1">
<div class="included"></div>
</div>
<div class="item2">
<div class="included"></div>
</div>
</div>
css
:host {
display: grid;
place-content: center;
}
.flex {
display: flex;
flex-direction: column;
width:800px;
height: 300px;
background-color: blue;
--div-width: calc(100% - 10px);
}
.item1, .item2 {
background-color: green;
height: 100px;
}
.item1 {
width: 80%;
}
.item2 {
width: 40%;
}
.included {
width: var(--div-width);
background-color:yellow;
height:50px;
}
请注意,我在自定义元素中进行了测试,因此使用了 :host 描述符,但这并不重要。
重要的是我将--div-width 设置为calc(100% - 10px) 在一个 800 像素宽的 div 中 - 所以希望它的值是 790 像素。
很明显,计算被延迟到使用变量的地方。因为黄色框距离周围元素仅 10 像素。
有没有办法告诉css将属性的值设置为声明它的元素,而不是使用它的位置。
我确实尝试过代理变量 - 像这样......
--proxy-width: calc(100% - 10px);
--div-width: var(--proxy-width);
但这并没有什么不同。
PS 这是一个简单的例子,我实际上想要使用它来控制自定义元素内项目(文本区域)的宽度,具体取决于上下文,因此我可以使元素响应一些外部容器的宽度。
【问题讨论】:
-
有没有办法告诉css将属性的值设置为声明它的元素,而不是使用它的元素。 --> 不,这个这不是 CSS 变量的设计方式。
标签: css css-variables css-calc