Con el elemento HTML <canvas> puedes crear un área para gráficos o ani­ma­cio­nes uti­li­za­n­do Ja­va­S­cri­pt. Para ello, se crea un objeto de contexto 2D. Luego, con varios métodos de la API de la etiqueta <canvas> defines el contenido deseado.

¿Qué es la etiqueta HTML canvas?

HTML <canvas> es un elemento que pro­po­r­cio­na un área de dibujo en la que puedes generar gráficos o ani­ma­cio­nes con Ja­va­S­cri­pt. El área di­s­po­ni­ble se define mediante las es­pe­ci­fi­ca­cio­nes de altura y anchura. El espacio puede in­te­grar­se en cualquier parte de un documento HTML uti­li­za­n­do esta práctica etiqueta HTML.

El contenido de este “lienzo” (canvas en español) no es en realidad parte de la página web, por lo que no es posible aplicar CSS u otros elementos HTML. Si un navegador no es co­m­pa­ti­ble con la etiqueta HTML <canvas>, el contenido se mostrará como un fallback. Sin embargo, los na­ve­ga­do­res modernos admiten el elemento de manera nativa.

Hosting
Hosting de primera al mejor precio
  • 3x más rápido, ahora un 60 % de ahorro
  • Alta di­s­po­ni­bi­li­dad >99.99 %
  • Solo en IONOS: hasta 500 GB incluidos

Sintaxis de la etiqueta HTML <canvas>

El elemento HTML-<canvas> por sí solo no pro­po­r­cio­na he­rra­mie­n­tas para el diseño, sino que si­m­ple­me­n­te crea el marco en el que puedes insertar gráficos con Ja­va­S­cri­pt. La sintaxis básica del elemento es la siguiente:

<canvas id="EjemploCanvas" width="[Valor en píxeles]" height="[Valor en píxeles]"></canvas>
html

Nombras el elemento a través de id y le asignas las di­me­n­sio­nes deseadas con width y height. Op­cio­na­l­me­n­te, puedes usar otros pa­rá­me­tros para precisar el diseño del gráfico.

Fu­n­cio­na­mie­n­to de <canvas> explicado con un ejemplo sencillo

Con la sintaxis anterior, puedes crear en cualquier momento un área simple. En nuestro siguiente ejemplo, esta área tendrá una longitud de 500 píxeles y una altura de 250 píxeles. Este es el código adecuado:

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

Sin embargo, de esta manera solo obtienes un área vacía. Solo con Ja­va­S­cri­pt puedes llenar el elemento HTML <canvas> generado con formas, imágenes, textos o de­gra­da­dos, y animar estos objetos si es necesario. El contenido se almacena en forma de píxeles en un mapa de bits. Po­s­te­rio­r­me­n­te, este se puede convertir en un gráfico PNG.

Para usar el elemento, utiliza el método getElementById(). Esto solo funciona si has asignado una ID única al área <canvas>. Si deseas pintar, dibujar o in­ter­ac­tuar de alguna manera en el área es­pe­ci­fi­ca­da, debes crear un objeto de contexto 2D. Para nuestro ejemplo anterior, esto se logra con el siguiente código:

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

Ahora todo está listo para usar el elemento HTML <canvas>. Con la función fillRect(), ahora podemos colocar un simple re­c­tá­n­gu­lo en el área definida. Este será de color verde azulado (teal en inglés), tendrá 200 píxeles de ancho y 150 píxeles de alto. Lo colocamos a 10 píxeles del borde izquierdo y a 50 píxeles del borde superior. El código completo es el siguiente:

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

¿Para qué se puede utilizar <canvas>?

