Ir al contenido principal

HTML5. ¿Gráfico en un canvas usando javascript?

   Para mi gusto no, ¿porqué?, porque me parece demasiado engorroso. Yo prefiero crear el dibujo en cualquier programa, Gimp por ejemplo que, además, es gratuito y cargarlo en la página. No obstante, para ilustrar el ejemplo de creación de dibujos en un canvas usando javascript, en la página Las Edades de la Tierra, en la sección "Enlaces de interés", abajo del todo tengo un enlace llamado "ver gráfico de escala geológica", si pincháis sobre él se abrirá una ventana, esta ventana es un canvas que contiene un gráfico realizado en javascript. Ahora os comento como se realiza esto.

   En primer lugar el código en HTML5:

   <canvas id="migrafico">Tu navegador no soporta Canvas</canvas>

   El HTML es así de sencillo, una sola línea. El texto "Tu navegador no soporta Canvas" sólo aparecerá en el caso de que el navegador no soporte esa función. Tenemos que darle un id para poder dibujar dentro del canvas y, en este caso, también para abrir y cerrar la ventana.

  Llamamos a la visualización del gráfico mediante el último enlace que veis en "Enlaces de interés". La línea en HTML es como sigue:

   <div id="abrecierracanvas"><h2>Ver gráfico de escala geológica</h2></div>

   La línea en sí no parece un enlace pero le damos la apariencia con CSS:
      #abrecierracanvas h2 {
display:block!important;
cursor: pointer;
-webkit-transition:-webkit-transform 300ms ease-out;
transition:transform 300ms ease-out;
color:#0FF;
font-size:0.9em;
text-decoration:underline;
      }

   Y, con el siguiente código, en jQuery, hacemos la ventana visible o invisible:

      <script type="text/javascript">
         $(document).ready(function(){  //cuando la página esté cargada
             //localizamos el div con id abrecierracanvas, y... 
            $('#abrecierracanvas').on('click','h2', function() {//...si hacemos click en el texto con la etiqueta h2
                //...ejecutamos la función que sigue:
           var $canvas=$('#migrafico'); //localizamos el canvas con id migráfico
           if ($canvas.is(':hidden')) {  //Si el gráfico está oculto
$canvas.slideDown('100'); //lo abrimos con un efecto
                           //y cambiamos el texto de ver el gráfico por Ocultar el gráfico
$('#abrecierracanvas h2').text("Ocultar gráfico de escala geológica");
} else {  //en caso contrario (significa que ya está abierto)
$canvas.slideUp('100');  //lo cerramos con un efecto
                          //y restauramos el texto original
$('#abrecierracanvas h2').text("Ver gráfico de escala geológica");
}

            });
         })
      </script>

   Y, ahora, lo más tedioso, dibujar el gráfico en javascript:

 <script type="text/javascript">
 var canvas = document.getElementById("migrafico");
 var ctx = canvas.getContext("2d");
ctx.moveTo(10,80);
ctx.lineTo(10,120);
ctx.lineTo(290,120);
ctx.lineTo(290,80);
ctx.moveTo(10,120);
ctx.moveTo(253,120);
ctx.lineTo(253,80);
ctx.moveTo(253,120);
ctx.moveTo(273,120);
ctx.lineTo(273,80);
ctx.moveTo(273,120);
ctx.moveTo(285,120);
ctx.lineTo(285,80);
ctx.strokeStyle = "#fff";
ctx.stroke();
ctx.font = '12px Verdana';
ctx.fillStyle="#00FFFF";
ctx.fillText("1.Precámbrico",10,20);
ctx.fillText("2.Paleozoico",10,32);
ctx.fillText("3.Mesozoico",10,44);
ctx.fillText("4.Cenozoico",10,56);
ctx.fillText("1",120,100);
ctx.fillText("2",258,100);
ctx.fillText("3",275,100);
ctx.fillText("4",285,100);
</script>

   Por esto soy partidario de, simplemente, cargar una imagen dentro de la página. Como podéis ver demasiado código para tan poca cosa. Y yo, de momento, no sé la utilidad que tiene.

Comentarios

Entradas populares de este blog

Leer un archivo XML con jQuery y javascript y modificar un HTML con su contenido

   Una manera muy interesante y fácil de modificar los textos de tu página web. Si, por ejemplo, tenemos una página donde cambiamos a menudo unas noticias que tenemos en el margen derecho, podríamos tener un código HTML como este:    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Manejar archivo XML</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="leerxml.js"></script> <link rel="stylesheet" href="estilos.css"> </head> <body> <h1>Titulo de la página</h1> <div id="derecha"> <div class="noticias"> <div class="prim

Recargar div con efecto de aparición suave (Fade In) en jQuery

  En este post continúo con el código que describí en el segundo post sobre cómo refrescar un div sin necesidad de refrescar toda la página, pero añadiéndole unas lineas para este se aparezca de forma suave. La página de ejemplo es http://www.talleresguadamia.com y el código es el que sigue: <script type="text/javascript"> $(document).ready(function(){    $("#contenido a").each(function(){       var href = $(this).attr("href");       $(this).attr({ href: "#"});       $(this).click(function(event){                  $("#contenido").css("display","none");          $("#contenido").load(href).fadeIn(700);        });    }); });; </script>   Podéis ver lo fácil que es. Hemos agregado sólo dos cosas:   - La linea  "$('#contenido').css('display','none')", que lo único que hace es cambiar la propiedad css "display" del div "#contenido&q

Código jQuery para ver una imagen al pasar el ratón sobre un enlace.

   Voy a explicar un código en jQuery , para que, al pasar el puntero del mouse sobre un enlace o, en este caso, sobre un texto cualquiera (sin necesidad de ser un enlace), se nos muestre una imagen cerca del enlace y que esta desaparezca al retirar el puntero del mouse (sin necesidad de hacer click sobre él). Podéis pensar que me estoy repitiendo con un anterior post. Casi que si. Pero la diferencia es que, en este caso, no sabemos donde estará situada la imagen. Es decir que, dependiendo de la situación de la pantalla donde esté el enlace o texto, allí se mostrará la imagen.    Vamos al grano. Primero el código en HTML:       <span class="enlace" title="hyneria.png">Hyneria</span>    Podéis ver que, en este caso, no se trata de un enlace. Le pongo el nombre de 'enlace' a la clase porque en el CSS le doy apariencia de enlace. Aquí lo importante es 'title' el cual contiene el nombre de la imagen que queremos mostrar (pod