html 设置canvas的背景图可缩放(浅析canvas元素的html尺寸和css尺寸对元素视觉的影响)
类别:Web前端 浏览量:964
时间:2021-10-07 00:09:27 html 设置canvas的背景图可缩放
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响遇到的问题:canvas元素变形失真的原因
一个DOM元素存在三种尺寸:style尺寸,html尺寸,css尺寸。
使用canvas元素时,canvas元素默认宽高是300px * 150px。这里的默认尺寸是html尺寸。
为了更好地帮助理解,以作画为例。画板是css尺寸或者style尺寸,画布是html尺寸。
如果我们没有显示指定canvas元素的html尺寸,而在css文件中指定了它的css尺寸。结果是十分令人困惑。
例如我们在一个默认300px * 150px的画布上画了一个圆半径为50px的圆。
<html lang="zh"> <head> <meta charset="UTF-8"> <title>canvas尺寸</title> <style> #canvas { width: 200px; height: 200px; } </style> </head> <body> <li> <canvas id="canvas"></canvas> </li> <script> window.onload = function () { const canvas = document.getElementById("canvas"); const ctx = canvas.getContext("2d"); ctx.beginPath(); ctx.strokeStyle = "#aaaaaa"; ctx.arc(100, 100, 50, 0, 2 * Math.PI); ctx.stroke(); ctx.closePath(); }; </script> </body> </html>
最后显示的结果如下:
可以看出画布的尺寸确实是200 * 200。但是圆已经变成了椭圆,图形发生了形变。这是为什么呢?
如果移除css设定的尺寸又会怎么样呢?
可以看出此时图形是正常的。画布的尺寸确实是默认的300 * 150。
从对比以及想象中我们可以得出结论:
起初我们是在300 150的画布上绘制一个圆。绘制完成之后,我们又希望将画布的尺寸变成200 200,同时画布还是那块画布,不作更换。
可行的方法是将画布经行拉伸。假设画布存在弹性,那么一块画布从300 150拉伸成200 200。画布上的圆的长半轴变成原来的1.33倍,短半轴变成0.68倍。此时圆自然就是椭圆了。
结论:
在使用canvas画图的时候,为了避免不必要的麻烦,一定记得为canvas元素设定html尺寸的宽高。
总结
以上所述是小编给大家介绍的浅析canvas元素的html尺寸和css尺寸对元素视觉的影响,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
您可能感兴趣
- 前端ui 滑动条(AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码)
- canvas指定区域生成图片(canvas实现图片镜像翻转的2种方式)
- html5 canvas绘图(使用html5 canvas绘制圆环动效)
- jscanvas背景色(JavaScript canvas实现代码雨效果)
- canvas怎么获取内容(详解canvas.toDataURL报错的解决方案全都在这了)
- canvas如何调试(关于canvas.toDataURL 在iOS运行失败的问题解决)
- canvas设置点击(Canvas高级路径操作之拖拽对象的实现)
- canvas动态图(canvas绘制太极图的实现示例)
- canvas怎么压缩图片(使用canvas压缩图片大小的方法示例)
- canvas3d效果(JavaScript canvas实现七彩太阳光晕效果)
- 如何使用html5的canvas图(html5 canvas实现给图片添加平铺水印)
- canvas里面图片如何获取(canvas生成带二维码海报的踩坑记录)
- canvas宽高技巧(canvas画图被放大且模糊的解决方法)
- canvas 动画线段(canvas简单连线动画的实现代码)
- canvas画布多次渲染失败(深入了解canvas在移动端绘制模糊的问题解决)
- html5canvas案例(h5使用canvas画布实现手势解锁)
- 开国中将,王牌军63军首任政委,两个连襟一个上将一个少将传为佳话(王牌军63军首任政委)
- 臭名昭著的731部队最高负责人 石井四郎(臭名昭著的731部队最高负责人)
- 王牌部队,你看的剧情我看的时尚(你看的剧情我看的时尚)
- 被鉴定的古董价值300万 当心,你可能遇到诈骗了(被鉴定的古董价值300万)
- 英语难学吗(初中英语难学吗)
- 如何追女孩子(如何追女孩子的技巧和方法)
热门推荐
- vuejs filter过滤器的使用(Vue过滤器filter实现及应用场景详解)
- postgresql docker 宿主机(本地Docker安装Postgres 12 + pgadmin的方法 支持Apple M1)
- vue中的定时函数(vue计时器的实现方法)
- 使用mysqldump命令来备份(linux使用mysqldump+expect+crontab实现mysql周期冷备份思路详解)
- react和antd项目教程(React引入antd-mobile+postcss搭建移动端)
- 宝塔面板服务器设置(使用宝塔面板做负载均衡时遇到的问题和解决办法)
- tomcat正常启动404(Tomcat正常访问localhost报404问题解决)
- 树莓派vnc设置失败(树莓派安装宝塔面板后VNC无法登陆的问题说明)
- Asp.net Mvc模型绑定
- thinkphp5 新增模块(Thinkphp5.0框架的Db操作实例分析连接、增删改查、链式操作等)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9