一,通过原生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,希望与大家分享更多的前端开发的知识,如果你有不同或更好的见解,欢迎在我的评论区留言!