首页 前端知识 原生JavaScript技术,jQuery实现下拉菜单

原生JavaScript技术,jQuery实现下拉菜单

2024-02-15 14:02:52 前端知识 前端哥 595 155 我要收藏

一,通过原生JavaScript实现


      原理:利用onMouseOver 和 onMouseOut 事件来触发一个自定义的 change() 函数,实现了鼠标悬停时显示下拉菜单,鼠标移出时隐藏下拉菜单的效果。

  • html部分代码

</ul>
			<ul class="right">
			  <li class="list" onMouseOver="change('list_cur','block')" onMouseOut="change('list_cur','none')">
				  <span>个人中心</span>
				  <div id="list_cur">
				     <a href="#">已完成订单</a>
					  <a href="#">未完成订单</a>
					  <a href="#">我的保险</a>
					  <a href="#">账号安全</a>
					  <a href="#">个人信息</a>
					  <a href="#">常用联系人</a>
				  </div>
				</li>
				    <li class="line">|</li>
			    <li><span>使用须知</span></li>
				    <li class="line">|</li>
				<li><span>收藏夹</span></li>
					<li class="line">|</li>
				<li><span>货物快运</span></li>
					<li class="line">|</li>
				<li><span>联系我们</span></li>
			</ul>

      onMouseOver 和 onMouseOut 事件所含不同参数决定了他们各自实现的效果不同

     第一个参数作为选择器,在函数中选中对应元素

     第二个参数作为display属性值,配合选择语句来决定何时显示,何时隐藏下拉菜单

  • 完整js代码

function change(myid,mode){
	document.getElementById(myid).style.display=mode;//修改id=“myid”的元素的display属性为mode,即list_cur对应的总下拉菜单框架的display属性值,后续css代码有说明
	if(mode=='block'){//显示下拉菜单
		//设置下拉菜单所在的边框
		document.getElementById(myid).style.border="1px solid #eee";
		document.getElementById(myid).style.borderTop="none";
		//设置鼠标滑过的li的边框及背景颜色
		document.getElementById(myid).parentNode.style.backgroundColor="#fff";//修改父节点的css样式
		document.getElementById(myid).parentNode.style.border="1px solid #eee";
		document.getElementById(myid).parentNode.style.borderBottom="none";
	}
	else{
		//当不显示下拉列表时,鼠标滑过的li的边框及背景颜色
		document.getElementById(myid).parentNode.style.backgroundColor="";
		document.getElementById(myid).parentNode.style.border="";
	}	
}
  • css部分代码

.right li{
	cursor: pointer;
	border: 1px solid #f7f7f7;
}
.right li span{padding: 0px 9px;}
.right .list{position: relative;}
.right #list_cur{
	width: 80px;
	position: absolute;
	display: none;                   /*原本的下拉菜单元素被隐藏,通过style.display方法改变display为block,使其显示*/      
	left: -1px;
	top: 30px;
	background-color: #FFFFFF;
	border: 1px solid #EEE;
}
.right #list_cur a{
	display: block;                  /*因为a标签元素是行内元素,改变display值使其能向下排列显示*/
	padding: 10px;
	line-height: 28px;
	color: #6C6C6C;
}
.right #list_cur a:hover{
	background: #f5f5f5;
}
  • 部分样图

  

 


二,利用jQuery技术实现下拉菜单

方法一

         原理:通过初始hide()和toggle()方法设置下拉菜单div的样式是否可见

  • html部分代码

<div class="_002">
                <div id="sanjiao1"><img src="image/iconClose.jpg"></div>
                  <span id="_get">我的设备</span>
          </div>
             <div class="list" >
              <a href="#">01</a>
              <a href="#">02</a>
              <a href="#">03</a>
              <a href="#">04</a>
              <a href="#">05</a>
          </div>
  • css部分代码

     .list a{                                         /*链接标记样式,因为<a>标记是行内元素,所以要转换为块元素以换行*/   
        display: block;
	    padding: 10px;
	    line-height: 28px;
	    color: #6C6C6C;
      }
  • js部分代码

$(function(){
           $(".list").hide();                                       //初始化隐藏下拉菜单的样式
            $("#_get").click(function(){                          //通过一个单击事件,使用toggle()设置下拉菜单div的样式是否可见
              $(".list").toggle();    
    });
  • 部分样图

 


方法二

  原理:通过 slideToggle()方法 实现下拉菜单的下滑与收起

相关代码

<!DOCTYPE html>
<html>
<head>
  <title>好友列表</title>
  <style>
    .device {
      cursor: pointer;
    }

    .contacts {
      display: none;
    }
  </style>
  <script src="jQuery.js"></script>
  <script>
    $(document).ready(function() {
      // 监听我的设备的点击事件
      $('.device').on('click', function() {
        // 切换联系人的显示状态
        $('.contacts').slideToggle();                 //菜单是滑下或收起的,而不是突然隐藏或出现
      });
    });
  </script>
</head>
<body>
  <div class="device">我的设备</div>
  <ul class="contacts">
    <li>联系人1</li>
    <li>联系人2</li>
    <li>联系人3</li>
  </ul>

  <!-- 其他模块 -->
  <div>其他模块</div>

</body>
</html>

部分样图

 

       我是小p,希望与大家分享更多的前端开发的知识,如果你有不同或更好的见解,欢迎在我的评论区留言!

转载请注明出处或者链接地址:https://www.qianduange.cn//article/2104.html
标签
评论
发布的文章

01-10jQuery框架

2024-03-01 12:03:59

JS jQuery基础2

2024-03-01 12:03:54

jQuery实现文件上传

2024-03-01 12:03:53

JQuery简介与解析

2024-03-01 12:03:31

jquery上传图片单图多图

2024-03-01 12:03:11

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!