右击显示菜单

自定义右击菜单,很棒的效果

效果图:

第一步:做一个菜单
第二步:通过js屏蔽浏览器鼠标右击
第三步:获取鼠标点击的x,y;与菜单的长宽,浏览器长和宽比较,
第四步:定位显示
参考下面代码,亲测可用:
<!doctype html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=GBK">
		<title>右击鼠标</title>
		<meta name="Keywords" content="关键词,关键词">
		<meta name="Description" content="">
		<style type="text/css">
			*{margin:0;padding:0;}
			body{font-family:"微软雅黑";font-size:16px;background:#666; color:#666;}
			.menu{width:155px;background:#fff;box-shadow:1px 1px 30px #ccc;display:none;
				position:absolute;}
			.menu ul li{list-style:none;line-height:35px;padding-left:16px;
				border-bottom:1px solid #ddd;}
			.menu ul li:hover{background:#647E7C;color:#fff;}
		</style>
	<!--导入jquery类库-->
	<script type = "text/javascript" src = "js/jquery-1.11.1.min.js"></script>
	</head>
	<body>
		<div class = "menu">
			<ul>
				<li onclick = "jy_menu(0)">打开</li>
				<li onclick = "jy_menu(1)">刷新(R)</li>
				<li onclick = "jy_menu(2)">复制(C)</li>
				<li onclick = "jy_menu(3)">粘贴(V)</li>
				<li onclick = "jy_menu(4)">注销</li>
			</ul>
		</div>
	<script type = "text/javascript">
		//首先屏蔽到浏览器自带的右键功能
		document.oncontextmenu = function(){
			return false;
		};
		//点击鼠标三键
		$(document).mousedown(function(e){
			//1是左键;2是中间键;3是右键
			var key = e.which;
			if(key == 3){
				var x = e.clientX; //x坐标
				var y = e.clientY; //y坐标
				//获取menu的长宽
				var menuHeight = $(".menu").height();
				var menuWidth = $(".menu").width();
				//获取浏览器的可见长宽
				var clintHeight = getClientHeight();
				var clintWidth = getClientWidth();
				//判断
				if(menuHeight + y >= clintHeight){
					y = clintHeight - menuHeight - 8;
				}
				if(menuWidth + x >= clintWidth){
					x = clintWidth - menuWidth - 8;
				}
				//之前必须要绝对定位才行
				$(".menu").show().css({left:x,top:y});

			}
		});

		//点击空白隐藏鼠标右键
		$(document).click(function(){
			$(".menu").hide();
		});

		//响应事件
		function jy_menu(i){
		switch(i){
			case 0:
			  alert("这是打开操作");break;
			case 1:
			  alert("这是刷新操作");break;
			case 2:
			  alert("这是复制操作");break;
			case 3:
			  alert("这是粘贴操作");break;
			default:
			  alert("这是注销操作");
			}
		}
		// 浏览器的可见高度
		function getClientHeight() {
			var clientHeight = 0;
			if (document.body.clientHeight && document.documentElement.clientHeight) {
				clientHeight = (document.body.clientHeight < document.documentElement.clientHeight) ? document.body.clientHeight: document.documentElement.clientHeight;
			} else {
				clientHeight = (document.body.clientHeight > document.documentElement.clientHeight) ? document.body.clientHeight: document.documentElement.clientHeight;
			}
			return clientHeight;
		}

		// 浏览器的可见宽度
		function getClientWidth() {
			var clientWidth = 0;
			if (document.body.clientWidth && document.documentElement.clientWidth) {
				clientWidth = (document.body.clientWidth < document.documentElement.clientWidth) ? document.body.clientWidth: document.documentElement.clientWidth;
			} else {
				clientWidth = (document.body.clientWidth > document.documentElement.clientWidth) ? document.body.clientWidth: document.documentElement.clientWidth;
			}
			return clientWidth;
		}
	</script>
	</body>
</html>

只需要使用自己的Jquery文件即可,不需要添加其他内容。
更多干货等你来拿 http://www.itit123.cn/

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根目录 菜单菜单二 go 修改 删除 function showMenu(id){ menuForm.id.value = id; if("" == id){ } else{ popMenu(itemMenu,100,"111"); } event.returnValue=false; event.cancelBubble=true; return false; } /** *显示弹出菜单 *menuDiv:右键菜单的内容 *width:行显示的宽度 *rowControlString:行控制字符串,0表示不显示,1表示显示,如“101”,则表示第1、3行显示,第2行不显示 */ function popMenu(menuDiv,width,rowControlString){ //创建弹出菜单 var pop=window.createPopup(); //设置弹出菜单的内容 pop.document.body.innerHTML=menuDiv.innerHTML; var rowObjs=pop.document.body.all[0].rows; //获得弹出菜单的行数 var rowCount=rowObjs.length; //循环设置每行的属性 for(var i=0;i<rowObjs.length;i++) { //如果设置该行不显示,则行数减一 var hide=rowControlString.charAt(i)!='1'; if(hide){ rowCount--; } //设置是否显示该行 rowObjs[i].style.display=(hide)?"none":""; //设置鼠标滑入该行时的效果 rowObjs[i].cells[0].onmouseover=function(){ this.style.background="#818181"; this.style.color="white"; } //设置鼠标滑出该行时的效果 rowObjs[i].cells[0].onmouseout=function(){ this.style.background="#cccccc"; this.style.color="black"; } } //屏蔽菜单菜单 pop.document.oncontextmenu=function(){ return false; } //选择右键菜单的一项后,菜单隐藏 pop.document.onclick=function(){ pop.hide(); } //显示菜单 pop.show(event.clientX-1,event.clientY,width,rowCount*25,document.body); return true; } function create(){ alert("create" + menuForm.id.value + "!"); } function update(){ alert("update" + menuForm.id.value + "!"); } function del(){ alert("delete" + menuForm.id.value + "!"); } function clickMenu(){ alert("you click a menu!"); }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值