Responderei à pergunta mais geral de como adaptar uma tela dinamicamente ao tamanho após redimensionar a janela. A resposta aceita lida adequadamente com o caso em que largura e altura devem ser 100%, o que foi solicitado, mas também alterará a proporção da tela. Muitos usuários desejam que a tela seja redimensionada no redimensionamento da janela, mas mantendo a proporção intacta. Não é a pergunta exata, mas ela "se encaixa", apenas colocando a questão em um contexto um pouco mais geral.
A janela terá alguma proporção (largura / altura), e o objeto da tela também. Como você deseja que essas duas proporções se relacionem entre si é uma coisa que você precisa esclarecer, não há uma resposta única para essa pergunta - analisarei alguns casos comuns do que você pode quer.
O mais importante é esclarecer: o objeto de tela html possui um atributo de largura e um atributo de altura; e, em seguida, o css do mesmo objeto também possui um atributo de largura e altura. Essas duas larguras e alturas são diferentes, ambas são úteis para coisas diferentes.
Alterar os atributos de largura e altura é um método com o qual você sempre pode alterar o tamanho da sua tela, mas terá que repintar tudo, o que levará tempo e nem sempre será necessário, porque é possível realizar algumas alterações no tamanho. por meio dos atributos css; nesse caso, você não redesenha a tela.
Eu vejo quatro casos do que você pode querer que ocorra no redimensionamento da janela (todos começando com uma tela cheia)
1: você deseja que a largura permaneça 100% e deseja que a proporção fique como estava. Nesse caso, você não precisa redesenhar a tela; você nem precisa de um manipulador de redimensionamento de janela. Tudo o que você precisa é
$(ctx.canvas).css("width", "100%");
onde ctx é o seu contexto de tela. fiddle: resizeByWidth
2: você deseja que a largura e a altura permaneçam 100% e a alteração resultante na proporção tenha o efeito de uma imagem esticada. Agora, você ainda não precisa redesenhar a tela, mas precisa de um manipulador de redimensionamento de janela. No manipulador, você faz
$(ctx.canvas).css("height", window.innerHeight);
fiddle: messWithAspectratio
3: você deseja que a largura e a altura permaneçam 100%, mas a resposta para a mudança na proporção é algo diferente de esticar a imagem. Em seguida, é necessário redesenhar e fazê-lo da maneira descrita na resposta aceita.
violino: redesenhar
4: você deseja que a largura e a altura sejam 100% no carregamento da página, mas permaneça constante a partir de então (nenhuma reação ao redimensionamento da janela.
violino: fixo
Todos os violinos têm código idêntico, exceto a linha 63, onde o modo está definido. Você também pode copiar o código do violino para executar em sua máquina local; nesse caso, você pode selecionar o modo por meio de um argumento da string de consulta, como? Mode = redraw