选自MDN自己理解的部分内容
CanvasMDN
1.audio标签:
HTML 元素用于在文档中嵌入音频内容。 audio元素可以包含一个或多个音频资源。

<audio controls  autoplay loop   src="/media/examples/t-rex-roar.mp3">Your browser does not support the</audio>

controls:如果声明了该属性,浏览器将提供一个包含声音,播放进度,播放暂停的控制面板,让用户可以控制音频的播放。
src:嵌入的音频的URL。 该URL应遵从 HTTP access controls. 这是一个可选属性;你可以在audio元素中使用 元素来替代该属性指定嵌入的音频。
loop:布尔属性;如果声明该属性,将循环播放音频。
autoplay:布尔值属性;声明该属性,音频会尽快自动播放,不会等待整个音频文件下载完成。
注意:自动播放音频(或有声视频)可能会破坏用户体验,所以应该尽可能避免。
使用说明:
浏览器对 文件类型 和 音频编码 的支持各有不同,你可以使用内嵌的 source 元素提供不同的播放源。浏览器会使用第一个它支持的播放源:

<audio controls><source src="myAudio.mp3" type="audio/mpeg"><source src="myAudio.ogg" type="audio/ogg">
</audio>

2.canvas:
canvas标签只有两个属性—— width和height。这些都是可选的,并且同样利用 DOM properties 来设置。当没有设置宽度和高度的时候,canvas会初始化宽度为300像素和高度为150像素。

<canvas id="tutorial" width="150" height="150"></canvas>

渲染上下文(The rendering context)
canvas元素创造了一个固定大小的画布,它公开了一个或多个渲染上下文,其可以用来绘制和处理要展示的内容。
canvas起初是空白的。为了展示,首先脚本需要找到渲染上下文,然后在它的上面绘制。canvas元素有一个叫做 getContext() 的方法,这个方法是用来获得渲染上下文和它的绘画功能。getContext()只有一个参数,上下文的格式。

var canvas = document.getElementById('tutorial');
var ctx = canvas.getContext('2d');

代码的第一行通过使用 document.getElementById() 方法来为 元素得到DOM对象。一旦有了元素对象,你可以通过使用它的getContext() 方法来访问绘画上下文。
检查支持性
替换内容是用于在不支持 标签的浏览器中展示的。通过简单的测试getContext()方法的存在,脚本可以检查编程支持性。上面的代码片段现在变成了这个样子:

var canvas = document.getElementById('tutorial');if (canvas.getContext){var ctx = canvas.getContext('2d');// drawing code here
} else {// canvas-unsupported code here
}
<html><head><title>Canvas tutorial</title><script type="text/javascript">function draw(){var canvas = document.getElementById('tutorial');if (canvas.getContext){var ctx = canvas.getContext('2d');}}</script><style type="text/css">canvas { border: 1px solid black; }</style></head><body onload="draw();"><canvas id="tutorial" width="150" height="150"></canvas></body>
</html>

上面的脚本中包含一个叫做draw()的函数,当页面加载结束的时候就会执行这个函数。
模板看起来会是这样。如这里所示,它最初是空白的。

绘制矩形
canvas 只支持两种形式的图形绘制:矩形和路径(由一系列点连成的线段)。所有其他类型的图形都是通过一条或者多条路径组合而成的。
canvas提供了三种方法绘制矩形:
fillRect(x, y, width, height)
绘制一个填充的矩形
strokeRect(x, y, width, height)
绘制一个矩形的边框
clearRect(x, y, width, height)
清除指定矩形区域,让清除部分完全透明。
上面提供的方法之中每一个都包含了相同的参数。x与y指定了在canvas画布上所绘制的矩形的左上角(相对于原点)的坐标。width和height设置矩形的尺寸。

function draw() {var canvas = document.getElementById('canvas');if (canvas.getContext) {var ctx = canvas.getContext('2d');ctx.fillRect(25, 25, 100, 100);ctx.clearRect(45, 45, 60, 60);ctx.strokeRect(50, 50, 50, 50);}
}


fillRect()函数绘制了一个边长为100px的黑色正方形。clearRect()函数从正方形的中心开始擦除了一个6060px的正方形,接着strokeRect()在清除区域内生成一个5050的正方形边框。

绘制路径

