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 相关文章推荐
js面向对象设计用{}好还是function(){}好(构造函数)
Oct 23 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
Aug 14 Javascript
javascript学习(二)javascript常见问题总结
Jan 02 Javascript
代码获取历史上的今天发生的事
Apr 11 Javascript
用jquery模仿的a的title属性的例子
Oct 22 Javascript
jQuery中:checkbox选择器用法实例
Jan 03 Javascript
javascript实现下拉提示选择框
Dec 29 Javascript
AngularJS实现tab选项卡的方法详解
Jul 05 Javascript
JS实现自定义弹窗功能
Aug 08 Javascript
快速解决vue-cli在ie9+中无效的问题
Sep 04 Javascript
微信小程序可滑动周日历组件使用详解
Oct 21 Javascript
OpenLayers3加载常用控件使用方法详解
Sep 25 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读取MySQL数据代码
2008/06/05 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
2020/04/30 jQuery
Vue实现多页签组件
2021/01/14 Vue.js
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
python3.3实现乘法表示例
2014/02/07 Python
python2.7实现邮件发送功能
2018/12/12 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
python matplotlib库绘制散点图例题解析
2019/08/10 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
final, finally, finalize的区别
2012/03/01 面试题
毕业生求职简历的自我评价
2013/10/23 职场文书
同事吵架检讨书
2014/02/05 职场文书
人力资源主管职责范本
2014/03/05 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
中考标语大全
2014/06/05 职场文书
人口与计划生育目标管理责任书
2014/07/29 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
浅析Python实现DFA算法
2021/06/26 Python