我有下面的带有一个css网格的HTML

<div id="grid">
    <div class="main-item">Main</div>
</div>
#grid {
    display: grid;
    grid-template-columns: repeat(5, auto);
    text-align: center;
}

#grid > * {
    border: 1px solid blue;
    padding: 20px;
}

#grid > .main-item {
    grid-row: 3;
    grid-column: 3 / 5;
    background: rgba(0, 0, 0, 0.2);
}

重要的是.main-item在网格中有固定的position.

我现在将25cells个添加到网格中.

const grid = document.querySelector("#grid");

for (let i = 0; i < 25; i++) {
    const item = document.createElement("div");
    item.innerText = i.toString();
    grid.append(item);
}

问题是,我希望这些元素忽略.main-item的位置(就像它不在那里一样).然而,目前,css对此进行了更正,并将元素传递到.main-item左右.我想要下面的次要行为:

enter image description here

我可以通过在JavaScript中设置style.gridRowstyle.gridColumn来进行更正

item.style.gridRow = (Math.floor(i / 5) + 1).toString();
item.style.gridColumn = ((i % 5) + 1).toString();

有没有一种方法可以在不设置JS中的所有其他元素的情况下做到这一点?是否有防止固定因素影响流程校正的CSS?

Codepen Link

推荐答案

您可以为网格提供一个相对位置和特定网格项的绝对位置.

const grid = document.querySelector("#grid");
for (let i = 0; i < 25; i++) {
    const item = document.createElement("div");
    item.innerText = i;
    grid.append(item);
}
#grid {
    display: grid;
    grid-template-columns: repeat(5, auto);
    text-align: center;
    position: relative;
}

#grid > * {
    border: 1px solid blue;
    padding: 20px;
}

#grid > .main-item {
    position: absolute;
    left: 0;
    right: 0;
    grid-row: 3;
    grid-column: 3 / 5;
    background: rgba(0, 0, 0, 0.2);
}
<div id="grid">
    <div class="main-item">Main</div>
</div>

Css相关问答推荐

如何在没有额外间隔的情况下使用Angularmaterial 图标?

如果父元素跨越所有网格列,子元素是否可以与网格一起工作?

我控制的自定义单选按钮无法重新 Select

以百分比形式输入的css宽度属性不会生效

当滚动量较小时,在滚动问题上动画粘性导航

如何使用来自单独模块的代码将自定义标头插入到使用 DT Shiny 呈现的表中?

如何在启动时滚动 div 的底部?

使用 React-Router 和 Outlet 时如何确保内容保持在下方

nth-child 在一个页面上工作,但不在另一个页面上

当我在几个月之间更改时,有什么方法可以在react-dates-range上添加淡入淡出或幻灯片效果?

宽度为 x VW 的元素似乎对窗口调整大小没有react

将复选框对齐到中心

包装器内两个跨度之一上的文本溢出省略号

使用 JavaScript 将 CSS 添加到 ?

Div Size 自动调整内容大小

边界半径应该剪辑内容吗?

如何强制显示垂直滚动条?

如何在 iOS 上获取带有 CSS 溢出的滚动条

如何使用 Bootstrap2 使 div 居中?

我应该使用最大设备宽度还是最大宽度?