Canvas中设置width与height的问题浅析


Posted in HTML / CSS onNovember 01, 2018

最近因为工作需要,所以就学了一下Html中的Canvas标签。

Canvas是HTML5新增的组件,它就像一块幕布,可以用JavaScript在上面绘制各种图表、动画等。

没有Canvas的年代,绘图只能借助Flash插件实现,页面不得不用JavaScript和Flash进行交互。有了Canvas,我们就再也不需要Flash了,直接使用JavaScript完成绘制。

当我看了一下教程后,自己写了一个hello world的时候,麻烦事就出现了。看下面代码:

<!DOCTYPE html>
<html lang="en">
<body>
<canvas id="canvas1" style="width: 200px;height: 200px; border:1px solid black;">
</canvas>
<script>
    var oC = document.getElementById('canvas1');
    var ctx = oC.getContext("2d");
    ctx.moveTo(0, 0);
    ctx.lineTo(200, 200);
    ctx.stroke();
</script>
</body>
</html>

上面代码的意思,是要在一个width和height各为200px的canvas上画一条直线,该直线的起点为(0,0),终点为(200,200);

然而浏览器画出来的图像却是:

Canvas中设置width与height的问题浅析

一看这图~怎么是这样的斜度?不应该啊~本应该是一个对角线才对啊~~

后来差了一下资料才知道,canvas标签设置width和height的时候,有以下几种方式和产生的后果:

Canvas元素默认宽 300px, 高 150px, 设置其宽高可以使用如下方法:
方法一:
1 <canvas width="500" height="500"$amp;>amp;$lt;/canvas>
方法二:使用HTML5 Canvas API操作
1 var canvas = document.getElementById('欲操作canvas的id');
2 canvas.width = 500;
3 canvas.width = 500;

若通过如下方法设置宽高,那么Canvas元素将由原来大小被拉伸到所设置的宽高:
方法一:使用CSS 会被拉伸
1 #欲操作canvas的id{
2     width:1000px;
3     height:1000px;
4 }

也包含了行间样式中的 style="" 。也就是上面的例子,也会产生拉伸的情况。
方法二:使用HTML5 Canvas API操作 会被拉伸
1 var canvas = document.getElementById('欲操作canvas的id');
2 canvas.style.width = "1000px";
3 canvas.style.height = "1000px";
方法三 :用jquery的$("#id").width(500);会被拉伸

其它:canvas的width和height也不能用百分比表示。canvas会将百分值当成数值显示

 所以,通过上面的资料便可知道其原因就是我上面例子中代码会让canvas的宽高被拉伸了,从而使得图像跟预想的不一致的。

现在我重写了一份正确设置canvas宽高大小的代码例子:

<!DOCTYPE HTML>
<html>
<body>
<canvas id="myCanvas" width="200" height="200" style="border:1px solid black;">
    Your browser does not support the canvas element.
</canvas>
<script type="text/javascript">
    var c = document.getElementById("myCanvas");
    var cxt = c.getContext("2d");
    cxt.moveTo(0, 0);
    cxt.lineTo(200, 200);
    cxt.stroke();
</script>
</body>
</html>

结果:

Canvas中设置width与height的问题浅析

结束。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

HTML / CSS 相关文章推荐
css3 media 响应式布局的简单实例
Aug 03 HTML / CSS
详解CSS3中nth-child与nth-of-type的区别
Jan 05 HTML / CSS
纯CSS3大转盘抽奖示例代码(响应式、可配置)
Jan 13 HTML / CSS
HTML5地理定位与第三方工具百度地图的应用
Nov 17 HTML / CSS
HTML5标签小集
Aug 02 HTML / CSS
html5构建触屏网站之网站尺寸探讨
Jan 07 HTML / CSS
Html5实现如何在两个div元素之间拖放图像
Mar 29 HTML / CSS
深入剖析HTML5 内联框架iFrame
May 04 HTML / CSS
canvas与html5实现视频截图功能示例
Dec 15 HTML / CSS
canvas实现按住鼠标移动绘制出轨迹的示例代码
Feb 05 HTML / CSS
解决HTML5中滚动到底部的事件问题
Aug 22 HTML / CSS
如何使用canvas绘制可移动网格的示例代码
Dec 14 HTML / CSS
html5 postMessage前端跨域并前端监听的方法示例
Nov 01 #HTML / CSS
HTML5之消息通知的使用(Web Notification)
Oct 30 #HTML / CSS
详解Html5页面实现下载文件(apk、txt等)的三种方式
Oct 22 #HTML / CSS
html5 http的轮询和Websocket原理
Oct 19 #HTML / CSS
canvas实现扭蛋机动画效果的示例代码
Oct 17 #HTML / CSS
浅谈HTML5中dialog元素尝鲜
Oct 15 #HTML / CSS
canvas进阶之如何画出平滑的曲线
Oct 15 #HTML / CSS
You might like
smarty section简介与用法分析
2008/10/03 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
2010年最佳jQuery插件整理
2010/12/06 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
vue中实现滚动加载更多的示例
2017/11/08 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
html5开发之viewport使用
2013/10/17 HTML / CSS
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
塔吉特百货公司官网:Target
2017/04/27 全球购物
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
新闻专业本科生的自我评价分享
2013/11/20 职场文书
最新的咖啡店创业计划书
2013/12/30 职场文书
置业顾问岗位职责
2014/03/02 职场文书
党员承诺书格式
2014/05/21 职场文书
电子商务专业应届毕业生求职信
2014/06/21 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
领导离职感言
2015/08/03 职场文书
法院执行局工作总结
2015/08/11 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