如何使用javascript将html 5画布居中

时间:2015-01-04 06:50:32

标签: javascript html5-canvas

我试图使用javascript将动态html 5画布窗口居中。我知道我所使用的代码并不起作用,但我想知道是否有一种方法可以实现margin-left:auto / margin-left:auto技术通常将元素置于html页面中心。我也用我的画布类css尝试了这个,这也不起作用所以任何帮助都是值得赞赏的。感谢。

我的代码:

var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");


document.getElementById("canvas").style.marginLeft = "auto";
document.getElementById("canvas").style.marginRight = "auto";

canvas.width = 300;
canvas.height = 300;
drawScreen();

formElement = document.getElementById("height");
formElement.addEventListener('change', heightChanged, true);

formElement = document.getElementById("width");
formElement.addEventListener('change', widthChanged, false);

function widthChanged(e) {
  var target = e.target;
  canvas.width = target.value;
  drawScreen();
}

function heightChanged(e) {
  var target = e.target;
  canvas.height = target.value;
  drawScreen();
}

function drawScreen() {
}

3 个答案:

答案 0 :(得分:2)

使画布成为块级元素。您可以使用CSS或将此行添加到代码中来执行此操作:

canvas.style.display= 'block';

示例:

var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");

document.getElementById("canvas").style.marginLeft = "auto";
document.getElementById("canvas").style.marginRight = "auto";
canvas.style.display= 'block';
canvas.width = 300;
canvas.height = 300;
drawScreen();

formElement = document.getElementById("height");
formElement.addEventListener('change', heightChanged, true);

formElement = document.getElementById("width");
formElement.addEventListener('change', widthChanged, false);

function widthChanged(e) {
  var target = e.target;
  canvas.width = target.value;
  drawScreen();
}

function heightChanged(e) {
  var target = e.target;
  canvas.height = target.value;
  drawScreen();
}

function drawScreen() {
}
canvas {
  border: 1px solid black;
  background: yellow;
}
<canvas id="canvas"></canvas>

<div id="height"></div>
<div id="width"></div>

答案 1 :(得分:0)

你喜欢css

canvas {
        display: block;
        position: absolute;
        margin: auto;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
    }

javascript

 document.getElementById("canvas").style.display = "block";
        document.getElementById("canvas").style.margin = "auto";
        document.getElementById("canvas").style.position = "absolute";
        document.getElementById("canvas").style.top = 0;
        document.getElementById("canvas").style.bottom = 0;
        document.getElementById("canvas").style.left = 0;
        document.getElementById("canvas").style.right = 0;

LIVE DEMO

答案 2 :(得分:0)

为什么不将画布放入div容器?

你也可以通过javascript来完成。

var container = document.createElement("div");
container.style.marginLeft = "auto";
container.style.marginRight = "auto";
container.style.width = "300px";

container.innerHtml = canvas;