HTML5
Recopilado por : Ing. Yuri Marquez Solis
Objetivos
Objetivo: estudiar el desarrollo de aplicaciones web
Objetivos:
Por qu es importante el diseo centrado en el
usuario?
El uso de la web es cada vez ms extendido
El uso de la web es cada vez ms universal
a la informacin.
Para que un sistema interactivo cumpla sus objetivos
tiene que ser usable por la mayor parte de la poblacin
humana
Usabilidad
Medida en la que un producto se puede usar por determinados usuarios para
conseguir unos objetivos especficos con efectividad, eficiencia y satisfaccin en
un contexto de uso dado
Objetivos
Cmo abordamos el diseo centrado en el
usuario?
1. Aprendiendo los conceptos bsicos para
desarrollar interfaces de usuario
internacionalizadas y accesibles
2. Aprendiendo las tcnicas y procesos que
ofrece la Ingeniera Web, principalmente en
las primeras fases, para el tratamiento de
requisitos y el trabajo con los usuarios en
sistemas web.
Requisitos de Calidad
Capacidad de comprensin del sitio global
Usabilidad
Funcionalidad
Calidad de una
Web App
Recuperacin de errores.
Validacin y recuperacin de la entrada del
usuario.
Rendimiento del tiempo de respuesta.
Eficiencia
Capacidad de
Mantenimiento
Adaptabilidad.
Extensibilidad.
HTML5
Evolucin
Qu es HTML5?
Web Semntica
APIs de desarrollo
Retrocompatible
Qu es HTML5?
Trabaja sobre
http://html5test.com/
No plugins
HTML 5 tiene soporte nativo para varias tecnologas
Lenguaje de Marcacion
Fcil para el humano Y las maquinas
Utilizacin de etiquetas
Etiquetas
<etiqueta>Texto</etiqueta>
<etiqueta atributo1=valor1
atributo2=valor2>Texto</etiqueta>
Comentarios
Pginas de referencia
http://www.w3schools.com/
http://librosweb.es/xhtml/
http://www.w3.org/2009/cheatsheet/
http://www.dochub.io
Listas en HTML
Permiten agrupar listas de elementos <li>, pudiendo ser:
Ordenadas: <ol></ol>
- Numerales: <ol type=1><ol> (Defecto)
- Letras: <ol type=a><ol>
- Romanos: <ol type=I></ol>
- Letras Maysculas: <ol type=A></ol>
Comenzar en una posicin concreta: <ol start=3></ol>
No-ordenadas: <ul></ul>
Definition list: <dl></dl>
Enlaces
Permiten realizar saltos a secciones de texto del mismo
documento o a otros documentos. <a></a>
href= Enlace destino (local o remoto)
target= Contexto en el que se debe de abrir el enlace
_blank _parent _self _top _<frame>
=
=
=
=
=
=
=
=
=
=
=
=
" = "
& = &
< = <
> = >
€ =
= (espacio)
¦ = |
ˆ = ^
© =
<nav class=principal_nav>
<ul>
<li><a href=/>Inicio</a></li>
<li><a href=b.html>Link2</a></li>
<li><a href=c.html>Link3</a></li>
</ul>
</nav>
Una seccin, en este contexto, es una agrupacin temtica de los contenidos. Puede
ser un captulo, una seccin de un captulo o bsicamente cualquier cosa que incluya
su propio encabezado.
Una pgina de inicio de un sitio Web puede ser dividida en secciones para una
introduccin, noticias, informacin de contacto etc.
<section class=Intro>
<p>Esto es un texto introductorio.</p>
<p>Esto es un nuevo prrafo.</p>
<ul>
<li>Apartado Uno.</li>
<li>Apartado Dos.</li>
</ul>
</section>
<article class=post>
<p>Esto es un texto introductorio.</p>
<p>Esto es un nuevo prrafo.</p>
<ul>
<li>Apartado Uno.</li>
<li>Apartado Dos.</li>
</ul>
</article>
<aside>
<p><img src=imagen.jpg alt=Cuerpo
escultural />Adelgace 15 kilos en 3
semanas.</p>
</aside>
<section>
<header>
<h1>Titular de la seccin</h1>
</header>
<p>Un prrafo cualquiera.</p>
</section>
Antes
HTML4
Ahora
Distribucin Semntica
SECTION
HEADER
ARTICLE
NAV
FIGURE
ARTICLE
NAV
VIDEO
FIGURE
HEADER
ASIDE
FOOTER
Ing. Yuri Marquez Solis Ingeniera Web
SECTION
HTML 5
Validacin Html5
http://validator.w3.org/
Y Google qu recomienda?
Gua Oficial de Google para HTML y CSS
http://googlestyleguide.googlecode.com/svn/trunk/htmlcssguide.xml
Y Google qu recomienda?
Identacin del cdigo: Se recomienda la identacin del
cdigo para mejorar la legibilidad. Se recomienda no utilizar
tabulaciones, sino espacios.
<ul>
<li>Fantastic</li>
<li>Great</li>
</ul>
Y Google qu recomienda?
Minsculas: Se recomienda el cdigo siempre en minsculas.
Y Google qu recomienda?
Espacios en blanco: Es mejor no dejar espacios en blanco si
no son necesarios.
Y Google qu recomienda?
Codificacin UTF-8: Se recomienda el uso de este cdigo de
pgina (UTF-8 sin BOM). Adems en la pgina se especificar
con el meta correspondiente.
http://es.wikipedia.org/wiki/UTF-8
<meta charset="utf-8">
Evitar entidades: Gracias al UTF-8, es casi innecesario el uso
de entidades HTML salvo excepciones.
Y Google qu recomienda?
HTML5: Se prefiere HTML5 en los documentos, con su
cabecera correspondiente:
<!DOCTYPE html>
Y Google qu recomienda?
HTML Vlido: Obvio no?
Semntica: Obviamente Google recomienda HTML5 por la
semntica, luego exige que la respetes.
<!-- No recomendado -->
<div onclick="linkRecomendados();">Recomendados</div>
<!-- S recomendado -->
<a href="/recomendados/">Recomendados</a>
Y Google qu recomienda?
Texto alternativo: Hay que proveer de contenido alternativo en el
caso de uso de elementos multimedia. Por ejemplo, las imgenes
deberan llevar un texto alternativo.
Controles de Formularios
Telephone
Url
Password
Datetime
Date
Month
Week
Number
Range
Color
Formularios (II)
Todo formulario se encuentra contenido dentro de
una etiqueta <form>. Funciona como un
contenedor de los distintos campos que conforman
el formulario.
En s no tiene estilos visibles, siendo una etiqueta
de bloque.
Formularios (III)
action = URL indica hacia donde enviaremos los datos
recogidos por el formulario. Podemos tambin enviar a un
email con action=mailto:alguien@mail.com
(desaconsejado)
method = POST|GET indicamos el modo en el que
enviaremos los datos.
Aunque no existe un modo 100% seguro, se considera POST
ms seguro dado que enva los datos dentro de la cabecera
HTTP; mientras que los datos enviados por GET aparecen
en la URL y son ms fcilmente visibles.
Formularios (IV)
Diferencias entre enviar por GET y POST:
- POST permite enviar ms informacin que GET (el lmite de
la URL).
- POST permite enviar ficheros adjuntos. GET no.
- Los datos por POST se almacenan en la cabecera HTTP. Los
de GET en la URL.
Formularios (V)
Cuando utilizar GET o POST?
- Como norma general se utiliza GET para los formularios de
bsqueda (como en Google, donde vemos los trminos de la
bsqueda en la URL).
- Cuando queramos realizar una modificacin contra una BD
de datos por medio de un formulario utilizaremos POST por ser
ms seguro, admite mayor nmero de informacin y soporta el
envo de ficheros.
Formularios (VI)
enctype = "application/x-www-form-urlencoded |
multipart/form-data | text/plain Tipo de
codificacin en la que se enva el formulario.
Generalmente no se indica salvo en el caso que
enviemos ficheros adjuntos.
accept-charset = UTF-8, ISO-8859-1, etc
Establecemos la codificacin de los datos contenidos,
que por defecto coincide con el del documento HTML:
name o id. Es una buena prctica asignar siempre un
identificador o un name a un formulario. Para as
identificarlo y poder realizar validaciones previas en JS.
Formularios (VII)
autocomplete = on Permite autocompletar datos del
formulario en funcin de datos previamente introducidos
por el usuario. Incluso es un atributo que se puede aplicar
a otros input de modo que puede estar activado en el
formulario y desactivado para un campo (o viceversa).
novalidate Permite desactivar la validacin de formularios
en HTML5, en el caso de los controles que poseen esta
funcin.
<form action="demo_form.asp" novalidate>
Formularios (y VIII)
El atributo accept no funciona en HTML5. Un formulario no
debe de determinar si un fichero es o no es lo que dice ser.
Aunque se realicen validaciones en el lado del cliente
SIEMPRE se deben de validar en el servidor. Los
formularios son la entrada de la mayora de ataques web a
Bases de Datos.
Aunque HTML5 incluye ya validacin nativa en cliente y se
pueden utilizar validaciones con libreras JS, estas se
pueden burlar fcilmente simplemente desactivando JS.
<input>
La etiqueta <input> nos permite incluir los distintos
controles del formulario o campos donde poder introducir
los datos. Es una etiqueta simple por lo que en XHTML
se escribe <input/>
Existen 10 tipos de campos distintos en XHTML y an ms
con HTML5:
Tipos de <input>
type=text Es el tipo de campo ms comn. Se muestra
un texto vaco en donde usuario puede escribir texto.
<label>Nombre
<input type="text" id=nombre name="nombre"/>
</label>
Tipos de <input>
type=password Como su propio nombre indica se utiliza
para escribir contraseas o contenido que no queramos
que se vea en pantalla.
<label>Contrasea
<input type="password" id=contrasena
name="contrasena"/>
</label>
Tipos de <input>
type=checkbox Son casillas de verificacin que permiten al
usuario seleccionar una o varias opciones. Son campos
independientes unos del otro.
<label><input type="checkbox"
<label><input type="checkbox"
<label><input type="checkbox"
Francisco</label>
<label><input type="checkbox"
DC</label>
Tipos de <input>
type=radio Los elementos de este tipo son similares a
los checkbox pero con la distincin de que son excluyentes.
Cuando se selecciona una opcin automticamente se
desmarca la otra.
<input>
checked Para los controles checkbox y radiobutton permite
indicar qu opcin aparece preseleccionada.
<label><input type="checkbox"
York</label>
<label><input type="checkbox"
Boston</label>
<label><input type="checkbox"
Francisco</label>
<label><input type="checkbox"
DC</label>
Tipos de <input>
type=button En ocasiones nos podemos encontrar con
formularios especialmente complejos que necesitan ms
botones que un reset o un enviar. (Por ejemplo una
calculadora).
<input type="button" name="sumar" value="Sumar" />
<input type="button" name="restar" value="Restar" />
<input type="button" name="dividir" value="Dividir" />
<input type="button" name="multiplicar"
value="Multiplicar" />
Tipos de <input>
type=submit Genera un botn para enviar los datos del
formulario.
<input type="submit" name="buscar" value="Buscar" />
Tipos de <input>
type=file Por medio de este tipo de campo podemos
incluir archivos para ser subidos al servidor. En HTML no
existe ninguna limitacin en formatos y tamao de los
archivos a subir. Sin embargo todos los servidores incluirn
un lmite (generalmente entre 2 y 8 Mbytes) en el tamao de
los ficheros.
Tipos de <input>
type=images En alguna ocasin nos puede interesar
sustituir un botn por una imagen sobre la que podamos
hacer click.
Simplemente es un campo <input /> al cual se le aade
un atributo src= igual que a las imgenes. Posteriormente le
aadiremos por JS una accin, probablemente un submit();
Tipos de <input>
type=hidden En ciertos casos ser necesario pasar datos en
el formulario que no se muestren para el usuario (aunque
aparecern en cdigo HTML visibles). Generalmente son datos
necesarios para la gestin, controles de seguridad o bien que ya
se le han preguntado al usuario.
Agrupacin de elementos
En los formularios podemos agrupar varios elementos de control o
campos mediante el tag <fieldset>.
Semnticamente es una buena prctica. Adems podemos definir
el nombre de la agrupacin con el elemento <legend>.
<fieldset><legend>Asiento</legend>
<label><input type="radio" name="asiento" value="ventanilla"
checked />Ventanilla</label>
<label><input type="radio" name="asiento" value="pasillo"
/>Pasillo</label>
</fieldset>
<button>
En HTML5 se ha introducido el tag <button> como un
elemento independiente, pero que tambin se puede incluir en
formularios. Se trata de un tag doble, luego su sintaxis es:
<button type=submit>Enviar</button>
Entre otros atributos cuenta tambin con el type=reset y
type=submit por lo que se puede utilizar dentro de
formularios.
<button type=submit>Enviar</button>
La
etiqueta
<output>
La etiqueta <output> se incluye en el estandar HTML5 como
un elemento en el que se muestra el resultado de una
operacin. No soportada por Internet Explorer.
<form
oninput="x.value=parseInt(a.value)+parseInt(b
.value)">0
<input type="range" id="a" value="50">100
+<input type="number" id="b" value="50">
=<output name="x" for="a b"></output>
</form>
<textarea>
La etiqueta <textarea> se utiliza cuando se debe de
introducir una gran cantidad de texto, dado que se puede
especificar altura y anchura.
Se utilizan los atributos row= y cols= para dotar de altura y
anchura en lineas o columnas al elemento.
<form action="insertar_producto.php" method="post">
<textarea id="descripcion" name="descripcion"
cols="40" rows="5"></textarea>
</form>
<textarea>
Su principal diferencia con los <input> es que no tienen lmite
en la cantidad de caracteres que puede contener.
Es frecuente utilizar libreras de JS externas para dotar de
una apariencia ms propia de un editor de texto o HTML
avanzado.
Algunos ejemplos:
http://www.tinymce.com/ - Tiny MCE
http://ckeditor.com/ - CKEditor
<select>
Los denominados campos <select> visualmente tienen la
apariencia de listas de elementos u opciones.
Realmente no aportan una funcionalidad muy distinta de las
que podamos obtener con los checkbox o los radiobutton.
Se compone de un contenedor <select> y tantos elementos
<option> como posibles valores o alternativas que queramos
contener.
<select>
Lista con un slo elemento visible.
<label for="asiento">Asiento</label> <br/>
<select id="asiento" name="asiento">
<option value="" selected>- Elija asiento </option>
<option value="ventanilla">Ventanilla</option>
<option value="pasillo">Pasillo</option>
<option value="central">central</option>
</select>
<select>
Lista con varios elementos visibles.
<label for="asiento">Asiento</label> <br/>
<select id="asiento" name="asiento" size=2>
<option value="" selected>- Elija asiento </option>
<option value="ventanilla">Ventanilla</option>
<option value="pasillo">Pasillo</option>
<option value="central">central</option>
</select>
<select>
Lista con seleccin mltiple de elementos.
<label for="so">Sistema operativo</label> <br/>
<select id="so" name="so" size="4" multiple>
<option value="windows"
selected>Windows</option>
<option value="mac">Mac</option>
<option value="linux">Linux</option>
<option value="otro">Otro</option>
</select>
<select>
En los campos <select> podemos ademas agrupar opciones
visualmente con <optgroup>.
Formularios
en
HTML5
(I)
Se han aadido nuevos tipos de campos <input> con
diferente soporte en los distintos navegadores.
color date datetime datetime-local email
month number range search tel time url week
http://www.w3schools.com/html/html5_form_input_types.asp
http://www.htmlcinco.com/nuevos-tipos-de-input-en-html5/
Formularios en
HTML5
(II)
<input>
type=number Podemos enviar enteros, estableciendo un
mnimo y un mximo como input de texto.
type=range Podemos enviar enteros, estableciendo un
mnimo y un mximo utilizando un control grfico.
type=color Nos permite seleccionar desde un color picker
un color y enviarlo como hexadecimal.
Formularios en
HTML5
(III)
<input>
type=date Nos permite seleccionar una fecha. En los
navegadores ms avanzados aparece un calendario.
type=datetime Nos permite seleccionar fecha y hora (con
zona horaria).
type=datetime-local Nos permite seleccionar fecha y hora
(sin zona horaria).
Formularios en
HTML5
(IV)
<input>
type=email Permite enviar una direccin de email con una
pobre validacin.
type=url Permite enviar una url con una pobre validacin.
Formularios en HTML5 (y V)
<datalist>
Nos permite vincular a un input de texto una lista de posibles
valores, lo que nos permite emular una funcionalidad de
autocompletado.
<input list="browsers" name="browsers">
<datalist id="browsers">
<option value="IE">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
Flash (I)
Hasta la aparicin de HTML5 slo se podan incluir
elementos de audio o video dentro de objetos
contenedores como QuickTime, RealPlayer y
SilverLight.
Sin embargo el mtodo que an hoy en da pervive
es la inclusin de un un objeto Adobe Flash.
Flash (II)
Se incluye un objeto FLASH dentro de nuestro cdigo,
generalmente con parmetros para controlar la reproduccin y
apariencia del plugin.
<object type="application/x-shockwave-flash"
data="dewplayer.swf" width="200" height="20"
id="dewplayer" name="dewplayer">
<param name="movie" value="dewplayer.swf" />
Flash (III)
Uno de los reproductores FLASH ms conocidos
es Dewplayer para audio y DewTube para video:
http://www.alsacreations.fr/dewtube.html
http://www.alsacreations.fr/dewplayer.html
Flash (IV)
FLASH no es aconsejable porque es un plugin que
funciona por encima de la capa del navegador,
desaprovechando la capa de rendimiento
multimedia que aporta HTML5.
No funciona como un componente nativo del
navegador por lo que no se indexa y adems
consume recursos extra.
Flash (V)
Apple no soporta FLASH en sus dispositivos
(iPhone, iPod e iPhone). Esta fue uno de los
principales motivos por lo que cuales Adobe
comenz a perder cuota de mercado hasta
nuestros das.
Flash (VI)
1. No es abierto, como HTML, CSS y JS
2. Ya hay suficiente contenido en la web que
se puede utilizar sin usar Flash
3. No es seguro, ni estable, ni gil
4. Gasta ms batera
5. No fue diseado para mviles o tablets
6. Apple no puede permitirse depender de
aplicaciones de terceros
http://www.apple.com/hotnews/thoughts-onflash/
Flash (y VII)
Se dice que la industria de los juegos en FLASH es
la nica que justifica el tener instalado el plugin.
Sin embargo existen juegos muy complejos
desarrollados ntegramente en HTML5.
http://flashvhtml.com/
http://www.creativebloq.com/html5/top-20-html5games-1122788
Conceptos bsicos (y V)
Cdec: Acrnimo de "codificacin/decodificacin". Un
cdec es el algoritmo especial que reduce el nmero de
bytes que ocupa un archivo de audio o video.
Los archivos codificados con un codec especfico
requieren el mismo cdec para ser decodificados y
reproducidos.
http://www.jplayer.org
http://tympanus.net/Development/CassettePlayer/
http://www.effectgames.com/demos/canvascycle/
Y muchas cosas ms..te animas???
Ing. Yuri Marquez Solis Ingeniera Web
Hola Mundo
<!DOCTYPE html>
<!-- Hola mundo - -->
<html>
<head>
<meta charset="utf-8" />
<title>Hola Mundo!!!</title>
</head>
<body>
Hola muchachos!!!
</body>
</html>
Formularios
<!DOCTYPE html>
<!-- formularios - -->
<html>
<head>
<meta charset="utf-8" />
<title>Formularios</title>
</head>
<body>
<h1>Formularios con HTML5</h1>
<form action="aceptado.htm" method = "post">
Correo Electrnico: <input type="email" name="correo" autofocus="autofocus"
required /><br/>
Numero(1 a 10): <input type="number" name="numero" min="1" max="10"
required /><br/>
Telefono: <input type="tel" name="telefono" required /><br/>
<input type="submit" value="Enviar"/>
</form>
</body>
</html>
Formularios
Almacenamiento
<!DOCTYPE html>
<!-- almacenamiento - -->
<html>
<head>
<meta charset="utf-8" />
<title>Almacenamiento</title>
<script type="text/javascript">
elnombre=localStorage.getItem("nombre");
if (elnombre=="null" || elnombre==null) {
window.alert("nadie ha estado aqui!!!");
localStorage.setItem("nombre","Juan");
} else {
window.alert(elnombre + " ya ha estado aqui!!!");
}
</script>
</head>
<body>
</body>
</html>
Almacenamiento
Reproduccin de video
<!DOCTYPE html>
<!-- video - -->
<html>
<head>
<meta charset="utf-8" />
<title>Video</title>
</head>
<body>
<video width="640" height="360" src="google_main.mp4" controls
autobuffer></video>
</body>
</html>
Reproduccin de video
Reproduccin de sonido
<!DOCTYPE html>
<!-- sonido - -->
<html>
<head>
<meta charset="utf-8" />
<title>Sonido</title>
</head>
<body>
<audio controls="controls"><source src="era.mp3" /></audio>
</body>
</html>
Reproduccin de sonido
Canvas (2D)
<!DOCTYPE html>
<!-- canvas - -->
<html>
<head>
<meta charset="utf-8" /><title>Canvas</title>
<script>
window.onload = function(){
var elemento = document.getElementById('mi_canvas');
if (elemento && elemento.getContext) {
var contexto = elemento.getContext('2d');
if (contexto) {
contexto.fillRect(0, 0, 150, 100);
contexto.fillStyle = '#cc0000';contexto.fillRect(10, 10, 100, 70);
}}}
</script>
</head>
<body>
<canvas id="mi_canvas" width=300 heigth="300">
Este texto se muestra para los navegadores no compatibles con canvas
</canvas>
</body>
</html>
Canvas (2D)
3D Earth
http://peterned.home.xs4all.nl/demooo/
Asteroid Belt
http://ie.microsoft.com/testdrive/Performance/AsteroidBelt/
Interactive Polaroids
http://www.addyosmani.com/resources/canvasphoto/
Canvas Cycle: True 8-bit Color Cycling with HTML5
http://www.effectgames.com/demos/canvascycle/
js cloth
http://gyu.que.jp/jscloth/
CanvasMol
http://alteredqualia.com/canvasmol/
Or so they say by xplsv
http://xplsv.com/prods/demos/xplsv_orsotheysay/
3D Model Viewer
http://www.giuseppesicari.it/progetti/javascript-3d-model-viewer/
Ing. Yuri Marquez Solis Ingeniera Web