Icono del sitio Imacreste

Insertar Audio, Video y elementos CANVAS con HTML5

Los que venimos desarrollando webs desde hace mucho tiempo sabemos lo complejo que era insertar vídeos en nuestro diseño. Con HTML5 se han desarrollado etiquetas que facilitan este trabajo mucho, y no solo para vídeos sino para audios, y para dibujar gráficos se ha creado una etiqueta especifica que con un conocimiento alto de javascript permite realizar auténticas maravillas visuales.

Insertar un audio

Para insertar un audio tenemos 2 formas:

<audio controls>
<source src="tiburon.mp3" type="audio/mp4">
</audio>

Ten en cuenta que si el audio se reproduce desde nuestra web, eso implica que es nuestro servidor el que se encarga de su reproducción.

Insertar un vídeo

Para insertar un vídeo en nuestra web tenemos 2 formas:

Ten en cuenta que si el vídeo se reproduce desde nuestra web, eso implica que es nuestro servidor el que se encarga de su reproducción, los vídeos largos y de calidad consumen muchos recursos de servidor.

Insertar diseños gráficos con CANVAS

El elemento canvas sirve para crear un entorno en el que crear dibujos pudiendo crear incluso efectos dinámicos. En si el elemento es muy simple solo es necesario darle unas dimensiones al lienzo:

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">
El navegador que usas no soporta html5.
</canvas>

En este caso le añadimos un borde, y un mensaje interno por si se abre la web con un navegador que no soporte HTML5.

Y desde este momento podemos dibujar con javascript, por ejemplo vamos a crear un círculo:

<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();
</script>

<canvas id="canvas2" width="400" height="400" style="border:1px solid #d3d3d3;">
El navegador que usas no soporta html5.
</canvas>
<script>
var canvas = document.getElementById("canvas2");
var ctx = canvas.getContext("2d");
var radius = canvas.height / 2;
ctx.translate(radius, radius);
radius = radius * 0.90
setInterval(drawClock, 1000);

function drawClock() {
  drawFace(ctx, radius);
  drawNumbers(ctx, radius);
  drawTime(ctx, radius);
}

function drawFace(ctx, radius) {
  var grad;
  ctx.beginPath();
  ctx.arc(0, 0, radius, 0, 2*Math.PI);
  ctx.fillStyle = 'white';
  ctx.fill();
  grad = ctx.createRadialGradient(0,0,radius*0.95, 0,0,radius*1.05);
  grad.addColorStop(0, '#333');
  grad.addColorStop(0.5, 'white');
  grad.addColorStop(1, '#333');
  ctx.strokeStyle = grad;
  ctx.lineWidth = radius*0.1;
  ctx.stroke();
  ctx.beginPath();
  ctx.arc(0, 0, radius*0.1, 0, 2*Math.PI);
  ctx.fillStyle = '#333';
  ctx.fill();
}

function drawNumbers(ctx, radius) {
  var ang;
  var num;
  ctx.font = radius*0.15 + "px arial";
  ctx.textBaseline="middle";
  ctx.textAlign="center";
  for(num = 1; num < 13; num++){
    ang = num * Math.PI / 6;
    ctx.rotate(ang);
    ctx.translate(0, -radius*0.85);
    ctx.rotate(-ang);
    ctx.fillText(num.toString(), 0, 0);
    ctx.rotate(ang);
    ctx.translate(0, radius*0.85);
    ctx.rotate(-ang);
  }
}

function drawTime(ctx, radius){
    var now = new Date();
    var hour = now.getHours();
    var minute = now.getMinutes();
    var second = now.getSeconds();
    //hour
    hour=hour%12;
    hour=(hour*Math.PI/6)+
    (minute*Math.PI/(6*60))+
    (second*Math.PI/(360*60));
    drawHand(ctx, hour, radius*0.5, radius*0.07);
    //minute
    minute=(minute*Math.PI/30)+(second*Math.PI/(30*60));
    drawHand(ctx, minute, radius*0.8, radius*0.07);
    // second
    second=(second*Math.PI/30);
    drawHand(ctx, second, radius*0.9, radius*0.02);
}

function drawHand(ctx, pos, length, width) {
    ctx.beginPath();
    ctx.lineWidth = width;
    ctx.lineCap = "round";
    ctx.moveTo(0,0);
    ctx.rotate(pos);
    ctx.lineTo(0, -length);
    ctx.stroke();
    ctx.rotate(-pos);
}
</script>

Podemos incluso crear juegos como podemos observar en este enlace.

Aquí os dejo un manual completo de Canvas: Ver.

Salir de la versión móvil