我试图实现一个动态的CSS网格布局,例如,一些具有类“功能”的列将扩展到该行的全宽度,而其他没有该类的列将停留在一行布局中并流到3 cols中。
但在我的例子中,如果我们以第二列为例,它变成了类的“特色”,那么这个列应该在下一行上展开全宽度,然后将列的流变成- col 3,而不是col 2和col 4,它的位置在前面的一排,而在col3的位置。
接下来会变成这样: col 3变成col2,col 4上升一个位置,然后放在第3位,第2类(类‘特色’)在下一行完全宽度,然后第5行变成col 4位置等等。这就是我把类‘特色’放在网格上的特定列上,遵循同样的布局动态流的概念。请参考附件中的模型。
谢谢。希望有人能帮我做到这一点。向你问好尼克。
发布于 2022-08-15 05:18:31
我认为使用css网格可以很容易地做到这一点。它们的关键是使用grid-auto-flow: dense
,然后将grid-column: 1 / -1
添加到您想要功能的网格单元中。
我在这里创建了一个小演示(单击“运行代码片段”以确保其工作):
const button = document.querySelector('#btn');
const target = document.querySelector('#target');
button.addEventListener('click', () => {
target.classList.toggle('featured');
})
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: .5rem;
margin-bottom: 1rem;
grid-auto-flow: dense;
}
.cell {
height: 50px;
background-color: lightgrey;
display: flex;
align-items: center;
justify-content: center;
}
.cell.featured {
background-color: pink;
grid-column: 1 / -1;
}
<div class="grid">
<div class="cell">1</div>
<div class="cell">2</div>
<div id="target" class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
<div class="cell">7</div>
<div class="cell">8</div>
</div>
<button id="btn">Toggle featured</button>
你可以点击这个按钮,在第三格格上切换一个“特色”类。当它拥有“功能”类时,它占据了整个行,而其他单元格占用了可用的空间。
(你不需要JS。这仅仅是为了这个演示)
我希望这是你想要的。
https://stackoverflow.com/questions/73361465
复制相似问题