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

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

2024-02-15 14:02:52 前端知识 前端哥 610 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
标签
评论
还可以输入200
共0条数据,当前/页
发布的文章

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

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