HTML5 Canvas全尺寸

时间:2015-06-01 11:34:56

标签: javascript html5 canvas

我试图通过以下代码制作html5画布全尺寸。我知道有其他方法可以使用javascript,但这有什么不对?

<head>
    <title>Canvas_dot</title>
    <meta charset="utf-8">
    <style>

    #mycanvas{
       background-color : #d3d3d3;
    }

    </style>

</head>
<body >
    <canvas id=myCanvas  width=window.innerWidth height=window.innerHeight ></canvas>
</body>

5 个答案:

答案 0 :(得分:1)

使用javascript,执行以下操作:

var canvas = document.getElementById("myCanvas");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight

<强> Demo

答案 1 :(得分:0)

如果你只是需要一个解决方案,它实际上可以这样做

  #mycanvas{
       background-color : #d3d3d3;
       width : 100%;
       height : 100%;
    }

答案 2 :(得分:0)

你的代码的问题是window.innerWidth实际上是Javascript。 Javascript调用需要在其周围添加脚本标记才能被识别为Javascript。

答案 3 :(得分:0)

没有JS的更简单,更清洁的解决方案。只需使用:

body{
    width:100%;
    height:100%;
}

#mycanvas{
    width:100%;
    height:100%;
    background-color : #d3d3d3;
}

答案 4 :(得分:0)

为什么这不起作用有几个原因:

  1. JavaScript是为了操纵DOM。为了使其工作,DOM需要在找到元素之前存在。在这个例子中,JavaScript代码(见下文)试图操纵一个尚不存在的DOM元素(本身,即canvas元素),因为代码存在于里面 DOM元素的定义。 / p>

  2. 如果没有定义<script>标记就无法识别JavaScript,并且标记不能位于其他标记内,因此无法在标记的属性部分运行代码(即。<tag <invalidtag ..> >

  3. =之后的任何内容都被解释为键的。 “window。*”只是被解释为一个字符串,在这种情况下,画布对于宽度/高度来说是无效的值。

  4. 最接近有效设置以近似定义标记的方法是使用内联document.write()。在HTML中:

    <script>
        document.write("<canvas width="  + window.innerWidth + 
                              " height=" + window.innerHeight + "></canvas");
    </script>
    

    但是,由于缺乏可维护性,可读性,安全性等,建议使用DOM元素定义大小。如果你需要填充窗口的画布的初始状态,你可以这样做:

    #myCanvas {
        position: fixed;
        left: 0;
        top: 0;
        width:100%;  /* make sure html and body has width/height defined 100% */
        height:100%;
        }
    

    但这只会更新画布元素,而不是其位图仍然是300x150(除非定义了初始大小)。当脚本可以运行时,用JavaScript更新位图大小:

    updateCanvasSize();
    window.onresize = updateCanvasSize;
    
    // assuming var canvas = ...element.. is already obtained
    function updateCanvasSize() {
      var rect = canvas.getBoundingClientRect();   // get pixel size of element
      canvas.width = rect.width;                   // update bitmap which now match 1:1
      canvas.height = rect.height;
      // redraw content here as resizing the bitmap clears it
    }