Solution:How to make canvas 100% of browser window
Monkey Targets Forums/HTML5/Solution:How to make canvas 100% of browser window| 
 | ||
| I tried using CSS to make the GameCanvas object 100% of the browser window size, however I failed to make it work. I added the following tag to the CSS section of MonkeyGame.html #GameCanvas { height: 100%; width: 100%; border: 1px solid black; } I modified the following line of MonkeyGame.html as follows: <canvas id="GameCanvas" onclick="javascript:this.focus();" tabindex=1></canvas><br> The result was a blank screen. I'm curious to know why this didn't work (although I'm admittedly not very skilled in HTML5). I did manage to achieve the effect via a simple modification to main.js (in the window.onload function at the very top of the file) I added the following lines after line 27, which reads game_console=document.getElementById( "GameConsole": //add the following two lines for a full-window game canvas game_canvas.width=window.innerWidth; game_canvas.height=window.innerHeight; I'm interested to hear if anyone else has a better way of doing this. | 
| 
 | ||
| Try this: 
#GameCanvas {
  position:absolute;
  width: 100%;
  height: 100%;
}
Edit: and of course you should set RESIZEABLE_CANVAS=true on line 4 of main.js | 
| 
 | ||
| Thank you Warpy - this is a much better way. Being able to resize the canvas in real time is excellent. | 
| 
 | ||
| Alternatively I did this in my game: Replace the top part of the main.js with this : 
//Change this to true for a stretchy canvas!
//
var RESIZEABLE_CANVAS=true;
//Start us up!
//
function doResize()
{			
	var canvas = game_canvas;
	canvas=document.getElementById( "GameCanvas" );
	var screenHeight = window.innerHeight;
	var screenWidth = window.innerWidth;
	if (screenWidth*3/4 < screenHeight)
	{
		screenHeight = Math.floor(screenWidth*3/4);
	}
	else
	{
		screenWidth = Math.floor(screenHeight*4/3);
	}
	canvas.style.height = screenHeight;
	canvas.style.width = screenWidth;
	canvas.style.marginLeft = (window.innerWidth-screenWidth)/2;
	canvas.style.marginTop = Math.floor((window.innerHeight-screenHeight)/2);
}
window.onload=function( e ){
	game_canvas=document.getElementById( "GameCanvas" );
	game_console=document.getElementById( "GameConsole" );
	
	if( RESIZEABLE_CANVAS ){
		window.onresize=function() { doResize(); };
	}
		
	doResize();
		
	try{
		bbInit();
		bbMain();
	}catch( ex ){
		if( ex ) alert( ex );
		return;
	}
	
	if( game_runner!=null ){
		game_runner();
	}
}
//Globals
and then in the html file remove the : <!DOCTYPE html> at the top of the file. This makes the assumption the game runs in a 4:3 window and will resize to fill the window while keeping the aspect ratio and centre it. |