canvas教程

使用 HTML 标记来补充 canvas,第 1 部分 : 混合使用 canvas API 和 HTML/CSS 模型(4)

字号+ 作者:H5之家 来源:H5之家 2015-10-15 15:00 我要评论( )

通过合理地设置 pointer-events CSS 属性,可以配置特定的 HTML 元素来忽略用户输入,如清单 9 所示。将 pointer-events 设置为 none 会使元素忽略所有通常与用户输入有关的行为,div 中的所有文本、超链接和表单元

通过合理地设置 pointer-events CSS 属性,可以配置特定的 HTML 元素来忽略用户输入,如清单 9 所示。将 pointer-events 设置为 none 会使元素忽略所有通常与用户输入有关的行为,<div> 中的所有文本、超链接和表单元素都将变得无法选择,实际上就是处于不可用状态。

清单 9. 设置 pointer-events 属性的 CSS

div.user-interface { position: absolute; z-index: 100; top: 50px; left: 50px; pointer-events:none; }

输入事件将转移到下一层,其中 <canvas> 元素可以捕获到该事件。例如,<canvas> 元素中可能包含一个事件侦听器,可以捕捉鼠标移动事件。

除 Internet Explorer 以外的所有浏览器都支持 pointer-event 的属性(可以采用一些变通方法来在 Internet Explorer 中模拟类似的行为)。

使用一个输入表面 (input surface) 在 canvas 上进行分层

另一种捕捉用户输入的方法类似于前面的方法,但是不需要使用 pointer-events:none CSS 属性。在这种方法中,将在 canvas 和 HTML UI 元素之上添加额外的一层,这个层专门用于捕捉用户输入。

这种方法适合那些 HTML 元素仅用于显示目的场景。与 HTML 界面元素之间没有任何互动,因为输入表面会在事件到达底层元素之前全部捕捉它们。图 9 给出了一个示例。

图 9. 使用额外的输入表面在 canvas 上对 HTML 元素分层

背面是一个 canvas 方块,中间有三个 html 方块,最上面有一个 html 方块,所有方块通过虚线连接

您可以通过创建一个使用绝对位置的 <div> 来实现输入表面,使用与 canvas 相同的宽度和高度。将 <div> 保留为空,这将实现一个透明的层,其目的就是捕捉用户输入。

要捕捉用户输入,只需要将所有元素侦听器附加到该 <div>。由于它位于最顶层,所有用户输入都将被该元素而不是底层元素捕获。

后续步骤

本系列第 2 部分将进一步展开本文谈到的概念,并通过一个例子展示如何实现一个混合的 canvas/HTML 应用程序。您将逐步了解如何在 canvas 游戏的顶部添加一个基本的 HTML UI,以及如何在 canvas 中创建一个 UI 元素。第 2 部分还将讨论实现动画和文本呈现需要考虑的问题,并解释如何利用 HTML 和 canvas 的优点。

图 10 演示了第 2 部分中的样例游戏概念。

图 10. 结合了 HTML 和 Canvas 元素的样例应用程序

顶部包含两个方框和一个玩家照片的屏幕。

结束语

在本文中,您了解了 HTML 模型与 canvas API 相比的优缺点,构建混合 canvas/HTML 应用程序的理由,以及各种对 HTML 和 canvas 元素分层的方法。

接下来,您应当考虑如何选择一种架构来最佳地利用 HTML 和 canvas 的长处,敬请期待本系列第 2 部分,您将获得一些新的技能来实现一个太空射击游戏。

下载

描述名字大小

文章源代码canvashtmlpt1sourcecode.zip2KB

参考资料 学习

  • 工作示例:查看本文的例子,包括 设置一系列 CSS 规则 以在 HTML 中显示文本。
  • “使用 HTML5 canvas 绘制精美的图形”(developerWorks,2011 年 2 月):了解如何使用 canvas 增强您的网页,一个简单的 HTML5 元素就能搞定。
  • HTML5 Canvas:观看该演示,它展示了 canvas API 的使用以及如何制作一个非常简单的动画。
  • “HTML5 基础知识,第 4 部分:最后的完善 - Canvas”(developerWorks,2011 年 7 月):进一步了解 HTML5 和 HTML5 canvas 元素中的变化。
  • Canvas Pixel Manipulation:观看 Safari Dev Center 提供的此演示文档,了解如何管理 canvas 来开发有效的视觉资产。
  • WHATWG:了解这个开发人员社区,主要使用 W3C 对 HTML5 进行调优。
  • Canvas 教程:阅读 Mozilla 开发人员提供的教程,了解如何在您的 HTML 页面中实现 canvas 元素。
  • HTML5 Canvas 资源:在 W3Schools.com 提供的参考中进行实践,巩固您的 canvas 知识。
  • jQuery Events API:了解更多用于注册行为的方法,在用户与浏览器交互时让这些行为生效。
  • developerWorks Web 开发专区:提供了涵盖各种基于 Web 的解决方案的文章。查看 Web 开发技术库,获得广泛的技术文章和技巧、教程、标准和 IBM 红皮书。
  • developerWorks 技术活动和网络广播:了解各种 IBM 产品和 IT 行业主题。
  • developerWorks 点播演示:包括面向初学者的产品安装和设置演示,以及为经验丰富的开发人员提供的高级功能。
  • Twitter 上的 developerWorks:立刻加入并关注 developerWorks 推文。
  • 获得产品和技术
  • jQuery:获得流行的 JavaScript Library,它简化了 HTML 文档传输、事件处理、动画效果和 Ajax 交互,加快了 Web 开发。
  • Modernizr:下载这个开源的 JavaScript 库,它可以帮助您构建下一代由 HTML5 和 CSS3 驱动的网站。
  • IBM 产品评估版:下载或 在线试用 IBM SOA 沙盒,并开始使用来自 DB2、Lotus、Rational、Tivoli 和 WebSphere 的应用程序开发工具和中间件产品。
  • 讨论
  • 加入 developerWorks 社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户进行交流。
  • 寻找其他 对 Web 开发感兴趣的 developerWorks 成员。
  • 条评论

    developerWorks: 登录

    标有星(*)号的字段是必填字段。

    在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

    所有提交的信息确保安全。

    选择您的昵称

    当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

    昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

    标有星(*)号的字段是必填字段。

    所有提交的信息确保安全。

  • IBM Bluemix 资源中心

     

  • 1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • html5canvas核心技术图形、动画与游戏开发源码

      html5canvas核心技术图形、动画与游戏开发源码

      2017-05-02 17:42

    • 打印html5中Canvas的方法

      打印html5中Canvas的方法

      2017-05-01 15:03

    • HTML5+Canvas调用手机拍照功能实现图片上传(下)

      HTML5+Canvas调用手机拍照功能实现图片上传(下)

      2017-04-30 17:00

    • HTML5新特性详解(三)

      HTML5新特性详解(三)

      2017-04-30 16:03

    网友点评