Como posso obter a largura e a altura do elemento canvas em JavaScript?
Além disso, qual é o "contexto" da tela sobre a qual continuo lendo?
fonte
Como posso obter a largura e a altura do elemento canvas em JavaScript?
Além disso, qual é o "contexto" da tela sobre a qual continuo lendo?
Pode valer a pena dar uma olhada em um tutorial: Firefox Canvas Tutorial
Você pode obter a largura e a altura de um elemento de tela simplesmente acessando essas propriedades do elemento. Por exemplo:
var canvas = document.getElementById('mycanvas');
var width = canvas.width;
var height = canvas.height;
Se os atributos de largura e altura não estiverem presentes no elemento de tela, o tamanho padrão de 300 x 150 será retornado. Para obter dinamicamente a largura e altura corretas, use o seguinte código:
const canvasW = canvas.getBoundingClientRect().width;
const canvasH = canvas.getBoundingClientRect().height;
Ou usando a sintaxe de desestruturação de objeto mais curta:
const { width, height } = canvas.getBoundingClientRect();
O context
é um objeto que você obtém da tela para permitir que você desenhe nele. Você pode pensar no context
como a API para a tela, que fornece os comandos que permitem desenhar no elemento da tela.
width
eheight
forem especificados diretamente como<canvas />
atributos de tagBem, todas as respostas anteriores não estão totalmente corretas. 2 dos principais navegadores não suportam essas 2 propriedades (o IE é uma delas) ou as usam de maneira diferente.
Melhor solução (compatível com a maioria dos navegadores, mas não verifiquei o Safari):
Pelo menos obtenho os valores corretos com scrollWidth e -Height e PRECISO definir canvas.width e height quando ele é redimensionado.
fonte
As respostas que mencionam
canvas.width
retornam as dimensões internas do canvas, ou seja, aquelas especificadas na criação do elemento:Se você dimensionar a tela com CSS, suas dimensões DOM podem ser acessadas por
.scrollWidth
e.scrollHeight
:fonte
width
andheight
call sempre retornará 300x150 se você não especificar nenhum valor e usar o tamanho relativo (ao usar bootstrap ... etc). Obrigado.O objeto de contexto permite que você manipule a tela; você pode desenhar retângulos, por exemplo, e muito mais.
Se você deseja obter a largura e a altura, pode apenas usar os atributos HTML padrão
width
eheight
:fonte
agora, a partir de 2015, todos os (principais?) navegadores parecem baixar
c.width
ec.height
obter o tamanho interno da tela , mas:a pergunta como as respostas são enganosas, porque a tela tem em princípio 2 tamanhos diferentes / independentes.
O "html" permite dizer largura / altura CSS e sua própria (atributo) largura / altura
veja este pequeno exemplo de tamanho diferente , onde coloquei uma tela 200/200 em um elemento 300/100 html
Com a maioria dos exemplos (todos que eu vi), não existe um tamanho css definido, então eles implicam na largura e altura do tamanho da tela (desenho). Mas isso não é obrigatório e pode produzir resultados engraçados, se você escolher o tamanho errado - ou seja, css largura / altura para posicionamento interno.
fonte
Nenhum desses funcionou para mim. Experimente isso.
fonte
Aqui está um CodePen que usa canvas.height / width, CSS height / width e contexto para renderizar corretamente qualquer canvas em qualquer tamanho .
HTML:
CSS:
Javascript:
Basicamente, canvas.height / width define o tamanho do bitmap para o qual você está renderizando. A altura / largura do CSS, então, dimensiona o bitmap para caber no espaço do layout (geralmente distorcendo-o conforme o dimensiona). O contexto pode então modificar sua escala para desenhar, usando operações vetoriais, em tamanhos diferentes.
fonte
Tive um problema porque minha tela estava dentro de um contêiner sem ID, então usei este código jquery abaixo
fonte