随着HTML5的流行,LZ作为一个web开发者,也决定学习一下前端前沿技术。

HTML5 是下一代的HTML,它将成为 HTML、XHTML 以及 HTML DOM 的新标准。它是W3C( World Wide Web Consortium)和WHATWG(Web Hypertext Application Technology Working Group)合作的结果,在2014年10月29日宣布完成。

他们为 HTML5 建立的一些规则:

1、新特性应该基于 HTML、CSS、DOM 以及 JavaScript。

2、减少对外部插件的需求(比如 Flash)

3、更优秀的错误处理

4、更多取代脚本的标记

5、HTML5 应该独立于设备

6、开发进程应对公众透明

Web上的视频播放大多都是通过插件来显示的,而HTML5规定了,通过一种新加的标签video实现视频播放的标准方法。请看下边的代码

标签有几个常用属性:

video 元素允许多个 source 元素。source 元素可以链接不同的视频文件。浏览器将使用第一个可识别的格式。video中(source元素下)插入的文本内容是供不支持 video 元素的浏览器显示的。

video 元素支持三种视频格式:

Ogg = 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件

MPEG4 = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件

WebM = 带有 VP8 视频编码和 Vorbis 音频编码的 WebM 文件

如下脚本是简单验证当前浏览器是否知否支持video标签的一段js代码:

video作为DOM元素,拥有如下有方法、属性和事件

方法play()pause() load()canPlayType?属性currentSrccurrentTimevideoWidth</td>videoHeight</td>durationendederrorpausedmutedseekingvolumeHeight</td>Width</td>事件playpauseprogresserrortimeupdateendedabortemptyemptiedwaitingloadedmetadata

注释:在所有属性中,只有 videoWidth 和 videoHeight 属性是立即可用的。在视频的元数据已加载后,其他属性才可用。

audio 元素能够播放声音文件或者音频流。

audio 元素支持三种音频格式:

audio标签的使用和video基本一致。

拖放是一种常见的特性,即抓取对象以后拖到另一个位置。在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。

如下示例说明拖动的使用:

1、为了使元素可拖动,把 draggable 属性设置为 true :

2、当该img元素被拖动时,会触发一个ondragstart 事件,示例中该事件调用了一个方法drag(event)。

ev.dataTransfer.setData() 方法设置被拖数据的数据类型(Text)和值(被拖元素id),该方法将被拖动元素的id存储到事件的dataTransfer对象内,ev.dataTransfer.getData()可将该元素取出。

注意:此处ev.target是被拖动元素

3、虽然已经设定了img元素可被拖动,但是浏览器默认地,无法将数据/元素放置到其他元素中。如果有需要设置某些元素可接受被拖动元素,则要阻止它的默认行为,这要通过设置该接收元素的ondragover 事件,调用event.preventDefault() 方法:

如果这里我们不设置阻止默认行为,图片则会默认打开一个浏览器标签展示该图片,同时也不会实现拖放效果。(Firefox会打开标签,而chrome不会打开标签,但他们均不能实现拖放效果)

注意:此处ev.target是接收元素,通过事件被绑定在哪个元素即可区分,下同。

4、进行放置 - ondrop

当被拖元素移动到接收元素,松开鼠标时(即被拖元素放置在接收元素内时)会出发ondrop事件:

这里也需要调用ev.preventDefault()来阻止默认行为。

如果ondragover 没有阻止默认行为,则这里设置或不设置,效果和上边是一样的。

如果ondragover设置了阻止默认行为,如果这里不设置,则Firefox和chrome均能实现拖放效果,只是Firefox会同时打开一个页面展示图片。

var data=ev.dataTransfer.getData("Text");

这句代码将被拖动元素id取出,然后将该元素添加到接收元素尾部,完成拖放操作。

mozilla这样描述dataTransfer对象:

The DataTransfer object is used to hold the data that is being dragged during a drag and drop operation. It may hold one or more data items, each of one or more data types.?

看这段解释,我以为是存储的元素被序列化之后的流数据,通过调试,发现获取到的值仅仅是存入的值。

其实通过后边

ev.target.appendChild(document.getElementById(data));

这句代码,也可以看出来,data就是元素id。

画布(canvas元素)是一个矩形区域,用于在网页上绘制图形。元素本身是没有绘图能力的,所有的绘制工作必须在 JavaScript内部完成。

看下边的示例代码:

canvas标签内的内容是对于不支持该元素的浏览器进行展示的

大多数Canvas 绘图 API 都没有定义在 元素本身上,而是定义在通过画布的 getContext() 方法获得的一个“绘图环境”对象上。getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

通过canvas标签的id得到该元素,然后获取一个作图上下文对象,关于参数'2d',目前只支持二维作图,将来或许还会有'3d'。

Canvas API使用了路径的表示法。但是,路径由一系列的方法调用来定义,而不是描述为字母和数字的字符串,比如画弧方法中调用 beginPath() 和 arc() 方法。

一旦定义了路径,其他的方法,如 fill(),都是对此路径操作。

实例中调用的函数原型

cxt.arc(x,y,radius,start,end,direct) ----?圆心坐标(x,y),半径,弧度起始点,结束点,画弧方向(true-顺时针,false-逆时针)

