gpt4 book ai didi

css - 带 flex 的两行多列水平滚动网格

转载 作者:行者123 更新时间:2023-11-27 23:36:25 27 4
gpt4 key购买 nike

我可以在遍历元素时在每个奇数项或偶数项之前和之后添加一个 div 时执行此操作,但我想知道是否有一种方法可以仅使用 CSS flex 来完成此操作。

我想摆脱 .col div 并只使用 CSS。

我需要显示一行水平滚动的元素或两行水平滚动的元素。

一行用于移动设备屏幕,两行用于任何大于移动设备的屏幕。

这是一支笔

https://codepen.io/modemlooper/pen/rXWaVK

const items = [1, 2, 3, 4, 5, 6, 7, 8, 9];

let html = "";

const device = "tablet";

items.map((item, index) => {
html +=
"tablet" === device && index % 2 === 0 ? '<div class="col">' : "";

html += '<div class="slide"><div>' + item + "</div></div>";

html += "tablet" === device && index % 2 !== 0 ? "</div>" : "";
});

var e = document.createElement("div");
e.className += " box";
e.innerHTML = html;
document.querySelector(".wrap").appendChild(e);
.wrap {
display: flex;
height: 100%;
align-items: center;
}

.box {
display: flex;
background-color: #2c3e50;
min-width: 100%;
overflow-x: auto;
box-sizing: border-box;
}

.box::-webkit-scrollbar {
display: none;
}

.slide {
box-sizing: border-box;
padding: 20px;
}

.slide>div {
min-width: 218px;
height: 178px;
display: flex;
box-sizing: border-box;
}

.slide:nth-child(odd)>div {
background: red;
}

.slide:nth-child(even)>div {
background: blue;
}

.col:nth-child(odd) .slide:nth-child(odd)>div {
background: red;
}

.col:nth-child(even) .slide:nth-child(even)>div {
background: red;
}

.col:nth-child(even) .slide:nth-child(odd)>div {
background: blue;
}

.col:nth-child(odd) .slide:nth-child(even)>div {
background: blue;
}
<div class="wrap"></div>

最佳答案

应该符合您的需要。仅使用 CSS

.wrap {
display: flex;
}

.box {
box-sizing: border-box;
width: 220px;
height: 160px;
margin: 20px;
background-color: #2c3e50;
flex-shrink: 0;
}

/* DESKTOP */
@media (min-width: 1024px) {
.wrap {
flex-direction: column;
flex-wrap: wrap;
align-content: flex-start;
height: 400px;
}
}
<div class="wrap">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>

关于css - 带 flex 的两行多列水平滚动网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57224525/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com