43-jQuery折叠菜单下(添加事件)

xiaoxiao2025-11-02  4

      感想: 一.学习了1.transform: rotate(90deg);是用来旋转角度的。                      补充:2.transform: scale(0.5) 或者 transform: scale(0.5, 2);                               (1)一个参数时表示水平和垂直同时缩放该倍率。                               (2)两个参数时:第一个参数指定水平方向的缩放倍率,第二个参数指定垂直方向的缩放倍率                                3.transform: skew(30deg)  或者 transform: skew(30deg, 30deg);                               (1)一个参数时:表示水平方向的倾斜角度                               (2)两个参数时:第一个参数表示水平方向的倾斜角度,第二个参数表示垂直方向的倾斜角度                 二.这个折叠菜单用原生JS写,略麻烦。而jQuery写起来则方便的多 ,并且原生JS很难实现jQuery中的slideDown和      slideUp这个效果。

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>43-jQuery折叠菜单下(添加事件)</title> <style> *{ margin: 0; padding: 0; } .nav{ background: rgb(252,252,252); list-style: none; width: 300px; margin: 100px auto; /*border: 1px solid #000;*/ } .nav>li{ border: 1px solid #000; line-height: 35px; border-bottom: none; text-indent: 2em; position: relative; } .nav>li:last-child{ border-bottom: 1px solid #000; border-bottom-left-radius: 10px; border-bottom-right-radius: 10px; } .nav>li:first-child{ border-top-left-radius: 10px; border-top-right-radius: 10px; } .nav>li>span{ background: url("images/arrow_right.jpg") no-repeat center center; display: inline-block; width: 32px; height: 32px; position: absolute; right: 10px; top: 5px; } .sub{ display: none; } .sub>li{ list-style: none; background: mediumpurple; border: 1px solid white; } .sub>li:hover{ background: red; } .nav>.current>span{ transform: rotate(90deg); } .show{ display: block; } </style> <script src="JS_file/jquery-1.12.4.js"></script> <script> /* $(function () { // 1.监听一级菜单的点击事件 $(".nav>li").click(function () { // 1.1拿到二级菜单 var $sub=$(this).children(".sub"); //判断二级菜单是否隐藏,若隐藏,执行下面事件 if($sub.is(":hidden")) { // 1.2让二级菜单展开 $sub.slideDown(); // 1.3拿到所有非当前的二级菜单 var otherSub=$(this).siblings().children(".sub"); // 1.4让所有的非当前菜单隐藏 otherSub.slideUp(); // 1.5让被点击的一级菜单箭头旋转 $(this).addClass("current"); // 1.6让所有非被点击的一级菜单箭头还原 $(this).siblings().removeClass("current"); } //若显示,则点击该一级菜单时,让它变为隐藏,并将该一级菜单的箭头恢复。 /!*(视频上教的并没有这个if else,但有个问题就是,只要点击一级菜单,将一直会有二级菜单展开,如何收起呢? 点击后,先判别该点击的一级菜单下的二级菜单是否显示。用到了is(":hidden")方法 )*!/ else { $sub.slideUp(); $(this).removeClass("current"); } }) })*/ //原生JS写法 window.onload=function () { var oNav=document.getElementsByClassName("nav")[0]; var aUl=document.getElementsByClassName("sub"); var aLi=oNav.children; // alert(aLi.length) for(var i=0;i<aLi.length;i++) { aLi[i].index=i; aLi[i].onclick=function () { /* 注意了:之前我也遇见过这个我问题,不能写if(aUl[this.index].style.display=="none"){}else{} 若这样写:第一次点击一级标题,console.log(aUl[this.index].style.displa=="none")返回的是false 第二次点击时,才返回true。明明第一次点击的时候aUl[this.index].style.displa是隐藏的 不知道为什么会出现这个情况 * */ if(aUl[this.index].style.display=="block") { // aUl[this.index].className="sub"; // 若点击的一级标题下的二级标题为block,则隐藏该二级标题并且恢复箭头 aUl[this.index].style.display="none"; this.className=""; } else { //否则,先将所有的箭头先恢复正常 for(var j=0;j<aLi.length;j++) { aLi[j].className=""; } //再将点击的箭头添加类,即箭头旋转90度 this.className="current"; //先将所有的二级标题隐藏 for(var k=0;k<aUl.length;k++) { // 和38那个对比,为何这个不能使用添加class的方法,因为sub这个class本身是none,感觉是权限问题 // aUl[k].className="sub"; aUl[k].style.display="none"; } //再将点击的一级标题下的二级标题显示 //aUl[this.index].className="show"; aUl[this.index].style.display="block"; } } } } </script> </head> <body> <ul class="nav"> <li>1一级菜单<span></span> <ul class="sub"> <li>二级菜单1</li> <li>二级菜单1</li> <li>二级菜单1</li> <li>二级菜单1</li> <li>二级菜单1</li> </ul></li> <li>2一级菜单<span></span> <ul class="sub"> <li>二级菜单2</li> <li>二级菜单2</li> <li>二级菜单2</li> <li>二级菜单2</li> <li>二级菜单2</li> </ul></li> <li>3一级菜单<span></span> <ul class="sub"> <li>二级菜单3</li> <li>二级菜单3</li> <li>二级菜单3</li> <li>二级菜单3</li> <li>二级菜单3</li> </ul></li> <li>4一级菜单<span></span> <ul class="sub"> <li>二级菜单4</li> <li>二级菜单4</li> <li>二级菜单4</li> <li>二级菜单4</li> <li>二级菜单4</li> </ul></li> <li>5一级菜单<span></span> <ul class="sub"> <li>二级菜单5</li> <li>二级菜单5</li> <li>二级菜单5</li> <li>二级菜单5</li> <li>二级菜单5</li> </ul></li> <li>6一级菜单<span></span> <ul class="sub"> <li>二级菜单6</li> <li>二级菜单6</li> <li>二级菜单6</li> <li>二级菜单6</li> <li>二级菜单6</li> </ul></li> <li>7一级菜单<span></span> <ul class="sub"> <li>二级菜单7</li> <li>二级菜单7</li> <li>二级菜单7</li> <li>二级菜单7</li> <li>二级菜单7</li> </ul></li> <li>8一级菜单<span></span> <ul class="sub"> <li>二级菜单8</li> <li>二级菜单8</li> <li>二级菜单8</li> <li>二级菜单8</li> <li>二级菜单8</li> </ul></li> </ul> </body> </html>

 

转载请注明原文地址: https://www.6miu.com/read-5038960.html

最新回复(0)