• canvas标签的width和height以及style.width和style.height的区别


    背景

      今天在博问中看到一个问题:用canvas 的 lineto方法画对角线,但画出来的图形不对?

      这是一个很常见的误区,这里给大家细说一下。

    原理

      在w3网站上是这样解释的:

    The canvas element has two attributes to control the size of the coordinate space: width and height. These attributes, when specified, must have values that are valid non-negative integersThe rules for parsing non-negative integers must be used to obtain their numeric values. If an attribute is missing, or if parsing its value returns an error, then the default value must be used instead. The width attribute defaults to 300, and the height attribute defaults to 150.

    The intrinsic dimensions of the canvas element equal the size of the coordinate space, with the numbers interpreted in CSS pixels. However, the element can be sized arbitrarily by a style sheet. During rendering, the image is scaled to fit this layout size.

      其实这里已经说的很明白,通俗点说就是在canvas中定义width、height跟在style中定义width和height是不同的,canvas标签的width和height是画布实际宽度和高度,绘制的图形都是在这个上面。而style的width和height是canvas在浏览器中被渲染的高度和宽度。如果canvas的width和height没指定或值不正确,就被设置成默认值(300px,height:150px)。

      我们可以利用style的width和height来缩放canvas,请看下面的示例。

    示例

      示例代码如下:

    <!DOCTYPE html>
    <html>
    <head>
    <title>Demo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript">
    function drawDiagonal(id){
    var canvas=document.getElementById(id);
    var context=canvas.getContext("2d");
    context.beginPath();
    context.moveTo(
    0,0);
    context.lineTo(
    100,100);
    context.stroke();
    }

    window.onload
    =function(){
    drawDiagonal(
    "diagonal1");
    drawDiagonal(
    "diagonal2");
    drawDiagonal(
    "diagonal3");
    }
    </script>
    </head>
    <body>
    <canvas id="diagonal1" style="border:1px solid;" width="100px" height="100px"></canvas>
    <canvas id="diagonal2" style="border:1px solid;200px;height:200px;" width="100px" height="100px"></canvas>
    <canvas id="diagonal3" style="border:1px solid;200px;height:200px;"></canvas>
    </body>
    </html>
  • 相关阅读:
    彻底领悟javascript中的exec与match方法
    javascript doT 使用
    pluginstorage 插件
    html5离线储存,application cache,manifest使用体验
    window.location.hash属性介绍 ajax后退按钮失效问题
    控制textarea光标移到末尾
    webkitanylink 谷歌浏览器CSS之A:HOVER
    正则表达式详细参考文档
    复杂应用的 CSS 性能分析和优化建议
    seaJs api 帮助文档
  • 原文地址:https://www.cnblogs.com/artwl/p/2372042.html
Copyright © 2020-2023  润新知