(一) width/height 默认值与单位  

  Canvas  标签只有两个属性—— width\height,作为一种替换元素,它默认大小为300×150像素。

  canvas的单位只能是是px,值只能是整数。如果你设置为其他单位或者不设置,在渲染时,依旧按照像素单位显示。

  如果数值设置称负数,或者 不设置,则按照 300×150像素显示(前提是 没有设置css,否则会有一些神奇的现象出现)。

  

(二)属性与CSS权重问题

 <canvas style="background-color: #039be5; width: 300px" width="100px" ></canvas>

  请试想下,这个canvas表现出 的宽度,高度是多少?

  宽度是300px,因此,css的权重是  >   HTML 属性权重

  渲染出的高度却不是默认150px,如下图所示:

 

  渲染出的高度是450px,这是为什么呢?

  MDN上有句话: 绘制时图像会伸缩以适应它的框架尺寸

  也就是说:  这里会按照等比例缩放:  即 (300【css宽度】/100【width宽度】)*150(height默认高度) = 450 px (渲染高度) 。  

  canvas的等比特性是强制的,有时候就会造成绘制的图形会发生扭曲。

  如下,我即设置样式中的 width与height,又单独设置了 HTML属性中的width,但是 300/100=3,而300/150=2,

  所里两者比例不一致,我绘制的圆,便会出现扭曲。 因此,实际开发中,不要两者都设置。

 <canvas style="background-color: #039be5; width: 300px; height: 300px;" width="100px" ></canvas>
 let context=document.querySelector('canvas').getContext('2d');
context.fillStyle='red';
context.arc(60,65,35,0,2*Math.PI);
context.fill();

  (三) Css 中width/height 与 HTML属性 widht/height 关系

              试想下,当我们在css中设置了属性,并未设置 HTML属性时, 绘制图像时,它的坐标位置,尺寸大小是相对 我们在css中设置的宽度与高度吗?

 <canvas style="background-color: #039be5; height: 300px;" ></canvas>
<script type="text/javascript">
let context=document.querySelector('canvas').getContext('2d');
context.fillStyle='red';
context.arc(150,75,75,0,2*Math.PI);
context.fill();
</script>

 如上,我们设置一个高度为300px(宽度渲染为600px)的画布,然后在距离左顶点 150px,75px(也是圆心所在标记) 处绘制了一个圆,这个圆会居中吗? 

  如果按照真实的高度300px来计算,距离上边距75px显然是不可能居中的;合理的解释是,是按照默认的HTML height属性150px来进行了定位。

  

  如果只设置HTML属性,同样的JS绘制,效果图如下。

 <canvas style="background-color: #039be5; " height="300px" width="600px"></canvas>

   因此,使用Canvas API进行图像绘制时,其坐标位置,尺寸大小都是按照 HTML属性来进行定位的。

 

  

canvas 的HTML属性的更多相关文章

  1. canvas的globalCompositeOperation属性

    在开发过程中遇到过类似刮刮卡的效果,就是涂抹时变透明,显示出下方的内容,做法思路简单说一下问题和解决方案: 分为2层,最下面一层是内容,比如'一等奖',上面一层用一个canvas遮挡住,画布本来是透明 ...

  2. canvas线条的属性

    一.线条的帽子lineCap 取值:butt(默认值),round圆头,square方头 var canvas=document.getElementById("canvas"); ...

  3. 在html5 canvas的destination-atop属性的一些奇怪的问题

    最近在整理canvas的时候发现HTML5 Canvas开发详解一个奇怪的属性解释 目标图形是显示在画布上的位图 而原图形是指要回执在画布上的形状 w3school上面是这样说的 destinatio ...

  4. [ javascript canvas toDataURL() clip() ] javascript canvas toDataURL() clip() 属性及方法演示

    <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...

  5. 【HTML5】Canvas之globalCompositeOperation属性详解

    globalCompositeOperation即Canvas中的合成操作. 1.source-over 这是默认值,他表示绘制的图形将画在现有画布之上 <!DOCTYPE html> & ...

  6. 关于canvas 易忘属性

    globalAlpha=1//表示全局的一个透明度值 默认值是1 globalCompositeOperation // 默认值="source-over"(Default)

  7. HTML5新增Canvas标签及对应属性、API详解(基础一)

    知识说明: HTML5新增的canvas标签,通过创建画布,在画布上创建任何想要的形状,下面将canvas的API以及属性做一个整理,并且附上时钟的示例,便于后期复习学习!Fighting! 一.标签 ...

  8. canvas绘图详解笔记之线条及线条属性

    创建 canvas 首先创建一个canvas元素,我们只需要在html文件中加入这么一句代码: <canvas id="canvas">当前浏览器不支持canvas,请 ...

  9. 用html5的canvas和JavaScript创建一个绘图程序

    本文将引导你使用canvas和JavaScript创建一个简单的绘图程序. 创建canvas元素 首先准备容器Canvas元素,接下来所有的事情都会在JavaScript里面. <canvas ...

随机推荐

  1. Shiro简介——《跟我学Shiro》

    地址: http://jinnianshilongnian.iteye.com/blog/2018936

  2. 手写实现ArrayList & LinkedList

    微信公众号:程序媛的非程序人生 关注可了解更多资讯.问题或建议,请公众号留言; 1.手写实现ArrayList     2.手写实现 LinkedList       3.LinkedList的数据结 ...

  3. centos7下安装Go环境

    下载go cd /home mkdir app cd app wget https://studygolang.com/dl/golang/go1.10.1.linux-amd64.tar.gz ta ...

  4. [编码实践]SpringBoot实战:利用Spring AOP实现操作日志审计管理

    设计原则和思路: 元注解方式结合AOP,灵活记录操作日志 能够记录详细错误日志为运营以及审计提供支持 日志记录尽可能减少性能影响 操作描述参数支持动态获取,其他参数自动记录. 1.定义日志记录元注解, ...

  5. GIT教程的好文章

    Git 教學(1):Git的基本使用 Git 教學(2):Git Branch 的操作與基本工作流程 Git 情境劇:告訴你使用 Git 時什麼情況該下什麼指令

  6. makefile中打印变量名字,方便调试

    $(warning $(DVD_SERVICE)) // DVD_SerVICE是Makefile中的变量 $(warning   ST40_IMPORTS is $(ST40_IMPORTS)) 变 ...

  7. 关于vue

    render:(h)=>h(App):声明App组件的内容 挂载到节点 const root=document.createElement("div")document.bo ...

  8. if、else、else if后的条件执行体

    if.else.else if后的条件执行体有两种情况:一种是用大括号“{ }”括起来的代码块,这个代码块被称作条件执行体:另一种是以分号“:”作为结束符的单行语句或空语句(仅有一个分号),这个单行语 ...

  9. 基于SSM的CRUD项目的详解

    创一个maven工程 创建web的目录和web.xml------------右击项目,build projet--->configure  project---->Project fac ...

  10. CentOS 7设置yum仅仅下载rpm不安装总结

    前言 参考文章:https://linux.cn/article-7937-1.html 在参考文章的基础上进行总结. 使用download-only插件实现 首先我们可以使用downloadonly ...