CSS+JavaScript创建右击菜单

效果图:

[img]/upload/attachment/54567/c2eb9aa3-6f3c-330b-a168-c0cfa344d463.jpg[/img]


<%@ page language="java" pageEncoding="GBK" %>

<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">

<html>

<head>

<title>css和javascript创建页面右键菜单</title>

<style type="text/css">

body {

font-family: "宋体";

font-size: 12px;

}



.skin0 {

padding-top: 4px;

text-align: left;

width: 100px;

border: 2px solid black;

background-color: menu;

font-family: "宋体";

line-height: 20px;

cursor: default;

visibility: hidden;

}



.skin1 {

padding-top: 4px;

cursor: default;

font: menutext;

text-align: left;

font-family: "宋体";

font-size: 10pt;

width: 100px;

background-color: menu;

border: 1 solid buttonface;

visibility: hidden;

border: 2 outset buttonhighlight;

}



</style>





<script language='javascript'>

function load1(){

if (document.all && window.print) {

document.oncontextmenu = showmenuie5;

document.onclick = hidemenuie5;

}

}



function showmenuie5() {

//获取当前鼠标右键按下后的位置,据此定义菜单显示的位置

var rightedge = document.body.clientWidth-event.clientX;

var bottomedge = document.body.clientHeight-event.clientY;



//如果从鼠标位置到窗口右边的空间小于菜单的宽度,就定位菜单的左坐标(Left)为当//前鼠标位置向左一个菜单宽度

if (rightedge <ie5menu.offsetWidth)

ie5menu.style.left = document.body.scrollLeft + event.clientX - ie5menu.offsetWidth;

else //否则,就定位菜单的左坐标为当前鼠标位置

ie5menu.style.left = document.body.scrollLeft + event.clientX;



//*如果从鼠标位置到窗口下边的空间小于菜单的高度,就定位菜单的上坐标(Top)为当前鼠标位置向上一个菜单高度

if (bottomedge <ie5menu.offsetHeight)

ie5menu.style.top = document.body.scrollTop + event.clientY - ie5menu.offsetHeight;

else

ie5menu.style.top = document.body.scrollTop + event.clientY;



//设置菜单可见

ie5menu.style.visibility = "visible";

return false;

}



function hidemenuie5() {

ie5menu.style.visibility = "hidden";

}



//jumptoie5()函数实现鼠标点击右键菜单中的层时发生的事情,也就是执行选项

function jumptoie5() {

if (event.srcElement.getAttribute("target") != null)

window.open(event.srcElement.url, event.srcElement.getAttribute("target"));

else



window.location = event.srcElement.url;

}



load1()

</script>

</head>



<body>

右键菜单创建测试效果吧!
<div id="ie5menu" class="skin0">

<div onclick="alert('后退请三思!)">后退</div>

<div onclick="alert('祝你前程似锦,大胆往前走吧!')">前进</div>

<hr>

<div url="http://homepage.yesky.com" target="_blank" onclick="jumptoie5()">网页淘吧</div>

<div url="http://www.bewww.net/" target="_blank" onclick="jumptoie5()">速查手册</div>

<div url="http://wiki.mapbar.com/wiki2_0/edit.jsp?gid=1876" target="_blank" onclick="jumptoie5()">淘吧地图</div>

<div url="http://news.sohu.com/20081123/n260795459.shtml" target="_blank" onclick="jumptoie5()">征稿启事</div>

<hr>

<div url="http://soft.yesky.com" target="_blank" onclick="jumptoie5()">天极软件</div>

<div url="http://www.mydown.com/soft/" target="_blank" onclick="jumptoie5()">天极网站</div>

<hr>

<div url="http://liutao-2006-126-com.iteye.com" target="_blank" onclick="jumptoie5()">关于本站</div>

<div url="mailto:liutao_2006@126.com" onclick="jumptoie5()">联系我</div>

</div>  
</body>
</html>

[b]代码解释:[/b]

[b] 1、 在页面载入时,先执行load1()方法[/b]

首先检验是不是IE浏览器,如果当前浏览器是Internet Explorer,document.all就返回真。则下面的定义就应该有效。也就是说当检查到客户端使用的浏览器是IE的时候那么当用户产生右键事件时就调用函数 showmenuie5,当用户产生左键事件时就调用函数hidemenuie5。



[b]2、接着我们要考虑如何通过函数showmenuie5和函数hidemenuie5来实现菜单的显示和隐藏。[/b]

当然,这里的菜单并不是真正意义的右键菜单,而是我们自己做的一个div,在这个div中装上我们想要装的东西。通过鼠标事件调用函数来控制它的显隐,这就达到了使用鼠标右键一样的效果了。

这一块的最外层是一个id为ie5menu的div,我们定义了它的样式为skin0,你也可以根据自定义其他样式,然后替换skin0。

[b]3、点击菜单选项后的操作[/b]

jumptoie5()函数实现鼠标点击右键菜单中的层时发生的事情,也就是执行选项
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值