canvas 实战
查看当前浏览器对 canvas 的支持情况
我们在上面也说明了,我们的一些浏览器是不支持 canvas 的,这个时候我们应该怎么去做呢?
这时候我们可以直接在 canvas 标签之间去书写内容,这么做的好处是当你的浏览器不支持 canvas 的时候,我们可以去展示标签之间的内容,具体如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
html,body{
margin: 0px;
}
canvas{
background: #ccc;
}
</style>
</head>
<body>
<canvas>
我们在设置 canvas 之前需要首先监测用户电脑是否支持 canvas
</canvas>
</body>
</html>
既然已经创建完成了具体的内容,那我们现在可以看见了么?
我们虽然没有给定 canvas 的宽度和高度,但是实际上我们的canvas 在页面中是可见的。
需要注意,canvas 默认样式的宽度和高度 是 300px * 150px.
即使我们不去设置具体的宽度和高度,它也是可以显示的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
html,body{
margin: 0px;
}
canvas{
background: #ccc;
}
</style>
</head>
<body>
<canvas>
我们在设置 canvas 之前需要首先监测用户电脑是否支持 canvas
</canvas>
</body>
</html>
那我们该如何去修改画布的默认大小呢?
修改 Canvas 的画布
按照我们正常的思路来说,我们会直接去使用 canvas_1.style.width = "500px"; 来去修改我们的 canvas 的宽度,但是这样真的对么?
答案当然是否定的,canvas 相当于是一张图片,如果我们设置 <canvas width="500" height="500">.
这样写相当于图片的实际大小是 500 * 500.
但是,假如我们这样去书写。
<canvas style="width:500px;height:500px;">
这样实际是把 canvas 默认的 300 * 150 的图片强行拉伸为 500px * 500px 了,所以这样会导致我们的内容被强行缩放,从而导致问题。
按照我们正常的思路来说,我们会直接去使用 canvas_1.style.width = "500px"; 来去修改我们的 canvas 的宽度,但是这样真的对么?
答案当然是否定的,canvas 相当于是一张图片,如果我们设置 <canvas width="500" height="500">.
这样写相当于图片的实际大小是 500 * 500.
但是,假如我们这样去书写。
<canvas style="width:500px;height:500px;">
这样实际是把 canvas 默认的 300 * 150 的图片强行拉伸为 500px * 500px 了,所以这样会导致我们的内容被强行缩放,从而导致问题。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
html,body{
margin: 0px;
}
canvas{
background: #ccc;
}
</style>
</head>
<body>
<canvas id="canvas_1">
我们在设置 canvas 之前需要首先监测用户电脑是否支持 canvas
</canvas>
</body>
<script type="text/javascript">
var canvas_1 = document.getElementById("canvas_1");
// 设置宽度和高度,但是这种写法会造成额外的问题
// 画布会拉伸
// canvas_1.style.width = "500px";
// canvas_1.style.height = "500px";
// 所以推荐写法
// 1.使用内联样式表
// 2.去使用点(.)
canvas_1.width = "500"; //注意,不要加 px
canvas_1.height = "500";
</script>
</html>
获取绘制环境
我们在上面已经设置了我们的画布的大小,但是存在一个问题。
我们还没有找到我们的画布呀!~
要是我们连具体的画布都没有,我们又该向哪里去绘画呢?
实际上我们可以通过 var ctx = canvas_1.getContext("2d"); 来去获取到我们的绘制环境
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<canvas id="canvas_1" width="500" height="400" style="box-shadow: 0 0 20px black;">
当前浏览器不支持 canvas
</canvas>
</body>
<script type="text/javascript">
// 获取 canvas 元素对应的 DOM 对象
var canvas_1 = document.getElementById("canvas_1");
// 获取在 canvas 上绘图的 canvasRenderingContent2D 对象
var ctx = canvas_1.getContext("2d");
// 打印一下,查看是否能够显示具体环境
console.log(ctx);
</script>
</html>
假如打印成功,我们应该可以在浏览器中的 console 中查看到我们的画布具体信息
但是请注意,getContext("2d"); 中一定是2d而不是2D,否则不会生效
在这里准备了一些前端面试题:

