自定义右键菜单

极简壁纸2.0 地址: https://bz.zzzmh.cn 目前进度已开发到95%

近期有时间就会分享一下,我在开发过程中用到的一些小技术的简单用法和demo

关于html js右键菜单

原理非常简单,监听鼠标右键事件,在事件中执行ev.preventDefault()就可以屏蔽原本的浏览器默认右键菜单,代码如下。

window.oncontextmenu = function (ev) {

ev.preventDefault();

}

然后从鼠标当前位置,画一个自定义的右键菜单div,就可以实现一个简单的自定义右键菜单了。

  • 下载
  • 删除
  • 移动到...
  • 重命名

// 先用e兼容不同浏览器

let e = ev || event

/阻止默认行为

e.preventDefault();

//记录当前的坐标(x轴和y轴)

let x = e.clientX;

let y = e.clientY;

// 显示邮件菜单

let menu = document.querySelector('#list');

menu.style.left = x + 'px';

menu.style.top = y + 'px';

menu.style.display = 'block';

百度到的例子就是这些,后面我再说补充下我的改进

默认右键菜单是出现在鼠标所在位置的右下方,但是右下方的空间不一定足够显示右键菜单,如果右边不够自动转成左边,下面不够转上面,这部分代码如下。

const clientWidth = document.documentElement.clientWidth;

const clientHeight = document.documentElement.clientHeight;

if (e.clientY > 40) {

if (clientHeight - e.pageY >= menu.offsetHeight) {

menu.style.top = e.pageY + 'px';

} else {

menu.style.top = (e.pageY - menu.offsetHeight) + 'px';

}

if (clientWidth - e.pageX >= menu.offsetWidth) {

menu.style.left = e.pageX + 'px';

} else {

menu.style.left = (e.pageX - menu.offsetWidth) + 'px';

}

menu.style.display = 'block';

}

可以通过ev.target来获取到右击的目标的元素,从而实现不同元素不同右键菜单

目标1右击出现右键菜单1
目标2右击出现右键菜单2
  • 下载
  • 删除
  • 移动到...
  • 重命名
  • 查看
  • 关于
  • 刷新
  • 反馈

// 先用e兼容不同浏览器

let e = ev || event

// 判断data-type参数来获取不同的右键菜单用于显示

if (e.target && e.target.getAttribute('data-type') == 'target1') {

menu = document.querySelector('#list1');

} else if (e.target && e.target.getAttribute('data-type') == 'target2') {

menu = document.querySelector('#list2');

}

任意鼠标点击事件都要隐藏掉正在显示中的右键菜单,否则用户不选择菜单内容,而是继续操作其他区域的话,菜单会一直悬浮在那边。

window.onclick = function () {

menu.style.display = 'none';//再次点击时隐藏菜单框

}

END

目前就是这些,之后还会分享一些开发极简壁纸时学到的技术。

也欢迎访问极简壁纸2.0 地址: https://bz.zzzmh.cn

