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中最常看到切最容易迷惑的语法(转)
Oct 29 Javascript
什么是json和jsonp,jQuery json实例详详细说明
Dec 11 Javascript
jquery日历控件实现方法分享
Mar 07 Javascript
jQuery简单实现网页选项卡特效
Nov 24 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
Dec 18 Javascript
JavaScript实现把数字转换成中文
Jun 29 Javascript
理解javascript中的原型和原型链
Jul 30 Javascript
javascript实现tab响应式切换特效
Jan 29 Javascript
input 禁止输入特殊字符的四种实现方式
Aug 24 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
Oct 11 Javascript
详解VUE单页应用骨架屏方案
Jan 17 Javascript
Jquery+javascript实现支付网页数字键盘
Dec 21 jQuery
页面间固定参数,通过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实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
js自带函数备忘 数组
2006/12/29 Javascript
JavaScript 快捷键设置实现代码
2009/03/13 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
2012/09/14 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
浅谈javascript中的constructor
2016/06/08 Javascript
Json解析的方法小结
2016/06/22 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
2019/10/08 jQuery
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
python标识符命名规范原理解析
2020/01/10 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
python绘制动态曲线教程
2020/02/24 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
Django视图、传参和forms验证操作
2020/07/15 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
室内设计专业个人的自我评价
2013/12/18 职场文书
初一地理教学反思
2014/01/16 职场文书
开业庆典答谢词
2014/01/18 职场文书
你的创业计划书怎样才能打动风投
2014/02/06 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
六一晚会主持词开场白
2015/05/28 职场文书
详解CSS不受控制的position fixed
2021/05/25 HTML / CSS
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis
实现GO语言对数组切片去重
2022/04/20 Golang
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python