Mostrando entradas con la etiqueta websemántica. Mostrar todas las entradas
Mostrando entradas con la etiqueta websemántica. Mostrar todas las entradas

viernes 7 de diciembre de 2007

Vista previa de HTML 5.0

Viendo el excelente sitio A List Apart me entero de esto que a más de uno le causará alegría:
ya existe una vista preliminar de HTML 5.0

HTML 5 introduce e incrementa un amplio rango de nuevas características incluyendo controles de formulario, APIs, multimedia, estructura, y semántica.

El trabajo en la especificación comenzó en 2004 y aún queda mucho camino por recorrer, pero, ya se ven ciertas cosas que prometen, aunque, cabe aclarar que como aún dista por terminarse dicha especificación, las cosas que se mencionan en este artículo bien podrían cambiar a futuro.

Estructura


Todos hemos padecido los problemas en cuanto a crear estructuras en nuestras páginas, teniendo que muchas veces recurrir a los famosos <div>.

Muchas veces nuestras páginas terminan teniendo una cantidad considerable de "divs" con los atributos "class" para dar estilo (y por qué no, intentar describir un poco más que es a lo que se refieren).

He aquí un ejemplo del artículo en ALA:

Ejemplo de código HTML 4.0 para dar estructura a una página

Lo que se está manejando en HTML 5.0:
Ejemplo de código HTML 5.0 para dar estructura a una página

¡Qué bueno poder irse despidiendo de tanto div y tener un código que describa semánticamente cada una de esas secciones! :)

Video and Audio


HTML 5.0 proveerá más facilidad a la hora de colocar nuestros archivos multimedia en nuestras páginas.

Para ello se viene manejando la posibilidad de embeber video de la siguiente manera:


<video src="video.ogv" controls="" poster="poster.jpg" width="320" height="240">
<a href="http://www.blogger.com/video.ogv">Download movie</a>
</video>


y audio de esta forma:


<audio src="music.oga" controls="">
<a href="http://www.blogger.com/music.oga">Download song</a>
</audio>


Bastante sencillo ¿no?

La idea es que el browser brinde una GUI que permita controlar el contenido.

Para profundizar más acerca de video y audio en HTML 5.0, puedes ver el bosquejo de la especificación de HTML 5.0 para audio y video.

domingo 18 de noviembre de 2007

Lista de tags soportados por XHTML

Bueno, nada nuevo por aquí pero siempre sirve tener a mano una referencia con todas las etiquetas soportadas por XHTML:

http://www.w3schools.com/tags/default.asp


<!--...-->
Define un comentario en el documento

<!DOCTYPE>
Define el tipo de documento

<a>
Define un ancla (hiperv&ícute;nculo)

<acronym>
Define un acrónimo en el documento

<address>
Define una dirección en el documento

<area>
Define un área dentro de un mapa de imagen del documento

<applet>
Deprecado. Define an applet

<area>
Define un área dentro de un mapa de imagen
<b>
Define texto en negrita
<base>
Define una URL base para todos los links en una página

<basefont>
Deprecado. Define una fuente base

<bdo>
Define la dirección del texto a mostrar

<big>
Define un texto grande

<blockquote>
Define una cita extensa

<body>
Define el elemento body (cuerpo) del documento

<br>
Inserta un solo salto de línea

<button>
Define un botón pulsable

<caption>
Define título para una tabla

<center>
Deprecado. Define texto centrado

<cite>
Define una cita

<code>
Define texto de código de computadora

<col>
Define atributos para columnas de tablas

<colgroup>
Define grupos de columnas de una tabla

<dd>
Define una descripción de definición

<del>
Define texto borrado

<dir>
Deprecado. Define una lista de directorio

<div>
Define una división/sección en un documento

<dfn>
Define un término de definición

<dl>
Define una lista de definición

<dt>
Define un término de definición

<em>
Define texto acentuado

<fieldset>
Define un fieldset (caja que agrupa elementos de un formulario)

<font>
Deprecado. Define fuente, tamaño y color para un texto

<form>
Define un formulario

<frame>
Define una sub ventana (un marco)

<frameset>
Define un conjunto de marcos

<h1> to <h6>
Define encabezados del 1 al 6 para el documento

<head>
Define información acerca del documento

<hr>
Define una línea horizontal

<html>
Define un documento html

<i>
Define texto en itálica

<iframe>
Define una sub ventana dentro de la actual (es un marco)

<img>
Define una imagen

<input>
Define un campo de ingreso (utilizado en formularios)

<ins>
Define texto insertado

<isindex>
Deprecado. Define un campo de una sola línea

<kbd>
Define texto de teclado

<label>
Define una etiqueta para un controle de formulario

<legend>
Define un título para un fieldset

<li>
Define un elemento de una lista

<link>
Define una referencia a un recurso

<map>
Define un mapa de imagen

<menu>
Deprecado. Define un menu

<meta>
Define meta información

<noframes>
Define una sección noframe

<noscript>
Define una sección noscript

<object>
Define un objeto embebido

<ol>
Define una lista ordenada

<optgroup>
Define un grupo de options

