经常看见一些右键点击出现一些自定义菜单,今天自己试了一下.直接上代码,代码中有注释.(自己琢磨的,如果有错误,请提出.)
css部分
<style> #rightClick{ position: absolute; list-style: none; display: none; } #rightClick li{ margin-left: 20px; background-color:#A4D3EE; color: white; line-height: 20px; height: 20px; width: 90px; text-align: center; } #tabs{ list-style: none; } #tabs li{ float: left; margin-left: 20px; background-color: #B0E0E6; color: white; line-height: 20px; height: 20px; width: 60px; text-align: center; border-radius:5px ; } </style>
html部分
<!--标签--> <ul id="tabs"> <li id="tab1">标签1</li> <li id="tab2">标签2</li> <li id="tab3">标签3</li> <li id="tab4">标签4</li> <li id="tab5">标签5</li> <li id="tab6">标签6</li> </ul> <!--自定义菜单--> <ul id="rightClick"> <li id="othersClose">关闭其他</li> <li id="close">关闭</li> </ul>
js部分
<script> window.onload=function(){ //获取右键点击时的内容 var rightClick = document.getElementById("rightClick"); //获取右键点击的地点 var tabs = document.getElementById("tabs"); var tabsLi = document.getElementById("tabs").getElementsByTagName("li"); var eventId; //右键点击事件 tabs.oncontextmenu=function(e){ //事件对象兼容处理 var ev = e || window.event; //获取x,y坐标 var x = ev.clientX; var y = ev.clientY; //事件目标兼容处理 var target = ev.srcElement || ev.target; eventId = target.id ; rightClick.style.top=y+"px"; rightClick.style.left=x+"px"; rightClick.style.display = "block"; //点击自定义菜单中的某个按钮进行的操作 myEvent(rightClick,"click",rightClickEvent) //点击屏幕其他地方,自定义菜单消失 myEvent(document,"click",function(){ rightClick.style.display = "none"; }) return false; } //点击自定义菜单中的某个按钮进行的操作 function rightClickEvent(e){ var ev = e || window.event; var target = ev.srcElement || ev.target; //关闭其他事件处理 if(target.id == "othersClose"){ for(var i = 0;i<tabsLi.length;i++){ if(tabsLi[i].id!=eventId){ tabsLi[i].style.display="none"; } } } //关闭事件处理 else if(target.id == "close"){ document.getElementById(eventId).style.display="none"; } } } //事件监听兼容性考虑 function myEvent(obj,name,fn){//obj对象,name事件名称,fn调用函数 if(obj.attachEvent){ var name = "on"+name; obj.attachEvent(name,fn); }else{ obj.addEventListener(name,fn,false); } } </script>
欢迎分享本文,转载请保留出处:前端ABC » 自定义默认的右键点击菜单