javascript - 在 CSS 显示网格中插入响应式全宽 div
问题描述
.grid-content {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
grid-auto-rows: auto;
}
.grid-content > div > div > div {
background: black;
display: grid;
}
.grid-content > div > div > div::before {
content: "";
display: block;
padding-bottom: 100%;
grid-area: 1 / 1 / 2 / 2;
}
网格具有 div 类grid-content
,其中的项目具有 div 类clickable_item
单击网格上的任何项目都会将此 div 块移动到该选定项目的下方。这个 div 占据了行的整个宽度,需要调整它的grid-column: 1 / span n
属性以保持对网格中行列数的响应。
目前,该grid-column 1 / span 8
属性是固定的,并且不会动态调整以适应包装网格中更改的列。
项目应该有一个唯一的 id,并且在被点击时还必须在其行下方显示或隐藏一个全宽 div
https://codepen.io/ridhwaans/pen/jOrpeNW
更新:使用
gridComputedStyle.getPropertyValue("grid-template-columns").replace(' 0px', '').split(' ').length;
从调整大小侦听器更新样式属性。
在 codepen 演示中包装期间,全宽 div 与其他项目混淆。如何每次移动 div 以跨越网格中的列?
解决方案
我相信这就是你想要的:
https://codepen.io/riza-khan/pen/VwjBqVd
基本上,使用函数insertAdjacetElement将允许您在您选择的位置插入一个元素。
还要注意,在这种情况下,您需要遍历 DOM:
e.target.parentElement.parentElement.insertAdjacentElement('afterend', some_node)
推荐阅读
- c# - 使用 Linq 或任何其他方式优化我的 c# 函数
- java - 我想使用焦点计时器应用程序为用户创建一个统计页面
- jquery - 如何在 vue.js 方法中编写 jquery 脚本
- sql - BigQuery:将动态文件夹名称插入 EXPORT DATA 语句
- linux - 当函数从 cron 运行时,PL/SQL NOTICE 没有记录在日志中
- xamarin - 在自己的设备上调试 xamarin 项目时部分 UI 消失
- r - 过滤后数据帧的级别
- python - 座位安排 - 我如何只选择邻居组合
- javascript - AadTokenProvider 从旧用户返回访问令牌
- python - 应用公式有效地获取 Numpy 矩阵