【发布时间】:2014-12-18 21:53:33
【问题描述】:
我正在尝试实现一个基本的 CSS 下拉菜单,其中没有列表中的嵌套列表。换句话说正常的方式是:
<ul>
<li><a>Blah</a></li>
<li><a>Blah Parent</a>
<ul>
<li><a>Blah Child</a></li>
</ul>
</li>
</ul>
我需要这样做的方式是:
<ul>
<li><a>Blah</a></li>
<li><a>Blah Parent</a></li>
<li class="childitem"><a>Blah Parent</a><li>
<li class="childitem"><a>Blah Parent</a><li>
<li><a>Blah</a></li>
<li><a>Blah</a></li>
<li class="childitem"><a>Blah Parent</a><li>
<li class="childitem"><a>Blah Parent</a><li>
</ul>
有没有办法用纯 CSS 来做到这一点?还是借助一些基本的 js 帮助?
【问题讨论】:
-
问题在于使用这种不明确的编码结构将子项与父项相关联。
-
这只是其中一个问题,可以通过
.childitem上的data-parent="%parent_id%"和顶级项目上的id来解决。更大的问题是为什么你会想要这样做。它破坏了您的 HTML 中的语义,并将孩子与父母分离,除了您需要在渲染后的元素上执行的一些体操。使这变得不必要的复杂的最重要的需求是什么? -
另一个大问题是使用 JS 来解决这将是“真正的”主要方式来做到这一点。 WHich 是不可靠的,因为不是每个用户都允许 JS,所以他们会看到一个损坏的列表。 CSS 是更常见的方式,因为您永远不会真正关闭它。除非你是一个开发者并且已经崩溃了。
-
当然可以通过一些 DOM 操作来完成,但是您的结构将不直观且难以理解。你为什么要尝试做一件简单的事情却困难重重?嵌套列表有什么问题?
-
为什么要重新发明轮子?是什么因素让你说你必须这样做?
标签: javascript jquery css drop-down-menu html-lists