javascript - 如何创建具有动态变化的列宽的网格布局?
问题描述
我想为具有相同行高但不同列宽的图像库创建一个动态变化的网格布局。无论添加的项目数量如何,我都希望一个模式不断重复(图像将来自 JS 数组,而 HTML 将由带有变量的模板文字生成)。
这是JS:
let imgArray = ["img/img-1.jpg", "img/img-2.jpg", "img/img-3.jpg", "img/img-4.jpg", "img/img-5.jpg", "img/img-6.jpg", "img/img-7.jpg"
];
let galleryContainer = document.querySelector(".gallery-container");
galleryContainer.innerHTML += `${imgArray.map(img => `
<img src="${img}" alt="gallery-img" />`).join("")}
`;
所以我想要每行有两个不同宽度的网格列,如下所示:
40% 60%
60% 40%
40% 60%
等等
我怎样才能做到这一点?它必须是 grid-auto-columns、nth-child 和 grid-column。预先感谢您的帮助。
解决方案
这是一个工作示例:https ://codepen.io/xgme/pen/wvegQVW
用户界面
<ul class="mytable">
<li><div></div><div></div></li>
<li><div></div><div></div></li>
<li><div></div><div></div></li>
<li><div></div><div></div></li>
<li><div></div><div></div></li>
</ul>
CSS:
.mytable {
width: 500px;
}
.mytable li {
height: 20px;
list-style:none;
width: 100%;
}
.mytable li div {
height:100%;
float: left;
}
.mytable li:nth-child(even) div:nth-child(even) {
width: 60%;
background: blue;
}
.mytable li:nth-child(even) div:nth-child(odd) {
width: 40%;
background: green;
}
.mytable li:nth-child(odd) div:nth-child(even) {
width: 40%;
background: yellow;
}
.mytable li:nth-child(odd) div:nth-child(odd) {
width: 60%;
background: red;
}
推荐阅读
- android - Android AnimatedVectorDrawable 在不同的 API 上有不同的行为
- asp.net - 实现 Azure AD 的协议
- java - 我想转换 MultivaluedMap
标题到地图 > - python - Pycharm:这是处理项目和包的正确方法吗?
- javascript - 如何留在窗口/选项卡上而不实际留在该选项卡上
- javascript - 从 http:// quasar 导入
- r - 在 R 中绘制随时间变化的测量值
- python - python - 更改单行表值
- nginx - 使用 nginx pam 进行身份验证时基于 ZaP DOM 的 XSS 警报
- reactjs - Symfony React 在 cookie 过期时自动刷新 JWT