zoukankan      html  css  js  c++  java
  • JS实现自定义右键菜单

    灵图时做的,效果如下

    Demo效果图

    Demo源码如下

    <!DOCTYPE html>
    <html>
      <head>
        <title>JS实现自定义右键菜单</title>
        <meta http-equiv="content-type" content="text/html; charset=gbk">
        <script src="http://api.51ditu.com/js/ajax.js"></script>
    
    	<style type="text/css">
    		#container {
    			text-align : center;
    			width : 500px;
    			height : 500px;
    			border : 1px solid blue;
    			margin : 0 auto;
    			
    		}
    		.skin {
    			width : 100px;
    			border : 1px solid gray;
    			padding : 2px;
    			visibility : hidden;
    			position : absolute;
    		}
    		div.menuitems {
    			margin : 1px 0;
    		}
    		div.menuitems a {
    			text-decoration : none;
    		}
    		div.menuitems:hover {
    			background-color : #c0c0c0;
    		}
    	</style>
    <script>		
    window.onload = function() {
    	
    	var container = document.getElementById('container');	
    	var menu = document.getElementById('menu');
    	
    	/*显示菜单*/
    	function showMenu() {
    
    		var evt = window.event || arguments[0];
    		
    		/*获取当前鼠标右键按下后的位置,据此定义菜单显示的位置*/
    		var rightedge = container.clientWidth-evt.clientX;
    		var bottomedge = container.clientHeight-evt.clientY;
    
    		/*如果从鼠标位置到容器右边的空间小于菜单的宽度,就定位菜单的左坐标(Left)为当前鼠标位置向左一个菜单宽度*/
    		if (rightedge < menu.offsetWidth) 				
    			menu.style.left = container.scrollLeft + evt.clientX - menu.offsetWidth + "px";				
    		else
    		/*否则,就定位菜单的左坐标为当前鼠标位置*/
    			menu.style.left = container.scrollLeft + evt.clientX + "px";
    		
    		/*如果从鼠标位置到容器下边的空间小于菜单的高度,就定位菜单的上坐标(Top)为当前鼠标位置向上一个菜单高度*/
    		if (bottomedge < menu.offsetHeight)
    			menu.style.top = container.scrollTop + evt.clientY - menu.offsetHeight + "px";
    		else
    		/*否则,就定位菜单的上坐标为当前鼠标位置*/
    			menu.style.top = container.scrollTop + evt.clientY + "px";
    			
    		/*设置菜单可见*/
    		menu.style.visibility = "visible";				
    		LTEvent.addListener(menu,"contextmenu",LTEvent.cancelBubble);
    	}
    	/*隐藏菜单*/
    	function hideMenu() {
    		menu.style.visibility = 'hidden';
    	}								
    	LTEvent.addListener(container,"contextmenu",LTEvent.cancelBubble);
    	LTEvent.addListener(container,"contextmenu",showMenu);
    	LTEvent.addListener(document,"click",hideMenu);						
    }
    	
    </script>
      </head>
      
      <body>
    	
    	<div id="menu" class="skin">
    		<div class="menuitems">
    			<a href="javascript:history.back();">后退</a>
    		</div>
    		<div class="menuitems">
    			<a href="javascript:history.back();">前进</a>
    		</div>
    		<hr>
    		<div class="menuitems">
    			<a href="http://api.51ditu.com/" target="_blank">地图api</a>
    		</div>
    		<div class="menuitems">
    			<a href="http://www.51ditu.com/traffic/index.html" target="_blank">实时交通</a>
    		</div>
    		<div class="menuitems">
    			<a href="http://www.51ditu.com" target="_blank">地图搜索</a>
    		</div>
    		<div class="menuitems">
    			<a href="http://nav.51ditu.com" target="_blank">驾驶导航</a>
    		</div>
    		<hr>
    		<div class="menuitems">
    			<a href="http://uu.51ditu.com" target="_blank">灵图UU</a>
    		</div>
    		<div class="menuitems">
    			<a href="http://lushu.51ditu.com" target="_blank">路书下载</a>
    		</div>
    		<hr>
    		<div class="menuitems">
    			<a href="http://www.lingtu.com" target="_blank">关于本站</a>
    		</div>
    		<div class="menuitems">
    			<a href="http://emap.51ditu.com/link/link.html" target="_bland">友情链接</a>
    		</div>
    	</div>
    	
    	<div id="container">		
    		<p>右键此区域</p>
    	</div>
      </body>
    </html>
    

      

  • 相关阅读:
    mysql.pas
    mysql 动态创建(删除)数据库,表
    界面美化(来自网络)
    串口的一点知识(摘抄)
    移位操作
    快速排序
    oracle和sqlserver互訪
    ASP.NET 无法向会话状态服务器发出会话状态请求 错误的解决方法
    去除 word requirements 工具条
    C# 控件预处理键盘命令
  • 原文地址:https://www.cnblogs.com/snandy/p/1977789.html
Copyright © 2011-2022 走看看