html5的新特性

简述API
API(Application Programming Interface)
是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

Video/Audio-API

video对象的方法

方法名 效果
load() 加载其他视频(如果有的话)
play() 视频开始播放
pause() 视频暂停
addTextTrack() 向音频/视频添加新的文本轨道
canPlayType() 检测浏览器是否能播放指定的音频/视频资源

video对象的属性

属性 描述
autoplay 设置或返回是否在加载完成后马上播放音频/视频
controls 设置或返回音频/视频是否显示控件
loop 设置或返回音频/视频是否应在结束时重新播放
muted 设置或返回音频/视频是否静音
paused 设置或返回音频/视频是否暂停
src 设置或返回音频/视频元素的当前来源
volume 设置或返回音频/视频的音量
audioTracks 返回表示可用音轨的AudioTrackList对象
buffered 返回表示音频/视频已缓冲部分的TimeRanges对象
controller 返回表示音频/视频当前媒体控制器的MediaController对象
corssOrigin 设置或返回音频/视频的CORS设置
currentSrc 返回当前音频/视频的URL
currentTIme 设置或返回音频/视频中当前播放位置(以秒计)
defaultMuted 设置或返回音频/视频默认是否静音
defaultPlaybackRate 设置或返回音频/视频的默认播放速度
duration 返回当前音频/视频的长度(以秒计)
ended 返回音频/视频的播放是否已结束
error 返回表示音频/视频错误状态的MediaErro让对象
mediaGroup 设置或返回音频/视频所述的组合(用于连接多个音频/视频元素)
networkState 返回音频/视频的当前网络状态
playBackRate 设置或返回音频/视频播放的速度
played 返回表示音频/视频一播放部分的TimeRanges对象
preload 设置或返回音频/视频是否应该在页面加载后进行加载
readyState 返回音频/视频当前的就绪状态
seekable 返回表示音频/视频可寻址部分的TimeRabges对象
seeking 返回用户是否正在音频/视频中进行查找
startDate 返回表示当前时间偏移的Date对象
textTracks 返回表示可用文本轨道的TextTrackList对象
VideoTracks 返回表示可用视频轨道的videoTrackList对象

video对象的事件

事件描述
abort当音频/视频的加载已放弃时
canplay当浏览器可以播放音频/视频时
canplaythrough当浏览器可在不因缓冲而停顿的情况下进行播放时
durationchange当音频/视频的时长已更改时
emptied当目前的播放列表为空时
ended当目前的播放列表已结束时
error当在音频/视频加载期间发生错误时
loadeddata当浏览器已加载音频/视频的当前帧时
loadedmetadata当浏览器已加载音频/视频的元数据时
loadstart当浏览器开始查找音频/视频时
pause当音频/视频已暂停时
play当音频/视频已开始或不再暂停时
playing当音频/视频在已因缓冲而暂停或停止后已就绪时
progress当浏览器正在下载音频/视频时
ratechange当音频/视频的播放速度已更改时
seeked当用户已移动/跳跃到音频/视频中的新位置时
seeking当用户开始移动/跳跃到音频/视频中的新位置时
stalled当浏览器尝试获取媒体数据,但数据不可用时
suspend当浏览器刻意不获取媒体数据时
timeupdate当目前的播放位置已更改时
volumechange当音量已更改时
waiting当视频由于需要缓冲下一帧而停止

Canvas-API

  • canvas元素用于在网页上绘制图形
  • canvas元素使用JavaScript在网页上绘制图像
  • 画布是一个矩形区域,你可以控制其每一像素

canvas绘图之线条及线条属性

创建canvas

首先创建一个canvas元素,只需要在html文件中加入一句代码

1
<canvas id="canvas"></canvas>

可通过canvas的标签属性width和height设置canvas画布的大小:

1
<canvas id="canvas" width="800" height-"600">

获取环境

通过js中获取到该canvas元素,然后设置它的宽高,并获取到上下文的环境:

1
2
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");//获取上下文环境

接下来我们的所有操作都是基于这个context的上下文环境。

试着画一条简单的直线

1
2
context.moveTo(100,100);
comtext.lineTo(500,500);
  • moveTo()方法表示一次绘制的起点坐标
  • lineTo()表示基于上一个坐标点到这个坐标点之间的直线连接

**注意:canvas是基于状态的绘制,而不是基于对象的绘制。所以上面的代码都是状态的设置,还需要使用stroke()方法进行绘制:

1
context.stroke();//绘制

除此之外,我们还可以设置线条的一些基本属性:

1
2
context.lineWidth = 8; //线条的宽度
context.strokeStyle = "#333"; //线条的颜色

一个简单简单的绘制一条直线的完整例子:

1
2
3
4
5
6
7
8
9
10
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");

context.moveTo(100,100);
context.lineTo(200,200);

context.lineWidth = 5;
context.strokeStyle = "red";

context.stroke();

结果如下:

绘制一个连续的折线

1
2
3
4
5
6
context.moveTo(100,100);
context.lineTo(600,100);
context.lineTo(600,600);
context.lineTo(100,600);

context.stroke();

结果如下:

上面简单的例我们使连续绘制的折线,也就是说可以一笔连续画完的折线。如果是条多间断的折线,那么就需要多次使用context.moveTo()来重新绘制一条折线的起点坐标:

1
2
3
4
5
6
7
8
9
10
11
12
13
context.moveTo(100,200);
context.lineTo(300,400);
context.lineTo(100,600);

context.moveTo(300,200);
context.lineTo(500,400);
context.lineTo(300,600);

context.moveTo(500,200);
context.lineTo(700,400);
context.lineTo(500,600);

context.stroke();

结果如下:

关注本人公众号

作者

John Doe

发布于

2018-04-05

更新于

2021-05-22

许可协议

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

评论

You forgot to set the shortname for Disqus. Please set it in _config.yml.