javascript - 如何在单独的列中显示每个嵌套列表,最好在使用 CSS Grid 时显示?
问题描述
我有一些嵌套列表。有些深达 4-5 级。例如:
<ul>
<li>
<span class="is-parent">parent</span>
<ul class="children">
<li class="no-child">child</li>
<li class="no-child">child</li>
<li class="no-child">child</li>
</ul>
</li>
<li>some child</li>
<li>another child</li>
<ul>
此列表显示在 css 网格列中,第一个要具体。我已经使用
grid-template-columns: repeat(5, 1fr);
当我单击父级时,我希望嵌套<ul>
显示在下一列上。使用 vanila JavaScript 的最佳方法是什么?
类似于此处的示例:https ://mynameistechno.github.io/finderjs/#examples
但不使用库或插件。
解决方案
HTML
<ul>
<li>
<span class="is-parent">parent</span>
<ul class="children hide">
<li class="no-child">child</li>
<li class="no-child">child</li>
<li class="no-child">child</li>
</ul>
</li>
<li>some child</li>
<li>another child</li>
<ul>
CSS
ul {
grid-template-columns: repeat(auto-fill, 1fr);
}
.hide {
display: none;
}
JS
document.querySelectorAll('is-parent').forEach(node =>
node.parentNode.addEventListener('click', (ev) => {
let cl = ev.currentTarget.querySelector('ul').classList
cl.contains('hide') ? cl.remove('hide') : cl.add('hide')
}
}
推荐阅读
- c# - C# - 运行选定的代码生成器时出错:无法获取 DbContext 的反射类型
- django - 向 DRF 通用列表视图添加字段
- python - 如何更改 tkinter 中输入文本的颜色?
- json - 如何在 JSON 文件中用空字符串替换匹配的字符串?
- database - 访问不想打开报告 - 不关注其他窗口
- algorithm - 如何在遗传算法中进行二进制编码以获得更好的时间表调度问题结果?
- c++ - 如果进程正在运行,我如何关闭我的程序?
- python - KerasLayer 模型经过微调后尺寸增大
- python - 使用 Pyinstaller 创建的 .exe 文件显示错误 input(): lost sys.stdin
- angular - 打字稿类方法返回未定义