`
xinklabi
  • 浏览: 1560751 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

右键弹出菜单的定位问题

 
阅读更多

    现在做的项目中有一个功能是在创建的一个类似word document map的目录上右键时弹出菜单,弹出的菜单正好在鼠标单击事件发生的位置,这就存在了这个菜单的定位问题。

这个功能我首先是从ztree的一个右键功能例子中拷贝过来的,在ztree的例子中运行的好好的,但是粘贴到自己的页面中就怎么定位都不行,研究了很长时间,后来发现这个东西跟我的页面中的父层div的position属性有关,去掉position属性,运行可以成功,但是只要拖动滚动条就又不行了,反复研究最后才研究出问题所在,不禁调侃一句“这些小问题可别想考验强迫人的执着精神”,哈哈~

    右键菜单是一个最初隐藏的,position为absolute的div,通过设置css的top和left属性完成定位,但是有个问题是,它会相对于最近的position为relative的父层div进行定位,若没有的话就相对于body定位了。我的页面中ztree外层有两个position为relative的父层div。最开始我按照ztree例子中那样做的,以event.clientX,event.clientY来设置menu div的left和top值,但是定位有很大的偏差,我尝试删除外层的div去模拟例子中的html格式,最后发现是受外层postion为relative这些div的影响,例子中是没有postion为relative的div的。于是我查资料,了解了相对定位和绝对定位的问题,然后知道menu div是相对于最近的position为relative的div进行定位的,而event.cliextX和event.clientY是相对于文档窗口的位移,那么我需要减去最近menu div最近的position为relative的div相对于文档窗口的位移(使用$("#bodydiv").offset().top和left获得),确实这样做的确成功了,但是新问题又出现了,那就是拖动滚动条的话定位又偏差了,这时候我有点怀疑event.clentX/Y和jquery的offset到底代表怎样的位移,回头研究例子中的定位,为什么它就不受滚动条的影响,最后才发现它的menu div外层是个iframe,所以它就可以直接使用鼠标事件发生点的位移作为menu div的坐标。最后,我通过$(document).scrollTop()和$(document).scrollLeft()获得滚动条的位移,然后加上这段位移,最后获得了准确定位。没啥困难的,只要你执着研究下去,并能使用灵活的方法!

分享到:
评论

相关推荐

    ContextMenuStrip左键弹出菜单,右键单击无效

    环境:C# 2008 ...特效:左键单击按钮,在按钮左下角(可以自己定位)弹出ContextMenuStrip(弹出式菜单),右键单击无效(不弹出菜单)。 解压密码:lejun1984@163.com 原创辛苦,请大家支持我。欢迎大家来信交流

    怎样使用右键菜单VB6.0源程序

    怎样使用右键菜单VB6.0源程序 弹出鼠标右键菜单,在文本框中点击鼠标右键, 你会发现弹出了右键菜单,选择"红色"即可改变背景色为红色, 选择"兰色"即可改变背景色为兰色。

    [注册表]Windows10文件夹内Shift+右键菜单添加打开管理员Powershell窗口

    Win10 系统通过双击本...点击后,首先会弹出来一个普通的 Powershell 窗口来执行命令,这个窗口会自动退出,然后会弹出 UAC 用户账户控制窗口,点击确定后,会弹出管理员模式的 Powershell 窗口,并定位到当前路径。

    鼠标右键背景修改器,将你的右键背景换成美女图片

    3.接下来“右击2057-替换资源-弹出‘替换位图于’对话框-点击‘打开新位图文件按钮’-弹出‘打开’对话框-定位找到你喜欢的bmp格式图片(大小任意,最好不要太大,以免右键图片显示不全,但一定要是24位bmp格式...

    [注册表]Windows10文件夹图标上Shift+右键菜单添加打开管理员Powershell窗口

    Win10系统通过双击本...点击后,首先会弹出来一个普通的 Powershell 窗口来执行命令,这个窗口会自动退出,然后会弹出 UAC 用户账户控制窗口,点击确定后,会弹出管理员模式的 Powershell 窗口,并定位到当前路径。

    jQuery实现自定义右键菜单的树状菜单效果

    这是一款基于jQuery的自定义右键菜单,在树状结构的子节点(下级没有节点)上单击右键才会弹出自定义菜单,而且菜单是自动根据鼠标位置来定位的。当鼠标在菜单以外的任意空白处单击一下后会自动消失。这里想特别说明...

    [注册表]Windows10文件夹图标上及文件夹内Shift+右键菜单添加打开管理员Powershell窗口

    Win10系统通过双击本...点击后,首先会弹出来一个普通的 Powershell 窗口来执行命令,这个窗口会自动退出,然后会弹出 UAC 用户账户控制窗口,点击确定后,会弹出管理员模式的 Powershell 窗口,并定位到当前路径。

    快速命令行窗口,定位源文件,查看源文件,锁定桌面

    右键点 快捷方式 弹出菜单中 选择 定位源文件,直接在新窗口中,找到 源文件。 3、更改浏览器打开源文件的默认工具 设置 ultraedit 为 IE 查看源代码默认的工具,便于编辑。 4、系统登录后自动锁定桌面 使 远程...

    诺基亚固件下载器

    产品型号列表导出、CODE列表导出,请在相应上方鼠标右键在弹出菜单选择即可 ,CODE直载在菜单》文件》通过CODE下载,在弹出对话框输入CODE回车即可,注意区分字母大小写(如CODE包含字母) 服务器切换在菜单》选项》...

    VC++经验技巧宝典配套代码06章

    0397单击右键弹出菜单 0398可以下拉的菜单 0399任务栏图盘弹出菜单 0400绘制渐变效果的菜单 0401将菜单项的字体设置为粗体 6.8工具栏和状态栏应用 0402带背景的工具栏 0403在工具栏中添加编辑框 0404具有提示功能...

    MSSQL日志解析和浏览工具

    一款真正意义上的MSSQL日志分析和浏览工具,直接解析LDF文件,支持SQL2008,SQL2005,SQL2000. 程序主要功能: 1:\l日志浏览....在对应的日志记录上右键,弹出菜单,点 <浏览数据> .可以查看事务删除的数据.

    SQL日志分析和浏览工具

    之前发布的版本好多人不会使用,最新版含有详细图文操作手册和恢复示例。 一款真正意义上的MSSQL日志分析和浏览工具,直接解析LDF文件,...在对应的日志记录上右键,弹出菜单,点 <浏览数据> .可以查看事务删除的数据.

    IE WebBrowser编程技巧

    禁止WebBrowser右键弹出菜单 禁止TWebBrowser图像显示 访问HTML的DOM不使用WebBrowser 如何填写空白(about:blank)页的表单 屏蔽WebBrowser的Javascript 创建运行时的IHTMLDocument而不在WebBrowser内 HOOK ...

    spy++ (基于 Win32 的实用工具)

    提示 使用 Spy++ 时,在许多实例中都可以单击鼠标右键显示常用命令的弹出式菜单。命令是否可用取决于指针的位置。例如,如果在指向窗口视图中的某项时单击并且选定的窗口可见,则弹出式“突出显示”菜单项将导致...

    oracle调试存储过程的过程详解

    2、选中存储过程,右键弹出菜单,选择 测试 3、出现测试脚本页面,输入动态参数值,点击左上角的标志,进入调式模式 4、出现调试操作按钮界面(依次:运行 单步进入 单步跳过 单步退出 运行到下一个异常) 5、...

    Visual C++ 程序开发范例宝典光盘源码 (第二版)1/7

     实例005 在控件上单击右键弹出菜单   实例006 个性化的弹出菜单   实例007 任务栏托盘弹出菜单   1.3 工具栏应用实例   实例008 带背景的工具栏   实例009 带图标的工具栏   实例010 带下拉...

    Visual C++ 程序开发范例宝典光盘源码 (第二版) 3/7

     实例005 在控件上单击右键弹出菜单   实例006 个性化的弹出菜单   实例007 任务栏托盘弹出菜单   1.3 工具栏应用实例   实例008 带背景的工具栏   实例009 带图标的工具栏   实例010 带下拉...

    Visual C++ 程序开发范例宝典光盘源码 (第二版) 6/7

     实例005 在控件上单击右键弹出菜单   实例006 个性化的弹出菜单   实例007 任务栏托盘弹出菜单   1.3 工具栏应用实例   实例008 带背景的工具栏   实例009 带图标的工具栏   实例010 带下拉...

    Visual C++ 程序开发范例宝典光盘源码 (第二版) 5/7

     实例005 在控件上单击右键弹出菜单   实例006 个性化的弹出菜单   实例007 任务栏托盘弹出菜单   1.3 工具栏应用实例   实例008 带背景的工具栏   实例009 带图标的工具栏   实例010 带下拉...

    Visual C++ 程序开发范例宝典光盘源码 (第二版) 2/7

     实例005 在控件上单击右键弹出菜单   实例006 个性化的弹出菜单   实例007 任务栏托盘弹出菜单   1.3 工具栏应用实例   实例008 带背景的工具栏   实例009 带图标的工具栏   实例010 带下拉...

Global site tag (gtag.js) - Google Analytics