SlideShare una empresa de Scribd logo
Programación Web con HTML5
                Campus Party 2011
                 #CPES15 - #CPIN
                           Parte 1
Jorge del Casar
     @jorgecasar
Madrid Google Technology User Group
          GTUG Madrid
                 ·
          Frontend Spain
                 ·
           ShoTools.com
¿Qué NO es HTML5?



CSS3
JS APIs (GEOlocation, workers, Drag&Drop, Web storage...)
Web Apps
¿Qué NO es HTML5?
Todo lo que esté fuera del lenguaje de marcado
¿Qué es HTML5?


Lenguaje de marcado
Web Forms
Video & Audio
Canvas
SVG
¿Qué es HTML5?
La base de las aplicaciones web
CSS2.1
                  GEO
                  location                            CSS1
  Storage                                                    CSS
        JS APis                                               CSS3
                                      web forms
    Drag & Drop                                    SVG
                                      HTML5
                             video
                                                  canvas

                                     audio
                                                     Silverlight
                                                        Flash
Web Apps
Historia reciente
2004 - WHATWG


Formada por gente de Mozilla, Opera y
Apple para trabajar en avanzar HTML
en respuesta a la decisión de la W3C de
abandonar HTML en favor de
tecnologías basadas en XML
2007 - WHATWG + W3C



Se forma el grupo de trabajo HTML
para trabajar conjuntamente
Ambos grupos trabajaron juntos en el
desarrollo de la especificación HTML5
2009 - R.I.P. XHTML



Reconociendo el valor del grupo de
trabajo de XHTML 2 la W3C decide
abandonar el desarrollo
2011 - Logo HTML5
              http://www.w3.org/html/logo/
Semántica

Dar significado a la
estructura

Set de etiquetas más
ricas

   RDFa

   Microdatos

   Microformatos
header                nav
                                   header




nav                   section



 figure                 figure
                                  video
 figcaption            figcaption
  header              section
                        header     header


 article              article     article
                       aside

                      footer
Nuevas etiquetas

              av
                     tim
                        e            gr ess                met
                                                              er
            n                     pro
 rp




                                                  audio
  ou tput        list                               ary




                                                                 key
               ta             f ooter         su mm
             da




                                                                      gen
                                  figure               details
                    art


mark



                                               vid
                       icl



       command


                                                eo
                          e



                                ad er                            de
                              he                               si
source                                    canv                a
             oup      figc                      as     wb
 rt      hgr     ruby    apti
                             on                           r
Offline & almacenamiento

Aplicaciones web sin
conexión

   Caché

   Local storage

   Indexed DB

   File API
Web storage

   Pares etiqueta/valor
        Etiqueta: string
        Valor: cualquier objeto Javascript


var input = document.querySelector(‘input[name=‘nombre’]’);
storageSaveButton.addEventListener(‘click’, function(){
  window.localStorage.setItem(‘nombre’, input.value);
}, false);
input.value = window.localStorage.getItem(‘nombre’);
Offline web aplications

   Navegación offline
   Recursos cacheados cargan más rápido
   Solo descarga los recursos que cambian


<html manifest=”cache.appcache”>
window.applicationCache.addEventListener(‘updateready’, function(e){
  if(window.applicationCache.status == window.applicationCache.UPDATEREADY) {
     window.applicationCache.swapCache();
     if(confirm(‘Una nueva versión está disponible. ¿Descargar?’)) {
        window.location.reload();
     }
  }
}, false);
Acceso al dispositivo

Geolocalización API

Micrófono

Cámara

Datos locales
(contactos y eventos)


Orientación
Drag & Drop



document.addEventListener(‘dragstart’, function(e){
  event.dataTransfer.setData(‘text’, ‘Texto personalizado’);
  event.dataTransfer.effectAllowed = ‘copy’;
}, false);
API de Geolocalización