cxt.createLinearGradient(x1,y1,x2,y2) ----渐变路径的起始坐标和结束坐标(简单理解就是画了一条直线)

addColorStop(p,c) ---- 函数名字面意思是增加颜色停止点,就是把刚画的渐变路径定义为1,p是所在路径的位置(0-1之间),c则是渐变到p时候的颜色值。

cxt.drawImage(img,x,y); ---- 图片及起始坐标

运行效果:

本来想把HTML5相关的内容简单罗列一下的,但是写着写着,内容就原来越多,只好先告一段落,一点点增加了。

LZ也是刚刚自学HTML5,很多内容没接触过,有错误请各位大牛园友指导校正。

简单html5作品,最新HTML5简单入门系列精选相关推荐

  1. VBS 请求WebAPI接口_从零开始实现简单的webapi框架【Golang 入门系列十一】

    之前,已经讲过很多Golang的东西,比如基础语法,mysql的使用,redis的使用等等,感兴趣的可以看看以前的文章,https://www.cnblogs.com/zhangweizhong/ca ...

  2. Android——超简单 MVC、MVP、MVVM入门系列

    2022年,新年第一篇文章,本篇文章将用非常简单的言语来描述各框架,尽量让大家一看即会. 前言: 相信不少伙伴在进行Android开发的时候,肯定遇见过 Activity 代码上千行的,这种代码非常难 ...

  3. html5作品答辩,HTML5答辩问题总结

    1.HTML5 新的 DocType是什么? 答案:: 2.HTML5 页面中音频标签,视频标签? 答案::: 3.HTML5 引入什么新的表单属性? 答案:range,email,number,ur ...

  4. Weka简单介绍与最新详细简单安装以及环境变量配置

    一.Weka简单介绍 Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化(与之对应的是SPSS公司商业数 ...

  5. 【转】ASP.NET AJAX入门系列

    ASP.NET AJAX入门系列将会写关于ASP.NET AJAX一些控件的使用方法以及基础知识,其中部分文章为原创,也有一些文章是直接翻译自官方文档,本部分内容会不断更新. 目录 ASP.NET A ...

  6. Windows API入门系列之七 -完善MessageBox

    原创文章,转载请注明作者和出处 http://www.cnblogs.com/beyond-code SDK编程群号:81543028 欢迎加入 各位不好意思,前几天有些事很忙,昨天才稍稍有时间空闲下 ...

  7. ASP.NET AJAX入门系列

    ASP.NET AJAX入门系列将会写关于ASP.NET AJAX一些控件的使用方法以及基础知识,其中部分文章为原创,也有一些文章是直接翻译自官方文档,本部分内容会不断更新. 目录 ASP.NET A ...

  8. ASP.NET AJAX入门系列相关资料收集

    声明:转自TerryLee的blog和自己整理的一些资料下载. ASP.NET AJAX入门系列将会写关于ASP.NET AJAX一些控件的使用方法以及基础知识,其中部分文章为原创,也有一些文章是直接 ...

  9. 02.Web大前端时代之:HTML5+CSS3入门系列~H5结构元素

    Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 1.结构元素 可以理解为语义话标记,比如:以前这么写&l ...

最新文章

  1. 微信小程序---导航(navigator)
  2. V8 Profiler 揭秘
  3. 一本比较简单易懂的中文python入门教程
  4. struct的初始化
  5. win10蓝牙开关不见了_Win8系统电脑蓝牙图标不见了的解决方法
  6. 应用服务器web服务器_最受欢迎的应用服务器
  7. js里的面向对象分析-(创建实例化对象)
  8. Mysql orangepi_SSH远程登录香橙派Orange Pi Zero2开发板的操作方法
  9. python订单管理系统软件_有什么订单管理软件系统是好用的?
  10. 【软考】2020年下半年计算机技术与软件资格考试划水贴
  11. echarts实现3D饼图
  12. 大学生创新项目——机房监控系统设计概述
  13. c3p0-0.9.1.2.jar与c3p0-0.9.5.2.jar
  14. 钉钉群机器人关键词自动回复_wetool自动接受新好友wetool pc版-客服
  15. mysql cmd insecure_看各路神仙如何大战MySQL insecure warning报警有感
  16. 想要成为黄金分析师要具备哪些知识?
  17. c++2048小游戏编写
  18. SQL中char\varchar\text与nchar\nvarchar\ntext的区别
  19. 开发测人体体重电子秤PCBA方案设计
  20. Java中的类和对象

热门文章

  1. python中括号的作用_Python3--中括号[]与冒号:在列表中的作用
  2. 世上最简单的mysql_史上最简单安装MySQL教程
  3. linux make命令实现,Linux make命令主要参数详解
  4. 计算机机房管理具体工作和职责,机房管理
  5. django的web开发笔记1(智能诊断系统数据概览记录)
  6. 第一个错误的版本_寻找第一个错误的版本
  7. Java BufferedReader mark()方法与示例
  8. oracle底层执行顺序,select语句结构与执行顺序-Oracle
  9. 我们在使用计算机时,不能做什么?,11秋季学期计算机应用技术基础学习周期_01任务-在线作业[1]1...
  10. html木桶布局,CSS3如何实现图片木桶布局?(附代码)