HTNL5是2014年10月W3C推出的新标准,引入新的特性并对移动端更加友好.

canvas

<canvas>标签用于标记画布元素, 使用js脚本可以在画布上绘制自定义图形.

绘制矩形;

<canvas id="c1" width=110 height=90></canvas>

<script>
var c = document.getElementById("c1")
var ctx = c.getContext("2d")
ctx.fillStyle="DarkBlue";
ctx.fillRect(0,0,100, 80);
</script>

fillStyle可以是颜色,渐变或者图片url.

绘制线段:

	ctx.moveTo(0,0);
ctx.lineTo(80,80);
ctx.stroke();

moveTo指定起始位置(移动画笔), lineTo指定线段的结束位置, stroke方法进行绘制.

绘制圆弧:

	ctx.beginPath();
ctx.arc(20,20,20,0,2*Math.PI);
ctx.stroke();

arc方法的五个参数为:

  1. 圆心横坐标
  2. 圆心纵坐标
  3. 半径
  4. 起始弧度
  5. 终止弧度

绘制文本:

	ctx.font="Times new rome";
ctx.fillText("Hello World",20,20);
ctx.strokeText("Hello World",20,50);

两种绘制方法,绘制的效果不同,strokeText绘制空心图案.

绘制图形:

img = new Image()
img.src="url(...)"
ctx.drawImage(img, 20, 20)

线性渐变:

var grd=ctx.createLinearGradient(0,0,200,0);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");

createLinearGradient的四个参数指定起点和终点的坐标.

addColorStop()用于描述颜色参照点, 第一个参数为0~1之间的数指定位置.

径向渐变:

var grd=ctx.createRadialGradient(75,50,5,90,60,100);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");

createRadialGradient的参数分别为起点圆的圆心坐标,半径和终点圆的圆心坐标,半径.

使用渐变填充:

ctx.fillStyle=grd;
ctx.fillRect(0,0,100, 80);

多媒体

HTML5标签提供了<video>标签来提供视频播放和播放控制功能:

<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
<source src="movie.webm" type="video/webm">
您的浏览器不支持 HTML5/video
</video>

目前<video>支持MP4, OGG和WebM格式.

video下可以有多个source元素, 浏览器会按照顺序尝试加载.

video标签的controls标记, 会自动在播放窗口上添加播放和音量控制组件.

当然也可以通过DOM来操作video, 调用play()pause()方法控制播放暂停, 并通过paused属性检查状态.

<audio>用法与<video>基本相同:

<audio controls>
<source src="music.mp3" type="audio/mpeg">
<source src="music.wav" type="audio/wav">
<source src="music.ogg" type="audio/ogg">
您的浏览器不支持 HTML5/audio
</audio>

<audio>支持的类型有:

  • mp3

  • wav

  • ogg

WebSocket

传统的HTTP协议为请求-响应模式, 服务器难以主动向浏览器发送数据.这对开发交互式应用(如聊天,棋牌游戏)十分不便.

WebSocket是基于Http的双向通信协议, 它的接口类似Socket可以方便的开发交互应用.

创建WebSocket对象:

var ws = new WebSocket("ws://echo.websocket.org/");

WebSocket使用的协议为"ws", 上面这个服务端将会返回浏览器向其发送的字符串.

完成回调函数:

	ws.onopen = function() {
msg = 'Hi There';
ws.send(msg);
showMsg("send:" + msg);
}; ws.onmessage = function(event) {
showMsg("recv:" + event.data)
}; ws.onclose = function() {
showMsg("bye bye~")
};

完整源码参见websocket demo

