HTML5 4

复习:

HTML5新特性:

1.新的语义标签和属性

2.表单2.0

3.视频和音频

4.Canvas绘图

5.SVG绘图

6.地理定位

7.拖放API

8.WebWorker

9.WebStorage

10.WebSocket

Canvas绘图使用方法:

<canvas id="c" width="" height=""></canvas>

var ctx = c.getContext(‘2d‘);

//绘制矩形

ctx.fillRect()  ctx.strokeRect()  ctx.clearRect()

//绘制文本

ctx.fillText()  ctx.strokeText()  ctx.measureText()

//绘制路径

ctx.beginPath()  ctx.closePath()

ctx.moveTo()  ctx.lineTo()  ctx.arc()

ctx.stroke()  ctx.fill()   ctx.clip()

//绘制图像

ctx.drawImage()

//图形图像变形

ctx.translate()   ctx.rotate()   ctx.scale()

ctx.save()   ctx.restore()

今日目标:

(1)补充:Canvas小知识点

(2)SVG绘图技术 —— 重点

(3)第三方2D绘图工具 —— Two.js —— 了解

1.如何等待所有图片加载完成后,才开始绘图?

多张图片绘制需要按照特定的顺序,而加载完成顺序是完全无法预测,只能等待所有图片加载完成,才能开始绘制。

/***************************

//典型的错误代码

var img1 = new Image();

img1.src = "";

img1.onload = function(){

ctx.drawImage(img1, x, y);

}

var img2 = new Image();

img2.src = "";

img2.onload = function(){

ctx.drawImage(img2, x, y);

}

******************************/

var progress = 0;    //加载进度 0~100

var img1 = new Image();

img1.src = "";

img1.onload = function(){

progress += 80;

if(progress===100){

startDraw();

}

}

var img2 = new Image();

img2.src = "";

img2.onload = function(){

progress += 20;

if(progress===100){

startDraw();

}

}

2.如何为Canvas上的图形/图像绑定事件监听?——难点

网页只能为DOM元素绑定监听函数,Canvas绘图技术中只要一个Canvas元素,其它图形图像都不是元素——无法进行事件绑定!——

解决办法:为Canvas绑定监听函数,获取事件发生的坐标,是否处于目标图形/图像所在范围内——只能为规则的图形“绑定”监听


Adobe Photoshop:处理位图——每幅图像由点(rgb)组成,善于描述颜色的细节变化,可用于照片等领域——放大后会出现马赛克失真。

Adobe Illustrator:处理矢量图——每幅图像由线条(需要指定方向、值),可以无限缩放而不失真——不善于描述颜色的细节变化。

3.HTML5新特性之五——SVG绘图


 


Canvas绘图


SVG绘图


绘图类型


位图


矢量图


缩放


失真


不失真


颜色细节


丰富


不够丰富


应用领域


照片、游戏


统计图、图标、地图


内容


JS绘制


每个图形都是标签


事件绑定


不方便


方便

Scalable Vector Graphiph,可缩放的矢量图,此技术在2000年就已经存在了,独立于网页的一门技术;HTML5之后,纳入了HTML5标准标签库,并进行了一定的瘦身。

SVG技术的使用方法:

(1)HTML5之前的使用方法:

SVG标签不属于HTML4或XHTML标签,只能编写在独立的XML文件中,首先编写一个SVG文件(本质是一个XML文件),然后在HTML中使用IMG/IFRAME/OBJECT/EMBED等标签引入.svg文件

(2)HTML5之后的使用方法——H5已经把SVG标签采纳:

在HTML文件中直接使用SVG相关标签即可

<svg>默认为300*150的inline-block</svg>

练习:

(1)使用SVG矩形绘制一个国际象棋的棋盘——使用HTML中的rect标签

(2)使用SVG矩形绘制一个国际象棋的棋盘——使用JS动态创建rect标签

4.使用SVG绘制矩形

<rect width="" height="" x="" y="" fill="" fill-opacity="" stroke="" stroke-width="" stroke-opacity=""></rect>

注意:

(1)SVG图形的样式可以用HTML属性赋值,也可以使用CSS形式,但不接受普通的CSS属性!只能使用SVG元素的专有样式属性。

(2)SVG图形的属性不属于HTMLDOM标准,只能使用核心DOM方法操作其属性: rect.setAttribute(‘‘,‘‘)

