css部分
<style type="text/css"> * { padding: 0; margin: 0; list-style: none; } .all { width: 330px; height: 30px; background: url(img/bg.jpg) no-repeat; margin: 100px auto; line-height: 30px; text-align: center; padding-left: 10px; margin-bottom: 0; } .all ul li { width: 100px; height: 30px; background: url(img/libg.jpg); float: left; margin-right: 10px; position: relative; cursor: pointer; } .all ul ul { position: absolute; left: 0; top: 30px; display: none; } </style>
HTML部分
<div class="all"> <ul id="list"> <li>一级菜单 <ul> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> <li>一级菜单 <ul> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> <li>一级菜单 <ul> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> </ul> </div>
JS部分
<script> window.onload = function () { return new ListMenu().init(); } //设置构造函数 function ListMenu() { //获取一级菜单 this.list = list.children; //添加方法 this.init = function () { //通过循环遍历的方法给每一个以及菜单添加鼠标移入和移出事件 for (let i = 0; i < this.list.length; i++) { //添加鼠标移入事件,事件中的this指向的是window,因此要改变this指向 this.list[i].onmouseenter = function () { //调用方法并传参(对象) this.show(this.list[i].children[0]); }.bind(this); //添加鼠标移出事件 this.list[i].onmouseleave = function () { //调用方法并传参(对象) this.hide(this.list[i].children[0]); }.bind(this); } } //设置鼠标移入菜单显示的方法 this.show = function (obj) { obj.style.display = "block"; } //设置鼠标移出菜单隐藏的方法 this.hide = function (obj) { obj.style.display = "none"; } } </script>