HTML5 y CSS3

HTML5 & CSS3 Hernán Beati @hernan_beati [email protected] Hernán Beati Desarrollador Web + 12 años Autor libr

Views 152 Downloads 1 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

HTML5

&

CSS3

Hernán Beati @hernan_beati [email protected]

Hernán Beati Desarrollador Web + 12 años

Autor libro:

Fundador de: Docente en:

+ coautor con Maximiliano Firtman

Web = HTML Lenguaje universal, base de la Web

HTML 4.01 = 1999 XHTML 1.0 = 2000 XHTML 1.1 = 2001 XHTML 2 = ?

HTML5

¿A qué se le llama HTML5? HTML5 (nuevas etiquetas, marcado) CSS3 (nuevos estilos) APIs JavaScript (programación) + Otros estándares W3C (SVG, MathMl) + Estándares “de facto” (microformatos) + Experimentos de algún navegador + + + ...

Nuevo en HTML5 Nuevas etiquetas semánticas

(Google debe entender los contenidos)

Video, audio y animación sin plugins

(Acceso universal: cualquier dispositivo, cualquier navegador, cualquier versión)

Nuevos elementos de formularios (Más usabilidad y menor uso de JavaScript)

Nuevo en CSS3 Usar cualquier tipografía

Efectos decorativos: sombras, RGBa, bordes redondeados, gradientes, (menor uso de imágenes)

Movimientos: transformaciones, transiciones, animaciones (menor uso de JavaScript)

Diseño adaptable: Media Queries Selectores más precisos

(menor uso de marcado innecesario)

Nuevo en Scripts Animaciones con Canvas Drag & Drop

Geolocalización del usuario Trabajo offline (cache de aplicaciones) Web Storage (session y local) File System API (archivos enteros) Bases de datos del lado del cliente Web sockets (actualización en vivo, tipo Ajax) Hilos (threads) Web Workers

Pero...¿cuál es “la” pregunta? (que todos nos estamos haciendo con HTML5 y CSS3)

¿Ya se puede usar!?

“Naaahh... ¡si en Explorer no anda!”

Esa duda se basa en rumores* *(conceptos erróneos)

El principal:

Esperar que la perfección total se haga realidad un día. El “Día D” nunca existirá…

“Cuando todos los seres humanos del mundo se actualicen a X navegador...” La diversidad de versiones y plataformas siempre existirá: sin plugins, JavaScript desactivado, resoluciones MUY diferentes.

“Cuando todos los navegadores interpreten idénticamente el 100% del estándar...”  Las diferencias entre navegadores siempre existirán, jamás hubo 2 navegadores iguales.  La evolución / innovación implementando nuevas capacidades, siempre existirá.  Siempre seguirán en uso navegadores antiguos.

“Cuando el W3C publique la especificación, ahí sí se podrá usar!” En 2015 recién será “Recomendación”. ¿Para 2022 la habrán implementado los navegadores? HTML: primer estándar VIVO, sin versión. Se estandarizan las innovaciones. Lo que ya funciona nunca se quitará.

“...porque yo quiero que mis diseños se vean idénticos en todos los navegadores y en todos los dispositivos...”

¿!? Existen celulares de 128 x 160 pixeles, y plasmas de 1920 x 1200px!!

¿Y entonces cuál es la respuesta?

¿Ya se puede usar!?

Versión abreviada:



Versión explicada:

Se puede usar mediante técnicas de compatibilidad

Principales técnicas:

Mejora progresiva

(Progressive enhancement).

Degradación elegante (Graceful degradation).

Mejora regresiva

(Regressive enhancement).

1. Mejora progresiva (Progressive enhancement)

“Después de crear una página básica, que funcione en Explorer, agreguemos funcionalidades extra para navegadores más potentes, usando selectores avanzados.” Dave Shea (2003) www.csszengarden.com

2. Degradación elegante (Graceful degradation)

“Diseñar para los navegadores más potentes y móviles, haciendo uso pleno de HTML5 y CSS3, asumiendo que no se va a ver idéntico.”

Degrada en sitio menos decorado o menos funcional (le “falta” algo).

Andy Clarke propone crear hoja de estilo de texto plano para Explorers viejos, y no perder tiempo en compatibilizar la estética... (O cobrar ese tiempo aparte!)

Tercera posición:

3. Mejora Regresiva: Complementar al navegador

Aplicamos nuevas etiquetas HTML5 y CSS3 para navegadores nuevos, y luego agregamos scripts para “fabricar” esa misma funcionalidad en navegadores que no la traen (funcional, o a veces característica estética). Se les llama shims, polyfills, scripts compatibilizadores, etc. Por ejemplo: Modernizr, Selectivizr, Yepnope.

En el fondo, el concepto clave es aplicar

Diseño Adaptable (responsive design)

 Aceptar diferencias entre dispositivos...  ...pero también aceptar diferencias entre navegadores y sus versiones. NO BUSCAR UNIFORMIDAD!!!

