Subscribe

miércoles, 10 de agosto de 2011

div, section y article

Quizás, lo más repetido desde que comenzamos a trabajar con HTML5 es que esta nueva versión nos ofrece la posibilidad de dotar de semántica a los contenidos de una web.
Para ello dos nuevos elementos han aparecido: section y article. Pero, ¿realmente conocemos como y cuando debemos usarlos? Y tenemos claro que lo diferencia del antiguo (y todavía válido) div.
Pues bien, voy a intentar explicar los posibles usos de cada uno y dar los suficientes ejemplos para que lleguéis a comprender mejor las diferencias entre estas etiquetas. 
div 
La etiqueta div sigue funcionando exactamente igual que lo hacía hasta el momento. Lo usaremos para definir bloques sin ningún tipo de significado, normalmente bloques que usaremos para maquetar correctamente la página o para agrupar elementos en principio sin querer dar un significado específico. Este etiqueta era la más usada en HTML 4 y nos servía tanto para representar un artículo como para la cabecera o el pie de la página usando tan solo el atributo id para diferenciarlos sin dar significado ninguno a los contenidos.
article 
Esta etiqueta será usada para representar un contenido específico de nuestra web. Puede representar un artículo, ya sea un artículo de opinión, un entrada en un blog, un comentario en un foro, una noticia, una descarga, o simplemente un contenido estático de una web como el típico quienes somos o a qué nos dedicamos. Para que entendáis mejor esta etiqueta, la usaremos para representar el contenido típico que se publica en una RSS. 
Por lo tanto, este tipo de contenido tiene un alto valor semántico ya que aporta información relevante dentro de nuestro documento. Este elemento debería tener principalmente un título (un header con un h1-h6) y podría tener un footer (con la fecha de publicación, el autor o cualquier otra información adicional) y un cuerpo con el detalle. 
Por ejemplo, en el caso de mostrar un listado de noticias, lo que estaremos listando será un listado de elementos article. 
section 
La etiqueta section es quizás la más difícil de comprender. En principio se usa para representar un bloque de nuestra página que tiene valor semántico, es decir, que aporta un significado a la página. Realmente si tenemos que clasificar por la importancia del significado, el ranking sería: article sería la etiqueta que contiene la información más relevante, section la que contiene información menos relevante, y div que contiene información que no aporta significado ninguno. 
Bien, vamos a intentar poner ejemplos de uso: 
  • Listado de noticias: Antes hemos comentado que un listado de noticias será un listado de elementos article, pero, ¿cómo representamos este listado? Pues la mejor forma será con la etiqueta section. Este listado quedaría aproximadamente: 
<section>
<header><h1>Listado de noticias</h1></header>
<article><header><h2>Noticia 1</h2></header></article>
<article><header><h2>Noticia 2</h2></header></article>
<article><header><h2>Noticia 3</h2></header></article>
</section>


  • Bloque principal de la página: Imaginaros por ejemplo una portada que tiene una zona destacada en la que se muestra una introducción. Este bloque de contenido podría ser perfectamente un bloque section.
  • Separar elementos dentro de un artículo: Cuando se trata de un artículo muy completo podríamos estructurar la información por secciones. Por ejemplo, un articulo separado en Introducción, Desarrollo y Conclusión estaría formado por 3 section, uno para cada bloque. Igualmente podríamos usarlo para agrupar una galería de imágenes asociada al contenido o incluso un listado de enlaces relacionados directamente con el artículo. 
<article>
<header><h1>Artículo</h1></header>
<section><header><h2>Introducción</h2></header> …TEXTO … </section>
<section><header><h2>Desarrollo</h2></header> …TEXTO … </section>
<section><header><h2>Conclusiones</h2></header> …TEXTO … </section>
<section><header><h2>Galería de imágenes</h2></header> …TEXTO … </section>
</article>


Un aspecto importante de la etiqueta section es que debe tener un título. Tal y como hemos comentado en otros artículos de este blog, la etiqueta section crea una sección de manera explícita en el outline del documento, por lo tanto debemos siempre asignarle un encabezado (h1-h6) ya que si no se le aplicará directamente untitle
Por lo tanto, una buena forma de identificar cuando es necesario usar una etiqueta section es cuando tengamos la necesidad de aplicar un encabezado. 

Si os dedicáis a investigar un poco por ahí veréis como hay opiniones para todos los gustos. Hay quien dice que el elemento section debería ser quien contiene al article, y otros dicen todo lo contrario, que article es quien debe contener a section. Lo cierto es que la documentación oficial no aclara mucho sobre el tema y lo deja abierto a posibles interpretaciones. Solo el tiempo dirá como lo acaba utilizando la gente, pero desde luego, yo creo que realmente ambos están en lo cierto. La etiqueta section abre un gran abanico de posibilidades y nos permite usarlo de muchas maneras, en algunos casos será el padre de article (como por ejemplo en el caso del listado de noticias) y en otros será el hijo de article (como en el caso del articulo fraccionado en bloques). Por lo tanto, pensad antes de usar una etiqueta u otra que tiene más sentido usar en base a la información que estamos representando. 

Espero en un futuro aportar más ejemplos conforme se me vayan ocurriendo. Si queréis aportar vuestra experiencia no dudéis en comentar lo que queráis.

viernes, 5 de agosto de 2011

Header y Footer

Bueno, va siendo hora de seguir repasando alguno de los nuevos elementos introducidos por HTML5.
En este caso le toca el turno a las etiquetas header y footer.

Header

La etiqueta header sirve para mostrar información de cabecera útil para un documento u otras secciones principales. Típicamente se utiliza para agregar encabezados, es decir, h1-h6 que definen el título y subtítulos de la sección, aunque también se puede utilizar para dar información sobre fechas de publicación, versiones del contenido mostrado, o enlaces de navegación dentro del documento (por ejemplo, enlaces a la home, información de contacto, o al mapa web de una página). A pesar del nombre de la etiqueta, ésta no tiene porque ir situado al principio del HTML, sino que puede estar posicionado en cualquier posición dentro de nuestro documento.
Ej:
<header>
<h1>Blog: HTML5 Paso a paso</h1>
<p>Mi nombre es Sergio Raposo Vargas</p>
</header>


Footer

La etiqueta footer representa el pie de un documento o sección. La información que se suele añadir en este bloque es el autor del documento, enlaces a contenido relacionado, información de copyright, avisos legales, etc.
Igualmente podremos agregar al pie información de contacto. Recordar que para ello disponemos de otra etiqueta llamada address. Al igual que en la etiqueta anterior, a pesar de su nombre, este elemento no tiene porque ir al final del documento o sección aunque suele ser lo más normal.
Ej:
<footer>Este documento fue escrito en 2011.</footer>

domingo, 27 de marzo de 2011

Analizando una web. Parte I

En este post voy a intentar analizar una web construida en 3 columnas que existe actualmente y está programada en HTML4 y como se haría pensando en el nuevo estándar.
El ejemplo que vamos a tomar como base es la web de una comunidad de la cual soy administrador: www.opencmshispano.com. Para empezar con el análisis vamos a tomar como base la portada de la web.
A continuación podéis ver como es actualmente:

Lo primero que debemos pensar es buscar los distintos bloques a nivel semántico definidos por HTML5 en la web, para ello en la siguiente imagen he señalado los bloques de distintos colores . En rojo tenéis la cabecera y el pie, en naranja los bloques de navegación "nav" y en verde las distintas secciones "section".

Como podéis ver, en esta pantalla principal del portal tenemos numerosas secciones, digamos que serían como las secciones principal del portal. Cada una de ellas tiene un significado y todas ellas podrían tener un título de encabezado. En ningún caso ninguna de ellas se encuentran relacionadas. Las secciones detectadas son:
  • Listado de noticias principal
  • Listado de articulos de Technology For Solutions
  • 2 bloques de listado de banners
  • Un bloque de las últimas entradas en el blog
  • Un bloque de enlaces de interés relacionados con la comunidad.