if (navigator.geolocation) {
   navigator.geolocation.getCurrentPosition(showPosition, handlePositionError);
}
function showPosition(position) {
   var latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
   var marker = new google.maps.Marker({position: latLng, map: map });
   map.setCenter(latLng);
}
Conectividad


Chats en tiempo real

Juegos más rapidos

Mejor comunicación

Notificaciones Push
(Web Sockets, Server-Sent Events)
WebSockets


var socket = new WebSocket(url);
socket.onopen = function(e) {
  socket.send(‘Hola, socket’);
}
socket.onmessage = function(e) {
  alert(e.data);
}
socket.close = function(e) {
  alert(‘Adios’);
}
Multimedia



Audio

Video
3D, gráficos y efectos


SVG

Canvas

WebGL

CSS3 3D
SVG

<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"
height="100%" width="100%" viewBox="0 0 512 512" version="1.1">
<polygon points="74.633,100.62 437.37,100.62 404.32,470.82 255.78,512
107.64,470.88" fill="#E44D26"/>
<polygon points="376.03,447.25 404.27,130.89 256,130.89 256,480.52"
fill="#F16529"/>
<polygon points="195.91,268.22 191.76,221.72 256,221.72 256,176.3 255.84,176.3
142.13,176.3 143.22,188.49 154.38,313.63 256,313.63 256,268.22" fill="#EBEBEB"/>
<polygon points="255.8,386.21 205.23,372.55 201.99,336.33 177.42,336.33
156.41,336.33 162.77,407.63 255.79,433.46 256,433.4 256,386.15" fill="#EBEBEB"/>
 <path
d="m108.38,0h23.077v22.8h21.11v-22.8h23.078v69.044h-23.08v-23.12h-21.11v23.12h
-23.077v-69.044z"/>
<path
d="M205.99,22.896h-20.312v-22.896h63.72v22.896h-20.327v46.148h-23.078v-46.148
z"/>
<path
d="m259.51,0h24.063l14.81,24.26,14.78-24.26h24.072v69.044h-22.977v-34.222l-15.8
77,24.549h-0.397l-15.89-24.549v34.222h-22.58v-69.044z"/>
<path d="m348.72,0h23.084v46.222h32.453v22.822h-55.53v-69.044z"/>
<polygon points="255.84,313.63 311.76,313.63 306.49,372.52 255.84,386.19
255.84,433.44 348.94,407.63 349.62,399.96 360.29,280.41 361.4,268.22 349.16,268.22
255.84,268.22" fill="#FFF"/>
<polygon points="255.84,204.51 255.84,221.6 255.84,221.72 365.38,221.72
365.38,221.72 365.53,221.72 366.44,211.51 368.51,188.49 369.6,176.3 255.84,176.3"
fill="#FFF"/>
</svg>
Canvas


function draw() {
    var canvas = document.getElementById(“canvas”);
    if (canvas.getContext) {
        var ctx = canvas.getContext(“2d”);


        ctx.fillStyle = “rgb(40,0,0)”;
        ctx.fillRect (20, 20, 65, 60);


        ctx.fillStyle = “rgba(0, 0, 160, 0.5)”;
        ctx.fillRect (40, 40, 65, 60);
    }
}
Rendimiento e integración



Web Workers

XMLHttpRequest 2
Web Workers

// main.js
var worker = new Worker(‘tarea.js’);
worker.onmessage = function(e) {
   alert(e.data);
};
worker.postMessage(‘data’);

// tarea.js
self.onmessage = function(e) {
   // Algunas tareas...
   self.postMessage(‘recibido: ’ e.data);
}
Estilos CSS3



Estilos

Efectos

Web Open Font
Insignias
Progressive Enhancement
Graceful Degradation
¿Cómo empezar?
!DOCTYPE

   XHTML 1.0 Strict

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">




   HTML5

<!DOCTYPE html>
Encoding

   XHTML 1.0 Strict

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>




   HTML5