Supera actitudes extremas de: -Usar sólo características CSS básicas que sean soportadas por el obsoleto Explorer 6 (recién Explorer 8 aplicó CSS 2.1 completo, 10 años!!!). -Olvidarse completamente de navegadores anteriores y limitados, diseñando sólo para navegadores modernos (Andy Clarke…)

Entonces,

¿qué debo hacer para usar HTML5 y CSS3 ya?

Cambiar la forma de pensar el diseño web.

Nuestro concepto de diseño web no puede seguir siendo el mismo que en diseño “gráfico”.

La web es (múltiples dispositivos, múltiples navegadores)

La web es MUY flexible:

(¿Para cuál resolución diseñar? Para TODAS!!)

Y más!...

“...pero yo quiero que mis diseños se vean idénticos en todos los navegadores y en todos los dispositivos...”

¿!!!?

Pensar el diseño web como creación de experiencias de usuario, y no como una decoración rígida, uniformizadora, ni como un lienzo artístico. Algo es diseño si es funcional a una meta,

EL DISEÑO NO ES ARTE

“La” pregunta del diseño web debe ser: ¿puedo hacer las tareas que vine a hacer al sitio? (Con cualquier dispositivo, con cualquier navegador y versión)

Deberemos explicar a clientes y jefes que cada usuario “verá levemente distinto” cada sitio web ¡Porque es inevitable y no tiene nada de malo! Diseño adaptable = Responsive design

Resumiendo:

(respuestas a “la” pregunta) Sí, se puede usar HTML5 y CSS3 hoy!

Aplicando técnicas de compatibilidad: Mejora progresiva, Degradación elegante o Mejora regresiva. Debemos aceptar la flexibilidad de la web, y cambiar nuestras expectativas de diseño.

HTML5: Primer estándar “vivo”

Antes: W3C definía reglas, que luego los navegadores iban aplicando

Ahora: navegadores innovan, y W3C lo agrega al estándar Es lo lógico...

Conclusión:

HTML5 es el estándar más consensuado de la historia! Todos lo apoyan...

¿Objetivo de nuevas etiquetas?

Usar etiquetas con significado Google debe entender cuál contenido es importante y cuál no lo es.

Estructuras nuevas Article: contenido fundamental, independiente Aside: contenido accesorio, no fundamental Nav: barra de navegación Section: una sección o bloque (ex DIV) Header: introducción / orientación sobre sección Footer: final de una sección

Hgroup: grupo de encabezados Figure: contenido relacionado (imagen, video, audio, canvas, gráficos, tablas estadísticas, etc.) Figcaption: leyenda de un elemento Figure

Ejemplos: Antes:

Ahora:



























Esta foto habla de...





Esta foto habla de...



Secciones explícitas Article Aside Nav Section

1. Article Es el contenido importante de cada página Puede haber uno, o varios por página Ver ejemplo

2. Aside Es información secundaria, que podría no estar. Ej.: Barras laterales, banners. Ver ejemplo

3. Nav Una barra de navegación. Puede haber una, o varias por página

Ver ejemplo

4. Section Una sección explícita. Puede haber una, o varias por página

Ver ejemplo

4.a Section = “parte de...” Puede haber una o más sections dentro de un article:

Datos del Autor Comentarios

Ver ejemplo

4.b Section = “contenedor de...” Una section puede tener articles dentro (¡con sections dentro!):

Noticia de hoy Noticia de ayer

Ver ejemplo

Headers & Footers Pertenecen a secciones (article, aside, nav y section) además del body.

Ver ejemplo

Figure No es solo para fotos (diagramas, SVG, MathML, listas de código) que puedan ser referenciados (apéndice, índice, etc.)

Bla

Ver ejemplo

Compatibilizador para Explorer

Textos más semánticos Mark: resultados resaltados (en vez de span, em o strong) Time: Hora, Fecha, o ambas cosas Meter: Medidas dentro de una escala Progress: Medidas dinámicas, cambiantes

que cambiaron  A puede envolver varias cosas (bloques)  Address pertenece a una sección, no solo a la página entera  B estilo “diferente”, pero no más importante ni negrita  I cambio de entonación (en otro idioma, tecnicismos)  Strong es algo importante, aunque no se vea distinto  Cite ahora es para “título” de la obra citada, no para “autor”

 Hr cambio de tema entre párrafos (Ej.: viñeta entre estrofas)  Small es la letra chica de los contratos, términos legales

¿Aún más significado?

Extensibilidad con

Microdata y Microformatos “Google debe entender cuál contenido es importante y cuál no lo es...”

http://www.google.com/support/webmasters/bin/answer.py?hl=es&answer=146897

Datos personales Opiniones / revisiones Contactos Productos Empresas Recetas Eventos Video



Tim Berners-Lee Director del W3C C/Ada Byron, 39 Asturias, España 33203

