SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Introducción al HTML5
     Jorge Alvarez - Enero 2011
Sumario
• Introducción
• Etiquetas y elementos estructurales
• Formularios
• Rich Media
• Nuevas A.P.I.’s
• CSS 3
Qué es HTML5
• No solo un lenguaje de marcado
• Sintaxis “relajada”
• Gestión de errores
• Mejoras en javascript
• Un caos de especificaciones y soporte entre
  diferentes navegadores
Etiquetas / Elementos
             obsoletos (I)
•   basefont                                            •   u


•   big                                                 •   frame


•   small (no queda obsoleto cambia la especificación)   •   frameset


•   center                                              •   noframes


•   font                                                •   acronym


•   s                                                   •   applet


•   strike                                              •   dir


•   tt                                                  •   align
Etiquetas / Elementos
          obsoletos (II)
•   link         •   hspace


•   vlink        •   vspace


•   alink        •   cellpadding


•   bgcolor      •   cellspacing


•   height       •   border


•   width        •   target


•   scrolling    •   longdesc


•   valign
Etiquetas / a nidar

<a href=”http://myweb.com/help.html”>
  <h1>If you need help, just ask</h1>
  <p>Conctact us from 9-5</p>
</a>
Nuevas etiquetas
• HEADER FOOTER SECTION ARTICLE
• Contenedores que agrupan contenido
  relacionado
• Article no es solamente   para artículos de
  texto/blogs sino que los productos/servicios
  de una empresa también son articles.
• Diferencia con section: Pensar si el contenido
  es sindicable (RSS Atom)
Nuevas etiquetas
• ASIDE
• Indica contenido adicional o relacionado con
  el contenido principal
• NO es para barras laterales. Las barras
  laterales son sections no aside
• NAV
• Solo incluir en elementos de navegación
  relevantes, no en cada lista de enlaces.
Nuevas etiquetas

• HGROUP
• Agrupa contenido relacionado en el
  encabezado
• Generalmente varios headings (h1, h2..)
• Para el esquema o resumen de la página el
  heading de menor valor será el relevante.
Nuevas etiquetas
       • FIGURE FIGCAPTION
       • Hace referencia a una anotación (no tiene
             porqué ser una imagen) ilustrativa o aclarativa
             del texto principal.
<p>Puedes programar nuestra API utilizando el siguiente código:</p>
<figure id="code98">
 <figcaption>Publicación de un Twitter mediante el API</figcaption>
 <pre>
   <code>
     # Initialize your Twitter client
      client = Twitter::Client.new
      # Post a status update
      client.update("I just posted a status update via the Twitter Ruby Gem!")
      # Read the most recent status update in your home timeline
      puts client.home_timeline.first.text
   </code>
 </pre>
</figure>
Ejemplo de página
<!DOCTYPE html>
<html>
  <header>
    <meta charset="UTF-8" />
    <script src="jquery.js"></script>
    <link rel="stylesheet" href="main.css" />
  </header>
  <body>
Ejemplo de página
<header>
  <hgroup>
    <h1>La web del Metal</h1>
    <h2>Si te gusta el heavy o trabajas en una fundición, esta
es tu web</h2>
  </hgroup>
  <img src=”cuernos.png” alt=”Viva el trash, el doom y el black
metal” id=”logo” />
  <nav>
    <ul>
      <li>Conciertos</li>
      <li>Entrevistas/li>
      <li>Noticias</li>
      <li>Contactar</li>
    </ul>
  </nav>
</header>
<article>
             Ejemplo de página
  <header>
    <h1>Entrevista con Cradle of Filth </h1>
    <time datetime=”2011-01-04T22:04:49+01:00” pubdate>
       Martes, 4 de Enero de 2011
    </time>
  </header>
  <p>
    Hoy tenemos con nosotros a una de las bandas mas grandes del panorama musical.
  </p>
  <footer>
    4 comentarios <a href=”/comments” title=”Nos interesa tu opinión”>Deja tu
comentario </a>
  </footer>
  <aside>
    <h1>Recursos sobre Cradle of Filth</h1>
    <ul>
       <li>Biografía</li>
       <li>Letras</li>
       <li>Vídeos</li>
       <li>Web oficial</li>
    </ul>
  </aside>
</article>
Ejemplo de página
<section id=”sidebar”>
  <section id=”banner”>
    <img src=”/ad.png” alt=”Hay que hacer algo de caja” />
  </section>
  <nav id=”submenu”>
    <ul>
      <li>Entradas para conciertos</li>
      <li>Foro de debate</li>
      <li>Visita nuestra tienda</li>
    </ul>
  </nav>
  <footer>
    <small>
      Las opiniones vertidas por los que hablan son de ellos nosotros no nos
hacemos responsables porque somos, básicamente, unos cobardicas.
    </small>
  </footer>
</section>
Ejemplo de página
<footer>
  <small>
    © 2011 Metaleros sin fronteras | Diseño web
Tom araya
  </small>
  <ul>
    <li>Conciertos</li>
    <li>Entrevistas</li>
    <li>Noticias</li>
    <li>Contactar</li>
  </ul>
</footer>
</body>
</html>
Nuevas etiquetas /
  Compatibilidad con IE
• IE 6, 7 y 8 no las soportan (ni esto ni casi nada
  de html5)
• Aún así podemos usarlas
 • Modernizr
 • Crearlas mediante javascript
   •   http://remysharp.com/html5-enabling-script
Nuevos elementos

• MARK
• Resalta un elemento pero sin la importancia
     semántica de em o de strong (span)
• Ejemplo: Resaltar resultados en una búsqueda
 •    <p>El perro de san <mark>roque</mark> no tiene rabo.</p>
Nuevos elementos
  •       TIME

  •       Muestra el tiempo en formato entendible tanto para
          máquinas como para humanos
      •     (el atmosférico no, el otro)

  •       Heredado de los microformatos <abbr>

  •       El formato es el ISO 8601

  •       pubdate en article

  •       Pro Tip: @content.created_at.iso8601


<time datetime=”2011-01-04T22:04:49+01:00” pubdate>Martes, 4 de
Enero de 2011</ time>
Nuevos elementos
• METER
• Muestra medidas que forman parte de una
  escala


