javascript - 从父网格悬停嵌套网格中的每一行
问题描述
我想hover
从网格中的嵌套网格中的每一行上创建一个,其中模板由列而不是行呈现。
结构如下:
- 网格
- 柱子
- 列是只有行的显示网格
- 柱子
这是一个带有结构的jsfiddle 。我只将鼠标悬停在嵌套行上。我知道我可以反转 div 结构,但不能。我确实对列有很多依赖:调整大小、拖放 -> 以行方式渲染它会降低我的性能,我会尽量避免。
编辑
当我们将鼠标悬停在作为子元素的 div 元素上时,grid-wrapper__nested
我想将每个div 悬停在每个grid-wrapper__nested
.
可视化:
解决方案
看来您想要做的是选择每列的第 n 个子项。这只能根据您使用的结构使用 JavaScript 来实现。您还需要使用 'hover' 类而不是 ':hover' 状态。在纯 JS 中:
let table = document.querySelectorAll('.grid-wrapper')[0];
let columns = table.children;
let cells = document.querySelectorAll('.grid-wrapper__nested__row');
// Cycle throug each cell and add an event handler
for(let element of cells) {
// Add mouseenter event handler
element.addEventListener('mouseenter', function() {
// Get index of cell
let index = Array.prototype.indexOf.call(this.parentNode.children, this);
// Loop through each column and add 'hover' class
for(let column of columns) {
// Add hover class to nth-child
column.children[index].classList.add('hover')
}
})
// Add mouseout event handler
element.addEventListener('mouseleave', function() {
for(let column of columns) {
let cells = column.children;
// Loop through each cell and remove hover class
for(let cell of cells) {
cell.classList.remove('hover');
}
}
})
}
如果您使用像 jQuery 这样的库,它会变得更加容易,因为您可以使用 jqueryon('hover', func)
函数,与index()
调用等结合使用。
推荐阅读
- image-processing - 灰度图像上的点分割
- python - Beautifulsoup 创建新的标签功能
- nim-lang - 如何在 Nim 中编写宏 list.findBy(key, value)?
- python - 容器化 Azure 函数 - 从 Dockerfile 更改 AzureWebJobsScriptRoot 变量
- python - Buildozer 无法构建 apk
- git - git从哈希创建分支而不获取
- html - 如何在链接下方的左侧而不是右侧开始超级菜单
- zapier - Zapier 从具有多个分隔符的文本行中提取国家代码
- css - Storybook 仅加载 Emotion Styling 第一次加载
- android - 对 LiveData 使用 setValue 而不是 PostValue