(3)使用JS动态创建SVG元素,1)用svg.innerHTML =‘‘ 2)用document.createElementNS(‘‘, ‘‘),不能使用document.createElement()

(4)SVG元素的nodeName都是纯小写形式!与普通的HTML元素不同!

练习:

(1)在SVG画布上绘制一个矩形,从左移动到右,同时填充颜色还在不停的随机改变

(2)根据如下的JSON数据,绘制柱状统计图——有坑!!

[

{"label": "1月", "value": 350},

{"label": "2月", "value": 300},

{"label": "3月", "value": 450},

{"label": "4月", "value": 380}

]

5.使用SVG绘制圆形

<circle r="" cx="" cy=""></circle>

练习:

(1)创建30个大小随机、颜色随机、透明度随机的圆形

提示:使用createElementNS()创建元素,setAttribute()修改属性

(2)点击某个圆形,其慢慢变大、变淡...... 直至消失,从DOM树上删除该元素

(3)实现“蜻蜓点水”效果,点击svg画布的某处,即在此处生成一个圆形,立即变大、变淡...直至消失

6.使用SVG绘制椭圆

<ellipse rx="" ry="" cx="" cy=""></ellipse>

7.使用SVG绘制直线

<line x1="" y1="" x2="" y2="" stroke=""></line>

注意:所有的SVG图形默认只有填充色,没有描边色。

练习:使用line创建如下的图标:

提示:可以把多个元素放在一个<g></g>小组中,可以自动继承小组的公共属性

8.使用SVG绘制折线

<polyline points="x1,y1  x2,y2  x3,y3  ....."  stroke="" fill-opacity="0"></polyline>

练习:使用折线绘制如下的图标

9.使用SVG绘制多边形                  17:25

<polygon points="x1,y1  x2,y2  ...."></polygon>

练习:使用多边形绘制如下的图标:

10.使用SVG绘制文本

提示:传统的标签不能置于SVG内部!同理,SVG的标签也不能放在其它元素内部!

<text x="" y="" font-size="" alignment-baseline="before-edge">文本内容</text>

11 .使用SVG绘制图像

提示:在SVG中绘制图像使用image元素,引入位图后,此SVG图片放大后会失真。

<image width="" height="" xlink:href="x.jpg" x="" y=""></image>

12.如何使用渐变效果

<svg width="600" height="400" id="svg15">

<!--渐变属于特效,必须声明在“特效列表”-->

 <defs>

<linearGradient id="g1" x1="0" y1="0" x2="100%" y2="0">

<stop offset="0" stop-color="#f00"></stop>

<stop offset="100%" stop-color="#0f0"></stop>

</linearGradient>

</defs>

<rect fill="url(#g1)"></rect>

</svg>

课后练习:

1)     假设前端页面获取到后台返回了如下的JSON数据:

‘[{"label":"HTML",value:3}, {"label":"CSS",value:5},....]‘

根据这段JSON字符串,绘制下图:

3)自学two.js工具的使用,理解其作用,仿写官方示例代码,学会使用方法,实现如下效果,月亮绕着地球转,地球绕着太阳转:

时间: 2024-10-07 15:50:18

HTML5 4的相关文章

HTML5新增Canvas标签及对应属性、API详解(基础一)

知识说明: HTML5新增的canvas标签,通过创建画布,在画布上创建任何想要的形状,下面将canvas的API以及属性做一个整理,并且附上时钟的示例,便于后期复习学习!Fighting! 一.标签原型 <canvas width=”1000” height=”1000” id=”myCanvas”> 您的浏览器版本过低,不支持HTML5新增的canvas标签. </canvas> 使用js获取该画布,并指定对象 <script> Var canvasID = doc

HTML5介绍

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. HTML5没有那么难,他是一个非常简单的标记. 三个知识点:THML5/JS/CSS3. 之后是网页框架 C/S 客户端/服务器 B/S 浏览器/服务器 C/S构架的优缺点: C/S架构的模型: C/S架构一旦发生更新,那么成千上万个客户机都要进行更新,如果更新内容比较多,客户机不更新完毕,就无法运行. B/S架构工作原理: B/S架构优缺点: 移动公司都是

Web程序员们,你准备好迎接HTML5了吗?

