主要问题,当鼠标离开菜单区域时,如何去掉主菜单中的背景颜色
在轮播图最后,有个问题老师没有解决,就是当鼠标离开子菜单时,主菜单背景颜色应该被去掉,同时在鼠标离开主菜单时,主菜单背景颜色也应该去掉,这个要怎么去实现?
0
收起
正在回答
1回答
同学你好,解决当鼠标离开主菜单时,去掉主菜单的背景色,可以在离开的onmouseout函数中,遍历子菜单,设置背景为none。js中的代码如:
// 封装一个代替getElementById()的方法 function byId(id) { // tupeof判断id是否为字符串,用三目运算返回 return typeof(id) === "string"?document.getElementById(id):id; } // 设置一全局变量来获取当前的图片位置 var index = 0, timer = null, pics = byId("banner").getElementsByTagName("div"), // 把这几个div放到数组当中 dots = byId("dots").getElementsByTagName("span"), // 小圆点 prev = byId("prev"), next = byId("next"), len = pics.length, menu = byId("menu-content"), subMenu = byId("sub-menu"), innerBox = subMenu.getElementsByClassName("inner-box"), menuItems = menu.getElementsByClassName("menu-item"); function slideImg() { var main = byId("main"); // 划过清除定时器,离开继续 main.onmouseover = function () { // 划过清除定时器 if (timer) clearInterval(timer); }; // 划入一下开起切换 main.onmouseout = function () { // setTimeout()超市定时器 timer = setInterval(function () { index++; // 必须在第一行,在后面判断 if (index >= len) { index = 0; } // 切换图片 changeImg(); }, 3000); }; // 自动在main上触发鼠标离开的事件 main.onmouseout(); // 遍历所有点击,且绑定点击事件,点击圆点切换图片 for (var d = 0; d < len; d++) { // 给所有span添加一个id的属性,值为d,作为当前的span的索引 dots[d].id = d; dots[d].onclick = function () { // 改变index为当前span的id值 // alert(this.id); // 弹出当前id index = this.id; // 调用changeImg,实现切换图图片 changeImg(); } } // 下一张 next.onclick = function () { index++; if (index >= len) { index = 0; } changeImg(); } // 上一张 prev.onclick = function () { index--; if (index < 0) { // 当index下标是第一张0的时候--进入判断,len长度-1是最后一张下标 index = len-1; } changeImg(); } // 导航菜单 // 遍历主菜单,且绑定时间 for (var m=0;m<menuItems.length;m++) { // 没每一个menu-item定义data-index属性,作为索引 menuItems[m].setAttribute("data-index",m); menuItems[m].onmouseover = function () { subMenu.className = "sub-menu"; var idx = this.getAttribute("data-index"); // 遍历所有子菜单,将每一个都隐藏 for (var j=0;j<innerBox.length;j++) { innerBox[j].style.display = 'none'; menuItems[j].style.background = 'none'; } menuItems[idx].style.background = 'rgba(0,0,0,0.1)'; innerBox[idx].style.display = 'block'; } } //去掉主菜单的背景色 menu.onmouseout = function () { subMenu.className = "sub-menu hide"; for(var m=0;m<menuItems.length;m++){ menuItems[m].style.background = 'none'; } }; subMenu.onmouseover = function () { this.className = "sub-menu"; }; subMenu.onmouseout = function () { this.className = "sub-menu hide"; } } // 切换图片 function changeImg() { // 遍历banner下多有的div,将其隐藏 // 遍历dots下所有的span,将div隐藏,将span清除类 for (var i = 0; i < len; i++){ pics[i].style.display = "none"; dots[i].className = ""; } // 根据index索引找到当前div,将其显示出来设为当前 pics[index].style.display = 'block'; // 根据index索引找到当前span,将其显示出来设为当前 dots[index].className = "active"; } slideImg();
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
从网页搭建入门Java Web2018版
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10205 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星