【发布时间】:2019-12-14 10:46:36
【问题描述】:
我正在用 javascript 测试一些代码,关于调整 html5 画布的大小。我以前问过类似的问题,当时我用 jquery 测试同样的东西。那时我已经得到了想要的解决方案,参考(eg_1)。在这个(eg_1)中,结果是,canvas 元素在每一帧中调整大小,因为requestAnimationFrame($.fn.animate); 以递归形式发生。视觉结果是 这里宽度属性在我调整控制台窗口大小时更新.如果我关闭控制台,画布会自动调整大小,我不需要重新加载窗口来更新属性值。意味着画布始终是全屏的。但我在javascript中遇到了同样的问题。如果我关闭控制台,控制台的宽度会用空白区域切割(或调整大小)画布。这是视觉结果 空白是我的问题。我必须重新加载窗口,使画布再次全屏。简而言之,我的效果与(eg_1)不同。这里我试过了,参考(eg_2)。
(例如_1)
html : <canvas></canvas>
css:
* {
margin: 0;
padding: 0;
overflow: hidden;
}
canvas {
background-color: turquoise;
}
jquery:
$(document).ready(function() {
var view = $(window),
canvas = $("canvas"),
ctx = canvas[0].getContext("2d"),
width = view.width(),
height = view.height();
$.fn.windowResize = function() {
var width = view.width();
height = view.height();
canvas.attr("width", width);
canvas.attr("height", height);
};
view.on("resize", $.fn.windowResize);
canvas.attr("width", width);
canvas.attr("height", height);
$.fn.animate = function() {
requestAnimationFrame($.fn.animate);
ctx.clearRect(0, 0, width, height);
// start here
};
$.fn.animate();
});
(eg_2)
var canvas = document.querySelectorAll("canvas")[0];
var context = canvas.getContext("2d");
var windowWidth = window.innerWidth;
var windowHeight = window.innerHeight;
function resize() {
setInterval(resize, 5);
clearInterval(resize);
canvas.width = windowWidth;
canvas.height = windowHeight;
}
resize();
【问题讨论】:
标签: javascript jquery html5-canvas