混合使用canvas API和HTML/CSS模型

本文将对传统 HTML 模型和 canvas API 的优点进行比较,探索一个将两种模型的优点集于一身的混合 HTML/Canvas 应用程序,还将了解一些在 canvas 元素上添加 HTML 元素的不同技巧。

本系列文章共两部分,在第 1 部分中,将创建将 canvas API 和 HTML/CSS 两种模型的优点结合在一起的应用程序。canvas API 是要求高性能、低负荷图形的 Web 应用程序的理想选择。然而,如果仅仅围绕 canvas 设计整个应用程序而忽略传统 HTML/CSS 模型的优点则不免短视。与其想当然,不如学习一些在 HTML/CSS 中非常有用但在 canvas 中难以或无法实现的功能。

本文将采用一种 “混合” 方法来设计应用程序,使之能够同时利用传统的 HTML 组件和 canvas 元素。本文稍后将讨论采用这种方法的目的,包括为什么完全基于 canvas 的实现不够理想,并讨论传统 HTML 模型与 canvas API 相比的优点和缺点。一些示例还帮助您在设计应用程序时规划 HTML 和 canvas 元素的布局和交互。

HTML 和 CSS 模型的优点

在一些场景中,使用 HTML 和 CSS 的传统 web 模型更具优势。本节将探讨 HTML 模型的最有用的优点,该模型在 canvas API 中并没有受到很好的支持,或者根本不受支持,特别是其健壮的文本支持和与语义 HTML 标记有关的优点。

HTML 的健壮文本支持

HTML 的一个强项就是它能够轻松地利用样式符号对文本添加注解,包括 <b></b> 之类的格式化标记和 font-weight:bold 等 CSS 规则。

另一方面,canvas API 公开了 fillText() 方法,将文本字符串呈现为一个位图。这是一种简单、低级的调用,但是有诸多限制。最大的限制之一就是只能对提供给 fillText() 的文本字符串应用一种统一的样式规则。这里所说的 “样式规则” 可以看作是一个用于设置字体、大小、颜色等的规则(类似 CSS 规则)。

采用统一样式的文本

考虑图 1 中的文本。

图 1. 样式文本

由于文本包含一个统一的样式规则(红色、斜体和宋体字),您使用 HTML/CSS 或 canvas 都能够很好地显示这一文本。

清单 1 和清单 2 中的代码比较了如何使用 HTML 和 CSS 以及 canvas 呈现这个文本。

清单 1 显示了使用 HTML 和 CSS 呈现的图 1 中的文本。

清单 1. 在 HTML 和 CSS 中使用统一样式呈现文本

<style> .uniform-style { font: italic 12px Arial; color: red; } </style><span class="uniform-style"> Variety is the spice of life!</span>

清单 2 展示了使用 canvas 呈现的同一文本。

清单 2. 在 canvas 中使用统一样式呈现文本

var canvas = document.getElementById('my_canvas');var context = canvas.get">Context('2d');context.font = 'italic 12px Arial';context.fillStyle = 'red';context.fillText('Variety is the spice of life!', 0, 50);

采用动态样式的文本

考虑图 2 中的文本。

图 2. 采用动态样式的文本

清单 3 给出了呈现文本所需的 CSS 规则。

清单 3. 在 HTML 和 CSS 中使用动态规则呈现文本

<style> .dynamic-style { font: 12px Arial; color: blue; } .dynamic-style strong { font-size : 18px; color: green; } .dynamic-style em { color: red; font-weight: bold; font-style: italic; } </style><span class="dynamic-style"> <strong>Variety</strong> is the <em>spice of life</em>!</span>

时间: 2024-11-02 08:13:29

混合使用canvas API和HTML/CSS模型的相关文章

使用HTML标记来补充canvas(一)混合使用canvas API和HTML/CSS 模型

简介 本系列文章共两部分,在第 1 部分中,将创建将 canvas API 和 HTML/CSS 两种模型的优点 结合在一起的应用程序.canvas API 是要求高性能.低负荷图形的 Web 应用程序的理想选择.然而,如果仅 仅围绕 canvas 设计整个应用程序而忽略传统 HTML/CSS 模型的优点则不免短视.与其想当然,不如学习一些 在 HTML/CSS 中非常有用但在 canvas 中难以或无法实现的功能. 常用缩略词 API:应用程序编程接口 CSS:级联样式表 HTML:超文本标记

HTML5 Canvas API详解

