Documente Academic
Documente Profesional
Documente Cultură
<base> Definir una URL raíz para los enlaces relativos de nuestra página.
<bdi> Aisla parte de un texto que podría estar en otro idioma o formato.
<datalist> Crea una lista de opciónes para una caja de texto input.
<style> Etiqueta para agregar un estilo CSS dentro del documento HTML.
ESTRUCTURA:
En HTML existe un esqueleto básico, que todos debemos de conocer porque se viene
usando desde los inicios del lenguaje. Nos referimos a la conocida estructura del HEAD
/ BODY. Toda jerarquía de etiquetas comienza por <HTML> y dentro tenemos dos
grandes bloques <HEAD> y <BODY>. Bien, en este artículo nos vamos a adentrar en la
parte del <BODY>.
Hasta hace poco dentro del <BODY> se colocaban etiquetas
como <DIV>, <SPAN>, <B>, etc. pero todas las etiquetas que usábamos decían poco a
aquel sistema que las leyera. ¿Qué significa <DIV>? pues simplemente que estamos
colocando una «división» pero no especifica para qué se usa esa división.
Quizás <P> tiene algo más de significado, pero no deja de ser un párrafo a secas, sin
decirte qué tipo de información va a contener ese párrafo.
Hoy, la recomendación es usar otro conjunto de etiquetas que sí nos aportan un
significado al contenido que engloban. Pero esto no quiere decir que las etiquetas
antiguas se dejen de usar, sino que ahora tenemos otra serie de etiquetas con valor
semántico, que vienen a aportar nuevas facilidades que te resumiremos en el siguiente
punto. De momento, analicemos estas etiquetas nuevas con valor semántico con la
estructura de una web en mente.
Insistimos. Todo esto iría dentro del <BODY>.
<header>
Esta es la cabecera de una página o un bloque de contenido
<nav>
Esta es la barra de navegación principal del sitio
</nav>
</header>
<main>
<section>
Esta es una sección de contenido del bloque principal (MAIN)
<article>
Esto es un artículo del sitio
</article>
<article>
Esto sería un segundo artículo
</article>
</section>
</main>
<aside>
El <aside> contiene información accesoria, que no suele añadir un valor significativo a
la temática del sitio. Por ejemplo, es habitual usar para la barra lateral con una serie de
banners o widgets sociales.
</aside>
<footer>
Esto es un pie de página
</footer>
Usar estas etiquetas semánticas es una recomendación por varios factores. Queremos
destacar dos de ellos que consideramos fundamentales.
o Accesibilidad. Cualquier persona que no tiene capacidad de visualizar el
contenido maquetado de un sitio es capaz, en función de las etiquetas, de entender
qué tipo de información contienen y por tanto comprender su importancia y el
contexto en el que su contenido toma valor.
o Posicionamiento. Los motores de búsqueda son capaces de asimilar mejor de
lo que estamos hablando y saber qué partes del contenido de una web son las que
realmente tienen más valor. Por tanto, son capaces de saber con mayor exactitud de
lo que se está hablando y qué textos son más interesantes para extraer palabras
clave sobre las cuales se está tratando.
Por estos motivos, es por lo que aparecen las etiquetas semánticas y se recomienda
usarlas para crear la estructura básica de contenido de una web. Se dice que Google
valora positivamente los sitios que le ayudan a entender mejor la temática que
tienen, tanto el web a nivel global como el particular en cada página individual .
Solo ese motivo es suficiente para convencernos a todos de usarlas.
LA 15 MÁS USADAS
1. classList
Ya que classList es una funcionalidad relativamente nueva de HTML5, no funciona en
los navegadores más viejos, pero esto no debería preocuparnos ya que existe una
polyfill llamada classlist.js. Aunque si estamos usando alguna librería javascript como
jQuery, no necesitaremos esta API de forma nativa.
2. dataset
elem.dataset no es soportado por Internet Explorer ni por los navegadores móviles más
antiguos. Para todos los navegadores no hay problema en utilizar atributos data-*. Pero
lo que no conviene que usemos es elem.dataset.foo para obtener su valor en javascript,
en vez de esto utilicemos elem.getAttribute(‘data-foo’). La polyfill que existe para esta
API es HTML5 dataset support
3. DOM
Actualmente, un gran conjunto de las nuevas funcionalidades sobre el DOM puede ser
“corregido”. Sin embargo, los “shims” o “correctores” actuales no están probados en un
100% y se pierden algunas funciones. Los polyfills existentes (ES5-DOM-
shim y DOM-shim) se deben usar con precaución. Igual hay que recordar, que
podemos utilizar cualquier librería que manipule el DOM como jQuery que posee
selectores y funciones muy potentes como las nativas de HTML5. He escrito un artículo
en este sitio sobre esta API y su relación con los selectores de jQuery.
4. Drag and Drop
La funcionalidad de Drag and Drop se ha estandarizado en HTML5 basandose en la
implementación original de Internet Explorer (¡si, de IE!). Es por esto que ya tiene un
soporte bastante amplio, pero muchos se sienten frustrados cuando usan este API. Por
eso, se recomienda usar jQuery UI Draggable (u otra librería Javascript).
Las polyfills recomendadas: dropfile, fileSaver, jDataView.
5. EventSource
Eventos enviados por el servidor (Server-Sent Events) son eventos en tiempo real
emitidos por el servidor y recibidos por el navegador. EventSource.js provee de una
alternativa y no depende de jQuery. Los polyfills que se recomiendan
son EventSource.js, jQuery.eventsource
6. Geolocalización
El polyfill geolocation shim usa el servicio de IP-Geocoding de Google como alternativa
para los navegadores que no soportan esta API. El otro polyfill se llama geo-location-
javascript no usa el servicio del buscador, pero utiliza las APIs específicas de
BlackBerry, WebOS y Google Gears. En la mayoría de los casos, no se debería
exponer características de geolocalización en tu aplicación si esta característica no está
presente nativamente.
7. Historial (History)
La API de historia provee a Javascript una forma de cambiar la URL mostrada en
el navegador sin recargar la página. El plugin History.js suaviza algunas diferencias
de implementación entre los navegadores y provee un hashchange alternativo para
navegadores con HTML4. GitHub usa pjax (pushState + ajax).
8. IndexedDB
IndexedDB fue una especificación volátil por un año, pero se calmó. Además de
Chrome y Firefox, IE10 también la va a soportar; Opera no lo ha implementado y Safari
todavía no se ha comprometido con la misma.
El polyfill IDBWrapper ayuda a suavizar las diferencias entre los navegadores. Se
puede considerar el uso de WebSQL cuando IndexedDB no es soportada, pero hay que
recordar que la especificación de WebSQL fue abandonada.
9. localStorage
localStorage y sessionStorage son una muy buena forma de guardar datos sin
tener que utilizar cookies. Incluso IE8 soporta a ambas así que es poco probable que
necesites un polyfill. Si lo necesitas, el de Remy Sharp es muy bueno y fácil de
implementar
En localStorage, los datos que se guardan son de tipo/valor (key/value), así que si se
desea guardar datos más complejos, podemos hacerlo guardando JSON en forma de
string(JSON.stringify(obj)) que luego parsearemos con JSON.parse(str), luego de
obtener el registro guardado. Tampoco hay forma de saber (en los distintos
navegadores) si se ha excedido la capacidad, así que conviene envolver nuestro código
entre try/catch. Es seguro usar hasta 2.5 MB.
10. matchMedia
matchMedia es una API Javascript para ver si una “media query” va a tener exito.
El polyfillMatchMedia.js nos permite utilizar esta API en todos los navegadores. Si
necesitas una alternativa que es sensible al cambio de tamaño de la ventana, puedes
usar este fork, aunque es limitado para navegadores que soportan transiciones CSS.
matchMedia es muy útil para trabajar en sitios que tiene diseño sensible a
diferentes tamaños de pantalla (responsive design).
Esta API es soportada por Opera y está siendo implementada por Mozilla.
12. requestAnimationFrame
requestAnimationFrame (rAF) es recomendada para animaciones, ya que se lleva
muy bien con el uso de la batería y permite al navegador optimizar la performance de
tus animaciones.
14. WebGL
Hay polyfills y plugins para poder usar WebGL en IE, pero no deberías usarlos. Es
aconsejable usar WebGL si está presente, sino se debería enviar al usuario
a get.webgl.org
También podemos ofrecer al usuario descargar Google Chrome Frame si solo quieren
un plugin. Casi todas las demos de WebGL usan este plugin si está disponible.
15. WebSockets
Hacer una app real-time (en tiempo real) es una gran mejora y los WebSockets brindan
esta habilidad para agregar comunicación bi-direccional en una conexión persistente
para tu aplicación, permitiendo incrementar la interactividad y el compromiso con el
usuario.