Mientras que en nuestro ejemplo anterior solo hemos dibujado un simple re­c­tá­n­gu­lo, con el elemento <canvas> se pueden realizar formas de re­pre­se­n­ta­ción mucho más complejas. Entre otras cosas, se pueden hacer arcos ci­r­cu­la­res, textos, tra­n­s­pa­re­n­cias, de­gra­da­dos de color y gráficos en formatos GIF, JPEG y PNG. Estos se pueden recortar, escalar y po­si­cio­nar li­bre­me­n­te. Además, las ani­ma­cio­nes se pueden im­ple­me­n­tar de una etiqueta HTML <canvas> uti­li­za­n­do la función de tiempo de Ja­va­S­cri­pt.

¿Qué di­me­n­sio­nes puede tener un elemento <canvas>?

Las di­me­n­sio­nes máximas posibles para <canvas> varían según el navegador y el entorno. Para iOS, por ejemplo, el límite es de 4096 x 4096 píxeles, mientras que otros sistemas permiten tamaños de más de 10 000 x 10 000 píxeles. Sin embargo, como el área siempre se ajusta a la relación de aspecto, los elementos son re­s­po­n­si­vos y, por lo tanto, son adecuados para di­fe­re­n­tes di­s­po­si­ti­vos.

Resumen de los métodos para la API de <canvas>

Ya hemos hablado sobre la creación de un objeto de contexto 2D. Con un objeto de este tipo integrado mediante getContext(“2d”), puedes llenar el área <canvas> en cualquier momento. A co­n­ti­nua­ción, hemos resumido los métodos más im­po­r­ta­n­tes dentro de la API.

Texto

Método De­s­cri­p­ción
font Establece la fuente para el contenido de texto
fillText() Añade texto (co­m­ple­ta­me­n­te relleno) en el <canvas>
strokeText() Añade texto (solo contornos)

Imagen

Método De­s­cri­p­ción
drawImage() Coloca una imagen o video dentro de un elemento <canvas>

Dibujo

Método De­s­cri­p­ción
fillRect() Dibuja un re­c­tá­n­gu­lo relleno
strokeRect() Dibuja un re­c­tá­n­gu­lo vacío
clearRect() Limpia ciertos píxeles dentro de un re­c­tá­n­gu­lo

Rutas

Método De­s­cri­p­ción
beginPath() Inicia una nueva ruta
lineTo() Dibuja una línea en la ruta
moveTo() Mueve la ruta a un punto dentro del lienzo

Diseño

Método De­s­cri­p­ción
addColorStop() Establece los colores y las po­si­cio­nes para un degradado
createLinearGradient() Crea un degradado lineal
createPattern() Repite un elemento
shadowBlur Establece el des­en­fo­que para una sombra
shadowColor Define el color de una sombra

Otras funciones

Método De­s­cri­p­ción
restore() Restaura un estado anterior
save() Guarda el estado actual y todos sus atributos

Ejemplo de <canvas > con texto y degradado de color

Ahora uti­li­za­re­mos algunos de estos métodos para nuestro ejemplo final. Primero, creamos un marco de 500 x 250 Pixel mediante una etiqueta HTML <canvas>. Luego, creamos un objeto de contexto 2D. Fi­na­l­me­n­te, agregamos un título y otra oración, que tendrá un degradado de color. El código co­rre­s­po­n­die­n­te es el siguiente:

<!DOCTYPE html> 
<html> 
<body> 
<h1>Ejemplo de lienzo con texto y un degradado de color</h1> 
<h2>Usamos los métodos strokeText() y gradient</h2> 
<canvas id="EjemploCanvas" width="500" height="250" style="border:1px solid grey"></canvas> 
<script> 
const c = document.getElementById("EjemploCanvas"); 
const ctx = c.getContext("2d"); 
ctx.font = "40px Calibri"; 
ctx.strokeText("Aquí está el 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("Aquí hay otra frase", 20, 90); 
</script> 
</body> 
</html>
html
Dominios web
Compra y registra tu dominio ideal
  • Tu dominio protegido con Ce­r­ti­fi­ca­do SSL Wildcard gratis
  • Función Domain Connect para una co­n­fi­gu­ra­ción DNS si­m­pli­fi­ca­da gratis
  • Registro privado y gratis para mayor seguridad
Ir al menú principal