##1.video
1、简化版写法:兼容性差
```<video src="" controls> </video>```

2、视频标签标准语法(兼容处理)
```
`<video>
<source src="视频文件URL地址" />
<source src="视频文件URL地址" />
<source src="视频文件URL地址" />
浏览器不支持视频的提示文本
</video>`
//浏览器将使用第一个可识别的视频
```
3、视频标签属性

- width 宽度
- height 高度

以下取值为布尔值:

- controls 显示播放原生控件(兼容性极差)
- loop 循环播放
- autoplay 自动播放视屏(大多数浏览器禁用此功能)
- muted 静音播放
- poster 在视频播放之前显示广告,取值为广告的url(缺点:如果暂停视频不能显示广告图片)
- preload 视频的预加载方式默认auto(注意:设置该属性后,则视频在页面加载时进行加载,并预备播放。如果使用 " autoplay ",则忽略该属性)

4、使用DOM操作视频

HTMLVideoElement属性
```
//1. 获取视频对象
var vdo = document.getElmentById("video")
//2. 获取/设置对象的宽度/高度(如果本身没有设置 就是0)
vdo.width
vdo.height
//3. 获取视频对象的原始宽度、高度
vdo.videoWidth
vdo.videoHeight
//注意:如果要获取视频对象的原始宽度和高度必须在loadeddata事件完成后才能使用
vdo.addEventListener("loadeddata",()=>{
console.log(vde.videoWidth)
console.log(vde.videoHeight)
})
//loadeddata 事件表示已经加载完成视频的第一帧,当加载完视频的第一帧以后,视频的原始宽度和高度才能正常访问
//4. 获取视频海报帧
vdo.poster = 'myvideo.mp4'
```
HTMLMediaElement属性

```
<script>
//autoplay 是否自动播放
//muted 是否静音
//controls 是否显示播放控件
//loop 是否循环播放
//src 用于设置媒体文件的url地址
//volume 用于获取、设置媒体的音量(取值范围[0,1])
vdo.volume = 0.6
//playbackRate 获取、设置媒体的播放速率,1.0为正常速率
//paused 用于获取媒体对象是否在暂停,返回值为布尔值
//ended 用于获取媒体对象是否播放完毕
//currentTime 用于获取、设置媒体对象的当前播放时间(单位为秒)
//duration 用于获取媒体对象的总时长(单位s)

//方法play() 用于实现媒体的播放
vdo.play()
//方法pause() 用于实现媒体的暂停
veo.pause()

var play = document.getElementById("play")
play.onclick = ()=>{
//判断视频是否为暂停
if(vdo.paused==false){
vdo.pause();
}else{
vdo.play();
}
}

//事件
//媒体对象播放时触发
vdo.addEventListener("play",()=>{})
//媒体对象暂停时触发
vdo.addEventListener("pause",()=>{})
//媒体对象播放完毕后触发
vdo.addEventListener("ended",()=>{})
//媒体文件的第一帧加载完成后被触发
vdo.addEventListener("loadeddata",()=>{})
//媒体对象的currentTime属性发生变化时调用
vdo.addEventListener("timeupdata",()=>{})
//媒体对象加载结束时触发
vdo.addEventListener("canplaythrough",()=>{})

</script>
```

##2.audio
1、音频标签标准语法
```
<audio>
<source src="音频文件URL"/>
<source src="音频文件URL"/>
<source src="音频文件URL"/>
浏览器不支持音频的提示文本
</audio>
```
2、音频标签属性
```
<script>
//controls
//autoplay
//muted
//loop
//preload
//和视频是一样的
</script>
```
3、HTMLAudioElement
构造函数:var ado = new Audio([音频文件的URL地址])
==> 1. var ado=new Audio("./myaudio.mp3");2.ado.controls=true;3.document.body.appendChild(ado)

4.HTMLMediaElement

