JS简单实现自定义右键菜单实例


Posted in Javascript onMay 31, 2017

RT,一个简单的例子,仅仅讲述原理

 

<div id="menu" style="width: 0;height: 0;background: cadetblue;position: absolute"></menu>

假设我要把上面这个div设置为右键菜单,先随意美化一下。

原理就是利用contextmenu事件,右键点击时,会触发这个事件时,该事件对象可以获得鼠标距离页面左上角的距离clientX和clientY,

我们可以利用这两个属性,来控制div的水平,垂直偏移量,并且返回false,取消事件的默认行为,来模拟浏览器的右键菜单。

document.oncontextmenu=function(e){

var x=e.clientX+'px';


var y=e.clientY+'px';


var node=document.querySelector('#menu');


node.style.left=x;


node.style.top=y;


node.style.width=100+'px';


node.style.height=100+'px';


return false; //很重要,不能让浏览器显示自己的右键菜单

}

现在是关闭部分,关闭右键菜单的方式,通常是在空白区域点击左键。

document.onclick=function(e){

if(e.target.id!='menu')


{



var node=document.querySelector('#menu');



node.style.width=0;



node.style.height=0;


}
}

这仅仅是一个基本的思路的,核心就是contextmenu事件。你可以在此基础上使用CSS随意美化升级,加入类似于transition等属性,来实现动画效果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript IE中的DOM ready应用技巧
Jul 23 Javascript
jquery.jstree 增加节点的双击事件代码
Jul 27 Javascript
JavaScript中去掉数组中的重复值的实现方法
Aug 03 Javascript
简介JavaScript中的setDate()方法的使用
Jun 11 Javascript
angularjs自定义ng-model标签的属性
Jan 21 Javascript
Centos7 中 Node.js安装简单方法
Nov 02 Javascript
Jil,高效的json序列化和反序列化库
Feb 15 Javascript
vue监听scroll的坑的解决方法
Sep 07 Javascript
基于js文件加载优化(详解)
Jan 03 Javascript
Vue.set 全局操作简单示例
Sep 19 Javascript
Js图片点击切换轮播实现代码
Jul 27 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
Oct 22 Javascript
页面间固定参数,通过cookie传值的实现方法
May 31 #Javascript
基于react框架使用的一些细节要点的思考
May 31 #Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
May 31 #Javascript
使用原生js写ajax实例(推荐)
May 31 #Javascript
Javascript创建类和对象详解
May 31 #Javascript
Javascript继承机制详解
May 30 #Javascript
Vue2.x中的Render函数详解
May 30 #Javascript
You might like
php Undefined index的问题
2009/06/01 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
javascript 24小时弹出一次的代码(利用cookies)
2009/09/03 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
javascript 数据存储的常用函数总结
2017/06/01 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
Python随机生成数模块random使用实例
2015/04/13 Python
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
简单了解Python生成器是什么
2019/07/02 Python
Python 忽略文件名编码的方法
2020/08/01 Python
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
施华洛世奇英国官网:SWAROVSKI英国
2017/03/13 全球购物
奇怪的鱼:Weird Fish
2018/03/18 全球购物
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
捷克街头、运动和滑板一站式商店:BoardStar.cz
2019/10/06 全球购物
分布式数据库需要考虑哪些问题
2013/12/08 面试题
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
审计班子对照检查材料
2014/08/27 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
免职通知
2015/04/23 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
画展观后感
2015/06/17 职场文书
《角的度量》教学反思
2016/02/18 职场文书