O elemento <canvas> em HTML pos­si­bi­lita criar uma área para adicionar conteúdo gráfico ou animações usando Ja­vaS­cript. Um objeto de contexto 2D é criado e, com os di­fe­ren­tes métodos da API <canvas>, você consegue es­pe­ci­fi­car o conteúdo que deseja exibir.

O que é a tag <canvas> em HTML?

A tag <canvas> em HTML é um elemento que oferece um espaço de desenho onde você pode criar conteúdo gráfico ou animações usando Ja­vaS­cript. Essa área é definida pelos atributos de altura e largura e pode ser po­si­ci­o­nada em qualquer lugar de um documento HTML usando a tag HTML <canvas>.

O conteúdo desenhado dentro do <canvas> não é tratado como elementos HTML in­di­vi­du­ais e, por isso, não pode ser es­ti­li­zado com CSS. No entanto, o próprio <canvas> pode ter estilos aplicados via CSS, como bordas, largura, altura e po­si­ci­o­na­mento. Caso o navegador não ofereça suporte ao <canvas>, qualquer conteúdo HTML colocado entre as tags <canvas> e </canvas> será exibido como fallback. No entanto, quase todos os na­ve­ga­do­res modernos já oferecem suporte nativo a esse elemento.

Hos­pe­da­gem que se adapta às suas ambições
  • Fique online com 99,99% de tempo de atividade e segurança robusta
  • Aumente o de­sem­pe­nho com um clique à medida que o tráfego cresce
  • Inclui domínio gratuito, SSL, e-mail e suporte 24 horas por dia, 7 dias por semana

Qual é a sintaxe da tag <canvas> em HTML?

O elemento <canvas> em HTML não oferece nenhuma fer­ra­menta de design integrada. Ele apenas dis­po­ni­bi­liza um framework que permite usar Ja­vaS­cript para criar conteúdo gráfico. A sintaxe básica do elemento é a seguinte:

<canvas id="ExemploCanvas" width="[em pixels]" height="[em pixels]"></canvas>
html

Nomeie o elemento usando id e atribua suas dimensões com width e height. Op­ci­o­nal­mente, você pode usar outros pa­râ­me­tros para es­pe­ci­fi­car o design do conteúdo gráfico.

Como funciona a tag <canvas>?

Você pode usar a sintaxe acima para criar uma área simples. No exemplo abaixo, a área terá 500 pixels de largura e 250 pixels de altura. Este é o código:

<!DOCTYPE html>
<html>
<body>
<h1>Exemplo de canvas HTML</h1>
<canvas id="ExemploCanvas" width="500" height="250" style="border: 1px solid grey"></canvas>
</body>
</html>
html

Esse código criará um espaço em branco. Para preencher o elemento <canvas> em HTML com formas, imagens, textos ou gra­di­en­tes (ou animar elementos), você terá que usar Ja­vaS­cript. O conteúdo será ren­de­ri­zado como bitmap, no qual cada pixel é ma­ni­pu­lado in­di­vi­du­al­mente. Ele poderá ser exportado para formatos como PNG ou JPEG pos­te­ri­or­mente.

Para usar o elemento, aplique o método getElementById(). Ele só fun­ci­o­nará se você tiver atribuído um ID único ao espaço de <canvas>. Se quiser pintar, desenhar ou interagir com a área definida, você terá que criar um objeto de contexto 2D. Dando con­ti­nui­dade ao exemplo acima, o código ficaria assim:

const ExemploCanvas = document.getElementById("ExemploCanvas");
const ctx = ExemploCanvas.getContext("2d");
html

Agora, podemos usar o elemento <canvas> em HTML como uma tela. Co­me­ça­re­mos po­si­ci­o­nando um retângulo simples em uma área definida usando a função fillRect(). Ele terá a cor azul-petróleo com 200 pixels de largura e 150 pixels de altura. Vamos posicioná-lo a 10 pixels da borda esquerda e 50 pixels da borda superior. Este é o código:

<!DOCTYPE html>
<html>
<body>
<h1>Exemplo de canvas HTML</h1>
<canvas id="ExemploCanvas" width="500" height="250" style="border:1px solid grey"></canvas>
<script>
const ExemploCanvas = document.getElementById("ExemploCanvas");
const ctx = ExemploCanvas.getContext("2d");
ctx.fillStyle = "teal";
ctx.fillRect(10, 50, 200, 150);
</script>
</body>
</html>
html