Igualmente podemos ver como hemos detectados 4 bloques de navegación:
  • Menú principal situado en la columna de la izquierda.
  • Menú de acceso rápido a las herramientas adicionales a la web como son el foro, el blog y las FAQ
  • Menú de navegación a otras secciones de la web basadas en iconos, como son el link a la home, al mapa web, al formulario de contacto y las RSS
  • Enlaces en el pie a los textos legales que suelen acompañar a todas las web con las normas de uso y la política de privacidad.
Por último, los dos bloques quizás más claros de todos, la cabecera y el pie, comunes en todas las páginas y donde introduciremos información relevante del portal como el nombre de la comundiad, la publicidad principal del portal o los agradecimientos situados en el pie.
Hasta el momento hemos comentado la división "semántica" del portal, pero evidentemente existe otro tipo de división, la visual. Como vemos la web está estructurada en 3 columnas, para ellos, y salvo que se me escape, tenemos que seguir usando los divs para la creación de este tipo de bloques visuales. Para ello tendremos un div general que englobará a toda la zona del centro, y un div por cada columna. Si fuera necesario añadir más div por temas de maquetación no tendremos problemas ya que este elemento lo podemos seguir usando como hasta ahora. Por lo tanto la división visual de la web sería:


Bueno hasta aquí hemos visto como se organiza de forma esquematizada una web siguiendo el nuevo estandar HTML5, para próximos post analizaremos con detalle cada uno de los sectores detectados y las páginas interiores como el detalle de una noticia, o el listado de artículos y tutoriales.
Espero vuestros comentarios al respecto, si creéis que mi interpretación y separación no es del todo correcta podemos comentarla para que entre todos lleguemos a sacar unas conclusiones definitivas.

lunes, 21 de marzo de 2011

Para que nos sirve HTML5!!

Que de tiempo sin escribir ...
Bueno, espero recuperar la dinámica de actualizar este blog, es una iniciativa que la verdad que me gustaría mantener.
Hoy quería escribir sobre una pregunta que se me ha ocurrido, y es: ¿Para que nos sirve HTML5?
Supongo que cualquiera que haya visto algo del nuevo estándar de HTML podrá darme algunas respuestas. Sinceramente cuando empecé a leer información la ilusión era tremenda, parecía que HTML5 iba a dar un vuelco al concepto de web que tenemos hoy día. Conforme seguí avanzando me di cuenta que, efectivamente HTML5 era un gran cambio, pero quizás no era el cambio definitivo (quizás el que necesitábamos realmente).
Aun así, y tras recuperar un poco del bajón sufrido, creo que HTML5 va a traer multitud de cosas buenas, y la principal de todas es la desaparición paulatina de los navegadores antiguos, principalmente de IE6. Nada más que por eso se merece un aplauso y un seguimiento incondicional.
Pero nos va a ofrecer mucho más, la caída del flash, el fin de los div (para organizar la estructura de nuestras páginas), el fin de las cookies como las conocemos, más posibilidades multimedia, más semántica a nuestros contenidos, ....
Poco a poco iré comentando aquellos elementos que me vayan llamando la atención, principalmente los nuevos elementos creados y los que han pasado a mejor vida.

domingo, 14 de noviembre de 2010

Character Encoding en HTML

La codificación en la web ha sido uno de los grandes problemas que todo programador web se habrá encontrado en algún punto de su carrera. Sobre todo cuando los contenidos de la web son gestionados por gestores de contenido la codificación todavía es más complicada, dependerá de la codificación con la que se guarda la información, y con la que se muestra posteriormente.
En HTML existe 2 caminos de definir el encoding del documento:

  • Configuración en la cabecera HTTP: Content-Type: text/html; charset="utf-8". Esta configuración se realiza a nivel del servidor, el principal problema de esta opción es que no todo el mundo tiene libertad para manipular esta configuración, imaginaros por ejemplo los blogs como el mío que está instalado en los servidores de blogger (google) donde no tenemos esta posibilidad.
  • Configuración con metatags: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">. Esta configuración va directamente en el document HTML de la página, el cual ya si es gestionado por nosotros mismos y tenemos la opción de modificar.
