Js实现原生二级菜单 23-11-14 10:01 3456 7158 blog.csdn.net html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>二级菜单title> <style> span{ background-color: pink; } #menu{ background-color: orange; width: 90px; font-size: 30px; text-align: center; cursor: pointer; margin: auto; margin-top: 100px; } .fold{ height: 30px; overflow: hidden; } a{ font-size: 20px; } style> head><body> <div id="menu"> <div class="fold"><span>羊村span> <br> <a href="#">喜羊羊a><br> <a href="#">美羊羊a><br> <a href="#">懒羊羊a><br> <a href="#">懒羊羊a><br> div> <div class="fold"><span>羊村span> <br> <a href="#">喜羊羊a><br> <a href="#">美羊羊a><br> <a href="#">懒羊羊a><br> <a href="#">美羊羊a><br> <a href="#">懒羊羊a><br> div> <div class="fold"><span>羊村span> <br> <a href="#">喜羊羊a><br> <a href="#">美羊羊a><br> <a href="#">懒羊羊a><br> <a href="#">喜羊羊a><br> <a href="#">美羊羊a><br> <a href="#">懒羊羊a><br> div> div>body><script src="./tools.js">script><script>var spans = document.getElementsByTagName('span'); //获取span标签var opendiv = spans[0].parentNode;removeClass(opendiv,'fold'); for(var i = 0; i < spans.length; i++){ spans[i].onclick = function(){ var clickdiv = this.parentNode; // alert(clickdiv); menutoggle(clickdiv); // toggleClass(clickdiv,'fold'); if(opendiv!=clickdiv && !hasClass(opendiv,'fold')){ //addClass(opendiv,'fold'); //toggleClass(opendiv,'fold'); menutoggle(opendiv); } opendiv = clickdiv; }}/* 定义菜单切换以及动画效果 */ function menutoggle(obj){ //在切换样式之前元素的高度 var begin = obj.offsetHeight; //切换样式 toggleClass(obj,'fold'); //切换之后的高度 var end = obj.offsetHeight; //将元素样式切换到变化前,来设置动画效果 obj.style.height = begin + 'px'; obj.style.overflow = 'hidden'; move(obj,'height',end,10,function(){ obj.style.height = ""; //内联样式取消,防止影响下次触发动画样式不变 }); } script> html> 注:本文转载自blog.csdn.net的JeFerone的文章"https://blog.csdn.net/xsgg1234/article/details/97521893"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。 复制链接
html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>二级菜单title> <style> span{ background-color: pink; } #menu{ background-color: orange; width: 90px; font-size: 30px; text-align: center; cursor: pointer; margin: auto; margin-top: 100px; } .fold{ height: 30px; overflow: hidden; } a{ font-size: 20px; } style> head><body> <div id="menu"> <div class="fold"><span>羊村span> <br> <a href="#">喜羊羊a><br> <a href="#">美羊羊a><br> <a href="#">懒羊羊a><br> <a href="#">懒羊羊a><br> div> <div class="fold"><span>羊村span> <br> <a href="#">喜羊羊a><br> <a href="#">美羊羊a><br> <a href="#">懒羊羊a><br> <a href="#">美羊羊a><br> <a href="#">懒羊羊a><br> div> <div class="fold"><span>羊村span> <br> <a href="#">喜羊羊a><br> <a href="#">美羊羊a><br> <a href="#">懒羊羊a><br> <a href="#">喜羊羊a><br> <a href="#">美羊羊a><br> <a href="#">懒羊羊a><br> div> div>body><script src="./tools.js">script><script>var spans = document.getElementsByTagName('span'); //获取span标签var opendiv = spans[0].parentNode;removeClass(opendiv,'fold'); for(var i = 0; i < spans.length; i++){ spans[i].onclick = function(){ var clickdiv = this.parentNode; // alert(clickdiv); menutoggle(clickdiv); // toggleClass(clickdiv,'fold'); if(opendiv!=clickdiv && !hasClass(opendiv,'fold')){ //addClass(opendiv,'fold'); //toggleClass(opendiv,'fold'); menutoggle(opendiv); } opendiv = clickdiv; }}/* 定义菜单切换以及动画效果 */ function menutoggle(obj){ //在切换样式之前元素的高度 var begin = obj.offsetHeight; //切换样式 toggleClass(obj,'fold'); //切换之后的高度 var end = obj.offsetHeight; //将元素样式切换到变化前,来设置动画效果 obj.style.height = begin + 'px'; obj.style.overflow = 'hidden'; move(obj,'height',end,10,function(){ obj.style.height = ""; //内联样式取消,防止影响下次触发动画样式不变 }); } script> html>