我想要做的是通过calc(var(--grid-item-width) * 1.6)
使#grid
height
达到#grid
width
的160%,但是--grid-item-width
似乎被视为视口宽度的百分比,而不是像素值。
#grid
的高度远远大于其宽度的160%,如下面的截图所示。
:root {
--gap: 26px;
--grid-item-width: calc(100% - calc(var(--gap) * 4));
}
#grid {
width: 100%;
height: var(--grid-item-width); /* does not match */
overflow-x: auto;
display: grid;
grid-gap: var(--gap);
grid-auto-flow: column;
grid-auto-columns: var(--grid-item-width); /* does not match */
}
当我将--grid-item-width
的值打印到console时,它返回calc(100% - calc( 26px * 4))
,这显然没有帮助。
关于MDN上的calc()
的注释之一是:
在自动和固定布局表格中,涉及表格列、表格列组、表格行、表格行组和表格单元格的宽度和高度百分比的
数学表达式可以被视为已指定auto。
这就是 calc(var(--grid-item-width) * 1.6)
在这种情况下出现意外输出的原因吗?
发布于 2019-03-18 08:28:28
这两个表达式是相同的,但它们不会解析为相同的值,因为它们应用于不同的特性。
获得相同值的唯一方法是确保父元素的高度与元素的宽度相同,或者避免使用百分比值并依赖于在这两种情况下将以相同方式解析的不同单位(px
、vw
、vh
、em
等)
请注意,如果存在no height set on the parent element.,则与height一起使用的值可能无法执行auto
https://stackoverflow.com/questions/55213272
复制相似问题