canvas需要在标签里直接定义宽高


Posted in HTML / CSS onDecember 17, 2014

以前用canvas画图时,都是直接在canvas标签里直接写上宽高,没有问题,但也没有探究过为什么宽高要直接写在canvas标签里,因为各个资料的例子上都是这么写的。今天王sir提出了一个问题:如果把宽高写在<style>里,看看会有什么不同。自己试了以下,果然有问题。

先看一下代码:


复制代码
代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>canvas</title>
<meta name="Keywords" content="">
<meta name="author" content="@my_programmer">
<style type="text/css">
body{margin:0;}
canvas{margin:20px;
/*width: 400px;
height: 300px;*/
}
</style>
</head>
<body onload="draw()">
<canvas id="canvas" width=400 height=300 style="border:1px solid #f00;"></canvas>
<script>
function draw() {
var canvas=document.getElementById('canvas');
var context=canvas.getContext('2d');
context.beginPath();
context.moveTo(20,20);
context.lineTo(200,100);
context.lineWidth=5;
context.stroke();
}
</script>
</body>
</html>

1.宽:400;高:300;直接写在<canvas>里的效果:

canvas需要在标签里直接定义宽高

2、删除<canvas>里的宽高,宽:400;高:300;写在<style>里的效果:

canvas需要在标签里直接定义宽高

为什么两者的效果会不一样呢?

canvas跟其他标签一样,也可以通过css来定义样式。但这里需要注意的是:canvas的默认宽高为300px * 150px,在css中为canvas定义宽高,实际上把宽高为300px * 150px的画布进行了拉伸,如果在这样的情况下进行canvas绘图,你得到的图形可能就是变形的效果。所以,在canvas绘图时,应该在canvas标签里直接定义宽高。

HTML / CSS 相关文章推荐
Web页面中八种创建多列等高(等高列布局)的实现技术
Dec 24 HTML / CSS
css3圆角边框和边框阴影示例
May 05 HTML / CSS
CSS3 text-shadow实现文字阴影效果
Feb 24 HTML / CSS
css3 实现圆形旋转倒计时
Feb 24 HTML / CSS
CSS3实现王者荣耀匹配人员加载页面的方法
Apr 16 HTML / CSS
CSS3只让背景图片旋转180度的实现示例
Mar 09 HTML / CSS
HTML5里autofocus自动聚焦属性使用介绍
Jun 22 HTML / CSS
详解rem 适配布局
Oct 31 HTML / CSS
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
Jan 30 HTML / CSS
html5定位并在百度地图上显示的示例
Apr 27 HTML / CSS
CSS3实现三角形不断放大效果
Apr 13 HTML / CSS
CSS实现鼠标悬浮动画特效
May 07 HTML / CSS
使用canvas绘制贝塞尔曲线
Dec 17 #HTML / CSS
使用canvas绘制超炫时钟
Dec 17 #HTML / CSS
24个canvas基础知识小结
Dec 17 #HTML / CSS
html5使用canvas绘制文字特效
Dec 15 #HTML / CSS
html5使用canvas绘制太阳系效果
Dec 15 #HTML / CSS
html5使用canvas绘制一张图片
Dec 15 #HTML / CSS
html5使用canvas画三角形
Dec 15 #HTML / CSS
You might like
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
php学习笔记之 函数声明(二)
2011/06/09 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
php和js实现根据子网掩码和ip计算子网功能示例
2019/11/09 PHP
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
Javascript 遮罩层和加载效果代码
2013/08/01 Javascript
JQuery插件开发示例代码
2013/11/06 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
vue+web端仿微信网页版聊天室功能
2019/04/30 Javascript
[36:14]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第二局
2016/02/28 DOTA
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
Python字符串匹配之6种方法的使用详解
2019/04/08 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
python画图常规设置方式
2020/03/05 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
ECHT官方网站:男女健身服
2020/02/14 全球购物
医学生实习自我鉴定
2013/09/27 职场文书
劳资专员岗位职责
2013/12/27 职场文书
优秀应届毕业生推荐信
2014/02/18 职场文书
计算机售后服务承诺书
2014/05/30 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android