<meter min="0" max="3000" value="250"
title=”Euros”>
  Ya casi tenemos un 10% recaudado
</meter>
Nuevos elementos
• PROGRESS
• Muestra medidas de algo que está cambiando
  en este momento

<progress min="0" max="90" value="60">
  Ya queda menos para que acabe este rollo
</progress>
Nuevos elementos
• ADDRESS
• Sirve para indicar una dirección. Pero no
   todas las direcciones de la página sino aquellas
   relevantes al contenido mostrado
<address>
  <a href=”/about_me.html”>Juan Doe</a><br />
  Avenida de las acacias, 22<br />
  Londres, 343898
</address>
Formularios / Nuevos elementos
   • PLACEHOLDER
   • AUTOFOCUS
   • REQUIRED
   • AUTOCOMPLETE
<label for="nombre">Tu nombre</label>
<input type="text" id="nombre" name="nombre"
placeholder="Tu nombre y un apellido" />
<label for="empresa">Empresa</label>
<input type="text" id="empresa" name="empresa"
autocomplete=”off” autofocus />
<form autocomplete=”off”>
Formularios / Nuevos elementos
      • DATALIST
      • CONTENTEDITABLE
$(function(){
  var status = $("#status");
  $("span[contenteditable=true]" ).blur(function(){
    var field = $(this).attr("id");
    var value = $(this).text();
    $.post("http://localhost:3000/users/1" ,field + "=" + value,
function(data){
      status.text(data);
    } );
  });
});
http://media.pragprog.com/titles/bhh5/code/html5_content_editable/show.html
Formularios / Input
      •   SEARCH                                 •   URL

      •   EMAIL                                  •   PHONE

<input id="query" name="query" type="search" placeholder="Busca lo que quieras" />

<input id="email" name="email" type="email">
<input id="website" name="website" type="url">
<input id="phone" name="phone" type="tel">
Formularios / Input
     •   RANGE                      •   DATE

     •   NUMBER                     •   COLOR

<label for="handsome">Como eres de guap@?</label>
<input id="handsome" name="handsome" type="range" min="1" max="5"
value="2" />
<label for="handicap">Que handicap tienes?</label>
<input id="handicap" name="handicap" type="number" min="0" max="36"
step=”2” />
<label for="shower">Cuando te duchaste por última vez?</label>
<input id="shower" name="shower" type="date" value="2011-01-12" />
<label for="hair">Color de pelo</label>
<input id="hair" name="hair" type="color" />
Formularios / Validación
   •   REQUIRED            •   NOVALIDATE

   •   PATTERN             •   COLOR

<input type="text" id="name" name="name"
placeholder="Tu nombre y un apellido" required />

<input id="pcode" name="pcode" pattern="[d]{5}" />

<form novalidate>
<input type="email" id="email" name="email"
novalidate />
Rich Media / Audio

• Formatos soportados
 • AAC Safari 4, Chrome 3, IOS
 • MP3 IE9, Safari 4, Chrome 3, IOS
 • Vorbis (OGG) Firefox 3, Chrome 4, Opera 10
Rich Media / Audio
   •   AUTOPLAY                    •   CONTROLS

   •   LOOP                        •   AUTOBUFFER PRELOAD
<audio controls autoplay loop preload=”none”>
   <source src="/Her_ghost_in_the_fog.ogg" type="audio/ogg" />
   <source src="/Her_ghost_in_the_fog.mp3" type="audio/mpeg" />
   <object type="application/x-shockwave-flash" data="player.swf?
soundFile=Her_ghost_in_the_fog.mp3">
     <param name="movie" value="player.swf?
soundFile=Her_ghost_in_the_fog.mp3" />
     <a href="Her_ghost_in_the_fog.mp3">Descargate el tema en tu
286</a>
     <p>Un temazo de una de las más grandes bandas de la historia</
p>
   </object>
</audio>
Rich Media / Vídeo

• Formatos soportados
 • H.264 IE9, Safari 4, Chrome 3, IOS
 • Thedora Firefox 3.5, Chrome 4, Opera 10
 • VP8 IE9 (codec), Firefox 4, Chrome 5, Opera 10.7
Formularios / Vídeo
  •   POSTER             •   CONTROLS



<video
src="live_bait_for_the_dead.mp4"
controls width="480" height="320"
poster=”live_bait.png” autobuffer>
</video>
Canvas / 2D
<canvas id="canvas" width="480" height="320">
  <p>No tienes canvas te vamos a poner una fotico pa’ disimular</p>
  <img src="The_principal_of_evil_made_flesh.jpg" alt="Another top
hit">
</canvas>
var canvas	
          =
document.getElementById('canvas');
var draw_2d = canvas.getContext('2d');
context.lineWidth = 2;
context.beginPath();
context.moveTo(0, 40);
context.lineTo(30, 0);
context.lineTo(60, 40 );
context.lineTo(285, 40 );
context.stroke();
context.closePath();
•       SVG
                                              Canvas
    •     existía ya y con soporte pero se han decantado por canvas


•       3D


    •     Algún día


•       Rgraph


    •     Librería para generar gráficos


•       WebGL


    •     Apple, Google, Opera y Mozilla soportan parte de las especificaciones
             http://learningwebgl.com/blog/
<div id="graph_data">
                        Canvas / Ejemplo
  <h1>Browser share for this site</h1>
  <ul>
    <li><p data-name="Safari 4" data-percent="15">Safari 4 - 15%</p> </li>
    <li> <p data-name="Internet Explorer" data-percent="55">Internet Explorer - 5%</p>
</li>
    <li> <p data-name="Firefox" data-percent="14">Firefox - 14%</p> </li>
    <li> <p data-name="Google Chrome" data-percent="16">Google Chrome - 66%</p> </li>
  </ul>
</div>
function canvasGraph(){
  var title = $('#graph_data h1').text();
  var labels = $("#graph_data>ul>li>p[data-name]").map(function(){
    return $(this).attr("data-name");
  });
  var percents = $("#graph_data>ul>li>p[data-percent]").map(function(){
    return parseInt($(this).attr("data-percent"));
  });
  var bar = new RGraph.Bar('browsers', percents);
  bar.Set('chart.gutter', 50);
  bar.Set('chart.colors', ['red']);
  bar.Set('chart.title', title);
  bar.Set('chart.labels', labels);
  bar.Draw();
}
Drag and Drop
•       Especificación creada por Micro$oft