<meta charset="utf-8" />
Links

   XHTML 1.0 Strict

<link rel="stylesheet" type="text/css" href="style.css"/>




   HTML5

<link rel=stylesheet href=style.css>
Script

   XHTML 1.0 Strict

<script type="text/javascript" src="jquery.js"></script>




   HTML5

<script src=jquery.js></script>
Polyfills

   html5shim

<!-- [if lt IE 9]>
<script
 src="http://html5shim.googlecode.com/svn/trunk/html5.js">
</script>
<![endif]-->
Demo
Convertir una web cualquiera a HTML5
Programación Web con HTML5
                Campus Party 2011
                 #CPES15 - #CPIN
                           Parte 2
Concurso GTUG
 Convertir una web a HTML5
versiones tablet y smartphone
Premio del concurso
Características Chrome Book

12,1 pulgadas
1,48Kg
Intel® AtomTM Dual-Core
Webcam HD
2 USB
Ranura tarjetas 4 en 1
Minipuerto VGA
HTML5                   BOILERPLATE

Todos los navegadores (IE6)
Preparado para HTML5.
Recomendaciones sobre caché y compresión
Configuración por defecto basada en buenas prácticas
Optimizaciones para navegadores móviles
Mejora progresiva con degradación gradual … sí, lo
conseguimos!
Clases específicas para IE
Clases .no-js y .js
Completa e interconectada test suite
HTML5                 BOILERPLATE

Medir el rendimiento de Javascript
console.log
CSS para impresión
Marcado y estructura CSS adaptables a Smartphones y
tablets
Ajuste pngfix para IE6 incluído.
Clases .clearfix, .visuallyhidden
.htaccess para HTML5 y mayor velocidad
Alojamiento CDN de jQuery con sistema de anticaídas
<html>

     Detectar el navegador
     Detectar capacidades


<!--[if lt IE 7 ]> <html class="no-js ie6" lang="es"> <![endif]-->
<!--[if IE 7 ]> <html class="no-js ie7" lang="es"> <![endif]-->
<!--[if IE 8 ]> <html class="no-js ie8" lang="es"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--> <html class="no-js" lang="es"> <!--<![endif]-->
Chrome Frame


  Google Chrome en IE



<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
Librerías que usa


jQuery    · http://jquery.com/
QUnit    · http://docs.jquery.com/Qunit
modernizr     · http://www.modernizr.com/
DD_belatedPNG            · http://www.dillerdesign.com/experiment/DD_belatedPNG/
jQuery


31KB (Minified and Gzipped)
Soporta selectores CSS3 y más
IE 6.0+, FF 2.0+, Safari 3.0+, Opera
9.0+, Chrome
QUnit

                    test("a basic test example", function() {
Unit testing          ok( true, "this test is fine" );
                      var value = "hello";

para javascript       equals( "hello", value, "We expect value to be hello" );
                    });
                    module("Module A");
                    test("first test within module", function() {
                      ok( true, "all pass" );
                    });
                    test("second test within module", function() {
                      ok( true, "all pass" );
                    });
                    module("Module B");
                    test("some other test", function() {
                      expect(2);
                      equals( true, false, "failing test" );
                      equals( true, true, "passing test" );
                    });
Modernizr




compatibilidad con HTML5 y CSS3
Modernizr




soporte PNG transparentes en IE6
Formularios
Nuevos atributos

     placeholder                                         required

     autofocus                                           novalidate


<input id="buscar" placeholder=”Buscar” autofocus required>
<script>
if (!("autofocus" in document.createElement("input"))) {
   document.getElementById("buscar").focus();
}
var elements = document.getElementsByTagName("INPUT");
for (var i=0; i<elements.length; i++) {
   elements[i].setCustomValidity("This field cannot be left blank");
}
</script>
Imágenes



http://www.w3.org/html/logo/

http://jayinreallife.files.wordpress.com/2010/06/evolution.jpg