Quais são os usos de <canvas> em HTML?

Apesar de termos desenhado apenas um retângulo simples no exemplo acima, você também pode usar o elemento <canvas> para criar formas e designs muito mais complexos. Por exemplo, é possível criar arcos, textos, trans­pa­rên­cias, gra­di­en­tes de cor e gráficos nos formatos JPEG e PNG, que podem ser re­cor­ta­dos, escalados e po­si­ci­o­na­dos. Você também pode usar a função de tempo do Ja­vaS­cript para im­ple­men­tar animações em uma tag <canvas> em HTML.

Quais dimensões um elemento <canvas> pode ter?

As dimensões máximas de um elemento <canvas> em HTML variam de­pen­dendo do navegador usado e de seu ambiente. Por exemplo, o limite no iOS é 4096 x 4096 pixels, enquanto outros sistemas permitem ul­tra­pas­sar 10000 x 10000 pixels. A área não se ajusta au­to­ma­ti­ca­mente para preservar as pro­por­ções. Se ne­ces­sá­rio, é preciso definir regras de estilo no CSS para torná-lo res­pon­sivo e adequado para di­fe­ren­tes dis­po­si­ti­vos

Métodos com a API <canvas> em HTML

Vimos acima como criar um objeto de contexto 2D. Usando o comando getContext("2d"), você consegue preencher a área <canvas> como quiser. Abaixo, resumimos os métodos mais im­por­tan­tes que estão dis­po­ní­veis na API.

Texto

Método Descrição
font Define a fonte do texto
fillText() Insere o texto (com­ple­ta­mente pre­en­chido) na área <canvas> em HTML
strokeText() Insere o texto (apenas contornos)

Imagem

Método Descrição
drawImage() Posiciona uma imagem ou vídeo em um elemento <canvas> em HTML

Desenhos

Método Descrição
fillRect() Desenha um retângulo pre­en­chido
strokeRect() Desenha um retângulo sem pre­en­chi­mento
clearRect() Limpa os pixels es­pe­ci­fi­ca­dos dentro de um retângulo

Caminho

Método Descrição
beginPath() Inicia um novo caminho
lineTo() Desenha uma linha para o caminho
moveTo() Move o caminho para um ponto es­pe­cí­fico dentro da área

Design

Método Descrição
addColorStop() Es­pe­ci­fica uma cor e uma posição em um objeto gradiente
createLinearGradient() Cria um objeto gradiente linear
createPattern() Repete o elemento es­pe­ci­fi­cado
shadowBlur Define ou retorna o nível de desfoque nas sombras
shadowColor Define ou retorna a cor usada nas sombras

Funções adi­ci­o­nais

Método Descrição
restore() Restaura um desenho para o mesmo estado da última vez em que ele foi salvo
save() Salva o estado atual do desenho e todos os seus atributos

Exemplo de <canvas> em HTML com texto e gradiente de cor

Em nosso último exemplo, com­bi­na­re­mos alguns dos métodos apre­sen­ta­dos na seção acima. Primeiro, vamos criar uma área com as dimensões 500 x 250 pixels usando a tag <canvas> em HTML. Em seguida, criaremos um objeto de contexto 2D. Por fim, vamos inserir um título com contorno e uma frase com um gradiente de cor.

<!DOCTYPE html>
<html>
<body>
<h1>Exemplo de canvas HTML com texto e gradiente de cor</h1>
<h2>Este exemplo usa os métodos strokeText() e gradiente.</h2>
<canvas id="ExemploCanvas" width="500" height="250" style="border:1px solid grey"></canvas>
<script>
const c = document.getElementById("ExemploCanvas");
const ctx = c.getContext("2d");
ctx.font = "40px Calibri";
ctx.strokeText("Este é o título", 20, 50);
ctx.font = "30px Calibri";
var gradient = ctx.createLinearGradient(0, 0, c.width, 0);
gradient.addColorStop("0", "teal");
gradient.addColorStop("0.5", "blue");
gradient.addColorStop("1.0", "green");
ctx.strokeStyle = gradient;
ctx.strokeText("Esta é a frase adicional", 20, 90);
</script>
</body>
</html>
html
Construa sua marca com um ótimo domínio
Registre um nome de domínio
  • SSL Wildcard grátis para mais segurança
  • Registro privado grátis para mais pri­va­ci­dade
  • Domain Connect grátis para con­fi­gu­rar DNS fácil
Ir para o menu principal