【问题标题】:How to make canvas invisible to eye but not to mousemove event?如何使画布对眼睛不可见但对 mousemove 事件不可见?
【发布时间】:2017-10-24 05:09:12
【问题描述】:

我在画布中有一些彩色线条,我使用mousemove 事件扫描这些线条,该事件返回线条的十六进制颜色代码。 无论如何我可以使这个画布对眼睛不可见,但是当指针越过画布时,仍然返回正确的颜色代码?

我尝试将上下文的globalAlpha 设置为透明或接近透明(0、0.1...),following fiddle 中的结果参差不齐:

  • 在 Firefox 中,由于透明度,收集的十六进制会返回改变的颜色,
  • 在 Chrome 中,无论透明度如何,它都会返回正确的颜色(这实际上是我想要的行为)。

奇怪的是,在我的原始代码中,即使在 Chrome 中,带有globalAlpha=0 的画布行也不再返回其原始颜色。

谁能解释一下 globalAlpha 的预期行为是什么?更重要的是,是否有另一种方法可以使画布对眼睛不可见,但仍然允许通过鼠标事件收集颜色?任何帮助表示赞赏!

【问题讨论】:

    标签: javascript html canvas mouseevent


    【解决方案1】:

    将 CSS 属性 opacity 设置为 0

    当您将属性应用到您的画布时,例如

    #examplecanvas {
      opacity: 0;
    }
    

    它会从屏幕上消失,但当您将鼠标悬停在它上面(或单击它)时仍会检测到颜色。

    【讨论】:

    • 这正是我所需要的,非常感谢!我在代码中将 CSS 不透明度设置为画布类时遇到了一些冲突(可能被父级或其他东西覆盖?),但使用您建议的 ID 效果很好。再次感谢:)
    猜你喜欢
    • 2011-02-07
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 2012-01-04
    • 2013-09-03
    相关资源
    最近更新 更多