http://blogidol.ca/wp-content/uploads/2010/04/html.jpg

http://swwweet.com/presentaciones/viajartiempo/
<mark>Gacias</mark>

            @jorgecasar
        #CPES15 - #CPIN

Más contenido relacionado

Destacado

Cómo vender vino en internet
Cómo vender vino en internetCómo vender vino en internet
Cómo vender vino en internet
Marcos Gil Fuertes
 
Como se cuenta un cuento
Como se cuenta un cuentoComo se cuenta un cuento
Como se cuenta un cuento
AUCALOR
 
Carta de España Junio 2010
Carta de España Junio 2010Carta de España Junio 2010
Carta de España Junio 2010
Cext
 
Dossier Senssai Energy Festival Alicante Colaboradores
Dossier Senssai Energy Festival Alicante ColaboradoresDossier Senssai Energy Festival Alicante Colaboradores
Dossier Senssai Energy Festival Alicante Colaboradores
SenssaiWellness
 
Annual report 2015_web
Annual report 2015_webAnnual report 2015_web
Annual report 2015_web
freestorefoodbank
 
Sesión 3 - Administración de Sistemas de Enrutamiento
Sesión 3 - Administración de Sistemas de EnrutamientoSesión 3 - Administración de Sistemas de Enrutamiento
Sesión 3 - Administración de Sistemas de Enrutamientoecollado
 
CP Les facteurs de Lesneven vont assurer une prestation de pressing à domicil...
CP Les facteurs de Lesneven vont assurer une prestation de pressing à domicil...CP Les facteurs de Lesneven vont assurer une prestation de pressing à domicil...
CP Les facteurs de Lesneven vont assurer une prestation de pressing à domicil...
LGLPpressBZH
 
2012 january 3
2012 january 32012 january 3
Guía grupo de trabajo 2014
Guía grupo de trabajo 2014Guía grupo de trabajo 2014
Guía grupo de trabajo 2014
Joaquín Jurado
 
Translúcida
Translúcida Translúcida
Translúcida
Murmaider
 
business broadband at JustEat.ie
business broadband at JustEat.iebusiness broadband at JustEat.ie
business broadband at JustEat.ie
eircom
 

Destacado (12)

Cómo vender vino en internet
Cómo vender vino en internetCómo vender vino en internet
Cómo vender vino en internet
 
Como se cuenta un cuento
Como se cuenta un cuentoComo se cuenta un cuento
Como se cuenta un cuento
 
Carta de España Junio 2010
Carta de España Junio 2010Carta de España Junio 2010
Carta de España Junio 2010
 
Dossier Senssai Energy Festival Alicante Colaboradores
Dossier Senssai Energy Festival Alicante ColaboradoresDossier Senssai Energy Festival Alicante Colaboradores
Dossier Senssai Energy Festival Alicante Colaboradores
 
Annual report 2015_web
Annual report 2015_webAnnual report 2015_web
Annual report 2015_web
 
Sesión 3 - Administración de Sistemas de Enrutamiento
Sesión 3 - Administración de Sistemas de EnrutamientoSesión 3 - Administración de Sistemas de Enrutamiento
Sesión 3 - Administración de Sistemas de Enrutamiento
 
CP Les facteurs de Lesneven vont assurer une prestation de pressing à domicil...
CP Les facteurs de Lesneven vont assurer une prestation de pressing à domicil...CP Les facteurs de Lesneven vont assurer une prestation de pressing à domicil...
CP Les facteurs de Lesneven vont assurer une prestation de pressing à domicil...
 
2012 january 3
2012 january 32012 january 3
2012 january 3
 
Guía grupo de trabajo 2014
Guía grupo de trabajo 2014Guía grupo de trabajo 2014
Guía grupo de trabajo 2014
 
Translúcida
Translúcida Translúcida
Translúcida
 
business broadband at JustEat.ie
business broadband at JustEat.iebusiness broadband at JustEat.ie
business broadband at JustEat.ie
 
