H5 canvas中width、height和style的宽高区别详解


Posted in HTML / CSS onNovember 02, 2018

前言

最近在学习canvas属性中遇到一个小问题,就是canvas的width和height,通过查找相关的资料终于解决,所以下面将解决的过程分享出来给大家,下面话不多说了,来一起看看详细的介绍吧

Canvas 的width height属性

1、当使用width height属性时,显示正常不会被拉伸;如下

<canvas id="mycanvas" width="300" height="300">浏览器不支持Canvas,请升级或改用其它浏览器!</canvas>
<script type="text/javascript">
    var canvas = document.getElementById("mycanvas"),
        ctx = canvas.getContext('2d');
    ctx.moveTo(0,0);
    ctx.lineTo(300,150);
    ctx.stroke();
</script>

运行效果如下,为对角线

H5 canvas中width、height和style的宽高区别详解 

2、使用style时图像会被拉伸(变形),

<style>
         
        #mycanvas {
            width: 150px;
            height: 150px;
        }
    </style>

运行效果

H5 canvas中width、height和style的宽高区别详解 

如何理解???可以这么理解————

Canvas 是一个画板和一张画纸,画板相当于一个容器,画图/作业是在画纸上进行的,

画板和画纸的默认宽高是300*150,当画纸与画板宽高相等时,图像不会被拉伸,当画纸与画板宽高不一样时,图像就会被拉伸(变形)。

1, width 和 height 属性是设定画板和画纸的宽高,

如: width=”300” height=”300” 即画板的宽高是300*300,画纸的宽高也是300*300,作业的300*300 的对角线图像就不会被拉伸

 H5 canvas中width、height和style的宽高区别详解

2, style样式 里设定的是仅画板的宽高,画纸的宽高还是为默认值300*150,

(以上图为例)因此所作业的300*300的对角线图像仅有一部分画在画纸上,如下:

H5 canvas中width、height和style的宽高区别详解 

Btw 画纸不会让画板就这么空出一片,于是画纸连同图像就要一起拉伸到跟画板大小一样。在此例子当中,画纸宽与画板宽都为30,而高为画板的一半,因此只需将高拉伸一倍即可,so 图像也一起被拉伸变瘦,X方向不变,Y方向增至一倍, 所以就得到了变形之后的图片

引用 //3water.com/html5/643939.html 的一段总结

关于HTML5中Canvas的宽、高设置问题
Canvas元素默认宽 300px, 高 150px, 设置其宽高可以使用如下方法(不会被拉伸):
方法一:
       <canvas width="500" height="500"></canvas>
方法二:使用HTML5 Canvas API操作 OK
       var canvas = document.getElementById('欲操作canvas的id');
       canvas.width = 500;
       canvas.width = 500;
若通过如下方法设置宽高,那么Canvas元素将由原来大小被拉伸到所设置的宽高:
方法一:使用CSS 会被拉伸
     #欲操作canvas的id{
          width:1000px;
          height:1000px;
     }
方法二:使用HTML5 Canvas API操作 会被拉伸
      var canvas = document.getElementById('欲操作canvas的id');
      canvas.style.width = "1000px";
      canvas.style.height = "1000px";
方法三 :用jquery的$("#id").width(500);会被拉伸
其它:canvas的width和height也不能用百分比表示。canvas会将百分值当成数值显示

总结

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

HTML / CSS 相关文章推荐
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
Feb 04 HTML / CSS
基于CSS3实现的黑色个性导航菜单效果
Sep 14 HTML / CSS
详解css3 Transition属性(平滑过渡菜单栏案例)
Sep 05 HTML / CSS
Css3实现无缝滚动防抖
Sep 14 HTML / CSS
详解利用canvas实现环形进度条的方法
Jun 12 HTML / CSS
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
Jul 20 HTML / CSS
关于HTML5你必须知道的28个新特性,新技巧以及新技术
May 28 HTML / CSS
推荐WEB开发者最佳HTML5和CSS3代码生成器
Nov 24 HTML / CSS
html5组织内容_动力节点Java学院整理
Jul 10 HTML / CSS
详解如何获取localStorage最大存储大小的方法
May 21 HTML / CSS
CSS 实现多彩、智能的阴影效果
May 12 HTML / CSS
使用HBuilder制作一个简单的HTML5网页
Jul 07 HTML / CSS
使用HTML5 IndexDB存储图像和文件的示例
Nov 05 #HTML / CSS
canvas像素画板的实现代码
Nov 21 #HTML / CSS
详解使用canvas保存网页为pdf文件支持跨域
Nov 23 #HTML / CSS
websocket+sockjs+stompjs详解及实例代码
Nov 30 #HTML / CSS
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
Nov 30 #HTML / CSS
HTML5 Geolocation API的正确使用方法
Dec 04 #HTML / CSS
canvas实现俄罗斯方块的方法示例
Dec 13 #HTML / CSS
You might like
php 分页函数multi() discuz
2009/06/21 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
PHP实现获取文件mime类型多种方法解析
2020/05/28 PHP
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
用原生js做单页应用
2017/01/17 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
什么是Vue.js框架 为什么选择它?
2017/10/17 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
[03:11]2014DOTA2国际邀请赛-VG掉入败者组 独家专访357
2014/07/19 DOTA
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
python对csv文件追加写入列的方法
2019/08/01 Python
Python测试线程应用程序过程解析
2019/12/31 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
阿玛尼美妆加拿大官方商城:Giorgio Armani Beauty加拿大
2017/10/24 全球购物
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
个人求职简历的自我评价范文
2013/10/09 职场文书
电气工程和自动化自荐信范文
2013/12/25 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
企业年度评优方案
2014/06/02 职场文书
节水标语大全
2014/06/11 职场文书
车贷收入证明范本
2014/09/14 职场文书
个人房屋租赁合同(标准范本)
2019/09/16 职场文书
PyQt5实现多张图片显示并滚动
2021/06/11 Python