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代码
Jul 01 Javascript
防止浏览器记住用户名及密码的简单实用方法
Apr 22 Javascript
jquery 判断滚动条到达了底部和顶端的方法
Apr 02 Javascript
javascript写的一个模拟阅读小说的程序
Apr 04 Javascript
javascript手工制作悬浮菜单
Feb 12 Javascript
jquery控制显示服务器生成的图片流
Aug 04 Javascript
详解React-Todos入门例子
Nov 08 Javascript
Html中 IFrame的用法及注意点
Dec 22 Javascript
深入理解JavaScript和TypeScript中的class
Apr 22 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
Oct 08 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
Dec 14 Javascript
微信小程序整合使用富文本编辑器的方法详解
Apr 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
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
js操作textarea 常用方法总结
2012/12/03 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
vue 实现超长文本截取,悬浮框提示
2020/07/29 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
Python实现多线程抓取网页功能实例详解
2017/06/08 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
python实现多人聊天室
2020/03/31 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
美国轻奢时尚购物网站:REVOLVE(支持中文)
2020/07/18 全球购物
.net软件工程师应聘上机试题
2015/03/10 面试题
运动会入场词200字
2014/02/15 职场文书
党员活动日总结
2014/05/05 职场文书
学校清明节活动总结
2014/07/04 职场文书
挂靠协议书
2015/01/27 职场文书
《青山不老》教学反思
2016/02/22 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL
2022年显卡天梯图(6月更新)
2022/06/17 数码科技