2011-01-24 6 views
12

私はhtml5キャンバス要素をテストしていましたが、私のキャンバスを表示領域の全画面にしたいと考えています。しかし、キャンバスの高さをwindow.innerHeightに設定すると、スクロールバーが表示されます。私は、5ピクセル以下の高さに設定する必要があると考えましたが、スクロールバーは消えますが、残念ながらキャンバスの下に白い枠線が残っていました。 div要素の場合はすべて問題ありません。html5キャンバスの余分な高さを削除するにはどうすればよいですか?

私がテストに使用しているコードは次のとおりです。

<!DOCTYPE html> 
<html> 
<head> 
<title>Test</title> 
<script type="text/javascript"> 
function load() { 
    var o = document.getElementById('canvas'); 
    if (o) { 
     o.width = window.innerWidth; 
     o.height = window.innerHeight - 5; 
    } 
    o = document.getElementById('div'); 
    if (o) { 
     o.style.width = window.innerWidth + 'px'; 
     o.style.height = window.innerHeight + 'px'; 
    } 
} 
</script> 
<style type="text/css"> 
* { 
    margin: 0; 
    padding: 0; 
} 
body { 
    background-color: white; 
} 
#canvas { 
    background-color: blue; 
} 
#div { 
    background-color: green; 
} 
</style> 
</head> 
<body onload="load();"> 
<canvas id="canvas"></canvas> 
<!--div id="div"></div--> 
</body> 
</html> 

私は身体のマージンとパディングをクリアしてきました。

私はChrome 8.0.552でテストし、Firefox 3.6.13でも同じように動作しますが、4ピクセル以下で問題ありません。

私が逃したものは何ですか?任意の提案は本当に感謝されます。どうもありがとう。

答えて

18

デフォルトではcanvasで、divと異なり、display: inline;となるため、vertical-align: baseline;に設定されます。あなたは物事が自然にwindow.innerHeightを埋めるようにするには、次のアプローチのいずれかをとることができます。

#canvas { 
    background-color: blue; 
    vertical-align: top; 
} 

または:

#canvas { 
    background-color: blue; 
    display: block; 
} 
関連する問題