将鼠标悬停在 Raphaeljs 中的一组元素上

2023-12-04

我有一个只包含一个矩形的集合。

var hoverTrigger = this.paper.set();
var outline = this.paper.rect();
outline.attr({
...
hoverTrigger.push(outline)
this.sprite.push(hoverTrigger);

悬停时,矩形应该展开,并向其中添加一些链接,鼠标离开时,链接消失,矩形再次变小。

hoverTrigger.hover(function () {
  var link = this.paper.text();
  hoverTrigger.push(link);
  outline.animate({
  ...
}, function() {
  link.remove();
  outline.animate({
  ...
});

但是,悬停功能似乎单独应用于集合中的每个项目,而不是整个集合,因为当您将鼠标悬停在链接上时,悬停关闭功能会触发并且链接会消失。有时,该框会快速连续发生悬停事件和悬停事件并产生混乱。

有没有办法将悬停应用于一组事物,以便在该组中的两个事物之间移动鼠标不会触发悬停关闭?


最近我自己也遇到了这个限制,我决定为 Raphael 编写一个小扩展,名为hoverInBounds这样就解决了。

简单地说,一旦鼠标进入元素,我们就会跟踪它何时实际移出其边界 - 然后执行悬停功能,而不是之前。

Demo: http://jsfiddle.net/amusill/Bh276/1

Raphael.el.hoverInBounds = function(inFunc, outFunc) {
    var inBounds = false;

    // Mouseover function. Only execute if `inBounds` is false.
    this.mouseover(function() {
        if (!inBounds) {
            inBounds = true;
            inFunc.call(this);
        }
    });

    // Mouseout function
    this.mouseout(function(e) {
        var x = e.offsetX || e.clientX,
            y = e.offsetY || e.clientY;

        // Return `false` if we're still inside the element's bounds
        if (this.isPointInside(x, y)) return false;

        inBounds = false;
        outFunc.call(this);
    });

    return this;
}

在创建 Raphael 纸对象之前放置上面的代码块。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将鼠标悬停在 Raphaeljs 中的一组元素上 的相关文章

随机推荐

  • MapKit 的点击手势

    目前我有一张地图 其中有几个Annotations For the Annotations I have func mapView mapView MKMapView didSelect view MKAnnotationView Do y
  • 解密销售合作伙伴 API 报告

    我正在尝试解密销售合作伙伴 api 报告 但在解密时我在 decipher final 附近收到此错误 Node Error error 0606506D digital envelope routines EVP DecryptFinal
  • Android 自定义字体 - 适用于 Actionbar、Toast、Dialogs 等系统组件

    我正在开发翻译成不支持的语言的应用程序 设备上缺少字体 因此 我向应用程序添加了字体 并更改了所有 TextView EditText 按钮的字体 我还可以更改 WebView 中的字体 但现在我需要更改所有系统组件的字体 操作栏 标题下拉
  • java 如何让定时器返回时间

    一旦我开始运行计时器 如何让它返回已经过去了多长时间 这个定时器可以设置可见吗 作为第二个参数传递给 Timer 构造函数的对象实现了 ActionListener 通过该接口 它会在计时器发出的每个警报时接收对其 actionPerfor
  • 使用 Python“请求”模块进行代理

    只是一个关于优秀的简短而简单的介绍RequestsPython 的模块 我似乎无法在文档中找到变量 代理 应包含的内容 当我向它发送一个带有标准 IP PORT 值的字典时 它拒绝了它要求的 2 个值 所以 我猜 因为这似乎没有在文档中涵盖
  • gprof 的时间采样问题

    我正在尝试使用 gprof 分析一些用 g 编译的 C 代码 包括选项 pg 然而 尽管该程序在我的计算机上运行需要 10 15 分钟 CPU 已满 但 gprof 生成的表中的 time cumulative Seconds 和 self
  • JQuery - 替换悬停时的图像

    我有一个图像文件夹 在这个文件夹中 我有两种类型的几张图像 一png和一个gif 显示的图像是png版本 在图像悬停时 我需要将其替换为它的gif版本 当悬停消失时 将png版本回到原位 我目前有以下有效的方法 image containe
  • 使用 Apps 脚本在 Gmail 中嵌入 Google 表单

    我正在尝试使用 Apps 脚本在电子邮件中嵌入预填写的表单 这些电子邮件只会发送给 Gmail 用户 我想要的功能与手动通过电子邮件发送表单时按 在电子邮件中包含表单 选项相同 我已经成功创建了prefilledUrl并使用UrlFetch
  • 将字符串格式转换为日期时间(mm/dd/yyyy)

    我必须将 mm dd yyyy 格式的字符串转换为日期时间变量 但它应保留 mm dd yyyy 格式 string strDate DateTime Now ToString MM dd yyyy 请帮忙 您正在寻找DateTime Pa
  • 递归clearInterval不起作用

    我在 javaScript 中有以下函数 当我检测到需要重新加载样式表时调用此函数 例如 用户语言发生变化 因此文本将不再适合按钮 问题是 它卡在了 setInterval 部分 无限地循环进入其中 我可以在 chrome 调试器中看到它确
  • 如何将镜头效果应用到我的 UIImage 上?

    我如何将镜头效果应用到我的 UIImage 上 如下所示http processing org learning topics lens html 您可以使用Cocos2D框架来做到这一点 如果您选择使用它 可以通过以下方法轻松应用镜头效果
  • to_sql 不适用于 update_attributes 或 .save

    我正在寻找一种方法来存储在更新或创建操作中生成的 sql 字符串 我尝试过附加 to sql到最后update attributes但它返回一个TrueClass错误 或类似的东西 我有什么遗漏的吗 简而言之 您需要重写 ActiveRec
  • 在 SwiftUI 中处理派生状态

    假设我正在创建一个 日期编辑器 视图 目标是 采用默认的种子日期 它允许用户更改输入 如果用户随后选择 他们可以按 保存 在这种情况下 视图的所有者可以决定对数据执行某些操作 这是实现它的一种方法 struct AlarmEditor Vi
  • SQL 中的查询设计实践

    我正在 MS Access 2007 中构建数据库查询 我想知道我当前的设计实践是否达到标准 基本上 数据库在我来之前就已经配置好了 但我被赋予了构建有效查询来提取数据的责任 我当前的查询小而简单 每个查询一次完成 2 3 个任务 有时仅
  • Google OAuth2 - isAccessTokenExpired() 始终为 true

    我在应用程序中使用 OAuth 并且希望在访问令牌过期时注销用户 但是当我检查令牌过期时 client gt isAccessTokenExpired 它总是返回 1 if isset GET logout unset SESSION to
  • 是否可以导出 Google Apps 脚本执行记录

    我编写了一个 Web 应用程序脚本 该脚本被部署为在用户访问 Web 应用程序的上下文中运行 是否可以以编程方式导出 Web Apps 脚本执行脚本 不直接 您不会获得完整的堆栈跟踪 但您可以仔细记录您想要通知的所有内容 在脚本的末尾 您可
  • Excel VBA 将关闭的工作簿作为值复制并粘贴到活动工作簿,Mac OS X

    我知道这是一种常见的查询类型 但在主动搜索后 我尚未找到针对我的特定实例的答案 我也是一个VBA新用户 所以请耐心等待 我想要将包含实时公式 范围 A1 HW6000 的整个数据表 HISTORY XLSM 中的 AllDATA 选项卡 从
  • 如何使用 Watir 访问 Shadow DOM 并与之交互?

    我需要访问此页面 chrome downloads 并检查文件是否已下载 但它是 Shadow DOM 我发现这篇文章如何使用 Selenium Webdriver 访问 DOM 元素 http jeremysklarsky github
  • HTML - 如何制作“阅读更多”按钮

    在我的网站上 我有我的博客 我希望每张卡片都有一个 阅读更多 按钮 我特别希望它只显示x折叠时显示单词 非字符 然后展开时显示整个文本 我不想有一个按钮可以转到另一个具有完整内容的页面 因为我正在使用自己构建的 CMS 它会自动从表单添加帖
  • 将鼠标悬停在 Raphaeljs 中的一组元素上

    我有一个只包含一个矩形的集合 var hoverTrigger this paper set var outline this paper rect outline attr hoverTrigger push outline this s