Mostrando entradas con la etiqueta diseño web. Mostrar todas las entradas
Mostrando entradas con la etiqueta diseño web. 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.

jueves 6 de diciembre de 2007

Reduciendo el tamaño de tus páginas web

Más de una vez me ha sucedido tener que optimizar un sitio hecho por terceros (e incluso uno propio).

Gracias a mootools (aunque ya conocía packer de Dean Edwards) me enteré del concepto de "minimizar" (lo cual consiste en eliminar los espacios en blanco innecesarios, así como remover los comentarios dejados por el desarrollador) un archivo de javascript. Esto por sencillo que pueda sonar es realmente muy útil, ya que efectivamente se logra reducir el tamaño en bytes de nuestros archivos.

Las mentes siniestras como la mía :) comenzaron a hilvanar toda clase de formas en las cuales "exprimir" cada bit en los archivos (html, php, js, css).

La mejor forma que vengo manejando hasta el momento es trabajar con una carpeta en la cual tenemos todos nuestros archivos "fuente" prolijamente indentados y comentados, sin escatimar en los espacios en blanco que contribuyan a la legibilidad del código.
Esta es la carpeta que contiene (digamoslo así) los archivos "legibles por humanos".
A la hora de publicar nuestros archivos en internet, nos valdremos de aplicaciones que nos permitirán remover todo aquella información que le es innecesaria al servidor.

Sin duda que suena tedioso, ¿no? :)
Bueno, acá es donde viene la magia del SVN...usamos un "hook" el cual ejecutará nuestras aplicaciones sobre nuestros archivos "exprimiéndolos" y luego los publicará en el servidor. ¿Suena mejor, no?

De esta forma contamos con nuestra versión "human friendly" y la versión publicada "server friendly".

Lo que no he mencionado aún son las dichosas aplicaciones, así que aquí van:

  • JsMin
    Esta aplicación minimiza archivos javascript

  • YUI Compressor
    Esta aplicación minimiza archivos javascript

  • HTMLTidy
    Esta aplicación no solo optimiza el código sino que además lo ordena y corrige código inválido.

  • CSSTidy
    Esta aplicación optimiza el código de la css reescribiendo aquellas cosas redundantes y borrando espacios innecesarios.

  • OptiPNG
    Esta aplicación recomprime imágenes a un tamaño menor.

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.

viernes 2 de noviembre de 2007

Patrones de GUI

Saludos colegas!

Bueno, en un intento más por "evangelizar" tanto a diseñadores como a programadores, hablaremos hoy acerca de los "patrones de diseño en GUI".

Si eres diseñador y estás pensando en patrones como "los tipos que pagan el sueldo", o esas imágenes que se repiten en mosaico para formar un fondo uniforme, ciertamente te estás equivocando.

Si eres desarrollador y estás pensando en programación pura para crear widgets también.

Definición más purista:

Ciertamente estos patrones describen una solución óptima para un problema común dentro de un contexto específico en cuanto a la interacción usuario computadora.

Dicho de forma más sencilla al alcance de todos:
Reusa, recicla pero por favor...No reinventes la rueda!
Mucha gente se ha enfrentado una y otra vez a un mismo problema y se han ido encontrado mejores soluciones una y otra vez, refinando la solución.

Eso es lo que presentamos aquí: soluciones a problemas de GUIcomunes.

Todos estos patrones tiene algo en común:
  1. Un título
  2. Un problema
  3. Un contexto
  4. Una solución
He aquí entonces 3 links como para que vayan viendo: