13
Gerardo Ortega Flores INSTITUTO TECNOLÓGICO DE SAN JUAN DEL RIO. HTML5

HTML5

Embed Size (px)

DESCRIPTION

HTML5

Citation preview

Page 1: HTML5

Gerardo Ortega Flores

INSTITUTO TECNOLÓGICO DE SAN JUAN DEL RIO.

HTML5

Page 2: HTML5

ORTEGA FLORES GERARDO

Contenido 1 HTML 5 ....................................................................................................................................... 2

1.1 MULTIMEDIA ..................................................................................................................... 2

1.1.1 ETIQUETAS AUDIO Y VIDEO............................................................................................ 3

1.2 3D GRAPHICS X .................................................................................................................. 4

1.2.1 EFFECTS .......................................................................................................................... 5

Pasos básicos de animación ..................................................................................................... 5

Actualizaciones programadas ............................................................................................ 6

1.3 OFFLINE STORAGE.............................................................................................................. 6

El Objeto localStorage ......................................................................................................... 7

Ejemplo: .................................................................................................................................. 7

El Objeto sessionStorage .................................................................................................... 7

1.4 CONECTIVITY ..................................................................................................................... 8

1.5 DEVICE ACCESS ......................................................................................................... 10

1.6 PERFOMANCE & INTEGRATION .............................................................................. 10

Page 3: HTML5

ORTEGA FLORES GERARDO

1 HTML 5

En un estricto sentido, HTML es un leguaje de marcado basado en texto usado para

dar formato a la información distribuida a través de Internet. En un nivel más alto,

HTML es un lenguaje que se usa para estructurar u presentar texto e imágenes con

una interfaz. HTML5 es un aumento a la especificación actual, HTML4.01, que

agrega nuevas características que permitirán a diseñadores y desarrolladores crear

su propio contenido.

Algunos de los cambios más notables en HTML5 es la adición de etiquetas para

soportar elementos multimedia y gráficos dinámicos. Esto incluye la

etiqueta <audio> para reproducir sonidos, <video> para videos y <canvas > para

gráficos dinámicos, todo esto dentro del web browser y sin depender de software

externo. Los nuevos elementos multimedia habilitan a los browsers modernos para

proveer experiencias enriquecidas y gráficos dinámicos a partir del código HTML.

El soporte para usar video, manipular imágenes, y visualización de datos permitirá

a los diseñadores y desarrolladores crear experiencias ricas y atractivas que

funcionen en múltiples plataformas (El impulsor de HTML5).

1.1 MULTIMEDIA

Multimedia en la web, es sonido, música, videos, películas y animaciones.

Los primeros navegadores web tenían soporte para sólo texto, limitado a una sola

fuente en un solo color.

El apoyo a los sonidos, animaciones y vídeos se maneja de manera diferente por

distintos navegadores. Se admiten diferentes tipos y formatos, y algunos formatos

requieren programas de ayuda adicionales (plug-in’s) para trabajar.

Los elementos multimedia (como sonidos o videos) se almacenan en archivos de

medios.

La forma más común de descubrir el tipo de un archivo, es mirar a la extensión del

archivo. Cuando un navegador ve la extensión .htm o .html archivo, tratará el archivo

Page 4: HTML5

ORTEGA FLORES GERARDO

como un archivo HTML. La extensión .xml indica un archivo XML, y la extensión .css

indica un archivo de hoja de estilos. Las fotos son reconocidas por extensiones

como .gif, .png y .jpg.

Los archivos multimedia también tienen sus propios formatos y diferentes

extensiones como: .swf, .wav, .mp3, .mp4, .mpg, .wmv, .avi

1.1.1 ETIQUETAS AUDIO Y VIDEO

Dos nuevas etiquetas para incrustar contenido multimedia directamente: <audio> </audio> y<video> </video>.

Estas etiquetas pretenden simplificar la inserción de contenido multimedia, evitando tener que usar plugins en el navegador. Es el propio navegador el que debe reconocer el formato multimedia y ponerlo en marcha. La mayoría de los navegadores no se han puesto al día para reconocer los formatos de audio y video más comunes, por lo que de momento tendremos que seguir usando la etiqueta embed Las etiquetas audio y video tienen los siguientes atributos para poder localizar y controlar el archivo multimedia.

src="ruta_del_archivo" : Al igual que con las imágenes indicamos en este atributo la ruta del archivo.

autoplay Indica que el archivo debe reproducirse automáticamente al cargarse la página. Este atributo no tiene valores.

controls Indica que deben mostrarse los controles para que el usuario pueda iniciar, detener , pausar el archivo. Este atributo no tiene valores.

loop El archivo vuelve a reproducirse cuando acaba, una y otra vez. Este atributo tampoco tiene valores.

autobuffer El archivo tiene que descargarse completamente antes de empezar a reproducirse. Al igual que los anteriores no necesita valores.

widht="num" Sólo para video; su valor indica en pixels el ancho de la pantalla en que se reproduce el video.

height="num" Sólo para video; su valor indica en pixels el alto de la pantalla en que se reproduce el video.

Veamos con algunos ejemplos cómo se puede escribir el código: <audio src="sintonia.mp3" autoplay loop ></audio> <video src="mivideo.mp4" controls autobuffer widht="300"></video>

Page 5: HTML5

ORTEGA FLORES GERARDO

1.2 3D GRAPHICS X

El HTML <canvas> Element

El HTML elemento <canvas> (introducido en HTML5) es un contenedor para

gráficos de lona. Un lienzo HTML es un área rectangular en una página HTML, Un

lienzo tiene varios métodos para caminos de dibujo, cajas, círculos, texto y las

imágenes gráficas.

El elemento <canvas> no está soportado en navegadores viejos, pero están

soportado en la mayoría de las versiones más recientes de los navegadores. El

tamaño por defecto del canvas es 300px * 150px [ancho (width) * alto (height)]. Pero

se puede personalizar el tamaño usando las propiedades height y width de

CSS. Con el fin dedibujar gráficos en el lienzo <canvas> se utiliza un objeto de

contexto de JavaScript que crea gráficos sobre la marcha.

Ejemplo: <canvas id="tutorial" width="150" height="150"></canvas>

Observamos un gran parecido al elemento <img>, con la sola diferencia que este

no tiene los atributos src y alt. El elemento <canvas> tiene solo dos atributos

- width y height. Estos son ambos opcionales y pueden tambien ser puestos usando

propiedades DOM. Cuando los atributos ancho y alto no estan especificados, el

lienzo se inicializara por 300 pixels ancho y 150 pixels de alto. El elemento puede

ser arbitrariamente redimensionado por CSS, pero durante el renderizado la imagen

es escalada para ajustarse al tamaño de su layout.

Diferente al elemento <img>, el elemento <canvas> requiere cerrar la

etiqueta (</canvas>). Si el contenido de regreso (fallback content) no se necesita,

un simple <canvas id="foo" ...></canvas> es completamente compatible con todos

los navegadores que soportan canvas.

RENDERIZACIÓN

El canvas esta inicialmente en blanco. Para mostrar alguna cosa, un script primero

necesita acceder al contexto a renderizar y dibujar sobre este. El

elemento <canvas> tiene un method llamado getContext(), usado para obtener el

contexto a renderizar y sus funciones de dibujo. getContext()toma un parametro, el

tipo de contexto. Para graficos 2D, como los que cubre este tutorial, su

especificacion es "2d".

Page 6: HTML5

ORTEGA FLORES GERARDO

EJEMPLO:

<html>

<head>

<script type="application/javascript">

function draw() {

var canvas = document.getElementById("canvas");

if (canvas.getContext) {

var ctx = canvas.getContext("2d");

ctx.fillStyle = "rgb(200,0,0)";

ctx.fillRect (10, 10, 55, 50);

ctx.fillStyle = "rgba(0, 0, 200, 0.5)";

ctx.fillRect (30, 30, 55, 50);

}

}

</script>

</head>

<body onload="draw();">

<canvas id="canvas" width="150" height="150"></canvas>

</body>

</html>

1.2.1 EFFECTS

Pasos básicos de animación

Estos son los pasos que debes seguir para dibujar un marco:

1. Desactive la lona

A menos que las formas que vaya a dibujar llenar el lienzo completo (por ejemplo,

una imagen de fondo), es necesario borrar cualquier forma que se han elaborado

previamente. La forma más fácil de hacerlo es usando la clearRect() método.

2. Guardar el estado de lona

Si va a modificar cualquier entorno (como estilos, transformaciones, etc.) que

afectan el estado de la lona y desea asegurarse de que el estado original se utiliza

cada vez que se dibuja un marco, es necesario guardar ese estado inicial.

3. Dibujar formas animadas

El paso en el que hacer la prestación de fotogramas real.

4. Restaurar el estado del lienzo

Si ha guardado el estado, restaurarlo antes de dibujar un nuevo marco.

Page 7: HTML5

ORTEGA FLORES GERARDO

Control de la animación.

Actualizaciones programadas

En primer lugar están

los window.setInterval() , window.setTimeout() ywindow.requestAnimationFrame() f

unciones, que se pueden utilizar para llamar a una función específica durante un

período de tiempo determinado.

setInterval(function, delay)

Inicia ejecutar repetidamente la función especificada

por function cada delay milisegundos.

setTimeout(function, delay)

Ejecuta la función especificada por function de delay milisegundos.

requestAnimationFrame(callback)

Le dice al navegador que desea realizar una animación y pide que el

navegador llamar a una función específica de actualizar una animación antes

de la próxima repintado.

Si usted no quiere ninguna interacción del usuario puede utilizar

el setInterval() función que ejecuta repetidamente el código suministrado. Si

quisiéramos hacer un juego, podríamos utilizar los eventos del teclado o el ratón

para controlar la animación y usar setTimeout() . Al establecer EventListener s,

cogemos cualquier interacción del usuario y ejecutamos nuestras funciones de

animación.

1.3 OFFLINE STORAGE

Con el almacenamiento local, las aplicaciones web pueden almacenar datos

localmente dentro navegador del usuario.

Antes de HTML5, los datos de aplicaciones tenían que ser almacenados en las

cookies, incluidos en cada petición de servidor. El almacenamiento local es más

seguro, y grandes cantidades de datos pueden ser almacenados localmente, sin

afectar el rendimiento sitio web.

Page 8: HTML5

ORTEGA FLORES GERARDO

A diferencia de cookies, el límite de almacenamiento es mucho mayor (al menos 5

MB) y la información nunca se transfiere al servidor.

El almacenamiento local es por dominio. Todas las páginas, de un dominio, pueden

almacenar y acceder a los mismos datos.

El Objeto localStorage

El objeto localStorage almacena los datos sin fecha de caducidad. No se eliminarán

los datos cuando el navegador se cierra, y estarán disponibles al día siguiente,

semana o año.

Ejemplo:

// Store localStorage.setItem("lastname", "Smith"); // Retrieve document.getElementById("result").innerHTML = localStorage.getItem("lastname");

Ejemplo explicado:

Crear un nombre localStorage / par de valores con name = "apellido" y

value = "Smith"

Recuperar el valor de "apellidos" y la inserta en el elemento con id =

"número"

El Objeto sessionStorage

El objeto sessionStorage es igual al objeto localStorage, excepto que almacena los

datos para una sola sesión. Los datos se eliminan cuando el usuario cierra la

ventana del navegador.

Page 9: HTML5

ORTEGA FLORES GERARDO

if (sessionStorage.clickcount) { sessionStorage.clickcount = Number(sessionStorage.clickcount) + 1; } else { sessionStorage.clickcount = 1; } document.getElementById("result").innerHTML = "You have clicked the button " + sessionStorage.clickcount + " time(s) in this session.";

1.4 CONECTIVITY

Conectividad – WebSockets

Con AJAX se pueden hacer peticiones con Javascript en cualquier momento, pero

la “iniciativa” debe partir del cliente.

La única forma de comprobar si hay “novedades” en el servidor es el polling a

intervalos regulares.

Websockets es un protocolo específico, no va sobre HTTP. Así que necesitamos

también una implementación de WebSockets en el lado del servidor. La

especificación WebSocket define un API que establece conexiones "socket" entre

un navegador web y un servidor. Dicho con otras palabras: existe una conexión

persistente entre el cliente y el servidor, y ambas partes pueden empezar a enviar

datos en cualquier momento.

Proporcionan una forma de abrir canales full-duplex (en ambas direcciones) con

otras aplicaciones. Esto no solo ayuda a incrementar la velocidad de las

aplicaciónes (dado que no necesita acudir al servidor web por la información que

deseamos, sino el código que la obtiene); también nos permite desde una única

aplicación que estemos viendo en ese momento obtener información de más de una

fuente sin necesidad de un intermediario como sería el servidor web.

Permite crear una conexión permanente entre la página y el servidor e

intercambiar datos no HTML a través de ese medio.

Abrir un WebSocket

var connection = new WebSocket('ws://www.unapagina.com')

Page 10: HTML5

ORTEGA FLORES GERARDO

Los elementos ws:. Este es el nuevo esquema de URL para las conexiones

WebSocket. También hay wss: para conexiones WebSocket seguras, de la misma

forma que se utiliza https: para las conexiones HTTP seguras.

Adjuntar inmediatamente varios controladores a la conexión permite saber cuándo

está abierta la conexión, cuándo ha recibido mensajes entrantes o cuándo hay un

error.

Enviar un mensaje al servidor