## 3. 全屏模式(兼容性讨厌)
1、全屏模式兼容写法
```
<script>
//进入全屏模式兼容写法
function requestFullScreen(element) {
if(element.requestFullscreen) {
element.requestFullscreen();
} else if(element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if(element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if(element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}
//启动全屏:
//整个页面:
requestFullScreen(document.documentElement);
//某个页面元素
requestFullScreen(document.getElementById("vdo"));

//退出全屏模式兼容性写法
function exitFullScreen() {
if(document.exitFullscreen) {
document.exitFullscreen();
} else if(document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if(document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if(document.msExitFullscreen){
document.msExitFullscreen();
}
}
//退出
//exitFullscreen();
p1.onclick = ()=>{exitFullscreen()}
</script>
```
2、全屏属性和事件
```
<script>
//判断当前浏览器是否允许设置全屏状态
document.fullScreenEnabled
//获取全屏显示的网页元素
document.fullscreenElement
//启动全屏或退出全屏时触发
fullscreenchange//有兼容性
//启动全屏或退出全屏失败时触发
fullscreenerror//有兼容性
</script>
```
## 4.canvas
1、通过标签创建画布
```<canvas id="canvas" height:"800"; width:"800"></canvas>```
2、通过js程序获取画布画笔
```
<script>
var cvs = document.getElementById("canvas")
var ctx = cvs.getContext(2D)
</script>
```

3、CanvasRenderingContext2D对象

1.绘制图形
```
<script>
//1. 绘制空心矩形(描边矩形)
ctx.strokeRect(x,y,width,height)
//2. 绘制实心矩形(填充矩形)
ctx.fillRect(x,y,width,height)

//所有画笔样式要在绘制之前写才会生效!!!!!!!!!

//3. 获取/设置描边矩形颜色
//获取:
ctx.strokeStyle
//设置:
ctx.strokeStyle="#f00"
//4. 获取/设置填充矩形颜色
//获取:
ctx.fillStyle
//设置:
ctx.fillStyle="#f00"
//5. 获取/设置画笔透明度
//获取:
ctx.globalAlpha
//设置:(取值0-1)
ctx.globalAlpha=0.4
</script>
```

2.绘制文本
```
<script>
//1. 绘制描边文本
ctx.strokeText(text,x,y)
//2. 绘制填充(实体)文本
ctx.fillText(text,x,y)
//3. 获取/设置文本样式
//设置:
ctx.font="字号 字体";
//获取:
ctx.font
//4. 获取/设置文本的水平对齐方式
//设置:
ctx.textAlign="center";
//获取:
ctx.textAlign
//5. 获取/设置文本的垂直对齐方式(基线位置)
//设置:
ctx.textBaseline="top"
//alphabetic 默认,文本基线是普通的字母基线
//top 文本基线是em方框的顶端
//middle 文本基线是em方框的正中
//ideographic 文本基线是表意基线
//bottom 文本基线是em方框的底部
//hanging 文本基线是悬挂基线
//获取:
ctx.textBaseline

//返回包含指定文本宽度的对象
ctx.measureText(text).width;
//text:要测量的文本
</script>
```

3.清空矩形范围内所有元素
```
<script>
ctx.clearRect(x,y,width,height)
//一般都是清除整个画布,重绘画布
</script>
```

4.路径
```
<script>
//绘制路径写起点和终点
ctx.moveTO(x,y)
ctx.lineTo(x,y)
ctx.stroke()//绘制已定义路径
ctx.strokeStyle="color" 绘制路径颜色
ctx.fill()//填充已有路径
ctx.fillStyle="color" //填充颜色
</script>
```