HTML5 是一个新兴标准,它正在以越来越快的速度替代久经考验的 HTML4.HTML5 是一个 W3C "工作草案" - 意味着它仍然处于开发阶段 - 它包含丰富的元素和属性,它们都支持现行的 HTML 4.01 版本规范.它还引入了几个新元素和属性,它们适用许多使用 web 页面的领域 - 音频.视频.图形.数据存储.内容呈现,等等.本文主要关注图形方面的增强:canvas. 新的 HTML5 canvas 是一个原生 HTML 绘图簿,用于 JavaScript 代码,不使用第三

ASP.NET 2.0 中配合 Master Page 使用的优化 CSS 模型

asp.net|css|优化 ASP.NET 2.0 中增加了内建的 MasterPage 的支持,这对我们来说是一个很大的便利.然而经过一段时间的使用,我发现 MasterPage 并不是那么完美:嵌套的 MasterPage 不能支持设计时界面,以及下面要提到的Content Page 中增加 CSS 的问题. 通常,在没有 2.0 之前,我们在页面里要增加一个 CSS 引用的语法如下: <link rel="stylesheet" href="css/test.c

ASP.NET 2.0 中配合Master Page使用的优化CSS模型

asp.net|css|优化 ASP.NET 2.0 中增加了内建的 MasterPage 的支持,这对我们来说是一个很大的便利.然而经过一段时间的使用,我发现 MasterPage 并不是那么完美:嵌套的 MasterPage 不能支持设计时界面,以及下面要提到的Content Page 中增加 CSS 的问题. 通常,在没有 2.0 之前,我们在页面里要增加一个 CSS 引用的语法如下: <link rel="stylesheet" href="css/test.c

微信小程序把玩(四十一)canvas API

原文:微信小程序把玩(四十一)canvas API 绘图是每个移动应用必备的技术,基本上和Android,IOS,等移动开发都是相同的,创建个上下文,给你个画布再上画,官网给的小例子都比较全了自己去看吧,drawImage时没有反应不知道是BUG还是电脑不能测试待定,http://wxopen.notedown.cn/api/api-canvas.html 屏幕就像是数学上的坐标轴,且在第四象限,以屏幕左上角为圆点,X轴向右为正向左为负,Y轴向下为正向上为负(这点和数学上相反的)以圆点为基点画个

访问XML数据的三中基于树模型||基于游标||流式API比较

xml|比较|访问|数据|游标 无处不在的 XML 除了可以表示结构化和半结构化的数据之外,XML 还有许多其他特性,使其成为一种被广泛采用的数据表示格式.XML 是可扩展的,与平台无关的,并且由于其完全采用 Unicode 而支持国际化.XML 是基于文本的格式,因此,用户可以根据需要使用标准的文本编辑工具读取和编辑 XML 文档. XML 的可扩展性表现在多个方面.首先,与 HTML 不同,XML 没有固定的词汇表.相反,用户可以使用 XML 定义特定的应用程序或行业专用的词汇表.其次,与使

API业务模型:如何通过API获取回报

John Musser深谙API之道,作为Programmable Web的创始人,他见证了数以千 计的API和众多业务模型.最近,John在2013 API战略大会上的主题演讲中分享了 他得经验. John最常遇到的问题是"你如何用它赚钱?"其实,这个问题的答 案,取决于有关"为什么"的反问--"为什么你想 要拥有一套API?"人们有许多想要拥有API的理由,而这引出了John在演讲 中披露的第一条API秘诀,"API战略并不是API

HTML 5 &amp; CSS 3的新交互特性

本文标题的这副图片,是用Phosotshop制作的.但是,在搜索引擎中你却无法搜索到它,搜索引擎还没有强大到能够识别图片里面的文字.并且由于图片的体积不算太小,可能网速慢的网友在浏览的时候不得不耐心的等待图片的刷新.那么,有没有一种新的方法可以避免这些缺点呢? 有的,HTML5和CSS3就可以满足你的需求.甚至,它可以做的更多,更好.作为一名设计师,我们应当了解它们是什么东西,有什么特性,从而进一步思考通过HTML5和CSS3我们能做些什么. 什么是HTML5和CSS3 HTML和CSS并不难理

js canvas实现擦除动画_javascript技巧

本文实例为大家分享了canvas擦除动画的实现原理.实现代码.以及在实现过程中遇到的问题,供大家参考,具体内容如下 原理总结为就是在移动设备上将某张图片擦掉显示另一张图片,利用canvas来实现. 如果是用户手动擦除,则需要监听touchmove,touchend等事件,并计算相应的坐标,利用canvas的clearRect或rect 画弧线或画线来实现.但是这会造成在androd手机上存在卡顿的现象. canvas有个globalCompositeOperation属性,这个属性的默认值是so