以下是一个简单的基于JS的树状菜单制作方法:
HTML结构
首先,在HTML中创建一个带有ul和li标记的基本树形结构。
<ul id="myMenu"> <li>菜单1 <ul> <li>子菜单1</li> <li>子菜单2</li> <li>子菜单3</li> </ul> </li> <li>菜单2</li> <li>菜单3 <ul> <li>子菜单4</li> <li>子菜单5</li> </ul> </li> </ul>
CSS样式
添加CSS样式以控制树形菜单的外观和布局。
#myMenu { list-style: none; margin: 0; padding: 0; } #myMenu li { cursor: pointer; } #myMenu ul { margin-left: 20px; display: none; } #myMenu li:before { content: "+ "; } #myMenu li.open:before { content: "- "; }
JS代码
使用JavaScript创建一个事件侦听器,以便用户单击菜单项时显示或隐藏其子菜单。
var menuItems = document.querySelectorAll("#myMenu li"); for (var i = 0; i < menuItems.length; i++) { menuItems[i].addEventListener("click", function() { var subMenu = this.querySelector("ul"); if (subMenu) { if (subMenu.style.display === "block") { subMenu.style.display = "none"; this.classList.remove("open"); } else { subMenu.style.display = "block"; this.classList.add("open"); } } }); }
这段代码为树形菜单的每个li元素添加了一个单击事件监听器。当用户单击它时,它会查找它的子菜单并将其显示或隐藏。它还为菜单项添加了一个“open”类,以便我们可以使用CSS样式控制其外观。
现在,我们已经创建了一个简单的可展开/折叠的树形菜单!