Cuando se establezca una conexión con el servidor (cuando el evento open se

active), podemos empezar a enviar datos al servidor con el método send('your

message') en el objeto de conexión. Antes solo se admitían cadenas, pero la última

especificación también permite enviar mensajes binarios. Para enviar datos

binarios, puedes usar un objeto Blob o ArrayBuffer.

//Enviar una cadena connection.send('hola servidor'); //Enviar un archivo como datos binarios //Suponemos que en el HTML hay un <input type=”file” id=”archivo”> var file = document.getElementById(“archivo”).files[0]; connection.send(file); Recibir datos del servidor: onopen, onerror, onmessage connection.onmessage = function(mensaje) { console.log('El servidor dice: ' + mensaje.data); }; Servidores proxy Toda nueva tecnología trae consigo una nueva serie de problemas. En el caso de WebSocket, se trata de la compatibilidad con los servidores proxy que median las conexiones HTTP en la mayoría de las redes corporativas. El protocolo WebSocket utiliza el sistema de actualización de HTTP (normalmente utilizado para HTTP/SSL) para "actualizar" una conexión HTTP a una conexión WebSocket. A algunos servidores proxy no les gusta esto y cancelan la conexión. Por tanto, aunque un cliente dado utilice el protocolo WebSocket, es posible que no pueda establecer una conexión. Esto hace que la siguiente sección sea aún más importante

Page 11: HTML5

ORTEGA FLORES GERARDO

1.5 DEVICE ACCESS

Usando la API de la cámara

Permite utilizar, manipular y almacenar una imagen de la cámara del ordenador.

Eventos táctiles

Manipuladores para reaccionar a los eventos creados por un usuario cuando pulsa

pantallas táctiles.

El uso de geolocalización

Permite a los navegadores localizar la posición del usuario mediante

geolocalización.

Detección de la orientación del dispositivo

Obtiene la información cuando el dispositivo, en el que se ejecuta el navegador,

cambia de orientación. Esto puede ser utilizado como un dispositivo de entrada (por

ejemplo, para hacer que los juegos que reaccionan a la posición del dispositivo) o

adaptar el diseño de una página a la orientación de la pantalla (vertical u horizontal).

API Pointer Lock

Permite bloquear el puntero al contenido, por lo que los juegos y aplicaciones

similares no pierden el foco cuando el puntero alcanza el límite de la ventana.

1.6 PERFOMANCE & INTEGRATION

Web Workers

Permite delegar la evaluación JavaScript para subprocesos en segundo plano, lo

que evita que estas actividades ralenticen eventos interactivos.

Instruccion para crear un worker:

var worker = new Worker('task.js');

Despues de crear el worker, se inicia con una llamada del metodo postMessage()

worker.postMessage();

Page 12: HTML5

ORTEGA FLORES GERARDO

XMLHttpRequest Nivel 2

Permite buscar de forma asíncrona algunas partes de la página, mostrando

contenido dinámico, que varía según el tiempo y las acciones del usuario. Esta es

la tecnología detrás de Ajax.

Motores JIT compilación tarde JavaScript

La nueva generación de motores de JavaScript es mucho más poderoso, lo que

lleva a un mayor rendimiento.

Historia API

Permite la manipulación del historial del navegador. Esto es especialmente útil

para la carga interactivamente nueva informacion en las páginas.

El atributo contentEditable: transformar su sitio web en una wiki!

HTML5 ha estandarizado el atributo contentEditable. Aprenda más sobre esta

opción.

Arrastrar y soltar

La API de arrastrar y soltar (drag and drop) permite soporte para arrastrar y soltar

elementos dentro y entre sitios web. Esto también proporciona una API simple

para el uso de extensiones y aplicaciones basadas en Mozilla.

Gestión del foco en HTML

Los nuevos atributos HTML5 activeElement y hasFocus son soportados.

Manejadores de protocolo basados en web

Ahora puede registrar las aplicaciones web como controladores de protocolo

utilizando el metodo navigator.registerProtocolHandler().

requestAnimationFrame

Permite controlar la renderizacion de animaciones para obtener un óptimo

rendimiento.

Fullscreen API

Controla el uso de la pantalla completa de una página Web o aplicación, sin la

interfaz de usuario del explorador mostrada.

API Pointer Lock

Page 13: HTML5

ORTEGA FLORES GERARDO

Permite bloquear el puntero al contenido, por lo que los juegos y aplicaciones

similares no pierden el foco cuando el puntero alcanza el límite de la ventana.

Eventos en línea y fuera de línea

Para construir una buena aplicación web offline-funcional, lo que necesita saber

cuando su aplicación es realmente fuera de línea. Dicho sea de paso, también es

necesario saber cuando su solicitud sea devuelta a un estado de conexión de

nuevo.