【发布时间】:2022-12-31 09:23:05
【问题描述】:
请参阅以下 sn-p。
我有一个带有重叠单元格的基本网格布局(但在这种情况下,重叠的东西并不重要)。我想做的是在 col-2 上插入一个 50vw 元素,它应该从屏幕的中心(当前 col-2 起点)开始并到达屏幕的末尾,溢出单元格本身.
如果我尝试这样做,它是行不通的。相反,它将修改所有单元格的当前大小。 如何避免?
.grid{
display:grid;
//grid-template-columns: 6fr 2fr 4fr;
grid-template-columns: 6fr 2fr minmax(0, 4fr);
grid-template-rows: 1fr 4fr 1fr;
min-width: 0;
width: 60%;
margin: 0 auto;
background-color: rgba(255, 255, 0, .5);
}
.column{
min-height: 100px;
}
.col-1{
grid-column-start: 1;
grid-column-end: 9;
grid-row-start: 2;
grid-row-end: 4;
background-color: rgba(255, 0, 255, .5);
z-index: 10;
}
.col-2{
grid-column-start: 7;
grid-column-end: 13;
grid-row-start: 1;
grid-row-end: 3;
background-color: rgba(0, 255, 255, .5);
}
.inner{
width: 50vw;
background-color: rgba(0, 0, 200, .5);
}
<div class="grid">
<div class="column col-1">col 1</div>
<div class="column col-2">
col 2<br>
<!-- <div class="inner">inner</div> (should be 50vw) -->
</div>
</div>
【问题讨论】:
-
首先删除模板中的逗号,我们只使用那里的空格
-
当使用 6fr 时,它并不意味着 6 列,而是只有 1 列,所以你有 3 列,但使用 13 作为列尾
-
这是一个 12 列的网格。这是一种保持相对宽度的方法。无论如何,这不是我的问题的重点。
-
它是这你的问题的重点。如果您正确定义了 12 列,那么您的代码将可以正常工作。实际上,您定义了 3 列并使用了 12 列,因此浏览器将根据其内容在逻辑上自动设置列的宽度,因为您没有定义它们的宽度
-
有趣的。我会试一试。
标签: css overflow css-grid overlap