我正在使用一个简单的网格系统,其中列数可以通过CSS变量进行配置/覆盖。
.grid {
display: grid;
grid-template-columns: repeat(var(--grid-columns, 1), 1fr);
}
// Mixin for tablet media query
@include tablet {
.grid {
--grid-columns: 2;
}
}
// Mixin for tablet media query
@include desktop {
.grid {
--grid-columns: 4;
}
}
上面是一个简化的示例。
我还有一个可以用于“单元格”的类,用于标注它是否是全宽或两个单元格宽(跨一半)。
@include desktop {
.span {
&-full {
grid-column: 1 / -1;
}
&-half {
grid-column: span calc(var(--grid-columns) / 2);
// or grid-column: auto / span calc(var(--grid-columns) / 2);
}
}
}
我使用 .span-half 来创建一个单元格,该单元格跨越了由 --grid-columns 变量设置的一半列大小。
然而,在 Chrome 或 Safari 中,这个计算不起作用。Firefox 正确地呈现了 .span-half(例如,在桌面上跨越 2 列的单元格)。在 Dev Tools 中没有看到“无效值属性”。
这是一个 Codepen:https://codepen.io/Bregt/pen/oNbWvzx 我不知道发生了什么。我错过了什么?
--grid-columns
?媒体查询是自定义变量的作用域容器。 - Bryce Howitsoncalc
和grid-column
存在一个错误。即使没有变量,它也无法正常工作。有趣的是,这个可以正常工作:grid-column: span calc(2);
,而这个却不行:grid-column: span calc(4 / 2);
。 - Aedan