Ambos caminos dan el mismo resultado y la finalidad es la misma, pero es muy importante usar uno u otro sistema, pero nunca dejar sin definir el character encoding de nuestros documentos html ya que sino puede traer bastantes problemas de seguridad.
Una buena práctica es definir por defecto un encoding en las cabecera HTTP, es decir, una codificación estándar en nuestros servidores web y en los casos que sea necesaria redefinirla usando el metatags. Siempre va a prevalecer el metatags por encima de la cabecera HTTP.
HTML5 no ha cambiado nada respecto a la configuración del encoding, y todo lo comentado hasta ahora es válido para la nueva versión del estándar. Lo único que se ha modificado ha sido la forma de especificarlo con el metatags, donde se ha comprimido y simplificada la linea, de forma que ahora tan solo debemos poner:
<meta charset="utf-8" />
Para otro día comentaré otros problemas derivado del encoding más orientado a la gestión de los contenidos y la forma de presentar la información.



jueves, 4 de noviembre de 2010

54% de los videos en Internet están basados en HTML5.

Esta soprendente estadística publicada por MEFEEDIA nos dice que el 54% de los videos disponibles en internet actualmente son videos HTML5. Esta cantidad es el doble de hace 5 meses, lo que nos hace ver la gran explosión que el nuevo estandar en lo que a video se refiere está teniendo.
El gran motivo de esta explosión es la irrupción de la banda ancha en los móviles. Flash, el gran triunfador hasta el momento en lo que a video se refiere tenía un gran problema, la reproducción de videos en los pequeños dispositivos móviles. En este punto HTML5 entra con gran fuerza, la mayoría de los navegadores para móviles empiezan a dar soporte a esta nueva característica del estandar. Esto hace que se produzca esta gran explosión de videos HTML5 en internet en los últimos meses.

La solución más extendida actualmente es la de ofrecer las dos alternativas, videos HTML5 para aquellos navegadores que lo soportan, y el antiguo formato de video FLASH para los navegadores que todavía no implementan esta característica.
Sin lugar a duda este número hace que cada vez tenga más claro que HTML5 no es algo a tener en cuenta en el futuro, si no que es nuestro PRESENTE.

Adobe Edge vs Sencha Animator

Desde hace tiempo se sabe que Adobe iba a entrar en la guerra de HTML5, sobre todo desde que no consiguo que su aplicación flash player entrara en los productos de Apple. Esta negativa de Apple hizo que Adobe cambiara su forma de actuar, en lugar de seguir con la batalla entre Flash y HTML5, ha entrado de lleno en la guerra por el mercado de HTML5. Para ello pretende competir con su nuevo producto: Adobe Edge. Este producto todavía no es descargable, pero por lo poco que podemos saber la principal característica es su gran parecido con Adobe Flash. Es una incognita todavía la calidad del producto que se puede generar con esta aplicación, y hasta que no tengamos en nuestras manos no lo sabremos.
En la batalla de la generación de animaciones con HTML5 existe también otro producto llamado Sencha Animator el cual nos permite generar animaciones basadas en HTML5 y CSS3. A diferencia de Adobe Edge, este producto ya lo tenemos disponibles para ser descargado.
La ventaja de Sencha Animator es clara, será mejor o peor, pero ya podemos empezar a usarla. Efectivamente, CSS3 y HTML5 todavía no está tan extendido en los navegadores web, pero es cuestion de poco tiempo el tener un soporte casi total de ambos estándares y para entonces debemos estar preparados y disponer de nuestra animaciones de nueva generación.
Se abre un nuevo horizonte y debemos intentar de no quedarnos atrás.