HTML5新增语法的更多相关文章

  1. 浅谈html语义化标签,Html5新增语义化标签

    Html语义化标签,Html5新增语义化标签 自己在学习的期间,整理了下html关于语义化标签的一些知识,列的不是很全. 希望大家有新的见解可以给我留言,我会补充上去,谢谢大家 1.什么是语义化标签? ...

  2. web前端学习(二)html学习笔记部分(1) -- html5新增的元素及特性等等

    检查,在浏览器中可以调整设备类型 html5实现水池效果. lang:en为英文语言,中文语言zh <html lang="en"> <head> < ...

  3. HTML5 学习总结(二)——HTML5新增属性与表单元素

    一.HTML5新增属性 1.1.contextmenu contextmenu的作用是指定右键菜单. <!DOCTYPE html> <html> <head> & ...

  4. HTML5新增及移除的元素

    HTML经过10多年的发展,其元素经历了废弃与不断重新定义的过程.为了更好的处理现在的互联网应用,HTML5新增了图形绘制.多媒体播放.页面结构.应用程序存储.网络工作等新元素.http://hove ...

  5. HTML5 学习笔记(二)——HTML5新增属性与表单元素

    目录 一.HTML5新增属性 1.1.contextmenu 1.2.contentEditable 1.3.hidden 1.4.draggable 1.5.data-* 1.6.placehold ...

  6. 过段时间逐步使用HTML5新增的web worker等内容

    想来快2017年了,2013年前的手机应该很少有人用了,以后逐渐使用HTML5新增的高级API吧. 先把web worker的内容再熟悉一下,因为微软虚拟学院的'面向有经验开发人员的 JavaScri ...

  7. HTML5新增标签与属性

    目录 一.HTML5新增属性 1.1.contextmenu 1.2.contentEditable 1.3.hidden 1.4.draggable 1.5.data-* 1.6.placehold ...

  8. 【原】HTML5 新增的结构元素——能用并不代表对了

    做移动端有一段时间,今天有同事问了我 article 和 section 标签的使用,模模糊糊的解释了下,他似懂非懂,有点小尴尬.忽然间觉得自己有必要再翻翻书籍,重温下 html5 的新元素.html ...

  9. HTML5新增的属性

    关于html5新增的属性: HTML5现在已经不是SGML的子集,主要是增加了关于图像,位置,存储,多任务等功能. 绘画CANVAS; 用于播放媒体的video和audio元素: 本地离线存储loca ...

随机推荐

  1. D3 tree map

    D3 tree map D3 矩形树图 https://www.zhihu.com/question/55529379 https://zhuanlan.zhihu.com/p/57873460 ht ...

  2. uniapp 修改meta:viewport

    onLoad(options) { this.setViewport(`width=device-width, initial-scale=1.0`); }, onUnload() { this.se ...

  3. 人物传记-BILL RAY:低谷时的信念,决定你能走多远

    自2018年全球经济危机以来,以工作为重的成年人们一直备受打击.尤其是2020年,全球贸易争端使得经济下滑严重,很多公司倒闭破产,有些人甚至从富豪变成了负债者,走向了人生低谷.其实,每个人都会遇到人生 ...

  4. NLog整合Exceptionless

    前言 在实际的.Net Core相关项目开发中,很多人都会把NLog作为日志框架的首选,主要是源于它的强大和它的扩展性.同时很多时候我们需要集中式的采集日志,这时候仅仅使用NLog是不够的,NLog主 ...

  5. 为什么ElasticSearch比MySQL更适合全文索引

    熟悉 MySQL 的同学一定都知道,MySQL 对于复杂条件查询的支持并不好.MySQL 最多使用一个条件涉及的索引来过滤,然后剩余的条件只能在遍历行过程中进行内存过滤,对这个过程不了解的同学可以先行 ...

  6. 不能回滚的Redis事务还能用吗

    前言 事务是关系型数据库的特征之一,那么作为 Nosql 的代表 Redis 中有事务吗?如果有,那么 Redis 当中的事务又是否具备关系型数据库的 ACID 四大特性呢? Redis 有事务吗 这 ...

  7. JDBC概念理解

    ##JDBC: 概念:Java DataBase Connectivity  Java 数据库连接  Java语言操作数据库 JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则 ...

  8. JDBC 用PreparedStatement语句动态操作SQL语句

    https://blog.csdn.net/u014453898/article/details/79038187 1.Statement 和 PreparedStatement: Statement ...

  9. JS中try catch的用法

    在js中也可以使用try/catch语法,把可能发生异常的代码使用try包裹起来,然后在catch中对异常进行处理,处理后就不会影响后面代码的执行. const a = null try { cons ...

  10. 后端程序员之路 33、Index搜索引擎实现分析2-对外接口和大体流程

    # index_manager的单例是index server对外的唯一接口,part_indexer是index搜索的核心部分,index_manager持有了一组part_indexer. typ ...