•       Es un caos

•       Hay 7 eventos
    •    ondragstart

    •    ondragend

    •    ondragenter

    •    ondragover

    •    ondragleave

    •    ondrop

    •    ondrag
Drag and Drop
•       DRAGGABLE

    •    auto (defecto)

    •    true

    •    false

•       DROPZONE

    •    Copy

    •    Move

    •    Link

    http://html5demos.com/drag
API’s

• Características comunes
• Sandboxed
• Quotas
• Transactions
• Events
localStorage
• Almacenamiento clave/valor
• Objetos tipo string
• Serializar/desserializar
                        JSON.stringify() y JSON.parse()


• window.localStorage()
• localStorage.setItem(key, value)
• var value = localStorage.getItem(key)
sessionStorage

• El contenido se borra al cerrar la sessión
• window.sessionStorage()
• sessionStorage.setItem(key, value)
• var value = sessionStorage.getItem(key)
SQL Storage
• La novia cadaver
 • En noviembre de 2010 se deja de
   evolucionar.
• Firefox no lo implementa.
• Safari, Chrome y IOS permiten su uso
• Utiliza sqlLite
SQL Storage
this.db = openDatabase('geomood', '1.0', 'Geo-Mood Checkins', 8192);
this.db.transaction(function(tx) {
  tx.executeSql("create table if not exists " + "checkins(id integer
primary key asc, time integer, latitude float," +
"longitude float, mood string)", [], function() {
    console.log("succ");
  } );
});
store.db.transaction(function(tx) {
  tx.executeSql(
"insert into checkins " + "(time, latitude, longitude, mood) values
(?,?,?,?);",
[checkin.time, checkin.latitude, checkin.longitude, checkin.mood],
handler, store.onError
  );
});
http://www.html5rocks.com/tutorials/offline/storage/
Indexed Database

•   Será el estandar que todos los browsers implementen

•   noSql

•   Almacenamiento clave/valor

•   documentos almacenados con un id único y cada documento
    almacena objetos compuestos de clave/valor

•   Soportado parcialmente por Chrome y Firefox
Indexed Database
Modo síncrono

var db = indexedDB.open('books', 'Book store', false);
if (db.version !== '1.0') {
  var olddb = indexedDB.open('books', 'Book store');
  olddb.createObjectStore('books', 'isbn');
  olddb.createIndex('BookAuthor', 'books', 'author', false);
  olddb.setVersion("1.0");
}
// db.version === "1.0";
var index = db.openIndex('BookAuthor');
var matching = index.get('fred');
if (matching) {
  report(matching.isbn, matching.name, matching.author);
} else {
  report(null);
}
Indexed Database
Modo asíncrono

function findFred() {
var store = db.objectStore('books');
var index = store.index('BookAuthor');
var req = index.get('fred');
req.onsuccess = function(event) {
var matching = event.result;
report(matching.isbn, matching.name, matching.author);
}
req.onerror = function(event) {
report(null);
}
}
var db;
var dbRequest = indexedDB.open('books', 'Book store');
dbRequest.onsuccess = function(event) {
db = event.result;
if (db.version != "1.0") {
var versionRequest = db.setVersion("1.0");
versionRequest.ontimeout = function(event) {
throw new Error("timeout trying to set version to 1.0");
}
versionRequest.onsuccess = function(event) {
var store = db.createObjectStore('books', 'isbn');
store.createIndex('BookAuthor', 'books', 'author', false);event.transaction.onabort = function(event) {
throw new Error("error while trying to set version to 1.0");
}
event.transaction.oncomplete = function(event) {
findFred(db);
}
}
} else {
findFred(db);
}
}
Offline support
• <html manifest=”notes.manifest”>
• Pro Tip: Servir notes.manifest con mime/
  type text/cache-manifest
 • AddType text/cache-manifest .manifest
• Si cambiamos los ficheros cacheados
  incrementamos el número de versión
• http://www.w3.org/TR/html5/offline.html
Offline support
CACHE MANIFEST
# v = 1.0.0
/javascripts/jquery.min.js
/javascripts/application.js
/images/checked.png
/images/unchecked.png

NETWORK:
payment.cgi

