对于自制的鼠标右键功能,我们应该考虑哪些因素呢?

一、涉及因素

1、阻止默认鼠标右键事件。

3、右键事件,使菜单出现。

2、考虑右键菜单出现的位置,是否超出窗口。

4、点击窗口任意位置,菜单消失。

二、具体代码及分析如下:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>基于jQuery鼠标右键菜单</title><style type="text/css">* {margin: 0;padding: 0;font-family: "微软雅黑";box-sizing: border-box;list-style: none;}h2 {margin: 100px auto;width: 500px;padding: 20px;font-size: 30px;letter-spacing: 10px;color: #FFFFFF;text-align: center;border-top: 3px solid #d56f22;border-bottom: 3px solid #d56f22;border-radius: 10px;}.contextmenu {display: none;position: absolute;width: 200px;background: #FFFFFF;border-radius: 5px;overflow: hidden;z-index: 99;}.contextmenu li {border-left: 3px solid transparent;transition: ease 0.3s;}.contextmenu li:hover {background: #CE93D8;border-left: 3px solid #9C27B0;}.contextmenu li a {display: block;padding: 10px;color: #000000;text-decoration: none;transition: ease 0.3s;}.contextmenu li:hover a {color: #FF0000;}</style></head><body style="background: #2C3E50;"><h2>提示:鼠标右键点击</h1><ul class="contextmenu"><li><a href="">百度</a></li><li><a href="#">搜狐</a></li><li><a href="#">搜狗</a></li><li><a href="#">必应</a></li><li><a href="#">网易</a></li></ul></body></html>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">// 文档加载后激活函数$(document).ready(function() {// 鼠标右键事件$(document).contextmenu(function(e) {// 获取窗口尺寸var winWidth = $(document).width();var winHeight = $(document).height();// 鼠标点击位置坐标var mouseX = e.pageX;var mouseY = e.pageY;// ul标签的宽高var menuWidth = $(".contextmenu").width();var menuHeight = $(".contextmenu").height();// 最小边缘margin(具体窗口边缘最小的距离)var minEdgeMargin = 10;// 以下判断用于检测ul标签出现的地方是否超出窗口范围// 第一种情况:右下角超出窗口if(mouseX + menuWidth + minEdgeMargin >= winWidth &&mouseY + menuHeight + minEdgeMargin >= winHeight) {menuLeft = mouseX - menuWidth - minEdgeMargin + "px";menuTop = mouseY - menuHeight - minEdgeMargin + "px";}// 第二种情况:右边超出窗口else if(mouseX + menuWidth + minEdgeMargin >= winWidth) {menuLeft = mouseX - menuWidth - minEdgeMargin + "px";menuTop = mouseY + minEdgeMargin + "px";}// 第三种情况:下边超出窗口else if(mouseY + menuHeight + minEdgeMargin >= winHeight) {menuLeft = mouseX + minEdgeMargin + "px";menuTop = mouseY - menuHeight - minEdgeMargin + "px";}// 其他情况:未超出窗口else {menuLeft = mouseX + minEdgeMargin + "px";menuTop = mouseY + minEdgeMargin + "px";};// ul菜单出现$(".contextmenu").css({"left": menuLeft,"top": menuTop}).show();// 阻止浏览器默认的右键菜单事件return false;});// 点击之后,右键菜单隐藏$(document).click(function() {$(".contextmenu").hide();});});
</script>

三、效果图

基于jQuery的鼠标右键菜单相关推荐

  1. openlayer右键菜单_使用OpenLayers3 添加地图鼠标右键菜单

    添加右键菜单,首先我们要监听鼠标右键点击的操作,我们知道鼠标右键事件名是 contextmenu,当鼠标在 html 元素之上,点击鼠标右键,便会触发 contextmenu 事件,在 context ...

  2. JQuery之ContextMenu(右键菜单)

    JQuery之ContextMenu(右键菜单) 插件下载地址: http://www.trendskitchens.co.nz/jquery/contextmenu/jquery.contextme ...

  3. Silverlight 4.0添加鼠标右键菜单和Silverlight全屏模式的进入退出

    说明:本文出处:http://www.cnblogs.com/chengxingliang/archive/2011/02/14/1954399.html#2627673(非常感谢) 在实际应用中,我 ...

  4. jquery-11 如何制作鼠标右键菜单

    jquery-11 如何制作鼠标右键菜单 一.总结 一句话总结:核心原理:找到右键菜单事件contextmenu,return false去掉默认事件,然后判断用户是否点的右键,然后在鼠标的位置显示菜 ...

  5. 基于jQuery垂直多级导航菜单代码

    基于jQuery垂直多级导航菜单代码是一款黑色风格的jQuery竖直导航菜单特效下载.效果图如下: 在线预览    源码下载 实现的代码. html代码: <ul class="ce& ...

  6. 安装ATi显卡驱动后增加的鼠标右键菜单的清理

    一般最直接的方法是: 一般位于注册表的: 删除注册表HKEY_CLASSES_ROOT\Directory \Background\shellex\ContextMenuHandlers\ACE下 a ...

  7. 自定义html页面鼠标右键,javascript鼠标右键菜单自定义效果

    本文实例讲解了javascript鼠标右键菜单的实现方法,分享给大家供大家参考,具体内容如下 效果图: 具体代码: #menu{ border:solid 1px gray; width:100px; ...

  8. html 元素允许右键,JavaScript 自定义html元素鼠标右键菜单功能

    自定义html元素鼠标右键菜单 实现思路 在触发contextmenu事件时,取消默认行为(也就是阻止浏览器显示自带的菜单),获取右键事件对象,来确定鼠标的点击位置,作为显示菜单的left和top值 ...

  9. WinForm -- 为TextBox文本框添加鼠标右键菜单

    WinForm -- 为TextBox文本框添加鼠标右键菜单 1. 新建一个WinForm项目,放置一个TextBox控件 2. 从工具箱拖进来一个ContextMenuStrip 3. 将TextB ...

最新文章

  1. 简单电商购物过程(续1)
  2. new操作符具体都干了什么?一次笔试题遇到的
  3. 面试官:你知道Redis得持久化机制吗?
  4. 用phpcms如何将静态页面制作成企业网站(中)
  5. 第七章读书笔记《深入理解计算机系统》
  6. php把字符串改成utf8,PHP将字符串改成UTF8的方法
  7. Pandas-常用统计分析方法 describe、quantile、sum、mean、median、count、max、min、idxmax、idxmin、mad、var、std、cumsum
  8. 信息系统项目管理师计算题(三点估算)
  9. 51单片机流水灯和蜂鸣器同步
  10. Processing创意编程(熟练篇)
  11. mysql opt frm_将.frm和.opt文件导入MySQL
  12. JavaWeb技术内幕八:JVM内存管理
  13. 线性系统大作业——2.二阶倒立摆建模与控制系统设计(上)
  14. HTML+JavaScript实现网页秒杀倒计时效果
  15. 【论文翻译】:PyramidBox: A Context-assisted Single Shot Face Detector
  16. STM32之震动传感器、继电器介绍及实战
  17. 《强化学习周刊》第23期:NeurIPS 2021强化学习的最新研究与应用
  18. python笛卡尔坐标系_将GPS的WGS84坐标(大地坐标系)转换为平面坐标(笛卡尔坐标系)的方法...
  19. html5中英文翻译论文,毕业论文外文翻译--使用JavaScript设计网页(适用于毕业论文外文翻译+中英文对照).doc...
  20. 计蒜客——草药的价值——背包问题

热门文章

  1. 【python】深浅拷贝
  2. 正则表达式提取字符串全部汉字或者全部英文
  3. 服务器接显示器显示不支援,Win10专业版显示器输入不支援怎么办?如何解决?...
  4. 密码库LibTomCrypt学习记录——(2.3)分组密码算法的工作模式——ECB代码示例
  5. Windows Server 安装 Adobe Flash Player
  6. html5 连接wifi,aWiFi是什么?
  7. 喜马拉雅产品分析报告
  8. esp8266点灯LCD12864心知天气+农历+空气质量ArduinoJson6
  9. xml引入另一个xml文件_什么是XML文件(以及如何打开一个XML文件)?
  10. 数据分析:大数据时代的必备技能之EXCEL