JavaScript实现自定义右键菜单,思路如下:

1. 屏蔽默认右键事件;

2. 隐藏自定义的菜单模块(如div、ul等);

3. 右键点击特定或非特定区域,显示菜单模块;

4. 再次点击,隐藏菜单。

明确了思路,下面给出相关代码:

HTML:

 1 <!--Right Click Menu-->
2 <div id="background">Click Here</div>
3 <div class="right-menu" id="right-menu">
4 <ul>
5 <b>选择类型:</b>
6 </ul>
7 <div align="center">
8 <a href='javascript:;' value="01">拼接视频文件</a>
9 <a href='javascript:;' value="02">拼接图片文件</a>
10 <a href='javascript:;' value="03">拼接字幕文件</a>
11 <a href='javascript:;' value="04">流媒体文件</a>
12 <a href='javascript:;' value="05">图片文件</a>
13 <a href='javascript:;' value="06">字幕文件</a>
14 <a href='javascript:;' value="07">动画文件</a>
15 <a href='javascript:;' value="08">字体文件</a>
16 <a href='javascript:;' value="09">音视频文件</a>
17 </div>
18 </div>

JavaScript:

 1 window.onload = function(){
2 var forRight = document.getElementById("right-menu");
3 document.getElementById("background").oncontextmenu = function(event){
4 var event = event || window.event;
5 //显示菜单
6 forRight.style.display = "block";
7 //菜单定位
8 forRight.style.left = event.pageX+"px";
9 forRight.style.top = event.pageY+"px";
10 //return false为了屏蔽默认事件
11 return false;
12 };
13 //再次点击,菜单消失
14 document.onclick=function(){
15 forRight.style.display = "none";
16 };
17 };

CSS:

 1 #background {
2 background-color: #4db3a2;
3 width: 500px;
4 height: 300px;
5 }
6 .right-menu {
7 position: absolute;
8 z-index: 99999;
9 overflow: hidden;
10 width: 150px;
11 background-color: #FFFFFF;
12 border: dimgray 1px solid !important;
13 font-size: 14px;
14 list-style-type: none;
15 display: none;
16 }

JavaScript实现自定义右键菜单的更多相关文章

  1. JavaScript自定义右键菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 【连载】Bootstrap开发漂亮的前端界面之自定义右键菜单

    连载: 1<教你用Bootstrap开发漂亮的前端界面> 2.<Bootstrap开发漂亮的前端界面之实现原理> 网页中的自定义右键菜单越来越普遍,自定义右键菜单可以增强用户体 ...

  3. 阻止右键菜单(阻止默认事件)&&跟随鼠标移动(大图展示)&&自定义右键菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. js进阶 12-18 jquery如何实现自定义右键菜单(把问题分细)

    js进阶 12-18  jquery如何实现自定义右键菜单(把问题分细) 一.总结 一句话总结:用鼠标右键事件contextmenu,阻止系统默认事件,让做好的右键菜单显示出来,并且显示在我们出现的位 ...

  5. jquery 自定义右键菜单

    如果要自定义右键菜单,那么就需要禁止原本的右键菜单,代码如下 document.oncontextmenu = new Function("return false;");//禁止 ...

  6. html鼠标自定义右键菜单:css+js实现自定义html右键菜单

    我们在网页中很多都有右键菜单的功能,一般点击右键显示的是浏览器默认的菜单选项,那么我们直接如何通过css+js实现html的右键菜单呢?这篇文章将讲解html鼠标自定义右键菜单的实现原理和实现代码. ...

  7. ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单

    前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...

  8. 自定义右键菜单,禁用浏览器自带的右键菜单[右键菜单实现--Demo]

    许多从事Web开发的会发现有些事,我们需要禁用浏览器本事自带的右键菜单,而实现自定义的右键菜单下面我们也来实现一个自定义的右键菜单 首先来创建JSP页面 <%@ page language=&q ...

  9. JS简单实现自定义右键菜单

    RT,一个简单的例子,仅仅讲述原理 <div id="menu" style="width: 0;height: 0;background: cadetblue;p ...

随机推荐

  1. T - Permutation 题解(思维+dp)

    题目链接 题目大意 给你一个数字n和长为n-1个字符串 字符串包含'<','>' 若s[i]='<' 则代表a[i]<a[i+1] 若s[i]='>' 则代表a[i]&g ...

  2. pip递归安装报错继续安装

    使用命令pip freeze > requirements.txt导出项目依赖包之后,使用pip -r requirements.txt的时候可能会出现一些包安装出错,但是安装一旦出错,安装就会 ...

  3. CentOS下配置VNC

    配置桌面 # 安装gnome桌面环境 yum groupinstall Desktop -y # 安装中文语言支持包(可选) yum groupinstall 'Chinese Support' -y ...

  4. ubantu+nginx+uwsgi+django部署

    1.更新ubantu的apt apt-get update 必要时候更新系统:      apt-get upgrade 2.远程连接服务器 ssh 用户名@ip 上传代码 :        scp ...

  5. C++20初体验——concepts

    引子 凡是涉及STL的错误都不堪入目,因为首先STL中有复杂的层次关系,在错误信息中都会暴露出来,其次这么多类和函数的名字大多都是双下划线开头的,一般人看得不习惯. 一个经典的错误是给std::sor ...

  6. moviepy音视频剪辑:视频剪辑基类VideoClip详解

    ☞ ░ 前往老猿Python博文目录 ░ 一.概述 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>和<moviepy音视频剪辑:moviepy中的剪辑基类Cl ...

  7. PyQt(Python+Qt)学习随笔:QTreeWidgetItem项子项展开相关方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件QTreeWidget中的QTreeWidgetItem项如果一个项有子项,可以调用setE ...

  8. PyQt(Python+Qt)学习随笔:QAbstractItemView的showDropIndicator属性

    老猿Python博文目录 老猿Python博客地址 概述 QAbstractItemView的showDropIndicator属性用于控制在拖拽过程中显示当前拖拽到的位置,当释放时则在当前拖拽位置覆 ...

  9. 安装虚拟机(centos7)

    安装VMware 15 这里就不介绍VMware如何安装了,可以自行百度安装. 准备centos7镜像 我选择的是网易的镜像源,地址是:http://mirrors.163.com/centos/7/ ...

  10. 本地web项目部署到服务器里连接不上数据库的解决办法

    今天突然想到把自己之前的项目挂到服务器上,但是用到了数据库,于是给服务器装上了MySQL,想着能赶紧把项目挂上去看看效果,然后并不是一帆风顺,在奋斗了四小时后终于解决了问题的所在. (1)首先我找到了 ...