桌面 html 自定义,【极简壁纸 - 技术分享】html js自定义右键菜单方法相关推荐

  1. 极简壁纸_桌面壁纸推荐_20190120

    由于这里发图片会被压缩质量,建议访问极简壁纸官网下载高清大图 极简壁纸官网 : https://bz.zzzmh.cn (9102年最潮壁纸网站) 由于这里发图片会被压缩质量,建议访问极简壁纸官网下载 ...

  2. 【极简壁纸】桌面壁纸美图推荐_2019/01/23

    极简壁纸是一个期望呈现出简单高效美观的壁纸网站. 推荐一批近期的壁纸 (图片发到这里会被压缩质量,建议访问网站下载原图) 网站链接:https://bz.zzzmh.cn (图片发到这里会被压缩质量, ...

  3. 【极简壁纸】桌面壁纸美图推荐_2019/01/24

    极简壁纸是一个期望呈现出简单高效美观的壁纸网站.推荐一批新更的壁纸 网站链接:https://bz.zzzmh.cn 网站链接:https://bz.zzzmh.cn (图片发到这里会被压缩质量,建议 ...

  4. 【极简壁纸】桌面壁纸美图推荐_2019/01/22

    极简壁纸是一个期望呈现出简单高效美观的壁纸网站. 推荐一批近期的壁纸 (图片发到这里会被压缩质量,建议访问网站下载原图) 网站链接:https://bz.zzzmh.cn (图片发到这里会被压缩质量, ...

  5. 【极简壁纸】桌面壁纸美图推荐_2019/01/27

    极简壁纸是一个期望呈现出简单高效美观的壁纸网站. 网站链接:https://bz.zzzmh.cn 推荐几张最新更新的壁纸 (图片发到这里会被压缩质量,建议访问网站下载原图) 网站链接:https:/ ...

  6. 网站推荐-极简壁纸网站

    引言 电脑.手机.平板,作为我们每天都要使用的工具.大部分时间我们都停留在这些设置的主页,挑选一份自己喜欢的壁纸尤其重要. PC端的壁纸工具很多,但是作为极简主义者,如果为了一个功能点就要下载一个软件 ...

  7. 【极简壁纸】简单高效美观的壁纸网站

    极简壁纸是一个期望呈现出简单高效美观的壁纸网站. 灵感来源是爱壁纸APP,图片来源是wallhaven.cc 极简壁纸网站建立于2018年5月1日. 起初是只是由于站长个人兴趣爱好,酷爱找各种壁纸. ...

  8. 【极简壁纸】简单高效美观的壁纸网站 1

    极简壁纸是一个期望呈现出简单高效美观的壁纸网站. 灵感来源是爱壁纸APP,图片来源是wallhaven.cc 极简壁纸网站建立于2018年5月1日. 起初是只是由于站长个人兴趣爱好,酷爱找各种壁纸. ...

  9. 装了svn桌面右键没有_右键菜单没有svn选项怎么办|win7 svn没有右键菜单怎么解决|svn添加到右键菜单方法...

    2016-05-31 11:43:55 最近,有位使用Windows10系统的朋友在下载了一个软件后,发现无法打开,显示为"XXX.RAR"格式的压缩文件,可是点击右键也没有发现& ...

最新文章

  1. scala学习手记34 - trait方法的延迟绑定
  2. SpringMVC——自定义拦截器、异常处理以及父子容器配置
  3. 不同工作组能访问吗_“辣椒”的辣味从哪里来?有方法能测量不同辣椒的辣度吗?...
  4. 跨链(6)波卡Polkadot “系统框架”
  5. Visual C++——黄维通《 Visual C++面向对象与可视化程序设计》——习题4-11
  6. STL常用的算术和生成算法
  7. Linux 内核源代码的目录结构
  8. php cdi_DI / CDI –基础
  9. Android中定时器的3种实现方法
  10. Silevo需征收进口关税?美光伏巨头各执一词
  11. php 判断是否在指定时间段范围内
  12. 2020爱分析·智能通讯云厂商全景报告
  13. MySQL可视化管理工具之SQLyog的简介以及使用方法
  14. OpenGL Assimp的骨骼动画
  15. android7.1修改默认休眠时间为1分钟
  16. 用户故事 | 工商银行核心应用 MySQL 治理实践
  17. 关于“硬件工程师工资不高”的几个真相
  18. linux igmp 属于那层协议,igmp协议属于哪一层
  19. 05-用户和组以及权限
  20. G4L-硬盘对拷工具

热门文章

  1. NLP自然语言处理入门学习笔记(一)
  2. NVIDIA英伟达jetson xavier nx天线如何安装
  3. python圆面积的计算_Python编程题:输入圆半径,输出圆面积?python计算圆面积教程...
  4. 华为公关事故处罚流出;FF中国分家细节曝光;苹果股价下跌拖累美股|雷锋早报... 1
  5. 透视软件,好骚啊!!!
  6. C语言数字图像处理进阶---7 Sketch Filter
  7. TCP/IP超详细总结
  8. mysql数据库精确匹配搜索_mysql 模糊搜索方法
  9. 友尽妙招:用Python解“智力游戏”
  10. linux sudo yum命令详解,每天一个Linux命令之sudo命令详解