Ant2 Fragen Antw
Ant2 Fragen AntwAnt2 Fragen Antw
Ant2 Fragen Antw
 

Similar a Programación web con HTML5

HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)
Iran Reyes Fleitas
 
02. Interactuando con controles de UI
02. Interactuando con controles de UI02. Interactuando con controles de UI
02. Interactuando con controles de UI
Danae Aguilar Guzmán
 
Desarrollo de aplicaciones con HTML5
Desarrollo de aplicaciones con HTML5 Desarrollo de aplicaciones con HTML5
Desarrollo de aplicaciones con HTML5 Gonzalo C.
 
Arquitectura
Arquitectura Arquitectura
Arquitectura
Antonio Manuel
 
Aplicaciones en HTML 5: Los pilares de una Nueva Web
Aplicaciones en HTML 5: Los pilares de una Nueva WebAplicaciones en HTML 5: Los pilares de una Nueva Web
Aplicaciones en HTML 5: Los pilares de una Nueva Web
Gonzalo C.
 
Html 5
Html 5Html 5
HTML5
HTML5HTML5
HTML5
vivispato
 
Curso html5
Curso html5Curso html5
Curso html5
FRANZ PACHECO
 
Introducción a JQuery
Introducción a JQueryIntroducción a JQuery
Introducción a JQuery
Continuum
 
Webinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaWebinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españa
Jerilee Dueñas Rengifo
 
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
Interlat
 
Webinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaWebinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españa
Community Managers Latam
 
Html5 y otras yerbas
Html5 y otras yerbasHtml5 y otras yerbas
Html5 y otras yerbas
Peter Concha
 
Html5 y otras yerbas
Html5 y otras yerbasHtml5 y otras yerbas
Html5 y otras yerbasAvanet
 
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
Microsoft Argentina y Uruguay [Official Space]
 
Desarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EEDesarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EE
Fernando Montaño
 
HTML Tour - Construyendo tu ecosistema de desarrollo Web
HTML Tour - Construyendo tu ecosistema de desarrollo WebHTML Tour - Construyendo tu ecosistema de desarrollo Web
HTML Tour - Construyendo tu ecosistema de desarrollo Web
Plain Concepts
 
Las Ventajas de usar HTML5 Y CSS3
Las Ventajas de usar HTML5 Y CSS3Las Ventajas de usar HTML5 Y CSS3
Las Ventajas de usar HTML5 Y CSS3
Gerson Perez Aguilar
 
Sazonando la web con HTML5
Sazonando la web con HTML5 Sazonando la web con HTML5
Sazonando la web con HTML5
Juan David Gómez
 

Similar a Programación web con HTML5 (20)

HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)
 
02. Interactuando con controles de UI
02. Interactuando con controles de UI02. Interactuando con controles de UI
02. Interactuando con controles de UI
 
Desarrollo de aplicaciones con HTML5
Desarrollo de aplicaciones con HTML5 Desarrollo de aplicaciones con HTML5
Desarrollo de aplicaciones con HTML5
 
Arquitectura
Arquitectura Arquitectura
Arquitectura
 
Aplicaciones en HTML 5: Los pilares de una Nueva Web
Aplicaciones en HTML 5: Los pilares de una Nueva WebAplicaciones en HTML 5: Los pilares de una Nueva Web
Aplicaciones en HTML 5: Los pilares de una Nueva Web
 
Html 5
Html 5Html 5
Html 5
 
HTML5
HTML5HTML5
HTML5
 
Curso html5
Curso html5Curso html5
Curso html5
 
JqueryMobile
JqueryMobile JqueryMobile
JqueryMobile
 
Introducción a JQuery
Introducción a JQueryIntroducción a JQuery
Introducción a JQuery
 
Webinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaWebinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españa
 
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
APPS Aplicaciones móviles: Construyendo y publicando nuestro primera APPS mul...
 
Webinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españaWebinar interlat apps_2012_carlos_a-perez_españa
Webinar interlat apps_2012_carlos_a-perez_españa
 
Html5 y otras yerbas
Html5 y otras yerbasHtml5 y otras yerbas
Html5 y otras yerbas
 
Html5 y otras yerbas
Html5 y otras yerbasHtml5 y otras yerbas
Html5 y otras yerbas
 
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
 
Desarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EEDesarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EE
 
HTML Tour - Construyendo tu ecosistema de desarrollo Web
HTML Tour - Construyendo tu ecosistema de desarrollo WebHTML Tour - Construyendo tu ecosistema de desarrollo Web
HTML Tour - Construyendo tu ecosistema de desarrollo Web
 
Las Ventajas de usar HTML5 Y CSS3
Las Ventajas de usar HTML5 Y CSS3Las Ventajas de usar HTML5 Y CSS3
Las Ventajas de usar HTML5 Y CSS3
 
Sazonando la web con HTML5
Sazonando la web con HTML5 Sazonando la web con HTML5
Sazonando la web con HTML5
 

Último

TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
rafaelsalazar0615
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
JuanPrez962115
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 

Último (20)

TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 

Programación web con HTML5

  • 1. Programación Web con HTML5 Campus Party 2011 #CPES15 - #CPIN Parte 1
  • 2. Jorge del Casar @jorgecasar Madrid Google Technology User Group GTUG Madrid · Frontend Spain · ShoTools.com
  • 3. ¿Qué NO es HTML5? CSS3 JS APIs (GEOlocation, workers, Drag&Drop, Web storage...) Web Apps
  • 4. ¿Qué NO es HTML5? Todo lo que esté fuera del lenguaje de marcado
  • 5. ¿Qué es HTML5? Lenguaje de marcado Web Forms Video & Audio Canvas SVG
  • 6. ¿Qué es HTML5? La base de las aplicaciones web
  • 7. CSS2.1 GEO location CSS1 Storage CSS JS APis CSS3 web forms Drag & Drop SVG HTML5 video canvas audio Silverlight Flash Web Apps
  • 9. 2004 - WHATWG Formada por gente de Mozilla, Opera y Apple para trabajar en avanzar HTML en respuesta a la decisión de la W3C de abandonar HTML en favor de tecnologías basadas en XML
  • 10. 2007 - WHATWG + W3C Se forma el grupo de trabajo HTML para trabajar conjuntamente Ambos grupos trabajaron juntos en el desarrollo de la especificación HTML5
  • 11. 2009 - R.I.P. XHTML Reconociendo el valor del grupo de trabajo de XHTML 2 la W3C decide abandonar el desarrollo
  • 12. 2011 - Logo HTML5 http://www.w3.org/html/logo/
  • 13. Semántica Dar significado a la estructura Set de etiquetas más ricas RDFa Microdatos Microformatos
  • 14.
  • 15. header nav header nav section figure figure video figcaption figcaption header section header header article article article aside footer
  • 16. Nuevas etiquetas av tim e gr ess met er n pro rp audio ou tput list ary key ta f ooter su mm da gen figure details art mark vid icl command eo e ad er de he si source canv a oup figc as wb rt hgr ruby apti on r
  • 17. Offline & almacenamiento Aplicaciones web sin conexión Caché Local storage Indexed DB File API
  • 18. Web storage Pares etiqueta/valor Etiqueta: string Valor: cualquier objeto Javascript var input = document.querySelector(‘input[name=‘nombre’]’); storageSaveButton.addEventListener(‘click’, function(){ window.localStorage.setItem(‘nombre’, input.value); }, false); input.value = window.localStorage.getItem(‘nombre’);
  • 19. Offline web aplications Navegación offline Recursos cacheados cargan más rápido Solo descarga los recursos que cambian <html manifest=”cache.appcache”> window.applicationCache.addEventListener(‘updateready’, function(e){ if(window.applicationCache.status == window.applicationCache.UPDATEREADY) { window.applicationCache.swapCache(); if(confirm(‘Una nueva versión está disponible. ¿Descargar?’)) { window.location.reload(); } } }, false);
  • 20. Acceso al dispositivo Geolocalización API Micrófono Cámara Datos locales (contactos y eventos) Orientación
  • 21. Drag & Drop document.addEventListener(‘dragstart’, function(e){ event.dataTransfer.setData(‘text’, ‘Texto personalizado’); event.dataTransfer.effectAllowed = ‘copy’; }, false);
  • 22. API de Geolocalización if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition, handlePositionError); } function showPosition(position) { var latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); var marker = new google.maps.Marker({position: latLng, map: map }); map.setCenter(latLng); }
  • 23. Conectividad Chats en tiempo real Juegos más rapidos Mejor comunicación Notificaciones Push (Web Sockets, Server-Sent Events)
  • 24. WebSockets var socket = new WebSocket(url); socket.onopen = function(e) { socket.send(‘Hola, socket’); } socket.onmessage = function(e) { alert(e.data); } socket.close = function(e) { alert(‘Adios’); }
  • 26. 3D, gráficos y efectos SVG Canvas WebGL CSS3 3D
  • 27. SVG <svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" height="100%" width="100%" viewBox="0 0 512 512" version="1.1"> <polygon points="74.633,100.62 437.37,100.62 404.32,470.82 255.78,512 107.64,470.88" fill="#E44D26"/> <polygon points="376.03,447.25 404.27,130.89 256,130.89 256,480.52" fill="#F16529"/> <polygon points="195.91,268.22 191.76,221.72 256,221.72 256,176.3 255.84,176.3 142.13,176.3 143.22,188.49 154.38,313.63 256,313.63 256,268.22" fill="#EBEBEB"/> <polygon points="255.8,386.21 205.23,372.55 201.99,336.33 177.42,336.33 156.41,336.33 162.77,407.63 255.79,433.46 256,433.4 256,386.15" fill="#EBEBEB"/> <path d="m108.38,0h23.077v22.8h21.11v-22.8h23.078v69.044h-23.08v-23.12h-21.11v23.12h -23.077v-69.044z"/> <path d="M205.99,22.896h-20.312v-22.896h63.72v22.896h-20.327v46.148h-23.078v-46.148 z"/> <path d="m259.51,0h24.063l14.81,24.26,14.78-24.26h24.072v69.044h-22.977v-34.222l-15.8 77,24.549h-0.397l-15.89-24.549v34.222h-22.58v-69.044z"/> <path d="m348.72,0h23.084v46.222h32.453v22.822h-55.53v-69.044z"/> <polygon points="255.84,313.63 311.76,313.63 306.49,372.52 255.84,386.19 255.84,433.44 348.94,407.63 349.62,399.96 360.29,280.41 361.4,268.22 349.16,268.22 255.84,268.22" fill="#FFF"/> <polygon points="255.84,204.51 255.84,221.6 255.84,221.72 365.38,221.72 365.38,221.72 365.53,221.72 366.44,211.51 368.51,188.49 369.6,176.3 255.84,176.3" fill="#FFF"/> </svg>
  • 28. Canvas function draw() { var canvas = document.getElementById(“canvas”); if (canvas.getContext) { var ctx = canvas.getContext(“2d”); ctx.fillStyle = “rgb(40,0,0)”; ctx.fillRect (20, 20, 65, 60); ctx.fillStyle = “rgba(0, 0, 160, 0.5)”; ctx.fillRect (40, 40, 65, 60); } }
  • 29. Rendimiento e integración Web Workers XMLHttpRequest 2
  • 30. Web Workers // main.js var worker = new Worker(‘tarea.js’); worker.onmessage = function(e) { alert(e.data); }; worker.postMessage(‘data’); // tarea.js self.onmessage = function(e) { // Algunas tareas... self.postMessage(‘recibido: ’ e.data); }
  • 36. !DOCTYPE XHTML 1.0 Strict <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> HTML5 <!DOCTYPE html>
  • 37. Encoding XHTML 1.0 Strict <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> HTML5 <meta charset="utf-8" />
  • 38. Links XHTML 1.0 Strict <link rel="stylesheet" type="text/css" href="style.css"/> HTML5 <link rel=stylesheet href=style.css>
  • 39. Script XHTML 1.0 Strict <script type="text/javascript" src="jquery.js"></script> HTML5 <script src=jquery.js></script>
  • 40. Polyfills html5shim <!-- [if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"> </script> <![endif]-->
  • 41. Demo Convertir una web cualquiera a HTML5
  • 42. Programación Web con HTML5 Campus Party 2011 #CPES15 - #CPIN Parte 2
  • 43. Concurso GTUG Convertir una web a HTML5 versiones tablet y smartphone
  • 45. Características Chrome Book 12,1 pulgadas 1,48Kg Intel® AtomTM Dual-Core Webcam HD 2 USB Ranura tarjetas 4 en 1 Minipuerto VGA
  • 46. HTML5 BOILERPLATE Todos los navegadores (IE6) Preparado para HTML5. Recomendaciones sobre caché y compresión Configuración por defecto basada en buenas prácticas Optimizaciones para navegadores móviles Mejora progresiva con degradación gradual … sí, lo conseguimos! Clases específicas para IE Clases .no-js y .js Completa e interconectada test suite
  • 47. HTML5 BOILERPLATE Medir el rendimiento de Javascript console.log CSS para impresión Marcado y estructura CSS adaptables a Smartphones y tablets Ajuste pngfix para IE6 incluído. Clases .clearfix, .visuallyhidden .htaccess para HTML5 y mayor velocidad Alojamiento CDN de jQuery con sistema de anticaídas
  • 48. <html> Detectar el navegador Detectar capacidades <!--[if lt IE 7 ]> <html class="no-js ie6" lang="es"> <![endif]--> <!--[if IE 7 ]> <html class="no-js ie7" lang="es"> <![endif]--> <!--[if IE 8 ]> <html class="no-js ie8" lang="es"> <![endif]--> <!--[if (gte IE 9)|!(IE)]><!--> <html class="no-js" lang="es"> <!--<![endif]-->
  • 49. Chrome Frame Google Chrome en IE <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  • 50. Librerías que usa jQuery · http://jquery.com/ QUnit · http://docs.jquery.com/Qunit modernizr · http://www.modernizr.com/ DD_belatedPNG · http://www.dillerdesign.com/experiment/DD_belatedPNG/
  • 51. jQuery 31KB (Minified and Gzipped) Soporta selectores CSS3 y más IE 6.0+, FF 2.0+, Safari 3.0+, Opera 9.0+, Chrome
  • 52. QUnit test("a basic test example", function() { Unit testing ok( true, "this test is fine" ); var value = "hello"; para javascript equals( "hello", value, "We expect value to be hello" ); }); module("Module A"); test("first test within module", function() { ok( true, "all pass" ); }); test("second test within module", function() { ok( true, "all pass" ); }); module("Module B"); test("some other test", function() { expect(2); equals( true, false, "failing test" ); equals( true, true, "passing test" ); });
  • 56. Nuevos atributos placeholder required autofocus novalidate <input id="buscar" placeholder=”Buscar” autofocus required> <script> if (!("autofocus" in document.createElement("input"))) { document.getElementById("buscar").focus(); } var elements = document.getElementsByTagName("INPUT"); for (var i=0; i<elements.length; i++) { elements[i].setCustomValidity("This field cannot be left blank"); } </script>
  • 58. <mark>Gacias</mark> @jorgecasar #CPES15 - #CPIN