【问题标题】:Making a foreground image transparent within a radius around the cursor使光标周围半径内的前景图像透明
【发布时间】:2012-06-29 16:31:29
【问题描述】:

我们有一个需要实现的设计,其概念是用户将手电筒照射到物体上,手电筒光束(光标周围的圆圈)内的任何东西都应该显示背景图像而不是前景图像。

我正在寻找有关如何使用 jQuery 和 HTML5 技术实现理想的建议。我很确定我们可以使用 Flash 实现这一目标,但我们希望它对 iOS 友好。

【问题讨论】:

标签: jquery html transparency html5-canvas


【解决方案1】:

您可以使用两个 html 画布。

前景是一个 z-index 比背景高的画布,它们都是 position:absolute 并被容器元素包含。

然后您会找到以鼠标为中心的圆圈的位置(请参阅参考资料)

您可以通过使用鼠标移动事件并从鼠标的位置减去圆圈的一半高度和宽度以使其以鼠标为中心来获得它的位置。

然后您可以操作画布上与圆具有相同坐标的像素,使其 alpha 值为 0(如果您不希望它完全透明,则为 0 和 1 之间的数字)

希望这能充分解释清楚。随意问任何问题。不过,我不会只分发代码,因为这不是这个论坛的真正意义。

资源:

基础知识: http://www.html5canvastutorials.com/tutorials/html5-canvas-tutorials-introduction/

获取圆的坐标: Calculate circle coordinates in a sequential fashion

操作像素: http://tutorials.jenkov.com/html5-canvas/pixels.html

【讨论】:

  • 就主要浏览器支持而言,这是否适用于除 IE8 及更早版本之外的所有浏览器?
【解决方案2】:

我会建议像这样jsfiddle 覆盖背景而不是使用蒙版。我用了一个基本的 png 来模拟你的手电筒,你应该使用更好的图像

提防 jsfiddle 性能缓慢,但在其他地方应该会好得多

更新:更新 jsfiddle 链接以修复错误

【讨论】:

  • 感谢您的回答!问题是前景图像似乎需要移动才能完成这项工作。我们需要背景和前景图像保持静止,光标区域显示背景图像。
  • 静态有什么特殊要求吗?顺便说一句,您希望光标具有这种行为,并且您还说 iOS 设备需要这种行为。你打算如何在 iOS 上使用光标?
  • 设计要求图像是静态的。手电筒就像 X 光片,可以揭示下面的东西。在 iOS 点的光标上,这是一个非常好的点……用手指拖动你不能照亮手指周围,因为他们的手指会在你正在显示的东西上。所以我们必须在发光圆圈的右下角拖动手指,并提供某种提示,以便他们知道尝试拖动手指。
  • 我不是移动浏览器的 html 导出工具,但即使使用手指拖动,iOS 的行为也像滚动,而不是鼠标移动。不知道你打算如何克服这个
猜你喜欢
  • 2015-10-15
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多