<option>
Define una opción en una lista de opciones (combo)

<p>
Define un párrafo

<param>
Define un parámetro para un objeto

<pre>
Define texto pre-formateado

<q>
Define una pequeña cita

<s>
Deprecado. Define texto tachado

<samp>
Define código de computadora de ejemplo

<script>
Define un script

<select>
Define una lista seleccionable
<small>
Define texto pequeño

<span>
Define una sección en un documento

<strike>
Deprecado. Define texto tachado

<strong>
Define texto fuerte strong (con mayor énfasis)

<style>
Define una definición bloque style (utilizado para declarar una css embebida en el documento)

<sub>
Define texto en subescript

<sup>
Define text en superscript

<table>
Define una tabla

<tbody>
Define el cuerpo de una tabla

<td>
Define una celda de una tabla

<textarea>
Define un área de texto

<tfoot>
Define el pie de una tabla

<th>
Define el encabezado de una tabla

<thead>
Define el encabezado de una tabla

<title>
Define el título de un documento

<tr>
Define una fila de una tabla

<tt>
Define texto de teletipo

<u>
Deprecado. Define texto subrayado

<ul>
Define una lista desordenada

<var>
Define una variable

<xmp>
Deprecado. Define texto preformateado

miércoles 14 de noviembre de 2007

Solucionando prolijamente problemas de clear/float en css

A más de uno nos ha tocado a la hora de armar una página la lucha de tratar de transcribir lo que en nuestra mente resultaba más sencillo armarlo con tablas.

Hoy en día las tablas (por suerte) son utilizadas para lo que realmente fueron creadas: mostrar datos tabulados relacionados. Por consiguiente, los "divs" han cobrado cierta importancia sobretodo luego de que verdaderos gurus como Jeffrey Zeldman opinaran que las "tablas estaban muertas".

Emulando el comportamiento gráfico de las tablas


Para llevar a cabo nuestra diagramación, tenemos que recurrir a los elementos html <div> (que representan una división en la pantalla). Deberemos incluir tantos divs como "paneles" tenga nuestro diseño, por lo general un documento posee:

  • Encabezado (se lo suele identificar como "header")
  • Columna izquierda (se la suele identifica como "left")
  • Columna principal(se la suele identifica como "main")
  • Eventualmente una columna derecha (se la suele identifica como "right")


Bien, hasta ahí tendríamos todo más o menos claro, pero, hace falta solucionar problemas de visualización estrictamente para que tomen la apariencia que nosotros queremos.

Uno de los principales problemas a los que nos enfrentaremos suelen ser los "floats" (la propiedad css "float").

Cada vez que hacemos que un elemento "flote" el mismo impacta en el resto de la página, siendo necesario revertir dicho comportamiento para restaurar al flujo normal del documento.

La forma que más he visto es la sencilla solución de incluir un div con la propiedad "clear":

<div style="clear: left">

Sucede que eso desde un punto de vista más purista y semántico no es una solución muy correcta que digamos.
¿Por qué? ...bueno, para empezar, estamos agregando código en el documento para simplemente evitar un problema estrictamente relacionado a la visualización de nuestra página.

Claro que podríamos mejorar lo anterior simplemente añadiendo nuestro código inline dentro de un una clase css:

<div class="clearfix">

y en nuestra css copiar lo que anteriormente teníamos en nuestro div:


.clearfix{
clear: left
}


Si bien esto es más prolijo, seguimos teniendo el mismo problema de fondo...estamos agregando código al documento por el mero hecho de querer solucionar un problema "gráfico".

¿Cuál es la solución entonces más prolija y semánticamente más correcta?


Lo más correcto obviamente sería delegar esta responsabilidad a la CSS, ya que es la encargada de controlar el aspecto de nuestro documento.

Pero ¿cómo?, ¿todo esto no se originó justamente por problemas de estilos?
Si, pero también la solución está ahí mismo ;-)

Las CSS poseen una potencia bastante grande y muchas veces se las limita al uso de clases (lo cual genera CSS kilométricas y redundantes...ya hablaremos de ello en otro post).

Aunque Ud. no lo crea, las CSS poseen una capacidad bastante desconocida que les permite generar contenido...sí, así mismo: una css puede "inyectar" contenido a un documento. Por si fuera poco además pueden generar contenido antes o después de un elemento!, por lo tanto, perfectamenet podemos recrear lo anterior pero desde la propia CSS, dejándonos entonces una solución elegante y correcta.

Veamos como quedaría nuestra clase "clearfix" aplicando todo esto:


.clearfix:after {
content: ".";
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}

.clearfix {
display: inline-block;
}

html[xmlns] .clearfix {
display: block;
}

* html .clearfix {
height: 1%;
}



Veamos que es lo que está generando entonces nuestra clase "clearfix" paso a paso:


.clearfix:after {/*after es un pseudo elemento que se generará a continuación de nuestro div con la clase "clearfix"*/
content: ".";/* Esto genera un "." como un texto en el div con la clase "clearfix"*/
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}



El resto del código CSS se encargará de que nuestro querido Internet Explorer en sus distintas versiones interprete correctamente lo que queremos que haga.