CACHE:
/stylesheets/screen.css
/stylesheets/main.css
# Muestra la página offline.html cuando ocurre un error trabajando en modo offline
FALLBACK:
/ /offline.html
# El wildcard sirve para indicar que está permitido el acceso a recursos de otros
sitios.
NETWORK:
*
Cross-domain
   • Para enviar mensajes
     •   postMessage(“ping”, “http://myserver.com/cheers”)

   • El receptor
$(function(){
  $(window).bind("message" ,function(event){
    $("#message" ).val(event.originalEvent.data);
  });
});

No todos los navegadores soportan la especificación.
jQuery tiene un plugin llamado postMessages que hace lo mismo y
funciona de forma idéntica.
Geolocalización
       • El navegador pregunta al usuario la primera
           vez si permite o no usar la geolocalización
window.onload = function() {
  var startPos;
  navigator.geolocation.getCurrentPosition(function(position) {
    startPos = position; document.getElementById('startLat').innerHTML =
startPos.coords.latitude;
    document.getElementById('startLon').innerHTML = startPos.coords.longitude;
}, function(error) {
       alert('Error occurred. Error code: ' + error.code);
       //	 0: unknown error
       //	 1: permission denied
       //	 2: position unavailable (error response from location provider)
       //	 3: timed out
}); };
Geolocalización
Para monitorizar su posición ya que
getCurrentPosition solo se ejecuta una vez, al cargar
la página.

navigator.geolocation.watchPosition(function(position
) {
  document.getElementById('currentLat').innerHTML =
position.coords.latitude;
  document.getElementById('currentLon').innerHTML =
position.coords.longitude;
});
Geolocalización
Si deseamos localizar al usuario a toda costa y no dispone o no nos
permite la geolocalización podemos utilizar el api de google para
localizarlo por ip

if (navigator.geolocation) {
   navigator.geolocation.getCurrentPosition(function(position) {
     showLocation(position.coords.latitude, position.coords.longitude);
   });
} else {
   // Implementar http://code.google.com/apis/loader/#ClientLocation
};
Historico navegación
function supportsHistory(){
  return !!(window.history && window.history.pushState);
}

window.history.length
window.history.go(number)
window.history.back()
window.history.forward()
window.history.pushState(data, title, [url])
window.history.replaceState(data, title, [url])

Ejemplo
history.pushState(currentPage, document.title, '?x=' + currentPage);

Todo esto ya lo hace el plugin de jQuery Addresses (y mas cosas) y es cross browser
http://www.asual.com/jquery/address/
Web Sockets
var connection = new WebSocket('ws://html5rocks.websocket.org/echo');
// Utilizamos ws como protocolo y existe también wss para los seguros

// When the connection is open, send some data to the server
connection.onopen = function () {
   connection.send('Ping'); // Send the message 'Ping' to the server
};
// Log errors
connection.onerror = function (error) {
   console.log('WebSocket Error ' + error);
};
// Log messages from the server
connection.onmessage = function (e) {
   console.log('Server: ' + e.data);
};
Web workers
//Inicializamos
var worker = new Worker("renderiza_un_3d_complicado.js");

//arrancamos el worker
worker.postMessage();

//le mandamos un mensaje
worker.postMessage('Hello World');

//recibimos sus mensajes
worker.addEventListener('message', function(e) {
  console.log('Worker said: ', e.data);
}, false);
CSS3
•   Pseudoclases             •   Gradientes

•   Multiple columns         •   Transformaciones

•   Media Queries            •   Web Fonts

•   Flexible Box Model       •   Transiciones

•   Esquinas redondeadas     •   Interfaces 3D

•   Sombras
Recursos

•   HTML5 for web designers - Jeremy Keith (A book apart)

•   HTML5 & CSS3 - Brian P. Hogan (The pragmatic programmers)

•   http://www.delicious.com/jorgegorka/html5

•   http://www.alvareznavarro.es
Y no olviden
supermineralizarse y
  supervitaminarse

Weitere ähnliche Inhalte

Was ist angesagt?

Nuevas etiquetas en HTML 5
Nuevas etiquetas en HTML 5Nuevas etiquetas en HTML 5
Nuevas etiquetas en HTML 5
mferrer
 

Was ist angesagt? (14)

Curso HTML y CSS, parte 2
Curso HTML y CSS, parte 2Curso HTML y CSS, parte 2
Curso HTML y CSS, parte 2
 
Maquetado con HTML y CSS
Maquetado con HTML y CSSMaquetado con HTML y CSS
Maquetado con HTML y CSS
 
Css - Tema 1
Css - Tema 1Css - Tema 1
Css - Tema 1
 
Html - Tema 1
Html - Tema 1Html - Tema 1
Html - Tema 1
 
HTML5, CSS3, Jquery y Boostrap
HTML5, CSS3, Jquery y BoostrapHTML5, CSS3, Jquery y Boostrap
HTML5, CSS3, Jquery y Boostrap
 
Diseño de paginas con html1
Diseño de paginas con html1Diseño de paginas con html1
Diseño de paginas con html1
 
Curso css
Curso   cssCurso   css
Curso css
 
Nuevas etiquetas en HTML 5
Nuevas etiquetas en HTML 5Nuevas etiquetas en HTML 5
Nuevas etiquetas en HTML 5
 
Introducción CSS
Introducción CSSIntroducción CSS
Introducción CSS
 
Introducción a HTML y CSS
Introducción a HTML y CSSIntroducción a HTML y CSS
Introducción a HTML y CSS
 
Buenas prácticas en XHTML, CSS y Accesibilidad
Buenas prácticas en XHTML, CSS y AccesibilidadBuenas prácticas en XHTML, CSS y Accesibilidad
Buenas prácticas en XHTML, CSS y Accesibilidad
 
Manual de introducción a CSS3
Manual de introducción a CSS3Manual de introducción a CSS3
Manual de introducción a CSS3
 
Introducción al desarrollo de plantillas para Joomla!
Introducción al  desarrollo de  plantillas para  Joomla!Introducción al  desarrollo de  plantillas para  Joomla!
Introducción al desarrollo de plantillas para Joomla!
 
Html - Tema 3
Html - Tema 3Html - Tema 3
Html - Tema 3
 

Andere mochten auch

Transtornos de la conducta alimementicia
Transtornos de la conducta alimementiciaTranstornos de la conducta alimementicia
Transtornos de la conducta alimementicia
Paco Ruiz
 
LOS FIELES LAICOS
LOS FIELES LAICOSLOS FIELES LAICOS
LOS FIELES LAICOS
fannymon
 
Planeacion estrategica 2
Planeacion estrategica 2Planeacion estrategica 2
Planeacion estrategica 2
Aramir14
 
Club memoria
Club memoriaClub memoria
Club memoria
nilogar
 
Presentacion de evalucion de impress
Presentacion de evalucion de impressPresentacion de evalucion de impress
Presentacion de evalucion de impress
ivan19901990
 
\'PARTNERS.MIZ.pps
\'PARTNERS.MIZ.pps\'PARTNERS.MIZ.pps
\'PARTNERS.MIZ.pps
adyfab
 
Redes sociales
Redes socialesRedes sociales
Redes sociales
merida2011
 

Andere mochten auch (20)

Transtornos de la conducta alimementicia
Transtornos de la conducta alimementiciaTranstornos de la conducta alimementicia
Transtornos de la conducta alimementicia
 
LOS FIELES LAICOS
LOS FIELES LAICOSLOS FIELES LAICOS
LOS FIELES LAICOS
 
Proyecto arc ejuegos
Proyecto arc ejuegosProyecto arc ejuegos
Proyecto arc ejuegos
 
Das "Geschichtsbureau" 2.0 - Eine Kompetenzwerkstatt am Fachbereich Geschicht...
Das "Geschichtsbureau" 2.0 - Eine Kompetenzwerkstatt am Fachbereich Geschicht...Das "Geschichtsbureau" 2.0 - Eine Kompetenzwerkstatt am Fachbereich Geschicht...
Das "Geschichtsbureau" 2.0 - Eine Kompetenzwerkstatt am Fachbereich Geschicht...
 
Planeacion estrategica 2
Planeacion estrategica 2Planeacion estrategica 2
Planeacion estrategica 2
 
Club memoria
Club memoriaClub memoria
Club memoria
 
Como vencer-el-miedo
Como vencer-el-miedoComo vencer-el-miedo
Como vencer-el-miedo
 
René barjavel
René barjavelRené barjavel
René barjavel
 
Presentacion de evalucion de impress
Presentacion de evalucion de impressPresentacion de evalucion de impress
Presentacion de evalucion de impress
 
Práctica de word (autoguardado)
Práctica de word (autoguardado)Práctica de word (autoguardado)
Práctica de word (autoguardado)
 
Ccc
CccCcc
Ccc
 
Fibra optica
Fibra opticaFibra optica
Fibra optica
 
Evaluacion de competencias
Evaluacion de competenciasEvaluacion de competencias
Evaluacion de competencias
 
Comunidades resilientes a través de redes de salud seguras frente a desastres...
Comunidades resilientes a través de redes de salud seguras frente a desastres...Comunidades resilientes a través de redes de salud seguras frente a desastres...
Comunidades resilientes a través de redes de salud seguras frente a desastres...
 
Encuentro con-dios-sem-4-año-1
Encuentro con-dios-sem-4-año-1Encuentro con-dios-sem-4-año-1
Encuentro con-dios-sem-4-año-1
 
Leitfaden socialmedia2012
Leitfaden socialmedia2012Leitfaden socialmedia2012
Leitfaden socialmedia2012
 
La Carrera Espacial
La Carrera EspacialLa Carrera Espacial
La Carrera Espacial
 
\'PARTNERS.MIZ.pps
\'PARTNERS.MIZ.pps\'PARTNERS.MIZ.pps
\'PARTNERS.MIZ.pps
 
Presentación Alfonso Castellano Jornada ProCamping 2011
Presentación Alfonso Castellano Jornada ProCamping 2011Presentación Alfonso Castellano Jornada ProCamping 2011
Presentación Alfonso Castellano Jornada ProCamping 2011
 
Redes sociales
Redes socialesRedes sociales
Redes sociales
 

Ähnlich wie Presentación en Aspgems html5

SESIÓN 02 - DISEÑO DE PÁGINAS WEB (1).pdf
SESIÓN 02 - DISEÑO DE PÁGINAS WEB (1).pdfSESIÓN 02 - DISEÑO DE PÁGINAS WEB (1).pdf
SESIÓN 02 - DISEÑO DE PÁGINAS WEB (1).pdf
HenryBreak1
 
HTML5 por Gustavo Vilchez
HTML5 por Gustavo VilchezHTML5 por Gustavo Vilchez
HTML5 por Gustavo Vilchez
Gustavo
 

Ähnlich wie Presentación en Aspgems html5 (20)

Presentación html5
Presentación html5Presentación html5
Presentación html5
 
01. Creando documentos HTML5
01. Creando documentos HTML501. Creando documentos HTML5
01. Creando documentos HTML5
 
Dispositivas CURSO HTML 5.pdf
Dispositivas CURSO HTML 5.pdfDispositivas CURSO HTML 5.pdf
Dispositivas CURSO HTML 5.pdf
 
HTML5 Nuevas Etiquetas Semanticas
HTML5 Nuevas Etiquetas SemanticasHTML5 Nuevas Etiquetas Semanticas
HTML5 Nuevas Etiquetas Semanticas
 
Introducción HTML5 y CSS3
Introducción HTML5 y CSS3Introducción HTML5 y CSS3
Introducción HTML5 y CSS3
 
HTML5 y CSS3 ¿Imprescindibles?
HTML5 y CSS3 ¿Imprescindibles?HTML5 y CSS3 ¿Imprescindibles?
HTML5 y CSS3 ¿Imprescindibles?
 
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScriptFull-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
 
SESIÓN 02 - DISEÑO DE PÁGINAS WEB (1).pdf
SESIÓN 02 - DISEÑO DE PÁGINAS WEB (1).pdfSESIÓN 02 - DISEÑO DE PÁGINAS WEB (1).pdf
SESIÓN 02 - DISEÑO DE PÁGINAS WEB (1).pdf
 
Seminario html5
Seminario html5Seminario html5
Seminario html5
 
Phonegap
PhonegapPhonegap
Phonegap
 
Introducción a HTML5
Introducción a HTML5Introducción a HTML5
Introducción a HTML5
 
HTML5 por Gustavo Vilchez
HTML5 por Gustavo VilchezHTML5 por Gustavo Vilchez
HTML5 por Gustavo Vilchez
 
HTML5 en Acción
HTML5 en AcciónHTML5 en Acción
HTML5 en Acción
 
Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8
 
Html5 y css3: Introducción y aplicación desde hoy
Html5 y css3: Introducción y aplicación desde hoyHtml5 y css3: Introducción y aplicación desde hoy
Html5 y css3: Introducción y aplicación desde hoy
 
Introducción a HTML5 y CSS3 AWGR
Introducción a HTML5 y CSS3 AWGRIntroducción a HTML5 y CSS3 AWGR
Introducción a HTML5 y CSS3 AWGR
 
Innovaciones para Internet: La visión de Mozilla
Innovaciones para Internet: La visión de MozillaInnovaciones para Internet: La visión de Mozilla
Innovaciones para Internet: La visión de Mozilla
 
Tecnologia Web - HTML
Tecnologia Web - HTMLTecnologia Web - HTML
Tecnologia Web - HTML
 
Ejemplos de HTML
Ejemplos de HTMLEjemplos de HTML
Ejemplos de HTML
 
XML - Introducción
XML - IntroducciónXML - Introducción
XML - Introducción
 

Kürzlich hochgeladen

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
241521559
 

Kürzlich hochgeladen (10)

Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

Presentación en Aspgems html5

  • 1. Introducción al HTML5 Jorge Alvarez - Enero 2011
  • 2. Sumario • Introducción • Etiquetas y elementos estructurales • Formularios • Rich Media • Nuevas A.P.I.’s • CSS 3
  • 3. Qué es HTML5 • No solo un lenguaje de marcado • Sintaxis “relajada” • Gestión de errores • Mejoras en javascript • Un caos de especificaciones y soporte entre diferentes navegadores
  • 4. Etiquetas / Elementos obsoletos (I) • basefont • u • big • frame • small (no queda obsoleto cambia la especificación) • frameset • center • noframes • font • acronym • s • applet • strike • dir • tt • align
  • 5. Etiquetas / Elementos obsoletos (II) • link • hspace • vlink • vspace • alink • cellpadding • bgcolor • cellspacing • height • border • width • target • scrolling • longdesc • valign
  • 6. Etiquetas / a nidar <a href=”http://myweb.com/help.html”> <h1>If you need help, just ask</h1> <p>Conctact us from 9-5</p> </a>
  • 7. Nuevas etiquetas • HEADER FOOTER SECTION ARTICLE • Contenedores que agrupan contenido relacionado • Article no es solamente para artículos de texto/blogs sino que los productos/servicios de una empresa también son articles. • Diferencia con section: Pensar si el contenido es sindicable (RSS Atom)
  • 8. Nuevas etiquetas • ASIDE • Indica contenido adicional o relacionado con el contenido principal • NO es para barras laterales. Las barras laterales son sections no aside • NAV • Solo incluir en elementos de navegación relevantes, no en cada lista de enlaces.
  • 9. Nuevas etiquetas • HGROUP • Agrupa contenido relacionado en el encabezado • Generalmente varios headings (h1, h2..) • Para el esquema o resumen de la página el heading de menor valor será el relevante.
  • 10. Nuevas etiquetas • FIGURE FIGCAPTION • Hace referencia a una anotación (no tiene porqué ser una imagen) ilustrativa o aclarativa del texto principal. <p>Puedes programar nuestra API utilizando el siguiente código:</p> <figure id="code98"> <figcaption>Publicación de un Twitter mediante el API</figcaption> <pre> <code> # Initialize your Twitter client client = Twitter::Client.new # Post a status update client.update("I just posted a status update via the Twitter Ruby Gem!") # Read the most recent status update in your home timeline puts client.home_timeline.first.text </code> </pre> </figure>
  • 11. Ejemplo de página <!DOCTYPE html> <html> <header> <meta charset="UTF-8" /> <script src="jquery.js"></script> <link rel="stylesheet" href="main.css" /> </header> <body>
  • 12. Ejemplo de página <header> <hgroup> <h1>La web del Metal</h1> <h2>Si te gusta el heavy o trabajas en una fundición, esta es tu web</h2> </hgroup> <img src=”cuernos.png” alt=”Viva el trash, el doom y el black metal” id=”logo” /> <nav> <ul> <li>Conciertos</li> <li>Entrevistas/li> <li>Noticias</li> <li>Contactar</li> </ul> </nav> </header>
  • 13. <article> Ejemplo de página <header> <h1>Entrevista con Cradle of Filth </h1> <time datetime=”2011-01-04T22:04:49+01:00” pubdate> Martes, 4 de Enero de 2011 </time> </header> <p> Hoy tenemos con nosotros a una de las bandas mas grandes del panorama musical. </p> <footer> 4 comentarios <a href=”/comments” title=”Nos interesa tu opinión”>Deja tu comentario </a> </footer> <aside> <h1>Recursos sobre Cradle of Filth</h1> <ul> <li>Biografía</li> <li>Letras</li> <li>Vídeos</li> <li>Web oficial</li> </ul> </aside> </article>
  • 14. Ejemplo de página <section id=”sidebar”> <section id=”banner”> <img src=”/ad.png” alt=”Hay que hacer algo de caja” /> </section> <nav id=”submenu”> <ul> <li>Entradas para conciertos</li> <li>Foro de debate</li> <li>Visita nuestra tienda</li> </ul> </nav> <footer> <small> Las opiniones vertidas por los que hablan son de ellos nosotros no nos hacemos responsables porque somos, básicamente, unos cobardicas. </small> </footer> </section>
  • 15. Ejemplo de página <footer> <small> © 2011 Metaleros sin fronteras | Diseño web Tom araya </small> <ul> <li>Conciertos</li> <li>Entrevistas</li> <li>Noticias</li> <li>Contactar</li> </ul> </footer> </body> </html>
  • 16. Nuevas etiquetas / Compatibilidad con IE • IE 6, 7 y 8 no las soportan (ni esto ni casi nada de html5) • Aún así podemos usarlas • Modernizr • Crearlas mediante javascript • http://remysharp.com/html5-enabling-script
  • 17. Nuevos elementos • MARK • Resalta un elemento pero sin la importancia semántica de em o de strong (span) • Ejemplo: Resaltar resultados en una búsqueda • <p>El perro de san <mark>roque</mark> no tiene rabo.</p>
  • 18. Nuevos elementos • TIME • Muestra el tiempo en formato entendible tanto para máquinas como para humanos • (el atmosférico no, el otro) • Heredado de los microformatos <abbr> • El formato es el ISO 8601 • pubdate en article • Pro Tip: @content.created_at.iso8601 <time datetime=”2011-01-04T22:04:49+01:00” pubdate>Martes, 4 de Enero de 2011</ time>
  • 19. Nuevos elementos • METER • Muestra medidas que forman parte de una escala <meter min="0" max="3000" value="250" title=”Euros”> Ya casi tenemos un 10% recaudado </meter>
  • 20. Nuevos elementos • PROGRESS • Muestra medidas de algo que está cambiando en este momento <progress min="0" max="90" value="60"> Ya queda menos para que acabe este rollo </progress>
  • 21. Nuevos elementos • ADDRESS • Sirve para indicar una dirección. Pero no todas las direcciones de la página sino aquellas relevantes al contenido mostrado <address> <a href=”/about_me.html”>Juan Doe</a><br /> Avenida de las acacias, 22<br /> Londres, 343898 </address>
  • 22. Formularios / Nuevos elementos • PLACEHOLDER • AUTOFOCUS • REQUIRED • AUTOCOMPLETE <label for="nombre">Tu nombre</label> <input type="text" id="nombre" name="nombre" placeholder="Tu nombre y un apellido" /> <label for="empresa">Empresa</label> <input type="text" id="empresa" name="empresa" autocomplete=”off” autofocus /> <form autocomplete=”off”>
  • 23. Formularios / Nuevos elementos • DATALIST • CONTENTEDITABLE $(function(){ var status = $("#status"); $("span[contenteditable=true]" ).blur(function(){ var field = $(this).attr("id"); var value = $(this).text(); $.post("http://localhost:3000/users/1" ,field + "=" + value, function(data){ status.text(data); } ); }); }); http://media.pragprog.com/titles/bhh5/code/html5_content_editable/show.html
  • 24. Formularios / Input • SEARCH • URL • EMAIL • PHONE <input id="query" name="query" type="search" placeholder="Busca lo que quieras" /> <input id="email" name="email" type="email"> <input id="website" name="website" type="url"> <input id="phone" name="phone" type="tel">
  • 25. Formularios / Input • RANGE • DATE • NUMBER • COLOR <label for="handsome">Como eres de guap@?</label> <input id="handsome" name="handsome" type="range" min="1" max="5" value="2" /> <label for="handicap">Que handicap tienes?</label> <input id="handicap" name="handicap" type="number" min="0" max="36" step=”2” /> <label for="shower">Cuando te duchaste por última vez?</label> <input id="shower" name="shower" type="date" value="2011-01-12" /> <label for="hair">Color de pelo</label> <input id="hair" name="hair" type="color" />
  • 26. Formularios / Validación • REQUIRED • NOVALIDATE • PATTERN • COLOR <input type="text" id="name" name="name" placeholder="Tu nombre y un apellido" required /> <input id="pcode" name="pcode" pattern="[d]{5}" /> <form novalidate> <input type="email" id="email" name="email" novalidate />
  • 27. Rich Media / Audio • Formatos soportados • AAC Safari 4, Chrome 3, IOS • MP3 IE9, Safari 4, Chrome 3, IOS • Vorbis (OGG) Firefox 3, Chrome 4, Opera 10
  • 28. Rich Media / Audio • AUTOPLAY • CONTROLS • LOOP • AUTOBUFFER PRELOAD <audio controls autoplay loop preload=”none”> <source src="/Her_ghost_in_the_fog.ogg" type="audio/ogg" /> <source src="/Her_ghost_in_the_fog.mp3" type="audio/mpeg" /> <object type="application/x-shockwave-flash" data="player.swf? soundFile=Her_ghost_in_the_fog.mp3"> <param name="movie" value="player.swf? soundFile=Her_ghost_in_the_fog.mp3" /> <a href="Her_ghost_in_the_fog.mp3">Descargate el tema en tu 286</a> <p>Un temazo de una de las más grandes bandas de la historia</ p> </object> </audio>
  • 29. Rich Media / Vídeo • Formatos soportados • H.264 IE9, Safari 4, Chrome 3, IOS • Thedora Firefox 3.5, Chrome 4, Opera 10 • VP8 IE9 (codec), Firefox 4, Chrome 5, Opera 10.7
  • 30. Formularios / Vídeo • POSTER • CONTROLS <video src="live_bait_for_the_dead.mp4" controls width="480" height="320" poster=”live_bait.png” autobuffer> </video>
  • 31. Canvas / 2D <canvas id="canvas" width="480" height="320"> <p>No tienes canvas te vamos a poner una fotico pa’ disimular</p> <img src="The_principal_of_evil_made_flesh.jpg" alt="Another top hit"> </canvas> var canvas = document.getElementById('canvas'); var draw_2d = canvas.getContext('2d'); context.lineWidth = 2; context.beginPath(); context.moveTo(0, 40); context.lineTo(30, 0); context.lineTo(60, 40 ); context.lineTo(285, 40 ); context.stroke(); context.closePath();
  • 32. SVG Canvas • existía ya y con soporte pero se han decantado por canvas • 3D • Algún día • Rgraph • Librería para generar gráficos • WebGL • Apple, Google, Opera y Mozilla soportan parte de las especificaciones http://learningwebgl.com/blog/
  • 33. <div id="graph_data"> Canvas / Ejemplo <h1>Browser share for this site</h1> <ul> <li><p data-name="Safari 4" data-percent="15">Safari 4 - 15%</p> </li> <li> <p data-name="Internet Explorer" data-percent="55">Internet Explorer - 5%</p> </li> <li> <p data-name="Firefox" data-percent="14">Firefox - 14%</p> </li> <li> <p data-name="Google Chrome" data-percent="16">Google Chrome - 66%</p> </li> </ul> </div> function canvasGraph(){ var title = $('#graph_data h1').text(); var labels = $("#graph_data>ul>li>p[data-name]").map(function(){ return $(this).attr("data-name"); }); var percents = $("#graph_data>ul>li>p[data-percent]").map(function(){ return parseInt($(this).attr("data-percent")); }); var bar = new RGraph.Bar('browsers', percents); bar.Set('chart.gutter', 50); bar.Set('chart.colors', ['red']); bar.Set('chart.title', title); bar.Set('chart.labels', labels); bar.Draw(); }
  • 34. Drag and Drop • Especificación creada por Micro$oft • Es un caos • Hay 7 eventos • ondragstart • ondragend • ondragenter • ondragover • ondragleave • ondrop • ondrag
  • 35. Drag and Drop • DRAGGABLE • auto (defecto) • true • false • DROPZONE • Copy • Move • Link http://html5demos.com/drag
  • 36. API’s • Características comunes • Sandboxed • Quotas • Transactions • Events
  • 37. localStorage • Almacenamiento clave/valor • Objetos tipo string • Serializar/desserializar JSON.stringify() y JSON.parse() • window.localStorage() • localStorage.setItem(key, value) • var value = localStorage.getItem(key)
  • 38. sessionStorage • El contenido se borra al cerrar la sessión • window.sessionStorage() • sessionStorage.setItem(key, value) • var value = sessionStorage.getItem(key)
  • 39. SQL Storage • La novia cadaver • En noviembre de 2010 se deja de evolucionar. • Firefox no lo implementa. • Safari, Chrome y IOS permiten su uso • Utiliza sqlLite
  • 40. SQL Storage this.db = openDatabase('geomood', '1.0', 'Geo-Mood Checkins', 8192); this.db.transaction(function(tx) { tx.executeSql("create table if not exists " + "checkins(id integer primary key asc, time integer, latitude float," + "longitude float, mood string)", [], function() { console.log("succ"); } ); }); store.db.transaction(function(tx) { tx.executeSql( "insert into checkins " + "(time, latitude, longitude, mood) values (?,?,?,?);", [checkin.time, checkin.latitude, checkin.longitude, checkin.mood], handler, store.onError ); }); http://www.html5rocks.com/tutorials/offline/storage/
  • 41. Indexed Database • Será el estandar que todos los browsers implementen • noSql • Almacenamiento clave/valor • documentos almacenados con un id único y cada documento almacena objetos compuestos de clave/valor • Soportado parcialmente por Chrome y Firefox
  • 42. Indexed Database Modo síncrono var db = indexedDB.open('books', 'Book store', false); if (db.version !== '1.0') { var olddb = indexedDB.open('books', 'Book store'); olddb.createObjectStore('books', 'isbn'); olddb.createIndex('BookAuthor', 'books', 'author', false); olddb.setVersion("1.0"); } // db.version === "1.0"; var index = db.openIndex('BookAuthor'); var matching = index.get('fred'); if (matching) { report(matching.isbn, matching.name, matching.author); } else { report(null); }
  • 43. Indexed Database Modo asíncrono function findFred() { var store = db.objectStore('books'); var index = store.index('BookAuthor'); var req = index.get('fred'); req.onsuccess = function(event) { var matching = event.result; report(matching.isbn, matching.name, matching.author); } req.onerror = function(event) { report(null); } } var db; var dbRequest = indexedDB.open('books', 'Book store'); dbRequest.onsuccess = function(event) { db = event.result; if (db.version != "1.0") { var versionRequest = db.setVersion("1.0"); versionRequest.ontimeout = function(event) { throw new Error("timeout trying to set version to 1.0"); } versionRequest.onsuccess = function(event) { var store = db.createObjectStore('books', 'isbn'); store.createIndex('BookAuthor', 'books', 'author', false);event.transaction.onabort = function(event) { throw new Error("error while trying to set version to 1.0"); } event.transaction.oncomplete = function(event) { findFred(db); } } } else { findFred(db); } }
  • 44. Offline support • <html manifest=”notes.manifest”> • Pro Tip: Servir notes.manifest con mime/ type text/cache-manifest • AddType text/cache-manifest .manifest • Si cambiamos los ficheros cacheados incrementamos el número de versión • http://www.w3.org/TR/html5/offline.html
  • 45. Offline support CACHE MANIFEST # v = 1.0.0 /javascripts/jquery.min.js /javascripts/application.js /images/checked.png /images/unchecked.png NETWORK: payment.cgi CACHE: /stylesheets/screen.css /stylesheets/main.css # Muestra la página offline.html cuando ocurre un error trabajando en modo offline FALLBACK: / /offline.html # El wildcard sirve para indicar que está permitido el acceso a recursos de otros sitios. NETWORK: *
  • 46. Cross-domain • Para enviar mensajes • postMessage(“ping”, “http://myserver.com/cheers”) • El receptor $(function(){ $(window).bind("message" ,function(event){ $("#message" ).val(event.originalEvent.data); }); }); No todos los navegadores soportan la especificación. jQuery tiene un plugin llamado postMessages que hace lo mismo y funciona de forma idéntica.
  • 47. Geolocalización • El navegador pregunta al usuario la primera vez si permite o no usar la geolocalización window.onload = function() { var startPos; navigator.geolocation.getCurrentPosition(function(position) { startPos = position; document.getElementById('startLat').innerHTML = startPos.coords.latitude; document.getElementById('startLon').innerHTML = startPos.coords.longitude; }, function(error) { alert('Error occurred. Error code: ' + error.code); // 0: unknown error // 1: permission denied // 2: position unavailable (error response from location provider) // 3: timed out }); };
  • 48. Geolocalización Para monitorizar su posición ya que getCurrentPosition solo se ejecuta una vez, al cargar la página. navigator.geolocation.watchPosition(function(position ) { document.getElementById('currentLat').innerHTML = position.coords.latitude; document.getElementById('currentLon').innerHTML = position.coords.longitude; });
  • 49. Geolocalización Si deseamos localizar al usuario a toda costa y no dispone o no nos permite la geolocalización podemos utilizar el api de google para localizarlo por ip if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { showLocation(position.coords.latitude, position.coords.longitude); }); } else { // Implementar http://code.google.com/apis/loader/#ClientLocation };
  • 50. Historico navegación function supportsHistory(){ return !!(window.history && window.history.pushState); } window.history.length window.history.go(number) window.history.back() window.history.forward() window.history.pushState(data, title, [url]) window.history.replaceState(data, title, [url]) Ejemplo history.pushState(currentPage, document.title, '?x=' + currentPage); Todo esto ya lo hace el plugin de jQuery Addresses (y mas cosas) y es cross browser http://www.asual.com/jquery/address/
  • 51. Web Sockets var connection = new WebSocket('ws://html5rocks.websocket.org/echo'); // Utilizamos ws como protocolo y existe también wss para los seguros // When the connection is open, send some data to the server connection.onopen = function () { connection.send('Ping'); // Send the message 'Ping' to the server }; // Log errors connection.onerror = function (error) { console.log('WebSocket Error ' + error); }; // Log messages from the server connection.onmessage = function (e) { console.log('Server: ' + e.data); };
  • 52. Web workers //Inicializamos var worker = new Worker("renderiza_un_3d_complicado.js"); //arrancamos el worker worker.postMessage(); //le mandamos un mensaje worker.postMessage('Hello World'); //recibimos sus mensajes worker.addEventListener('message', function(e) { console.log('Worker said: ', e.data); }, false);
  • 53. CSS3 • Pseudoclases • Gradientes • Multiple columns • Transformaciones • Media Queries • Web Fonts • Flexible Box Model • Transiciones • Esquinas redondeadas • Interfaces 3D • Sombras
  • 54. Recursos • HTML5 for web designers - Jeremy Keith (A book apart) • HTML5 & CSS3 - Brian P. Hogan (The pragmatic programmers) • http://www.delicious.com/jorgegorka/html5 • http://www.alvareznavarro.es
  • 55. Y no olviden supermineralizarse y supervitaminarse