所以,我认为这段代码
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>Log Canvas Width</title>
<style>
#canvas {
background: #888888;
width: 600px;
height: 600px;
}
</style>
<script>
function draw() {
var canvas = document.getElementById('canvas'),
context = canvas.getContext('2d');
document.write(canvas.width);
}
</script>
</head>
<body onload="draw();">
<canvas id='canvas'>
Canvas not supported
</canvas>
</body>
</html>
由于 <body onload="draw();">
使得脚本在页面加载时运行,此时画布还没有捕捉到修订后的值(600),因此会打印出 300 而非 600。
但我将代码修改为:
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>Log Canvas Width</title>
<style>
#canvas {
background: #888888;
width: 600px;
height: 600px;
}
</style>
</head>
<body>
<canvas id='canvas'>
Canvas not supported
</canvas>
<script type="text/javascript">
var canvas = document.getElementById('canvas'),
context = canvas.getContext('2d');
document.write(canvas.width);
</script>
</body>
</html>
现在我想象脚本在画布从嵌入样式中获取属性之后运行,然后我会看到600。但事实并非如此。尽管画布的宽度确实为600,但我仍然得到300。发生了什么?
canvas.style
实际上代表 CSS 样式,无论它在何处以何种方式设置。 - Shomz