拥抱HTML5的更多相关文章

  1. 拥抱HTML5 — Page Visibility(页面可见性) API介绍

    H5 提供了很多简单实用的 API,Page Visibility API 就是其中之一. 不知道用户是不是在与页面交互,这是困扰广大 Web 开发人员的一个主要问题.如果 页面最小化了 或者 隐藏在 ...

  2. 拥抱 HTML5:storage 简介以及使用方法

    前言 storage 其实是个很简单的东西,基本上只要知道 javascript 中对象的概念,然后读完此文,storage 的用法也就了然于胸了. 简单来说,你可以把 storage 想象成是储存在 ...

  3. 吓哭原生App的HTML5离线存储技术,却出乎意料的容易!【低调转载】

    吓哭原生App的HTML5离线存储技术,却出乎意料的容易![WeX5低调转载] 2015-11-16 lakb248 起步软件 近几天,WeX5小编编跟部分移动应用从业人士聊了聊,很多已经准备好全面拥 ...

  4. html5的发展历程和由此引起的政治斗争

    2007年,乔布斯断言拒绝Flash并预言HTML5时代来临,IT行业就对HTML5产生了一股宗教热情.HTML5有着许多出众的特性,可以直接在网页上绘图.嵌入音视频.实现信息互动,可以跨越iOS.A ...

  5. HTML5定稿一周年,你必须要重新认识HTML5了

    原文网址链接:http://www.csdn.net/article/2015-11-24/2826317 去年此时,W3C定稿了HTML5.我曾发表一篇文章<HTML 5终于定稿,为什么原生A ...

  6. 二十八个 HTML5 特性与技巧

    1. New Doctype  你还在使用令人讨厌的难记的XHTML文档类型声明吗?<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans ...

  7. HTML5面试题-备

    万不可投机取巧.只求当时过关,非长久之计也!(感谢大神分享) 面试有几点需要注意: 面试题目: 根据你的等级和职位变化,入门级到专家级:范围↑.深度↑.方向↑. 题目类型: 技术视野.项目细节.理论知 ...

  8. HTML5之美

    如今大热的HTML5到底美在哪里?HTML5到底能为实际的移动开发带来哪些改变?来自阿里云云手机服务运营部的前端开发工程师正邪 (廖健)分享了他眼中的HTML5之美,主要讲诉HTML5的常见原理并从C ...

  9. html5/css3常考面试题

    一.HTML5 CSS3 CSS3有哪些新特性? 1. CSS3实现圆角(border-radius),阴影(box-shadow), 2. 对文字加特效(text-shadow.),线性渐变(gra ...

随机推荐

  1. 8.正则表达式和XPath

    1.使用正则表达式爬取内涵段子 import requests import re def loadPage(page): url = "http://www.neihan8.com/art ...

  2. 安卓读写INI文件 安卓读写INI文件

    安卓读写INI文件   安卓读写INI文件 uses System.IoUtils procedure TForm1.Button1Click(Sender: TObject);varIniFile: ...

  3. 解决XCode7.1 上无法安装 Alcatraz PackageManager

    补记: 升级XCode后都会出现这样的问题,各版本解决方案相同 有时还需要先删除原插件 rm -rf ~/Library/Application\ Support/Developer/Shared/X ...

  4. oracle查询语句查询增加一列内容

    select a,sys_guid() as b from mytable sys_guid() 是生成带分隔符(-)的GUID的自定义函数 查询B表的内容插入A表,MY_ID是A表的主键不可为空,因 ...

  5. ContentControl as CC和ContentPresenter as CP的使用

    1.CC为文本控件的父类,它继承为control,所以他是控件, 2.CP继承FrameworkElement,所以他是容器,相当于占位符 3.想让控件中能包含子控件就需要用CP,反之用CC就行.(不 ...

  6. 关于ubuntu软件卸载的问题

    ...... 起因很菜....就是手贱把/usr/lib/下的R的目录给rm -rf掉了, 然后在R的软件包里用./configure也生不成, R RHOME还在, 然而因为lib下的R删掉了所以R ...

  7. PICE(1):Programming In Clustered Environment - 集群环境内编程模式

    首先声明:标题上的所谓编程模式是我个人考虑在集群环境下跨节点(jvm)的流程控制编程模式,纯粹按实际需要构想,没什么理论支持.在5月份的深圳scala meetup上我分享了有关集群环境下的编程模式思 ...

  8. 【spring cloud】服务启动后正常,但是无法上线,一直处于down状态

    spring cloud eureka 如果出现某个应用实例 down(1), 说明 spring admin 健康检测没有通过导致 eureka 注册中心不会把这个实例从列表中删除掉. 这样所有使用 ...

  9. 设计模式《JAVA与模式》之解释器模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述解释器(Interpreter)模式的: 解释器模式是类的行为模式.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个 ...

  10. [每天解决一问题系列 - 0004] Excel 公式中拼接字符串

    问题描述: 之前很少用excel的formula,今天用户发过来一个文件,里边存储了很多字段对应的编号.想把这些生成我想要的格式,然后导入代码中,当然可以使用第三方的excel操作库来做.最简单直接的 ...