HTML5作为下一代的web开发标准,其特性已经慢慢地出现在主流的浏览器中,这种新的HTML将会让浏览器不必再依赖Flash.QuickTime.Silverlight等插件,也简化了原来需要大量JS才能达到的效果.虽然HTML5还在讨论过程中,但是其优越的特性已经得到了大家的认可,各大浏览器厂商,一些知名的内容发布网站也都是积极地推动, 尤其是即将发布的IE9会完全支持HTML5.作为Web开发人员的我们,需要做的是:如何把HTML5转化为各种Web应用,如何做到现有的Web应用过渡到HTML

了解HTML5大纲算法

实战前的准备工作:了解HTML5大纲算法 在html5中有一个很重要的概念,叫做html5大纲算法(HTML5 Outliner),它的用途为用户提供一份页面的信息结构目录.合理的使用HTML5元素标签,可以生成一个非常清晰的文档大纲. HTML5大纲算法 我们可以通过各种工具去查看当前页面,这里推荐使用一个测试工具:HTML5 Outliner,网址如下:https://gsnedders.html5.org/outliner/ 1. 了解一个 section 和 div 的区别 ①div元素

HTML5 &lt;ruby&gt;注释标签

今天学了HTML5的ruby标签,觉得挺有趣的,来记录一下. ruby可以作注释标签,内部有rp和rt标签. <ruby>  标记定义注释或音标. <rp>    告诉那些不支持ruby元素的浏览器该如何显示. <rt>      标记定义对ruby注释的内容文本. 学完这个标签的第一反应就是,我有方法给那些不会读的日语单词做假名注释啦!!! 代码如下,来给一句日语做个小注释: <!DOCTYPE html> <html lang="en&q

HTML5之新增的元素

今天打开博客看到自己有了一个小粉丝,说实话还是蛮开心的,坚持写博客大半年了,终于迎来了自己的第一个小伙伴.总算是坚持了那么久的事情看到了结果吧. 前几天参加了我们学院老师的比赛---<青年教师大赛的初赛>.我被我们老师拉去做了义工-----计时员.看了所有老师的比赛,虽然都特别好,但是让我印象深刻的还是一个HTMl5+CSS3的课程.看到那种炫酷的效果,我瞬间都被吸引住了.所以忙完了手头上的作业,就从别人那里要到了HTML5的教程,开始了我的学习HTML5之路.虽然看了6节课了,还是没有学到老

java springmvc +spring+ mybaits 模块化开发框架 HTML5+css3.0+bootstrap响应式开发界面

需要源码,请加QQ:858-048-581 系统模块 1.   权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限 角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限. 按钮权限: 给角色分配按钮权限. 2.   按钮管理:自定义按钮管理,维护按钮权限标识等 3.   菜单管理:无限级别自定义菜单,自定义菜单图标,业务菜单和系统菜单分离,菜单状态显示隐藏(递归处理) 4.   数据字典:无限级别,支持多级别无限分类.内设编号,排序等 5.   组织机构:无限级别,

HTML5移动开发中的meta与link

meta HTML5移动开发中的一些webkit专属头部标签,能够帮助浏览器更好的解析HTML代码,从而为HTML5移动开发提供更好的前端表现与体验 viewport网页缩放 1 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" /> UTF-8编码 1

HTML5学习之离线存储

STORAGE(存储) Cookie 在HTML5技术以前我们会使用 cookie,在浏览器端缓存一些数据,例如:登录用户信息,历史搜索信息等等.但是cookie所支持的容量仅仅只有 4k ,也没有专门的api来操作,只能依赖一些开源的库, 这里使用 cookies.js 存储和获取cookie信息 // 这是一个cookie值 Cookies.set('key', 'value'); // 链式调用 Cookies.set('key', 'value').set('hello', 'world

蓝鸥零基础学习HTML5—html+css基础

蓝鸥零基础学习HTML5-html+css基础 一.课程目标 1.了解前端开发职位:2.掌握常用标签以及语义及用法:3.掌握常用css的特性,掌握基础布局技巧:4.掌握整站规划概念. 二.适用人群 零基础积极学习html5者 三.课程简介 本课程主要讲解了 html+css的基础知识,包括html模板.标签.css基础样式.布局.表格表单.整站等等,是进行前端开发的基础.Html+css是前端开发的基础,大部分前端开发工程都需要从html+css布局开始,html+css的基础非常重要,是前端开