图形的基本元素是路径。路径是通过不同颜色和宽度的线段或曲线相连形成的不同形状的点的集合。一个路径,甚至一个子路径,都是闭合的。使用路径绘制图形需要一些额外的步骤。

首先,你需要创建路径起始点。
然后你使用画图命令去画出路径。
之后你把路径封闭。
一旦路径生成,你就能通过描边或填充路径区域来渲染图形。
以下是所要用到的函数:
beginPath()
新建一条路径,生成之后,图形绘制命令被指向到路径上生成路径。
closePath()
闭合路径之后图形绘制命令又重新指向到上下文中,该方法不是必需的。这个方法会通过绘制一条从当前点到开始点的直线来闭合图形。如果图形是已经闭合了的,即当前点为开始点,该函数什么也不做。
注意:当你调用fill()函数时,所有没有闭合的形状都会自动闭合,所以你不需要调用closePath()函数。但是调用stroke()时不会自动闭合。
stroke()
通过线条来绘制图形轮廓。
fill()
通过填充路径的内容区域生成实心的图形。
绘制一个三角形

function draw() {var canvas = document.getElementById('canvas');if (canvas.getContext){var ctx = canvas.getContext('2d');// 填充三角形ctx.beginPath();ctx.moveTo(25, 25);ctx.lineTo(105, 25);ctx.lineTo(25, 105);ctx.fill();// 描边三角形ctx.beginPath();ctx.moveTo(125, 125);ctx.lineTo(125, 45);ctx.lineTo(45, 125);ctx.closePath();ctx.stroke();}
}

moveTo(x, y)
将笔触移动到指定的坐标x以及y上,简单来说就是从一个点到另一个点的移动过程。
**当canvas初始化或者beginPath()调用后,你通常会使用moveTo()函数设置起点。(主要用法)**我们也能够使用moveTo()绘制一些不连续的路径。
lineTo(x, y)
绘制一条从当前位置到指定x以及y位置的直线。该方法有两个参数:x以及y ,代表坐标系中直线结束的点,开始点和之前的绘制路径有关,之前路径的结束点就是接下来的开始点等等。开始点也可以通过moveTo()函数改变。

正如上面所提到的,因为路径使用填充(fill)时,路径自动闭合,使用描边(stroke)则不会闭合路径。如果没有添加闭合路径closePath()到描述三角形函数中,则只绘制了两条线段,并不是一个完整的三角形。
arc(x, y, radius, startAngle, endAngle, anticlockwise)
画一个以(x,y)为圆心的以radius为半径的圆弧(圆),从startAngle开始到endAngle结束,按照anticlockwise给定的方向(默认为顺时针)来生成。

x,y为绘制圆弧所在圆上的圆心坐标。radius为半径。startAngle以及endAngle参数用弧度定义了开始以及结束的弧度。这些都是以x轴为基准。参数anticlockwise为一个布尔值。为true时,是逆时针方向,否则顺时针方向。
ps:Math.PI代表的弧度是Π,180,Math.PI*2代表的是360

色彩 Colors

如果我们想要给图形上色,有两个重要的属性可以做到:fillStyle 和 strokeStyle。

fillStyle = color
设置图形的填充颜色。color 可以是表示 CSS 颜色值的字符串,渐变对象或者图案对象。
输入的应该是符合 CSS3 颜色值标准 的有效字符串。下面的例子都表示同一种颜色。
// 这些 fillStyle 的值均为 ‘橙色’
ctx.fillStyle = “orange”;
ctx.fillStyle = “#FFA500”;
ctx.fillStyle = “rgb(255,165,0)”;
ctx.fillStyle = “rgba(255,165,0,1)”;

strokeStyle = color
设置图形轮廓的颜色。

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');ctx.fillStyle = 'green';
ctx.fillRect(10, 10, 150, 100);

Document.getElementById() 方法获取HTML 元素的引用。接着,HTMLCanvasElement.getContext() 方法获取这个元素的context——图像稍后将在此被渲染。

由 CanvasRenderingContext2D 接口完成实际的绘制。fillStyle 属性让长方形变成绿色。fillRect() 方法将它的左上角放在(10, 10),把它的大小设置成宽150高100。.

你用过哪些 HTML 5 标签?相关推荐

  1. Go 知识点(18)— 条件编译(编译标签、文件后缀)

    1. 条件编译 Go 能根据所处环境选择对应的源码进行编译.让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃,这就叫做条件编译. 在 Go 中,也称之为 Build Constraints ...

  2. Git 常用操作(2)- 创建标签

    1. 列出标签 在 Git 中列出已有的标签是非常简单直观的.只需要输入 git tag: $ git tag v0.1 v1.3 2. 创建标签 Git 使用两种主要类型的标签:轻量标签(light ...

  3. Docker 入门系列(2)- Docker 镜像, 免 sudo 使用 docker 命令、获取查看、修改镜像标签、查找删除创建镜像、导入导出镜像

    1. 免 sudo 使用 docker 命令 如果还没有 docker group 就添加一个 sudo groupadd docker 将用户加入该 group 内 sudo gpasswd -a ...

  4. JSTL标签库学习笔记

    JSTL概述 apache的东西,依赖于EL 使用jstl需要导入jstl.jar包 标签库 core 核心标签库 fmt 格式化标签库 sql 数据库标签库,过时 xml xml标签库,过时 JST ...

  5. jquery过滤HTML标签方法

    //过滤HTML标签 function removeHTMLTag(str) {str = str.replace(/<\/?[^>]*>/g, ''); //去除HTML tags ...

  6. BCELoss BCEWithLogitsLoss 多标签损失函数

    BCELoss 在图片多标签分类时,如果3张图片分3类,会输出一个3*3的矩阵. 先用Sigmoid给这些值都搞到0~1之间: 假设Target是: emmm应该是我上面每次都保留4位小数,算到最后误 ...

  7. xgboost lightgbm catboost 多分类 多标签

    xgboost 与 lightgbm 官方均支持多分类任务,但不直接支持多标签分类任务,实现多标签任务的方法之一是结合sklearn 提供的 multiclass 子类,如OneVsRestClass ...

  8. G6实现标签拖动连线画流程图

    需求描述 列出所有的task标签,拖动task标签在一旁画流程图,打包task的任务名及id和任务的执行流程以json的格式发给后端. 技术栈 G6,vue,h5自带的draggable实现拖动.也稍 ...

  9. 语义分割改进:通过视频传播和标签松弛

    语义分割改进:通过视频传播和标签松弛 Improving Semantic Segmentation via Video Propagation and Label Relaxation 论文地址:h ...

  10. 噪声标签的负训练:ICCV2019论文解析

    噪声标签的负训练:ICCV2019论文解析 NLNL: Negative Learning for Noisy Labels 论文链接: http://openaccess.thecvf.com/co ...

最新文章

  1. java快速搭建webapi,4.从零搭建WebApi接口开发框架-设计Dao、Service
  2. Python:通过远程监控用户输入来获取淘宝账号和密码的实验(一)
  3. 论文笔记:MobileFaceNet
  4. 配置和使用OCS 2007会议功能
  5. PHPJavaScript笔记-后端利用Refresh头带错误信息给前端(野路子操作)
  6. github访问很慢解决方案
  7. 一波三折,这些离国出走的品牌又回来了!
  8. JAVA如何比较两个数组是否相等?
  9. JQ实现单击按钮 倒计时获取验证码
  10. mysql判断是日期是第几周
  11. Java API方式调用Kafka各种协议
  12. 常见工具识别集锦---Windows应急响应工具
  13. intel收购Altera
  14. C# NPOI Excel 合并单元格和取消单元格
  15. 论文记录-2018-A survey on image tampering and its detection in real-world photos
  16. kettle执行sql语句错误总结
  17. 503 Service Temporarily Unavailable
  18. python面向对象学习
  19. Ubuntu服务器入门指南
  20. 了解更多全国各地浴室5×8装修图片

热门文章

  1. 【企业架构设计实战】企业架构方法论
  2. UniSwap V3协议浅析(下)
  3. AndroidStudio(IDEA)代码提示背景为白色如何去除
  4. (2)Echarts图表绑定特殊事件-图表元素绑定选中事件
  5. P2P--如何让下载的人越多速度越快
  6. 如何检索CPCI-S
  7. 小黄鸡的秃头日记【JAVA】---循环
  8. ClassNotFoundException:org.aspectj.weaver.reflect.ReflectionWorld $ ReflectionWorldException
  9. java视频教程千峰_java基础教程-Java开发入门视频教程-千锋教育视频资源库
  10. Python-CSP 201809-1 卖菜