Le fait de définir la largeur et la hauteur de l'espace de coordonnées du canevas en fonction des dimensions du client du navigateur vous oblige à redimensionner et à redessiner chaque fois que le navigateur est redimensionné.
Une solution moins compliquée consiste à conserver les dimensions du dessin dans des variables Javascript, mais à définir les dimensions de la toile en fonction des dimensions screen.width, screen.height. Utilisez le CSS pour l'adapter :
#containingDiv {
overflow: hidden;
}
#myCanvas {
position: absolute;
top: 0px;
left: 0px;
}
En général, la fenêtre du navigateur ne sera jamais plus grande que l'écran lui-même (sauf si la résolution de l'écran est mal indiquée, comme cela peut être le cas avec des moniteurs doubles non adaptés), de sorte que l'arrière-plan n'apparaîtra pas et que les proportions des pixels ne varieront pas. Les pixels du canevas seront directement proportionnels à la résolution de l'écran, à moins que vous n'utilisiez une feuille de style en cascade pour mettre le canevas à l'échelle.
8 votes
Pourquoi canvas{width:100%;height:100%} ne fonctionne pas ?
46 votes
@zloctb - Cela augmente directement la taille de la toile, ce qui étire votre image.
14 votes
Voir le Principes fondamentaux de WebGL pour une explication détaillée de ce qu'il faut faire et ne pas faire pour les questions connexes.
2 votes
Un canevas peut également être mis à l'échelle, il suffit d'ajouter le code css {width:100%}, mais pas son contenu, c'est une toute autre question !