Ver ejemplo

¿Principal dificultad de los formularios?

Validación!

Soluciones HTML5:

Nuevos tipos de input y nuevos atributos auto-validables

13 nuevos type: search, tel, url, email, number, range, datetime, datetime-local, date, month, week, time, color

Search:

-Botón “x” para “limpiar” -No permite saltos de línea -Degrada en “text”

Tel:

-Puede incluir espacios o guiones -Degrada en “text” -Por ahora, es solo semántica

URL:

Valida que sea una URL absoluta

Email:

Verifica que la casilla sea válida. Puede llevar el atributo multiple y en ese caso acepta varias casillas separadas por comas.

Number:

Formato: -12345.678e+90 (puede ser negativo, usa punto para decimales, e para exponente, más signo y potencia)

Range:

Usar si no importa la precisión del número, sino la usabilidad.

Date:

Puede llevar min, max (rango permitido) y step (por default, de a 1 día) Formato: 2011-09-19

Datetime:

Fecha y hora en formato UTC: 2011-05-19T10:55:59.001-03:00

Month:

-Mismos atributos que Date (min, max, step) -Formato: 2011-05 -¿vencimiento de tarjeta de crédito?

Week:

Mismos atributos que Date (min, max, step) Formato: 2011-W17

Time:

Mismos atributos que date. Formato: 11:59 Formato con segundos (opcionales): 11:59:59

Color:

Opera 11+

Atributos nuevos

Multiple

Se usa en inputs de tipo file o email

Autocomplete

(por default)

Campos obligatorios



Autofocus

(a un solo campo, o solo tomará el último)

Placeholder

(tener en cuenta que el placeholder se esconde si hay autofocus)

Pattern

Nro. de Tarjeta de Crédito:

Datalist (auto-suggest)





No validar:

Para usar validación propia (con JavaScript)

Compatibilizar formularios para navegadores viejos https://github.com/ryanseddon/H5F

Multimedia HTML5: Audio, video y animaciones

Audio

Contenido alternativo.

Formatos soportados .mp3

- Chrome y Safari .ogg - Firefox y Opera

¿Explorer? Fallback con Player .flv

Video



Contenido alternativo.

Formatos soportados .mp4

– Chrome 6, Safari 5, Explorer 9 .ogg y WebM – Chrome, Firefox y Opera

¿Explorer viejo? Fallback con .flv

Valores de Preload preload="none" (no descarga nada) preload="metadata" (no baja el video, pero sí sus metadatos -tamaño, etc.-)

preload="auto" (lo baja por adelantado) preload="" (igual a auto, lo baja) Si no es declarado, cada navegador decide, aunque especificación dice que debe aplicar “metadata”.

Poster poster="imagen_inicial.jpg“ Imagen que se ve antes de dar play

Video con fallback http://camendesign.com/code/video_for_everybody

Animaciones “a la HTML5” (sin Flash)

3 tecnologías: 1) Canvas (bitmap) 2) SVG (vectorial) -poco soporte3) CSS3 Animations

Ejemplos de Canvas http://agent8ball.com/ http://www.s5-style.com/

Libros sobre Canvas

Asegurar soporte:

Dentro de hojaexplorer.css: .translucido { background:transparent; filter:progid:DXImageTransform. Microsoft.gradient(startColorstr=#9900 0050,endColorstr=#99000050); /* mismo valor de inicio y fin / zoom: 1; }

Formato startColorstr

AARRGGBB AA = Alpha, 00 transparente, FF sólido RR = Red GG = Green BB = Blue Conversor RGB a Hexadecimal: http://www.javascripter.net/faq/rgbtohex.htm

Tono, saturación, brillo: HSL body{ background-color: hsl(360,100%,20%); } Valor de Tono: 0 a 360 (0 rojo, 120 verde, 240 azul, 360 rojo) Conversor para fallback: http://serennu.com/colour/hsltorgb.php

Tono, saturación, brillo + Translucidez: HSLa body{ background-color: hsla(300,130%,65%,10%); } HSL con translucidez Alpha

Generador de Degradés http://gradients.glrzad.com

Bordes redondeados #algo { border-radius:10px; }

Border-image #algo{ border-image: url("borde.png") 12 repeat round; }

Ejemplo de border-image http://www.w3.org/TR/css3-background/#border-images

Ejemplo de Box-shadow .sombra { box-shadow: 10px 10px 5px #999; }

Sombra en Explorer .sombra { zoom: 1; filter: progid:DXImageTransform.Microsoft. Shadow(color='#969696', Direction=135, Strength=3); }

Text-shadow .sombra { text-shadow: 10px 10px 5px #999; }

Media queries (consultas sobre el medio) Detectan características de un dispositivo, para aplicarle distintos estilos http://www.w3.org/TR/css3-mediaqueries

http://media queri.es

Media “a la antigua” En el HTML: