<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-5339799433990725134</atom:id><lastBuildDate>Thu, 24 Nov 2011 05:56:02 +0000</lastBuildDate><category>crossbrowser</category><category>mootools</category><category>user experience</category><category>html5.0</category><category>javascript</category><category>UX</category><category>websemántica</category><category>aplicaciones</category><category>css crossbrowser</category><category>recursos gratuitos</category><category>iconos</category><category>widgets</category><category>ie</category><category>GUI</category><category>alpha</category><category>actionscript3</category><category>diseño web</category><category>webstandards</category><category>css</category><category>inicio</category><category>web 2.0</category><category>extensiones de firefox</category><category>Flex</category><category>usabilidad</category><category>testing</category><category>xhtml</category><category>manifiesto</category><title>Diseñarrollador</title><description>Este es el blog de Juan Pablo Brocca, en donde se tratan temas de desarrollo y diseño web, usabilidad y user experience.

¿Eres un diseñador pero no entiendes a los desarrolladores?
¿Eres un desarrollador pero no entiendes a los diseñadores?
¿Eres un diseñador-desarrollador?

Aquí conviven ambos mundos!</description><link>http://jpbrocca.blogspot.com/</link><managingEditor>noreply@blogger.com (Juan Pablo Brocca)</managingEditor><generator>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/jpbrocca" /><feedburner:info uri="jpbrocca" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-1261184167365027053</guid><pubDate>Wed, 19 Aug 2009 03:29:00 +0000</pubDate><atom:updated>2009-08-19T00:31:04.433-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">aplicaciones</category><category domain="http://www.blogger.com/atom/ns#">recursos gratuitos</category><title>punypng: Compresor de PNGs</title><description>Esta es una herramienta realmente muy eficiente en cuanto a la compresión de archivos PNG.&lt;br/&gt;&lt;br/&gt;Anteriormente usaba &lt;a href='http://www.smush.it' target='_blank'&gt;smush.it&lt;/a&gt;, pero he probado recientemente &lt;a href='http://www.gracepointafterfive.com/punypng/' target='_blank'&gt;punypng&lt;/a&gt; y la verdad es que &lt;a href='http://www.gracepointafterfive.com/punypng/about/comparison' target='_blank'&gt;los resultados son superiores&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-1261184167365027053?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2009/08/punypng-compresor-de-pngs.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-7646584303255471572</guid><pubDate>Mon, 17 Aug 2009 00:22:00 +0000</pubDate><atom:updated>2009-08-16T21:24:11.225-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">actionscript3</category><category domain="http://www.blogger.com/atom/ns#">Flex</category><title>Incluir fuentes en un proyecto Flex</title><description>&lt;p&gt;Esta es una de esas tareas que suenan sencillas pero que tienen sus vueltas: &lt;b&gt;¿cómo incluir una fuente en un proyecto Flex?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Lo primero que debe hacerse es declarar una variable en la clase principal de proyecto. La variable es usada solamente con el fin de que el compilador vincule a la fuente. Veamos el código:&lt;/p&gt;&lt;br/&gt;&lt;code&gt;[Embed(source="C:\\Windows\\Fonts\\framd.ttf", fontFamily="Franklin Gothic Medium Normal", mimeType="application/x-font")]&lt;br/&gt;private var fontFranklin:String;&lt;br/&gt;&lt;/code&gt;&lt;br/&gt;&lt;p&gt;Lo siguiente es definir un TextFormat y aplicarlo al campo de texto sobre el cual queremos aplicar la fuente.&lt;/p&gt;&lt;p&gt;En este caso se creó un campo de texto de nombre "txt" al cual se le aplicó el TextFormat:&lt;/p&gt;&lt;br/&gt;&lt;code&gt;//Creamos el TextFormat&lt;br/&gt;var myFormat:TextFormat = new TextFormat("Franklin Gothic Medium Normal", 12, 0x000000);&lt;br/&gt;&lt;br/&gt;//Creamos el campo de texto&lt;br/&gt;var txt : TextField     = new TextField();&lt;br/&gt;txt.text                = "Hola mundo!";&lt;br/&gt;txt.embedFonts          = true;&lt;br/&gt;txt.setTextFormat(myFormat);&lt;br/&gt;&lt;br/&gt;//Agregamos el campo de texto al documento&lt;br/&gt;addChild(txt);&lt;/code&gt;&lt;br/&gt;&lt;p&gt;Listo! Si compilamos el proyecto deberíamos ver el campo de texto suavizado con la fuente incluida.&lt;/p&gt;&lt;p&gt;Para mayor información puede consultarse el artículo &lt;a target='_blank' href='http://livedocs.adobe.com/flex/3/html/help.html?content=fonts_06.html'&gt;Using embedded fonts&lt;/a&gt; en el sitio de Adobe&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-7646584303255471572?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2009/08/incluir-fuentes-en-un-proyecto-flex.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-294877396018526473</guid><pubDate>Wed, 12 Aug 2009 03:45:00 +0000</pubDate><atom:updated>2009-08-12T00:46:11.762-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">actionscript3</category><category domain="http://www.blogger.com/atom/ns#">Flex</category><title>Obtener la clase de un objeto en Actionscript 3</title><description>Este es uno de esos tips que siempre vienen bien tener a mano (visto en el &lt;a href='http://www.actionscriptdeveloper.co.uk/getting-the-class-of-an-object-in-as3/' target='_blank'&gt;sitio de Dave Keen&lt;/a&gt;)&lt;br/&gt;Una forma rápida y útil de obtener la clase de un objeto en actionscript es la siguiente:&lt;br/&gt;&lt;code&gt;&lt;br/&gt;static function getClass(obj : Object) : Class {&lt;br/&gt;  return Class(getDefinitionByName (getQualifiedClassName(obj)));&lt;br/&gt;}&lt;/code&gt;&lt;br/&gt;&lt;p&gt;Esto es muy útil por ejemplo para comparar los tipos de dos objetos:&lt;/p&gt;&lt;code&gt;if (firstObject is getClass(secondObject)) {&lt;br/&gt;    trace("Ambos objetos son del mismo tipo!");&lt;br/&gt;}&lt;br/&gt;&lt;/code&gt;&lt;p&gt;Para obtener la clase padre de la clase de un objeto puede usarse:&lt;/p&gt;&lt;code&gt;static function getSuperClass(o : Object) : Object {&lt;br/&gt;  var n: String = getQualifiedSuperclassName(o);&lt;br/&gt;  if(n == null) {&lt;br/&gt;    return(null);&lt;br/&gt;  }&lt;br/&gt;  return(getDefinitionByName(n));&lt;br/&gt;}&lt;br/&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-294877396018526473?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2009/08/obtener-la-clase-de-un-objeto-en.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-7704135065811611422</guid><pubDate>Tue, 11 Aug 2009 04:25:00 +0000</pubDate><atom:updated>2009-08-11T01:26:11.119-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">user experience</category><category domain="http://www.blogger.com/atom/ns#">UX</category><category domain="http://www.blogger.com/atom/ns#">GUI</category><category domain="http://www.blogger.com/atom/ns#">usabilidad</category><title>Patrones de diseño para registro y fidelización</title><description>Muy buen material creado por adaptivepath sobre &lt;a target='_blank' href='http://issuu.com/alexa/docs/signup?mode=embed'&gt;patrones de registro y fidelización de usuarios&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;También es posible &lt;a target='_blank' href='http://www.adaptivepath.com/ideas/reports/signup/'&gt;descargarlo como PDF previo registro en adaptivepath&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-7704135065811611422?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2009/08/patrones-de-diseno-para-registro-y.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-2763214494578714745</guid><pubDate>Tue, 11 Aug 2009 04:03:00 +0000</pubDate><atom:updated>2009-08-11T01:05:53.208-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">html5.0</category><category domain="http://www.blogger.com/atom/ns#">ie</category><title>Microsoft se une seriamente al estandar HTML 5</title><description>&lt;p&gt;Recientemente el program manager de Internet Explorer Adrian Bateman comentó:&lt;/p&gt;&lt;p&gt;&lt;cite&gt;"Como parte de nuestra planificación para el trabajo futuro, el equipo de IE está revisando el actual bosquejo de la especificación de HTML5 y reunir nuestros pensamientos. Queremos compartir nuestras opiniones y hablar de ello en el grupo de trabajo."&lt;/cite&gt;&lt;/p&gt;&lt;p&gt;He aquí la &lt;a title='Microsoft se une seriamente al estandar HTML 5' target='_blank' href='http://lists.w3.org/Archives/Public/public-html/2009Aug/0389.html'&gt;información oficial sobre la participación del equipo de IE&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Como anécdota, es muy pintoresco ver en la página mencionada comentarios (al respecto de ciertos tags propuestos) cómo:&lt;/p&gt; &lt;p&gt;&lt;cite&gt;&lt;strong&gt;¿Realmente necesitamos esto?&lt;/strong&gt;&lt;/cite&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-2763214494578714745?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2009/08/microsoft-se-une-seriamente-al-estandar.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-419439801284297523</guid><pubDate>Tue, 11 Aug 2009 03:34:00 +0000</pubDate><atom:updated>2009-08-11T00:37:20.375-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">GUI</category><category domain="http://www.blogger.com/atom/ns#">usabilidad</category><title>Tests heurísticos</title><description>&lt;strong&gt;¿Qué son los tests heurísticos de usabilidad?&lt;/strong&gt;&lt;br/&gt;&lt;p&gt;Para resumirlo y explicarlo de forma sencilla podemos definirlos como una serie de pautas (o principios) aplicables al diseño de interfases gráficas.&lt;/p&gt;Permiten hacer evaluaciones de las interfases gráficas sin la participación del usuario.&lt;br/&gt;&lt;p&gt;Esta evaluación detecta aproximadamente el 42% de los problemas graves de diseño y el 32% de los problemas menores, dependiendo del número de evaluadores que revisen el sitio. Posteriormente se recomienda realizar un test de usuarios para completar la evaluación.&lt;/p&gt;&lt;a title='Sitio de Jakob Nielsen' href='http://www.useit.com/'&gt;Jakob Nielsen&lt;/a&gt; identificó diez de estos principios:&lt;br/&gt;&lt;ol&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Visibilidad del estado del sistema&lt;/strong&gt;&lt;br/&gt;&lt;p&gt;El sistema debe siempre mantener al usuario informado acerca de que es lo que está sucediendo a través de feedbak en un tiempo razonable.&lt;/p&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Encaje entre el sistema y el mundo real&lt;/strong&gt;&lt;br/&gt;&lt;p&gt;El sistema debe hablar el lenguaje del usuario, con palabras, frases y conceptos familiares al usuario, más que términos orientados al sistema. Siga convenciones, haciendo que la información aparezca en un órden lógico y natural.&lt;/p&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Libertad y control por parte del usuario&lt;/strong&gt;&lt;br/&gt;&lt;p&gt;Los usuarios a menudo seleccionan funciones del sistema por error y necesitarán una salida de emergencia claramente marcada para dejar el estado no deseado sin necesidad de pasar por un diálogo extendido. Soporte de "hacer" y "deshacer" ("Undo" y "Redo").&lt;/p&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Consistencia y estándares&lt;/strong&gt;&lt;br/&gt;&lt;p&gt;Los usuarios no tiene que adivinar entre diferentes palabras, situaciones o acciones que significan lo mismo. Siga convenciones de la plataforma.&lt;/p&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Prevención de errores&lt;/strong&gt;&lt;br/&gt;&lt;p&gt;Aún mejor que buenos mensajes de error es un cuidadoso diseño que previene un problema que ocurra en primer lugar.&lt;/p&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Reconocimiento antes que recuerdo&lt;/strong&gt;&lt;br/&gt;&lt;p&gt;Minimizar el uso de la carga de memoria del usuario al hacer objetos, acciones, y opciones visibles. El usuario no debería tener que recordar información de una parte del diálogo a otra. Instrucciones para usar el sistema deberían ser visible o fácilmente recordables siempre que fuere apropiado.&lt;/p&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Flexibilidad y eficiencia en el uso&lt;/strong&gt;&lt;br/&gt;&lt;p&gt;Aceleradores -- no vistos por el usuario novicio -- pueden a menudo acelerar la interacción del usuario experto. Permita a los usuarios perzonalizar acciones frecuentes.&lt;/p&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Diseño estético y minimalista&lt;/strong&gt;&lt;br/&gt;&lt;p&gt;Los diálogos no deberían contener información que es irrelevante o raramente necesitada. Cada unidad extra de información en un diálogo compite con las unidades relevantes de información y disminuye su visibilidad relativa.&lt;/p&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Ayuda a los usuarios a reconocer, diagnosticar y recuperarse de los errores&lt;/strong&gt;&lt;br/&gt;&lt;p&gt;Los mensajes de error deberían ser expresados  en lenguaje plano (sin códigos), indicando precisamente el problema, y sugiriendo constructivamente una solución.&lt;/p&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;strong&gt;Ayuda y documentación&lt;/strong&gt;&lt;br/&gt;&lt;p&gt;Aunque es mejor si el sistema puede ser usado sin documentación, puede ser necesario proveer ayuda y documentación. Cualquiera de esa información debería ser fácil de buscar, enfocada en la tarea del usuario, listar pasos concretos a seguir y no muy largos.&lt;/p&gt;&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-419439801284297523?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2009/08/tests-heuristicos_11.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-1187808801447908391</guid><pubDate>Fri, 31 Jul 2009 03:36:00 +0000</pubDate><atom:updated>2009-08-11T00:38:38.091-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">html5.0</category><category domain="http://www.blogger.com/atom/ns#">webstandards</category><title>Drag and Drop en Firefox 3.5 basado en HTML 5</title><description>Aquellos que hayan tratado de implementar un drag and drop via Javascript sabrán de lo que hablo: esto si que era todo un tema!&lt;br/&gt;&lt;br/&gt;Si bien hoy día esas arduas tareas habían sido mitigadas gracias a frameworks de javascript, aunque todos ellos usarían "de fondo" javascript y debían utilizar de una u otra forma los clásicos eventos &lt;code&gt;mousedown&lt;/code&gt;, &lt;code&gt;mousemove&lt;/code&gt;, y &lt;code&gt;mouseup&lt;/code&gt;.&lt;br/&gt;&lt;br/&gt;Por suerte HTML 5 ha aparecido al rescate con una &lt;a target='_blank' href='http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#dnd'&gt;especificación de los nuevos eventos de drag and drop&lt;/a&gt; y &lt;a target='_blank' href='https://developer.mozilla.org/En/DragDrop/Drag_and_Drop'&gt;Firefox 3.5 ya brinda soporte&lt;/a&gt;!&lt;br/&gt;&lt;br/&gt;Aquí dejo otro artículo acerca del &lt;a target='_blank' href='http://hacks.mozilla.org/2009/07/html5-drag-and-drop/'&gt;Drag and Drop en Firefox 3.5 basado en HTML 5&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-1187808801447908391?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2009/07/drag-and-drop-en-firefox-35-basado-en.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-2000737423578442702</guid><pubDate>Fri, 31 Jul 2009 02:44:00 +0000</pubDate><atom:updated>2009-08-11T00:39:26.328-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">recursos gratuitos</category><category domain="http://www.blogger.com/atom/ns#">extensiones de firefox</category><category domain="http://www.blogger.com/atom/ns#">css</category><title>Encuentra y destaca elementos HTML de tu documento con FireFinder</title><description>Todos los que trabajamos con algún framework de Javascript o bien aquellos que utilizamos CSS muchas veces hemos necesitado visualizar como se ven los elementos que estamos seleccionando del docuemento.&lt;br/&gt;&lt;br/&gt;Por ejemplo, que tal si quisieramos ver todos aquellos links que contengan una imagen en nuestro documento?&lt;br/&gt;&lt;br/&gt;La forma más sencilla es utilizar &lt;a href='https://addons.mozilla.org/en-US/firefox/addon/11905/'&gt;FireFinder&lt;/a&gt; una extensión para firefox (requiere previamente instalar &lt;a href='https://addons.mozilla.org/es-ES/firefox/addon/1843'&gt;Firebug&lt;/a&gt;).&lt;br/&gt;&lt;br/&gt;&lt;a href='https://addons.mozilla.org/en-US/firefox/addon/11905/'&gt;FireFinder&lt;/a&gt; no solo permite seleccionar elementos usando selectores CSS, sino que además soporta expresiones &lt;a href='http://es.wikipedia.org/wiki/XPath'&gt;XPath&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Simplemente introducimos la expresión y &lt;a href='https://addons.mozilla.org/en-US/firefox/addon/11905/'&gt;FireFinder&lt;/a&gt; destacará esos elementos de la expresión en nuestro documento.&lt;br/&gt;&lt;br/&gt;Por mayor información puedes ver el blog de &lt;a href='http://robertnyman.com/2009/05/12/firefinder-for-firebug-an-extension-to-quickly-find-elements-matching-your-css-selectors-or-xpath-expressions/'&gt;Robert Nyman&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-2000737423578442702?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2009/07/encuentra-y-destaca-elementos-html-de.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-7540545251756815722</guid><pubDate>Fri, 31 Jul 2009 02:11:00 +0000</pubDate><atom:updated>2009-08-12T00:50:03.979-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Flex</category><title>An internal build error has occurred. Right-click for more information.</title><description>Hace tiempo ya que vengo trabajando en una aplicación desarrollada con Flex Builder 3.&lt;br/&gt;&lt;br/&gt;Se trata de un proyecto Actionscript.&lt;br/&gt;Si bien el IDE tiene todas las ventajas y comodidad de trabajar con Eclipse, también tiene su lado oscuro.&lt;br/&gt;&lt;br/&gt;Hemos tenido toda suerte de problemas a la hora de compilar, básicamente por falta de experiencia al comienzo.&lt;br/&gt;Una vez fuimos ganando en experiencia (hace casi un año que estamos trabajando) nos hemos topado con esos errores que a uno lo dejan con ganas de arrancarse uno a uno todos los pelos.&lt;br/&gt;&lt;br/&gt;En particular hablaré de este tan poco descriptivo error que nos tuvo en jaque casi dos días:&lt;br/&gt;&lt;br/&gt;&lt;b&gt;An internal build error has occurred. Right-click for more information.&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;Luego de buscar y buscar en internet no tuvimos mayor suerte.&lt;br/&gt;Hasta que luego de prácticamente revisar cada bloque de código encontré esto:&lt;br/&gt;&lt;br/&gt;&lt;code&gt;&lt;br/&gt;    switch (value) {&lt;br/&gt;       &lt;b&gt;/*case "first":&lt;br/&gt;             trace ("first item");&lt;br/&gt;         break;*/ &lt;/b&gt;   &lt;br/&gt;     }&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;Al parecer, Flex enloquece con este comentario dentro del bloque del switch.&lt;br/&gt;&lt;br/&gt;Al descomentarlo, el error desapareció y nos permitió por fin compilar!&lt;br/&gt;&lt;br/&gt;Espero pueda servirte este dato! &lt;br/&gt;Hasta la próxima.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-7540545251756815722?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2009/07/internal-build-error-has-occurred-right.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-1826653834513149873</guid><pubDate>Thu, 24 Jan 2008 00:26:00 +0000</pubDate><atom:updated>2008-01-23T22:42:00.693-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">mootools</category><title>MooTools 1.2 Beta 2 liberado!</title><description>&lt;p&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; height: 52px; width: 182px;" src="http://mootools.net/assets/images/header/logo.gif" alt="Mootools logo" border="0" /&gt;Bueno ya han pasado 2 meses desde que el equipo de Mootools liberó la &lt;a href="http://jpbrocca.blogspot.com/2007/11/mootools-12-beta-1-liberado.html"&gt;Beta 1&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Han solucionado bugs, se mejoraron las características, pero la más grande de ellas en la que han trabajado es la documentación, de la cual hay aquí un &lt;a href="http://docs12b.mootools.net/"&gt;link temporario para la documentación de la beta 1.2 de mootools.&lt;/a&gt;&lt;/p&gt; &lt;a href="http://docs12b.mootools.net/"&gt;&lt;/a&gt;  &lt;p&gt;Dentro de las características que han refinado para la Beta 2 de mootools 1.2 se encuentra la característica Element Accessors. Es completamente nueva para 1.2 y cuyo objetivo es facilitar el trabajo con elementos y sus atributos, propiedades o "atributos especiales".&lt;/p&gt;                 &lt;p&gt;Veamos un ejemplo básico. Quiero trabajar con el atributo href de un elemento:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;//setter&lt;br /&gt;$(element).set('href', 'http://mad4milk.net');&lt;br /&gt;//getter&lt;br /&gt;$(element).get('href');&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Además, el método set acepta cualquier Objecto conteniendo cualquier propiedad "setteable", veamos otro ejemplo:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$(element).set({&lt;br /&gt;href: 'http://mad4milk.net',&lt;br /&gt;text: 'mad4milk website',&lt;br /&gt;morph: {duration: 200, transition: 'quad:out'},&lt;br /&gt;events: {&lt;br /&gt;click: function(){&lt;br /&gt;document.location.href = this.href;&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;p&gt;Está bueno eh? Ahora se puede setear básicamente todo sin usar chain. Si bien es válido seguir usando chain, este método es preferible cuando se usan múltilples métodos de Element en una colección de elementos: iterará a través suyo una sola vez, lo cual hará que el código corra más rápido.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-1826653834513149873?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2008/01/mootools-12-beta-2-liberado.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-2914827681088845667</guid><pubDate>Thu, 20 Dec 2007 22:38:00 +0000</pubDate><atom:updated>2007-12-20T19:58:59.904-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">webstandards</category><title>Internet Explorer 8 pasa el test Acid2</title><description>&lt;a href="http://ieblog.members.winisp.net/images/AcidTest2.PNG"&gt;&lt;img style="margin: 10px; cursor: pointer; width: 194px; height: 211px;float:left" src="http://ieblog.members.winisp.net/images/AcidTest2.PNG" alt="Internet Explorer 8 pasa el test Acid2" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Microsoft anunció &lt;a href="http://blogs.msdn.com/ie/archive/2007/12/19/internet-explorer-8-and-acid2-a-milestone.aspx"&gt;recientemente en su blog&lt;/a&gt; que había alcanzado el hito de pasar el test &lt;a title="Acid2 es un test desarrollado por el Web Standards Project (WASP) para mostrar cuanto se apega un navegador a los estándares" href="http://es.wikipedia.org/wiki/Acid2"&gt;Acid2&lt;/a&gt; en el desarrollo de Internet Explorer 8.&lt;br /&gt;&lt;br /&gt;Esto significa que Microsoft está tomando conciencia del terreno que estaba perdiendo en la batalla de los navegadores web, y que está tratando de competir por más que no entre entre los primeros puestos (el primer navegador en pasar el test Acid2 fue Safari en octubre de 2005, y el último antes de IE8 fue Firefox 3.0).&lt;br /&gt;&lt;br /&gt;Por supuesto que esto no significa que IE8 haya solucionado todos sus caprichos así como tampoco sus problemas con floats, fuga de memoria (memory leaks), baja performance, etc., pero al menos es un comienzo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-2914827681088845667?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/12/internet-explorer-8-pasa-el-test-acid2.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-3153731170612110010</guid><pubDate>Thu, 13 Dec 2007 23:23:00 +0000</pubDate><atom:updated>2007-12-13T20:43:40.829-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">css</category><title>Selectores CSS 2.1, Parte 1</title><description>&lt;style type="text/css"&gt;br{display:none}table, td{border-collapse:collapse; border:1px solid #BBBBBB}td{padding:5px}code{color:#990000}table{margin:10px auto}dt{font-weight:bold}&lt;/style&gt;&lt;br /&gt;&lt;div style="border: 1px solid gray; padding: 5px; background: rgb(255, 248, 207) none repeat scroll 0% 50%; margin-right: 63px;margin-bottom:10px"&gt;&lt;strong&gt;Selectores CSS 2.1, Parte 1&lt;/strong&gt;&lt;br/&gt;&lt;br /&gt;Traducción al español del artículo en &lt;a href="http://www.456bereastreet.com/archive/200509/css_21_selectors_part_1/"&gt;www.456bereastreet.com&lt;/a&gt;&lt;br /&gt;, escrito por &lt;strong&gt;Roger Johansson&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;Una de las primeras cosas que aprendes cuando comienzas con CSS son los selectores.&lt;/p&gt;&lt;p&gt;Los selectores son obviamente una parte fundamental de las CSS, pero son pocos los&lt;br /&gt;desarrolladores que los utilizan a su capacidad máxima. Si bien puedes hacer mucho con solamente con los selectores de tipo, ID y clase, hay muchos más.&lt;/p&gt;&lt;p&gt;Aprender cómo usar el rango completo de selectores disponibles en CSS 2.1 ciertamente puede ayudarte a mantener tu HTML mucho más limpio. Te permitirá minimizar el uso innecesario del atributo &lt;span style="font-weight: bold;"&gt;class&lt;/span&gt; y la necesidad de agregar elementos &lt;span style="font-weight: bold;"&gt;div&lt;/span&gt; y span extraños al código de tu página. Suena bien, no?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Entonces, ¿por qué no se usa completamente todo el rango de selectores? La razón más importante ha sido el insuficiente soporte de Internet Explorer hasta e inicluso la versión 6. Todos los demás recientes navegadores soportan la mayoría o todos los selectores CSS 2.1. Ten presente esto antes de correr a usar todo lo que se describe en estas series.&lt;/p&gt;&lt;br /&gt;&lt;!--&lt;p&gt;Las buenas noticias son que Internet Explorer 7 tendrá mucho mejor soporte para selectores. Sabiendo que se te permitirá ponerlos para darles buen uso en el futuro, ahora es un buen momento para como los demás para aprender acerca del completo rango de selectores disponibles.&lt;/p&gt;--&gt;&lt;br /&gt;&lt;p&gt;Como hay tantos selectores CSS, un solo artículo explicándolos todos sería muy largo. Para hacer la información más sencilla de digerir Roger Johannson los ha dividido en tres partes:&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Parte 1, este artículo, explica las bases de selectores además del universal, el tipo, id, y los selectores de clases.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Parte 2 es acerca de los combinadores, selectores combinados, agrupamiento, y selectores de atributo.&lt;/li&gt;&lt;li&gt;Parte 3 será toda acerca de pseudo-clases y pseudo-elementos.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Se postearán los artículos periódicamente y se vincularán a las demás partes a medida que son publicadas. Muy bien entonces. Comencemos.&lt;/p&gt;&lt;h2&gt;Las bases de selectores&lt;/h2&gt;&lt;p&gt;Al comienzo las cosas más básicas. Un selector CSS está hecho de un patrón que es hecho coincidir contra todos los elementos del árbol del documento. Cuando todas las condiciones en el patrón son verdaderas, el selector coincide y las declaraciones dentro de la regla son aplicadas al elemento o al elemento que coincide. Considera esta sencilla regla CSS:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt; p { color:#f00; }&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;El selector es la parte de la regla CSS que viene antes de la llave de apertura, “{“. El selector aquí es p, que encontrará todos los elementos p en el documento y hace cualquier texto que contenga rojo. Muy básico.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Descripción del Selector&lt;/h2&gt;&lt;p&gt;Ok, eso fue un ejemplo realmente simple. Vamos a describir más tarde todos los otros selectores, y ahí las cosas se van a volver un poco más complicadas. Antes que eso sin embargo, he aquí una descripción de la sintaxis para todos los selectores CSS 2.1 (basados en la tabla en &lt;a href="http://www.w3.org/TR/CSS21/selector.html#q1"&gt;CSS 2.1, 5.1 Coincidencia de patrones&lt;/a&gt;):&lt;/p&gt;&lt;table&gt;&lt;caption&gt;Descripción de la sintaxis &lt;abbr&gt;CSS&lt;/abbr&gt; 2.1 de selectores&lt;/caption&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope="col"&gt;Selector type&lt;/th&gt;&lt;th scope="col"&gt;Patrón&lt;/th&gt;&lt;th scope="col"&gt;Descripción&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Universal&lt;/td&gt;&lt;td&gt;*&lt;/td&gt;&lt;td&gt;Encuentra cualquier elemento.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tipo&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td&gt;Encuentra cualquier elemento E.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Clase&lt;/td&gt;&lt;td&gt;.info&lt;/td&gt;&lt;td&gt;Encuentra cualquier elemento cuyo atributo &lt;code&gt;class&lt;/code&gt; contiene el valor &lt;code&gt;info&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;ID&lt;/td&gt;&lt;td&gt;#footer&lt;/td&gt;&lt;td&gt;Encuentra cualquier elemento con un &lt;code&gt;id&lt;/code&gt; igual a &lt;code&gt;footer&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Descendiente&lt;/td&gt;&lt;td&gt;E F&lt;/td&gt;&lt;td&gt;Encuentra cualquier elemento F que es un descendiente de un elemento E.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Hijo&lt;/td&gt;&lt;td&gt;E &gt; F&lt;/td&gt;&lt;td&gt;Encuentra cualquier elemento F que es un hijo de un elemento E.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Adyacente&lt;/td&gt;&lt;td&gt;E + F&lt;/td&gt;&lt;td&gt;Encuentra cualquier elemento F inmediatamente precedido por un elemento hermano E.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Atributo&lt;/td&gt;&lt;td&gt;E[att]&lt;/td&gt;&lt;td&gt;Encuentra cualquier elemento E que tiene un atributo &lt;code&gt;att&lt;/code&gt; , a pesar de su valor.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Atributo&lt;/td&gt;&lt;td&gt;E[att=val]&lt;/td&gt;&lt;td&gt;Encuentra cualquier elemento E que tiene un atributo &lt;code&gt;att&lt;/code&gt; cuyo valor de atributo es exactamente igual a &lt;code&gt;val&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Atributo&lt;/td&gt;&lt;td&gt;E[att~=val]&lt;/td&gt;&lt;td&gt;Encuentra cualquier elemento E cuyo atributo valor &lt;code&gt;att&lt;/code&gt; es una lista de valores separados por espacios, uno de los cuales es exactamente igual a &lt;code&gt;val&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Atributo&lt;/td&gt;&lt;td&gt;E[att|=val]&lt;/td&gt;&lt;td&gt;Encuentra cualquier elemento E cuyo atributo &lt;code&gt;att&lt;/code&gt; tiene una lista de valores comenzando por &lt;code&gt;val&lt;/code&gt; separada por guión.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;La pseudo-clase :first-child&lt;/td&gt;&lt;td&gt;E:first-child&lt;/td&gt;&lt;td&gt;Encuentra el elemento E cuando E es el primer hijo de su padre.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Las pseudo-clases link&lt;/td&gt;&lt;td&gt;E:link&lt;br /&gt;E:visited&lt;/td&gt;&lt;td&gt;Encuentra links no visitados aún (:link) ó aquellos ya visitados (:visited).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Las pseudo-clases dinámicas&lt;/td&gt;&lt;td&gt;E:active&lt;br /&gt;E:hover E:focus &lt;/td&gt;&lt;td&gt;Encuentra E durante ciertas acciones del usuario.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;La pseudo-clase :language&lt;/td&gt;&lt;td&gt;E:lang(c)&lt;/td&gt;&lt;td&gt;Encuentra elementos del type E que estan en el lenguaje c.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;El pseudo-elemento :first-line&lt;/td&gt;&lt;td&gt;E:first-line&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Encuentra los contenidos de la primera linea formateada del elemento E.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;El pseudo-elemento :first-letter&lt;/td&gt;&lt;td&gt;E:first-letter&lt;/td&gt;&lt;td&gt;Encuentra la primera letra de un elemento E.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Las pseudo-elementos :before y :after &lt;/td&gt;&lt;td&gt;E:before E:after&lt;/td&gt;&lt;td&gt;Usado para insertar contenido generado antes o después del contenido de un elemento.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;p&gt;Explicaremos más adelante cada uno de estos tipos de selectores con más detalle en este artículo de dos partes, así que mantente leyendo. Unos pocos términos usados en esa tabla en el resto de este artículo tal vez necesite alguna aclaración:&lt;br /&gt;&lt;/p&gt;&lt;dl&gt;&lt;dt&gt;Descendiente&lt;/dt&gt;&lt;dd&gt;Un elemento que es el hijo, nieto ó descendiente tardío de un elemento en el árbol del documento.&lt;/dd&gt;&lt;dt&gt;Ancestro&lt;/dt&gt;&lt;dd&gt;Un elemento que es el padre, abuelo o ancestro anterior de un elemento en el árbol del documento.&lt;/dd&gt;&lt;dt&gt;Hijo&lt;/dt&gt;&lt;dd&gt;El descendiente directo de un elemento. Ningún otro elemento debe venir entre los dos en el árbol del documento.&lt;/dd&gt;&lt;dt&gt;Padre&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;El ancestro directo de un elemento. Ningún otro elemento debe venir entre los dos en el árbol del documento.&lt;/dd&gt;&lt;dt&gt;Hermano&lt;/dt&gt;&lt;dd&gt;Un elemento que tiene el mismo padre que el elemento actual.&lt;/dd&gt;&lt;/dl&gt;&lt;h2&gt;Selectores simples y combinados&lt;/h2&gt;&lt;p&gt;Existen dos categorías básicas de selectores: simples y combinados.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Un &lt;strong&gt;selector simple&lt;/strong&gt; consiste de tanto un selector de tipo o el selector universal seguido de cero o más selectores de atributos, selectores de ID, o pseudo-clases. La siguiente regla contiene un ejemplo de un selector simple:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;p.info { background:#ff0; }&lt;/code&gt;&lt;br /&gt;&lt;p&gt;Un selector &lt;strong&gt;combinado&lt;/strong&gt;(a veces llamado selector contextual) consiste de dos o más selectores separados por un combinador. Este es un ejemplo muy simple de un selector combinado:&lt;/p&gt;&lt;code&gt;div p { font-weight:bold; }&lt;/code&gt;&lt;p&gt;El código anterior aplicará a todos los elementos &lt;code&gt;p&lt;/code&gt; que son descendientes del elemento &lt;code&gt;div&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;Un pseudo-elemento puede puede ser adjuntado a un selector. En un selector combinado, un pseudo-elemento puede ser solo adjuntado al último selector simple.&lt;/p&gt;&lt;p&gt;Detalles acerca de selectores combinados, combinadores, y pseudo-elementos pueden ser encontrados en la Parte 2 y Parte 3 en esta serie.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;El selector universal&lt;/h2&gt;&lt;p&gt;El selector universal es representado por un asterisco, "*", y encuentra todos los elementos en el documento. Es bastante raro verlo en una &lt;acronym title="Cascading Style Sheet"&gt;CSS&lt;/acronym&gt;, pero el selector universal es actualmente bastante utilizado con selectores de clase y de Id. Si el selector universal no es el único componente de un selector simple, entonces el "*" podría omitirse:&lt;/p&gt;&lt;code&gt; .myclass &lt;/code&gt;es equivalente a&lt;code&gt; *.myclass&lt;/code&gt;&lt;code&gt;#myid&lt;/code&gt; es equivalente a &lt;code&gt;*#myid&lt;/code&gt;&lt;p&gt;Un uso para el selector universal que se ha vuelto bastante popular es usarlo para establecer los margenes y "paddings" de todos los elementos a cero:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;* { margin:0; padding:0; }&lt;/code&gt;&lt;br /&gt;&lt;p&gt;Esto es a veces referido como el &lt;a href="http://leftjustified.net/journal/2004/10/19/global-ws-reset/"&gt;Global White Space Reset&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;Selectores de tipo&lt;/h2&gt;&lt;p&gt;Un selector de tipo encuentra cada instancia de un tipo particular de elemento. La siguiente regla encuentra todos los elementos párrafo en el documento y establece su tamaño de fuente a 2em:&lt;/p&gt;&lt;code&gt;p { font-size:2em; }&lt;/code&gt;&lt;br /&gt;&lt;h2&gt;El selector de clase&lt;/h2&gt;&lt;p&gt;El selector de clase es representado por un ".", y apunta a elementos basados en el valor de su atributo &lt;code&gt;class&lt;/code&gt;. La siguiente regla aplicará a todo elemento &lt;code&gt;p&lt;/code&gt; con una clase de nombre "info":&lt;/p&gt;&lt;br /&gt;&lt;code&gt;p.info { background:#ff0; }&lt;/code&gt;&lt;br /&gt;&lt;p&gt;Es posible asignar múltiples nombres de clase a un elemento - el atributo &lt;code&gt;class&lt;/code&gt; puede tener una lista de nombres de clase separadas por espacios. Los selectores de clase pueden entonces ser usados para apuntar a elementos  que tengan varios nombres de clase. Esta regla encontrará los elementos &lt;code&gt;p&lt;/code&gt; que tengan ambas "info" y "error" en su lista de nombres de clase:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;p.info.error { color:#900; font-weight:bold; }&lt;/code&gt;&lt;br /&gt;&lt;p&gt;El tipo de elemento no tiene que ser especificado. Dejarlo es lo mismo que usar un selector universal en lugar de un selector de tipo. Esta regla encontrará todos los elementos con un nombre de clase "info" más allá de su tipo:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;.info { background:#ff0; }&lt;/code&gt;&lt;br /&gt;&lt;h2&gt;El selector de ID&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;El selector de ID es representado por un numeral, "#", y apunta a elementos basados en el valor de su atributo &lt;code&gt;id&lt;/code&gt;. Esta regla aplicará a un elemento cuyo &lt;code&gt;id&lt;/code&gt; es "info", más allá de cual tipo de elemento sea:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;#info { background:#ff0; }&lt;/code&gt;&lt;br /&gt;&lt;p&gt;Si además se especifica el tipo de elemento, la regla solamente aplicará a los elementos de ese tipo:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;p#info { background:#ff0; }&lt;/code&gt;&lt;br /&gt;&lt;p&gt;Es importante recordar que los selectores de ID tienen mayor especificidad que los selectores de clase, y que un valor de Id debe ser único dentro de un documento. Por lo tanto un selector de ID puede solo aplicar a un único elemento en un documento.&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Continuará…&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;Ok, eso es todo para la Parte 1 de esta serie de artículos.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-3153731170612110010?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/12/selectores-css-21-parte-1.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-5079357540316160040</guid><pubDate>Fri, 07 Dec 2007 22:56:00 +0000</pubDate><atom:updated>2007-12-07T21:01:08.023-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">xhtml</category><category domain="http://www.blogger.com/atom/ns#">html5.0</category><category domain="http://www.blogger.com/atom/ns#">webstandards</category><category domain="http://www.blogger.com/atom/ns#">diseño web</category><category domain="http://www.blogger.com/atom/ns#">websemántica</category><title>Vista previa de HTML 5.0</title><description>Viendo el excelente sitio &lt;a href="http://www.alistapart.com/"&gt;A List Apart&lt;/a&gt; me entero de esto que a más de uno le causará alegría:&lt;br /&gt;&lt;a href="http://www.alistapart.com/articles/previewofhtml5"&gt;ya existe una vista preliminar de HTML 5.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;HTML 5 introduce e incrementa un amplio rango de nuevas características incluyendo controles de formulario, APIs, multimedia, estructura, y semántica.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Estructura&lt;/h2&gt;&lt;br /&gt;Todos hemos padecido los problemas en cuanto a crear estructuras en nuestras páginas, teniendo que muchas veces recurrir a los famosos &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;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).&lt;br /&gt;&lt;br /&gt;He aquí un ejemplo &lt;a href="http://www.alistapart.com/articles/previewofhtml5"&gt;del artículo en &lt;abbr title="A List Apart"&gt;ALA&lt;/abbr&gt;&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;img style="width:417px" src="http://www.alistapart.com/d/previewofhtml5/structure-div.gif" alt="Ejemplo de código HTML 4.0 para dar estructura a una página" /&gt;&lt;br /&gt;&lt;br /&gt;Lo que se está manejando en HTML 5.0:&lt;br /&gt;&lt;img style="width:417px"  src="http://www.alistapart.com/d/previewofhtml5/structure-html5.gif" alt="Ejemplo de código HTML 5.0 para dar estructura a una página" /&gt;&lt;br /&gt;&lt;br /&gt;¡Qué bueno poder irse despidiendo de tanto div y tener un código que describa semánticamente cada una de esas secciones! :)&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Video and Audio&lt;/h2&gt;&lt;br /&gt;HTML 5.0 proveerá más facilidad a la hora de colocar nuestros archivos multimedia en nuestras páginas.&lt;br /&gt;&lt;br /&gt;Para ello se viene manejando la posibilidad de embeber video de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt; &amp;lt;video src="video.ogv" controls="" poster="poster.jpg" width="320" height="240"&amp;gt;&lt;br /&gt;  &amp;lt;a href="http://www.blogger.com/video.ogv"&gt;Download movie&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/video&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;y audio de esta forma:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt; &amp;lt;audio src="music.oga" controls=""&amp;gt;&lt;br /&gt;  &amp;lt;a href="http://www.blogger.com/music.oga"&amp;gt;Download song&amp;lt;/a&amp;gt;&lt;br /&gt; &amp;lt;/audio&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Bastante sencillo ¿no?&lt;br /&gt;&lt;br /&gt;La idea es que el browser brinde una &lt;acronym title="Graphical User Interfase o Interfaz Gráfica de Usuario"&gt;GUI&lt;/acronym&gt; que permita controlar el contenido.&lt;br /&gt;&lt;br /&gt;Para profundizar más acerca de video y audio en HTML 5.0, puedes ver el &lt;a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/section-video.html#video"&gt;bosquejo de la especificación de HTML 5.0 para audio y video&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-5079357540316160040?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/12/vista-previa-de-html-50.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-8322629430710180668</guid><pubDate>Fri, 07 Dec 2007 01:27:00 +0000</pubDate><atom:updated>2007-12-06T23:00:01.671-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">aplicaciones</category><category domain="http://www.blogger.com/atom/ns#">recursos gratuitos</category><category domain="http://www.blogger.com/atom/ns#">diseño web</category><category domain="http://www.blogger.com/atom/ns#">css</category><title>Reduciendo el tamaño de tus páginas web</title><description>Más de una vez me ha sucedido tener que optimizar un sitio hecho por terceros (e incluso uno propio).&lt;br /&gt;&lt;br /&gt;Gracias a &lt;a href="http://mootools.net/"&gt;mootools&lt;/a&gt; (aunque ya conocía &lt;a href="http://dean.edwards.name/packer/"&gt;packer de Dean Edwards&lt;/a&gt;) 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.&lt;br /&gt;&lt;br /&gt;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).&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;Esta es la carpeta que contiene (digamoslo así) los archivos "legibles por humanos".&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Sin duda que suena tedioso, ¿no? :)&lt;br /&gt;Bueno, acá es donde viene la magia del &lt;a href="http://es.wikipedia.org/wiki/SVN"&gt;&lt;abbr title="Subversion es un software de sistema de control de versiones"&gt;SVN&lt;/abbr&gt;&lt;/a&gt;...usamos un "hook" el cual ejecutará nuestras aplicaciones sobre nuestros archivos "exprimiéndolos" y luego los publicará en el servidor. ¿Suena mejor, no?&lt;br /&gt;&lt;br /&gt;De esta forma contamos con nuestra versión "human friendly" y la versión publicada "server friendly".&lt;br /&gt;&lt;br /&gt;Lo que no he mencionado aún son las dichosas aplicaciones, así que aquí van:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.crockford.com/javascript/jsmin.html"&gt;JsMin&lt;/a&gt;&lt;br /&gt;Esta aplicación minimiza archivos javascript&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/yui/compressor/"&gt;YUI Compressor&lt;/a&gt;&lt;br /&gt;Esta aplicación minimiza archivos javascript&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://tidy.sourceforge.net/"&gt;HTMLTidy&lt;/a&gt;&lt;br /&gt;Esta aplicación no solo optimiza el código sino que además lo ordena y corrige código inválido.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://csstidy.sourceforge.net/"&gt;CSSTidy&lt;/a&gt;&lt;br /&gt;Esta aplicación optimiza el código de la css reescribiendo aquellas cosas redundantes y borrando espacios innecesarios.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://optipng.sourceforge.net/"&gt;OptiPNG&lt;/a&gt;&lt;br /&gt;Esta aplicación recomprime imágenes a un tamaño menor.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-8322629430710180668?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/12/reduciendo-el-tamao-de-tus-pginas-web.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-5973005929692433891</guid><pubDate>Tue, 04 Dec 2007 23:32:00 +0000</pubDate><atom:updated>2007-12-04T20:58:05.757-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ie</category><category domain="http://www.blogger.com/atom/ns#">crossbrowser</category><category domain="http://www.blogger.com/atom/ns#">alpha</category><category domain="http://www.blogger.com/atom/ns#">css</category><title>Forzar IE a mostrar transparencia alpha en PNGs</title><description>Bastante sabido es de los problemas de IE a la hora de lidiar con la transparencia alpha de los archivos &lt;a href="http://es.wikipedia.org/wiki/PNG" target="_blank"&gt;&lt;acronym title="Portable Network Graphics"&gt;PNG&lt;/acronym&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Sucede que hasta la versión 6 de IE, el navegador no era capaz de mostrar correctamente la transparencia, mostrando un frustrante fondo de color gris en su lugar.&lt;br /&gt;&lt;br /&gt;La solución recae en la utilización del famoso filtro &lt;strong&gt;AlphaImageLoader&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Veamos un ejemplo de la declaración de estilos en una &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; de lo que entienden los navegadores &lt;cite&gt;como la gente&lt;/cite&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code style="color:#BC0000"&gt;&lt;br /&gt; #logo_transparente{&lt;br /&gt;  background:url('png_transparente.png'); width:150px; height:55px;&lt;br /&gt; }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Si viéramos la página que incluye a la &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; en IE tendríamos el mencionado problema, por lo que la solución es &lt;strong&gt;declarar en la stylesheet exclusiva para IE lo siguiente&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code style="color:#BC0000"&gt;&lt;br /&gt; /* ESTO ES LA VERSIÓN PARA IE */&lt;br /&gt;&lt;br /&gt; #logo_transparente{&lt;br /&gt;  background:none; &lt;strong&gt;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='png_transparente', sizingMethod='scale')&lt;/strong&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Listo! De forma sencilla hemos sobreescrito el estilo de nuestra &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; principal para que nuestro querido IE entienda lo que queremos hacer: un PNG transparente!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-5973005929692433891?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/12/forzar-ie-mostrar-transparencia-alpha.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-6825187758990185093</guid><pubDate>Tue, 04 Dec 2007 21:40:00 +0000</pubDate><atom:updated>2008-11-07T05:07:23.326-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">recursos gratuitos</category><category domain="http://www.blogger.com/atom/ns#">iconos</category><title>Iconos para tu escritorio o páginas web</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.smashingmagazine.com/2007/11/29/icons-for-your-desktop-and-icons-for-your-web-designs/"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_TyC63-hPpOM/R1XPxJEhYgI/AAAAAAAAAAg/Hlo1LvuMBRY/s320/icons.jpg" border="0" alt="Imagen de varios iconos gratuitos para ser usados en tu escritorio o en tus páginas web" id="BLOGGER_PHOTO_ID_5140242992868712962" /&gt;&lt;/a&gt;&lt;br /&gt;Bueno una vez más aquí &lt;a href="http://www.smashingmagazine.com/2007/11/29/icons-for-your-desktop-and-icons-for-your-web-designs/"&gt;varios iconos gratuitos para ser usados en tu escritorio o en tus páginas web&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;La calidad es realmente buena, no se apresuren a prejuzgar (por el hecho de que sean gratuitos no significa que sean malos)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-6825187758990185093?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/12/iconos-para-tu-escritorio-o-pginas-web.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_TyC63-hPpOM/R1XPxJEhYgI/AAAAAAAAAAg/Hlo1LvuMBRY/s72-c/icons.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-314995177322680162</guid><pubDate>Fri, 30 Nov 2007 13:37:00 +0000</pubDate><atom:updated>2007-11-30T12:27:39.365-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><title>Formas abreviadas de notación Javascript</title><description>Es un hecho: existen varios mitos y leyendas acerca de las capacidades de Javascript.&lt;br /&gt;&lt;br /&gt;Ha sido un lenguaje bastante "bastardeado" por los programadores que vienen de otros "mundos". Esto ha provocado (además de toda clase de objeciones y prejuicios frente a su uso) toda clase de mitos y leyendas (también urbanas).&lt;br /&gt;&lt;br /&gt;Me ha pasado más de una vez de explicarle a un programador "server-side" las cosas que se pueden hacer con javascript y he obtenido el famoso "ohhhhh...no sabía que se podía hacer eso con Javascript" o bien el clásico "ohhhhh...no sabía que era tan potente!".&lt;br /&gt;&lt;br /&gt;Sin ir más lejos ayer en el trabajo estuve con un compañero explicándole como utilizar &lt;a href="http://es.wikipedia.org/wiki/JSON"&gt;&lt;acronym title="JavaScript Object Notation"&gt;JSON&lt;acronym&gt;&lt;/a&gt; para comunicarse en forma "liviana" con el servidor, y en un momento fue increíble ver su regocijo frente a las beldades de utilizarlo.&lt;br /&gt;&lt;br /&gt;¿Por qué tanto preámbulo?, bueno, es que recientemente me he topado con un &lt;a href="http://www.wait-till-i.com/2007/11/27/javascript-shortcut-notations-that-shouldnt-be-black-magic-to-the-average-developer/"&gt;artículo escrito por &lt;span style="font-weight: bold;"&gt;Chris Heilmann&lt;/span&gt; en el que resume claramente las notaciones abreviadas de Javascript&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Así que a continuación intentaré transcribir dicho artículo:&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Notación abreviada de Arrays&lt;/h2&gt;&lt;br /&gt;¿Quién no ha visto cosas como estas?&lt;br /&gt;&lt;br /&gt;&lt;code style="color:ruby"&gt;&lt;br /&gt;var links = new Array();&lt;br /&gt;links[0] = 'http://cuteoverload.com';&lt;br /&gt;links[1] = 'http://icanhascheezburger.com';&lt;br /&gt;links[2] = 'http://pencilsatdawn.wordpress.com';&lt;br /&gt;links[3] = 'http://apelad.blogspot.com';&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Esto es bastante entreverado (hay que repetir el nombre del array para cada elemento). Al cambiar el órden de de un elemento hay que cambiar también el número, lo cual no es necesario ya que el número se coloca automáticamente. Tan solo basta con usar "[]":&lt;br /&gt;&lt;br /&gt;&lt;code style="color:ruby"&gt;&lt;br /&gt;var links = [&lt;br /&gt;  'http://cuteoverload.com',&lt;br /&gt;  'http://icanhascheezburger.com',&lt;br /&gt;  'http://pencilsatdawn.wordpress.com',&lt;br /&gt;  'http://apelad.blogspot.com' // &lt;-- este es el último y NO LLEVA COMA!&lt;br /&gt;];&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Esto es mucho más obvio desde un punto de vista visual. La indentación hace más sencillo "espiar" donde comienza y finaliza el array.&lt;br /&gt;&lt;br /&gt;Cada elemento debe ser separado por una coma, pero teniendo la precaución de no dejar coma al final. De este modo pueden anidarse arrays:&lt;br /&gt;&lt;br /&gt;&lt;code style="color:ruby"&gt;&lt;br /&gt;var links = [&lt;br /&gt;  'http://cuteoverload.com',&lt;br /&gt;  'http://icanhascheezburger.com',&lt;br /&gt;  [100,200,20,'foo'],&lt;br /&gt;  'http://pencilsatdawn.wordpress.com',&lt;br /&gt;  'http://apelad.blogspot.com' // &lt;-- este es el último y NO LLEVA COMA!&lt;br /&gt;];&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NOTA:&lt;/strong&gt; He aquí otro truco: para agregar un nuevo elemento a los arrays puede usarse tanto el método &lt;code style="color:ruby"&gt;push()&lt;/code&gt; ó la propiedad &lt;code style="color:ruby"&gt;length&lt;/code&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;links.push('http://dailypuppy.com');&lt;br /&gt;links[links.length] = 'http://bigeyedeer.wordpress.com';&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;¿Arrays asociativos?&lt;/h3&gt;&lt;br /&gt;Otro mito (del cual fui partícipe lo confieso)que perdura es que Javascript permite crear "arrays asociativos", con lo cual no solo se permite numerar los elementos sino darles nombres! A continuación un ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;code style="color:ruby"&gt;&lt;br /&gt;var links = new Array();&lt;br /&gt;links['Cute Overload'] = 'http://cuteoverload.com';&lt;br /&gt;links['I can has cheeseburger'] = 'http://icanhascheezburger.com';&lt;br /&gt;links['Pencils at dawn'] = 'http://pencilsatdawn.wordpress.com';&lt;br /&gt;links['Hobotopia'] = 'http://apelad.blogspot.com';&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Esto es en realidad una forma de crear un objecto &lt;strong&gt;no un array&lt;/strong&gt;&lt;br /&gt;¿Quieres una prueba? – Haz un &lt;code style="color:ruby"&gt;alert(typeof links)&lt;/code&gt; o bien &lt;code style="color:ruby"&gt;alert(links[1])&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Declaraciones simples if-else – pregunta y define con la notación ternaria&lt;/h2&gt;&lt;br /&gt;Es posible abreviar declaraciones simples if dramaticamente. Ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;code style="color:ruby"&gt;&lt;br /&gt;  var YUIguy;&lt;br /&gt;  if(city === ‘London’){&lt;br /&gt;    YUIguy = ‘Chris’;&lt;br /&gt;  } else {&lt;br /&gt;    YUIguy = ‘Eric’;&lt;br /&gt;  };&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Nuevamente, mucha repetición. La notación ternaria soluciona el problema:&lt;br /&gt;&lt;br /&gt;&lt;code style="color"&gt;var YUIguy = city === ‘London’ ? ‘Chris’ : ‘Eric’;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Muchos signos de igual...tal vez algunos paréntesis lo harían más claro:&lt;br /&gt;&lt;br /&gt;&lt;code style="color"&gt;var YUIguy = (city === ‘London’) ? ‘Chris’ : ‘Eric’;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;¿Qué sucede aquí? Defines la variable &lt;code style="color"&gt;YUIguy&lt;/code&gt; y le asignas un valor. Luego viene la declaración, en este caso una comparación de la variable city y si esta es igual a la string London (=== compara para ambos el valor y el tipo, mucho más seguro que ==).&lt;br /&gt;&lt;br /&gt;Entonces preguntas si es verdadero o no usando el signo de interrogación.&lt;br /&gt;La opción a la izquierda de los dos puntos (:) es la respuesta a la pregunta cuando se alcanza la condición y la opción a la derecha de los dos puntos (:) es la respuesta cuando &lt;strong&gt;no se alcanza la condición&lt;/strong&gt;. Cualquier condición que puede ser verdadera o falsa puede ir dentro de paréntesis.&lt;br /&gt;&lt;br /&gt;&lt;code style="color:ruby"&gt;&lt;br /&gt;var direction = (x &lt; max) ? 'left' : 'right';&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Valores por defecto&lt;/h2&gt;&lt;br /&gt;Esta si que es buena, y creo que no mucha gente la conoce. También reconozco que cuando lo vi por primera vez (gracias a Nico Sanguinetti aka "Foca") quedé gratamente sorprendido :)&lt;br /&gt;&lt;br /&gt;Damas y caballeros con Uds. el operador por defecto "double pipe (||)". Este es terriblemente útil cuando nos queremos asegurar que algo se setea con un valor por defecto. El siguiente ejemplo es algo que no debería mostrarse más:&lt;br /&gt;&lt;br /&gt;&lt;code style="color:ruby"&gt;&lt;br /&gt;  var section = document.getElementById('special');&lt;br /&gt;  if(!section){&lt;br /&gt;    section = document.getElementById('main');&lt;br /&gt;  }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Nuevamente, repetición innecesaria, ya que lo mismo puede escribirse:&lt;br /&gt;&lt;br /&gt;&lt;code style="color:ruby"&gt;&lt;br /&gt;  var section = document.getElementById('special') || document.getElementById('main');&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Si lo primero no está definido, lo segundo se asigna como valor a la sección.&lt;br /&gt;&lt;br /&gt;Bueno, ahora si que no hay excusas para programar en javascript en forma más prolija ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-314995177322680162?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/11/formas-abreviadas-de-notacin-javascript.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-3647002435079504308</guid><pubDate>Fri, 30 Nov 2007 13:12:00 +0000</pubDate><atom:updated>2008-11-07T05:07:23.680-02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">widgets</category><category domain="http://www.blogger.com/atom/ns#">mootools</category><title>Calendar : Una clase de calendarios para Mootools</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.electricprism.com/aeron/calendar/css/h1.gif"&gt;&lt;img style="cursor: pointer;" alt="Calendar logo" src="http://www.electricprism.com/aeron/calendar/css/h1.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Recientemente Aeron Glemann publicó la clase "Calendar" que agrega en forma sencilla, accesible y "degradable" date-pickers o calendarios a formularios.&lt;br /&gt;&lt;br /&gt;El autor ha puesto el foco en la accesibilidad y usabilidad de la clase, con el fin de mejorar la experiencia de usuario.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TyC63-hPpOM/R1APW9TxXDI/AAAAAAAAAAY/udegn9TkKw4/s1600-R/Calendar_Mootools.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_TyC63-hPpOM/R1APW9TxXDI/AAAAAAAAAAY/mEy3LqQplq4/s320/Calendar_Mootools.png" alt="Vista de Calendar en acción" id="BLOGGER_PHOTO_ID_5138624061918764082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A continuación las características que posee:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;XHTML semántico y "estilizable"&lt;/li&gt;&lt;li&gt;Restricciones de futuro/pasado&lt;/li&gt;&lt;li&gt;Uso altamente configrable de tags input and select&lt;/li&gt;&lt;li&gt;Suporte multi-calendario&lt;/li&gt;&lt;li&gt;Opciones variables de navegación&lt;/li&gt;&lt;li&gt;Formato de fecha multi-idioma y con la misma sintaxis que la función date en PHP&lt;/li&gt;&lt;/ul&gt;Puedes &lt;a href="http://www.electricprism.com/aeron/calendar"&gt;vistar la página de Calendar para Mootools &lt;/a&gt;o directamente &lt;a href="http://www.electricprism.com/aeron/calendar#download"&gt;descargar Calendar para Mootools&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-3647002435079504308?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/11/calendar-una-clase-de-calendarios-para.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_TyC63-hPpOM/R1APW9TxXDI/AAAAAAAAAAY/mEy3LqQplq4/s72-c/Calendar_Mootools.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-188455295432212005</guid><pubDate>Wed, 28 Nov 2007 22:22:00 +0000</pubDate><atom:updated>2007-11-28T19:39:47.800-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">recursos gratuitos</category><category domain="http://www.blogger.com/atom/ns#">ie</category><title>Múltiples versiones de Internet Explorer a la vez</title><description>Recientemente me he topado con la necesidad de tener varias versiones de Internet Explorer corriendo a la vez.&lt;br /&gt;&lt;br /&gt;Sucede que no era tan sencillo lograr esto como lo es ahora gracias a &lt;a href="http://tredosoft.com/Multiple_IE"&gt;Multiple IE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Este software permite de forma más que sencilla correr un instalador que nos permitirá instalar aquellas versiones de Internet Explorer que nos interesen en particular para testear. La lista comprende:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IE 3.0&lt;/li&gt;&lt;li&gt;IE 4.0&lt;/li&gt;&lt;li&gt;IE 5.0&lt;/li&gt;&lt;li&gt;IE 5.5&lt;/li&gt;&lt;li&gt;IE 6.0&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://tredosoft.com/files/multi-ie/setup1.png"&gt;&lt;img style="cursor: pointer;" src="http://tredosoft.com/files/multi-ie/setup1.png" alt="Vista del instalador de Multiple IE" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NOTA:&lt;/span&gt; El instalador está hecho para Windows XP.&lt;br /&gt;&lt;br /&gt;Cómo diría el amigo "Kike" Echevarría:&lt;br /&gt;&lt;br /&gt;&lt;cite&gt;"Sencillamente notable"&lt;/cite&gt;&lt;br /&gt;&lt;br /&gt;Aquí les dejo el &lt;a href="http://tredosoft.com/files/multi-ie/multiple-ie-setup.exe"&gt;enlace para descargar Multiple IE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Saludos y que lo disfruten!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-188455295432212005?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/11/mltiples-versiones-de-internet-explorer.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-5894447500918296372</guid><pubDate>Wed, 28 Nov 2007 00:12:00 +0000</pubDate><atom:updated>2007-11-27T21:19:25.821-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">recursos gratuitos</category><category domain="http://www.blogger.com/atom/ns#">iconos</category><title>Iconos de banderas del mundo</title><description>Bueno, acá va otro link que sin dudas en algún momento alguien va a tener necesidad de usar.&lt;br /&gt;&lt;br /&gt;Se trata de la página de la &lt;a href="http://www.famfamfam.com/lab/icons"&gt;página de iconos de famfamfam &lt;/a&gt;en la cual hay disponible para ser utilizado en forma gratuita un &lt;a href="http://www.famfamfam.com/lab/icons/flags/famfamfam_flag_icons.zip"&gt;zip con todas las banderas del mundo creadas como iconos&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Saludos y que les sean útiles!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-5894447500918296372?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/11/iconos-de-banderas-del-mundo.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-6249456178243787054</guid><pubDate>Tue, 27 Nov 2007 23:51:00 +0000</pubDate><atom:updated>2007-11-27T21:11:15.352-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">recursos gratuitos</category><category domain="http://www.blogger.com/atom/ns#">extensiones de firefox</category><title>HTML Validator: extensión para validar (x)html</title><description>Salud gente!&lt;br /&gt;&lt;br /&gt;Aquí les dejo una verdadera joyita, una extensión que entre otras cosas permite:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://users.skynet.be/mgueury/mozilla/tidy80_preview.png"&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;Validar nuestro documento (x)html&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Permite validar documentos locales en nuestro equipo o bien documentos publicados en un servidor&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Permite establecer el validador contra el cual validar nuestro docuemento&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Permite ver los errores y brinda feedback al respecto&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Entre las maravillas que posee está la de usar como base &lt;a href="http://tidy.sourceforge.net/"&gt;Tidy &lt;/a&gt;y &lt;a href="http://openjade.sourceforge.net/"&gt;OpenSp&lt;/a&gt;, con lo cual podemos emprolijar y hasta corregir nuestro código directamente con la extensión.&lt;/li&gt;&lt;li&gt;Automáticamente puede corregir errores y aquellos que no entiende o no puede corregir los comunica como avisos.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://users.skynet.be/mgueury/mozilla/tidy80_preview.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://users.skynet.be/mgueury/mozilla/tidy80_preview.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Pueden &lt;a href="http://users.skynet.be/mgueury/mozilla/download.html"&gt;descargar html validator para firefox&lt;/a&gt; o &lt;a href="http://users.skynet.be/mgueury/mozilla/"&gt;ver la página de Marc Gueury&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ahora si, después de esto no hay más excusas para no tener un docuemento valido!&lt;br /&gt;Que la disfruten!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-6249456178243787054?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/11/html-validator-extensin-para-validar.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-5278858819375432702</guid><pubDate>Sun, 18 Nov 2007 20:49:00 +0000</pubDate><atom:updated>2007-11-21T21:19:51.369-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">xhtml</category><category domain="http://www.blogger.com/atom/ns#">webstandards</category><category domain="http://www.blogger.com/atom/ns#">diseño web</category><category domain="http://www.blogger.com/atom/ns#">websemántica</category><title>Lista de tags soportados por XHTML</title><description>Bueno, nada nuevo por aquí pero siempre sirve tener a mano una referencia con todas las etiquetas soportadas por XHTML:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.w3schools.com/tags/default.asp"&gt;http://www.w3schools.com/tags/default.asp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;style&gt;.deprecated{text-decoration:line-through}&lt;/style&gt;&lt;br /&gt;&lt;dl&gt;  &lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_comment.asp"&gt;&amp;lt;!--...--&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un comentario en el documento&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_doctype.asp"&gt;&amp;lt;!DOCTYPE&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define el tipo de documento&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_doctype.asp"&gt;&amp;lt;a&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un ancla (hiperv&amp;ícute;nculo)&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_acronym.asp"&gt;&amp;lt;acronym&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un acr&amp;oacute;nimo en el documento&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_address.asp"&gt;&amp;lt;address&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una direcci&amp;oacute;n en el documento&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_area.asp"&gt;&amp;lt;area&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un &amp;aacute;rea dentro de un mapa de imagen del documento&lt;/dd&gt;&lt;br /&gt;&lt;dt class="deprecated"&gt;&lt;a href="http://www.w3schools.com/tags/tag_applet.asp"&gt;&amp;lt;applet&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;&lt;strong&gt;Deprecado&lt;/strong&gt;. Define an applet&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_area.asp"&gt;&amp;lt;area&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un &amp;aacute;rea dentro de un mapa de imagen  &lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_font_style.asp"&gt;&amp;lt;b&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define texto en negrita  &lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_base.asp"&gt;&amp;lt;base&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una URL base para todos los links en una p&amp;aacute;gina&lt;/dd&gt;&lt;br /&gt;&lt;dt class="deprecated"&gt;&lt;a href="http://www.w3schools.com/tags/tag_basefont.asp"&gt;&amp;lt;basefont&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;&lt;strong&gt;Deprecado&lt;/strong&gt;. Define una fuente base&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_bdo.asp"&gt;&amp;lt;bdo&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define la direcci&amp;oacute;n del texto a mostrar&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_font_style.asp"&gt;&amp;lt;big&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un texto grande&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_blockquote.asp"&gt;&amp;lt;blockquote&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una cita extensa&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_body.asp"&gt;&amp;lt;body&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define el elemento body (cuerpo) del documento&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_br.asp"&gt;&amp;lt;br&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Inserta un solo salto de l&amp;iacute;nea&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_button.asp"&gt;&amp;lt;button&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un bot&amp;oacute;n pulsable &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_caption.asp"&gt;&amp;lt;caption&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define t&amp;iacute;tulo para una tabla &lt;/dd&gt;&lt;br /&gt;&lt;dt class="deprecated"&gt;&lt;a href="http://www.w3schools.com/tags/tag_center.asp"&gt;&amp;lt;center&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;&lt;strong&gt;Deprecado&lt;/strong&gt;. Define texto centrado &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&amp;lt;cite&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una cita&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&amp;lt;code&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define texto de c&amp;oacute;digo de computadora&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_col.asp"&gt;&amp;lt;col&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define atributos para columnas de tablas&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_colgroup.asp"&gt;&amp;lt;colgroup&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define  grupos de columnas de una tabla&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_dd.asp"&gt;&amp;lt;dd&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una descripci&amp;oacute;n de definici&amp;oacute;n&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_del.asp"&gt;&amp;lt;del&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define texto borrado&lt;/dd&gt;&lt;br /&gt;&lt;dt class="deprecated"&gt;&lt;a href="http://www.w3schools.com/tags/tag_dir.asp"&gt;&amp;lt;dir&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;&lt;strong&gt;Deprecado&lt;/strong&gt;. Define una lista de directorio&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_div.asp"&gt;&amp;lt;div&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una divisi&amp;oacute;n/secci&amp;oacute;n en un  documento&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&amp;lt;dfn&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define&amp;nbsp;un t&amp;eacute;rmino de definici&amp;oacute;n&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_dl.asp"&gt;&amp;lt;dl&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una lista de definici&amp;oacute;n&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_dt.asp"&gt;&amp;lt;dt&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un t&amp;eacute;rmino de definici&amp;oacute;n&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&amp;lt;em&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define texto acentuado&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_fieldset.asp"&gt;&amp;lt;fieldset&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un fieldset (caja que agrupa elementos de un formulario)&lt;/dd&gt;&lt;br /&gt;&lt;dt class="deprecated"&gt;&lt;a href="http://www.w3schools.com/tags/tag_font.asp"&gt;&amp;lt;font&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;&lt;strong&gt;Deprecado&lt;/strong&gt;. Define fuente, tama&amp;ntilde;o y color para un texto&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_form.asp"&gt;&amp;lt;form&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un formulario&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_frame.asp"&gt;&amp;lt;frame&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt; Define una sub ventana (un marco)&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_frameset.asp"&gt;&amp;lt;frameset&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un conjunto de marcos&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_hn.asp"&gt;&amp;lt;h1&amp;gt; to &amp;lt;h6&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt; Define encabezados del 1 al 6 para el documento &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_head.asp"&gt;&amp;lt;head&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define informaci&amp;oacute;n acerca del documento&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_hr.asp"&gt;&amp;lt;hr&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt; Define una l&amp;iacute;nea horizontal&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_html.asp"&gt;&amp;lt;html&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un documento html&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_font_style.asp"&gt;&amp;lt;i&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define texto en it&amp;aacute;lica&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_iframe.asp"&gt;&amp;lt;iframe&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una sub ventana dentro de la actual (es un marco)&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_img.asp"&gt;&amp;lt;img&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una imagen &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_input.asp"&gt;&amp;lt;input&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un campo de ingreso (utilizado en formularios) &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_ins.asp"&gt;&amp;lt;ins&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define texto insertado &lt;/dd&gt;&lt;br /&gt;&lt;dt class="deprecated"&gt;&amp;lt;isindex&amp;gt;&lt;/dt&gt;  &lt;dd&gt;&lt;strong&gt;Deprecado&lt;/strong&gt;. Define un campo de una sola l&amp;iacute;nea&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&amp;lt;kbd&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define texto de teclado &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_label.asp"&gt;&amp;lt;label&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una etiqueta para un controle de formulario&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_legend.asp"&gt;&amp;lt;legend&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un t&amp;iacute;tulo para un fieldset&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_li.asp"&gt;&amp;lt;li&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un elemento de una lista&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_link.asp"&gt;&amp;lt;link&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una referencia a un recurso&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_map.asp"&gt;&amp;lt;map&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un mapa de imagen&lt;/dd&gt;&lt;br /&gt;&lt;dt class="deprecated"&gt;&lt;a href="http://www.w3schools.com/tags/tag_menu.asp"&gt;&amp;lt;menu&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;&lt;strong&gt;Deprecado&lt;/strong&gt;. Define un menu&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_meta.asp"&gt;&amp;lt;meta&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define meta informaci&amp;oacute;n&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_noframes.asp"&gt;&amp;lt;noframes&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una secci&amp;oacute;n noframe&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_noscript.asp"&gt;&amp;lt;noscript&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una secci&amp;oacute;n noscript&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_object.asp"&gt;&amp;lt;object&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un objeto embebido&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_ol.asp"&gt;&amp;lt;ol&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una lista ordenada&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_optgroup.asp"&gt;&amp;lt;optgroup&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un grupo de options&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_option.asp"&gt;&amp;lt;option&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una opci&amp;oacute;n en una lista de opciones (combo) &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_p.asp"&gt;&amp;lt;p&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un p&amp;aacute;rrafo&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_param.asp"&gt;&amp;lt;param&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un par&amp;aacute;metro para un objeto&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_pre.asp"&gt;&amp;lt;pre&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define texto pre-formateado&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_q.asp"&gt;&amp;lt;q&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una peque&amp;ntilde;a cita&lt;/dd&gt;&lt;br /&gt;&lt;dt class="deprecated"&gt;&lt;a href="http://www.w3schools.com/tags/tag_strike.asp"&gt;&amp;lt;s&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;&lt;strong&gt;Deprecado&lt;/strong&gt;. Define texto tachado &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&amp;lt;samp&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define c&amp;oacute;digo de computadora de ejemplo&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_script.asp"&gt;&amp;lt;script&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un script &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_select.asp"&gt;&amp;lt;select&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una lista seleccionable  &lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_font_style.asp"&gt;&amp;lt;small&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define texto peque&amp;ntilde;o &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_span.asp"&gt;&amp;lt;span&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una secci&amp;oacute;n en un documento&lt;/dd&gt;&lt;br /&gt;&lt;dt class="deprecated"&gt;&lt;a href="http://www.w3schools.com/tags/tag_strike.asp"&gt;&amp;lt;strike&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;&lt;strong&gt;Deprecado&lt;/strong&gt;. Define texto tachado &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&amp;lt;strong&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define texto fuerte strong (con mayor &amp;eacute;nfasis) &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_style.asp"&gt;&amp;lt;style&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una definici&amp;oacute;n bloque style (utilizado para declarar una css embebida en el documento) &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_sup.asp"&gt;&amp;lt;sub&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define texto en subescript&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_sup.asp"&gt;&amp;lt;sup&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define text en superscript&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_table.asp"&gt;&amp;lt;table&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una tabla&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_tbody.asp"&gt;&amp;lt;tbody&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define el cuerpo de una tabla&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_td.asp"&gt;&amp;lt;td&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una celda de una tabla&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_textarea.asp"&gt;&amp;lt;textarea&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define un &amp;aacute;rea de texto&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_tfoot.asp"&gt;&amp;lt;tfoot&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define el pie de una tabla&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_th.asp"&gt;&amp;lt;th&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define el encabezado de una tabla &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_thead.asp"&gt;&amp;lt;thead&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define el encabezado de una tabla&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_title.asp"&gt;&amp;lt;title&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define el t&amp;iacute;tulo de un documento&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_tr.asp"&gt;&amp;lt;tr&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una fila de una tabla&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_font_style.asp"&gt;&amp;lt;tt&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define texto de teletipo&lt;/dd&gt;&lt;br /&gt;&lt;dt class="deprecated"&gt;&lt;a href="http://www.w3schools.com/tags/tag_u.asp"&gt;&amp;lt;u&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;&lt;strong&gt;Deprecado&lt;/strong&gt;. Define texto subrayado &lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_ul.asp"&gt;&amp;lt;ul&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una lista desordenada&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a href="http://www.w3schools.com/tags/tag_phrase_elements.asp"&gt;&amp;lt;var&amp;gt;&lt;/a&gt;&lt;/dt&gt;  &lt;dd&gt;Define una variable&lt;/dd&gt;&lt;br /&gt;&lt;dt class="deprecated"&gt;&amp;lt;xmp&amp;gt;&lt;/dt&gt;  &lt;dd&gt;&lt;strong&gt;Deprecado&lt;/strong&gt;. Define texto preformateado&lt;/dd&gt;&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-5278858819375432702?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/11/lista-de-tags-soportados-por-xhtml.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-6566384235458627989</guid><pubDate>Thu, 15 Nov 2007 00:01:00 +0000</pubDate><atom:updated>2007-11-18T17:49:16.614-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">webstandards</category><category domain="http://www.blogger.com/atom/ns#">diseño web</category><category domain="http://www.blogger.com/atom/ns#">crossbrowser</category><category domain="http://www.blogger.com/atom/ns#">websemántica</category><category domain="http://www.blogger.com/atom/ns#">css</category><title>Solucionando prolijamente problemas de clear/float en css</title><description>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.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://en.wikipedia.org/wiki/Jeffrey_Zeldman"&gt;Jeffrey Zeldman &lt;/a&gt;opinaran que las "tablas estaban muertas".&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Emulando el comportamiento gráfico de las tablas&lt;/h3&gt;&lt;br /&gt;Para llevar a cabo nuestra diagramación, tenemos que recurrir a los elementos html &amp;lt;div&amp;gt; (que representan una &lt;em&gt;división&lt;/em&gt; en la pantalla). Deberemos incluir tantos divs como "paneles" tenga nuestro diseño, por lo general un documento posee:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Encabezado (se lo suele identificar como "header")&lt;/li&gt;&lt;li&gt;Columna izquierda (se la suele identifica como "left")&lt;/li&gt;&lt;li&gt;Columna principal(se la suele identifica como "main")&lt;/li&gt;&lt;li&gt;Eventualmente una columna derecha (se la suele identifica como "right")&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Bien, hasta ahí tendríamos todo más o menos claro, pero, hace falta solucionar problemas de &lt;em&gt;visualización&lt;/em&gt; estrictamente para que tomen la apariencia que nosotros queremos.&lt;br /&gt;&lt;br /&gt;Uno de los principales problemas a los que nos enfrentaremos suelen ser los "floats" (la propiedad css "float").&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;La forma que más he visto es la sencilla solución de incluir un div con la propiedad "clear":&lt;br /&gt;&lt;br /&gt;&lt;code style="color: rgb(153,0,0)"&gt;&amp;lt;div style="clear: left"&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Sucede que eso desde un punto de vista más purista y semántico no es una solución muy correcta que digamos.&lt;/em&gt;&lt;br /&gt;¿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.&lt;br /&gt;&lt;br /&gt;Claro que podríamos mejorar lo anterior simplemente añadiendo nuestro código inline dentro de un una clase css:&lt;br /&gt;&lt;br /&gt;&lt;code style="color: rgb(153,0,0)"&gt;&amp;lt;div class="clearfix"&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;y en nuestra css copiar lo que anteriormente teníamos en nuestro div:&lt;br /&gt;&lt;br /&gt;&lt;code style="color: rgb(153,0,0)"&gt;&lt;pre&gt;&lt;br /&gt;.clearfix{&lt;br /&gt;   clear: left&lt;br /&gt;}&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;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".&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;¿Cuál es la solución entonces más prolija y semánticamente más correcta?&lt;/h3&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Pero ¿cómo?, ¿todo esto no se originó justamente por problemas de estilos?&lt;br /&gt;Si, pero también la solución está ahí mismo ;-)&lt;br /&gt;&lt;br /&gt;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).&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Veamos como quedaría nuestra clase "clearfix" aplicando todo esto:&lt;br /&gt;&lt;br /&gt;&lt;code style="color: rgb(153,0,0)"&gt;&lt;pre&gt;&lt;br /&gt;.clearfix:after {&lt;br /&gt;    content: ".";&lt;br /&gt;    display: block;&lt;br /&gt;    clear: both;&lt;br /&gt;    visibility: hidden;&lt;br /&gt;    line-height: 0;&lt;br /&gt;    height: 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.clearfix {&lt;br /&gt;    display: inline-block;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;html[xmlns] .clearfix {&lt;br /&gt;    display: block;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;* html .clearfix {&lt;br /&gt;    height: 1%;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Veamos que es lo que está generando entonces nuestra clase "clearfix" paso a paso:&lt;br /&gt;&lt;br /&gt;&lt;code style="color: rgb(153,0,0)"&gt;&lt;pre&gt;&lt;br /&gt;.clearfix:&lt;strong&gt;after&lt;/strong&gt; {/*after es un pseudo elemento que se generará a continuación de nuestro div con la clase "clearfix"*/&lt;br /&gt;    &lt;em&gt;content: ".";&lt;/em&gt;/* Esto genera un "." como un texto en el div con la clase "clearfix"*/&lt;br /&gt;    display: block;&lt;br /&gt;    clear: both;&lt;br /&gt;    visibility: hidden;&lt;br /&gt;    line-height: 0;&lt;br /&gt;    height: 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-6566384235458627989?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/11/solucionando-prolijamente-problemas-de.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-1923354827181227146</guid><pubDate>Wed, 14 Nov 2007 23:25:00 +0000</pubDate><atom:updated>2007-11-21T21:20:45.611-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">mootools</category><title>Mootools 1.2 Beta 1 liberado!</title><description>Realmente hay varias opiniones en cuanto a frameworks javascript...no todo el mundo comparte la misma opinión. Mucha gente se inclina por prototype, jQuery u otras opciones.&lt;br /&gt;&lt;br /&gt;En lo personal, soy un gran fanático de Mootools...aquellos que me conocen saben que "tengo mootools tatuado en el pecho" ;-)&lt;br /&gt;&lt;br /&gt;Hablando en serio, este framework (del cual ya postearé información más interesante) &lt;a href="http://blog.mootools.net/2007/11/14/mootools-1-2-beta-1"&gt;está liberando la versión 1.2 Beta 1.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Entre las mejoras respecto de la versión anterior están:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mejoras en la clase Hash (esto está buenísimo!)&lt;/li&gt;&lt;li&gt;Specs&lt;/li&gt;&lt;li&gt;Mejoras en los efectos&lt;/li&gt;&lt;li&gt;Nuevo objeto browser con información del navegador&lt;/li&gt;&lt;li&gt;Pseudo selectores CSS3!&lt;/li&gt;&lt;li&gt;Mejoras en la performance de los selectores css&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-1923354827181227146?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/11/mootools-12-beta-1-liberado.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5339799433990725134.post-221111475477819186</guid><pubDate>Wed, 14 Nov 2007 22:15:00 +0000</pubDate><atom:updated>2007-12-02T13:39:22.431-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">recursos gratuitos</category><category domain="http://www.blogger.com/atom/ns#">testing</category><title>JSSpec</title><description>Recientemente me topé con &lt;a href="http://jania.pe.kr/aw/moin.cgi/JSSpec#head-90ed31c095906ba3d6bfddd23911bd486bb3e3b0"&gt;JSSpec&lt;/a&gt;... es un framework Javascript del tipo &lt;acronym title="Behavior Driven Development"&gt;BDD&lt;/acronym&gt;(&lt;a title="Ver la definción en la Wikipedia" href="http://en.wikipedia.org/wiki/Behavior_driven_development"&gt;Behavior Driven Development&lt;/a&gt; o Desarrollo Orientado a Comportamiento) que soporta IE6/7, FF2, Safari3.&lt;br /&gt;&lt;br /&gt;Funciona en forma similar a &lt;a href="http://rspec.rubyforge.org/"&gt;RSpec &lt;/a&gt;(un framework &lt;acronym title="Behavior Driven Development"&gt;BDD&lt;/acronym&gt; para Ruby) pero provee mensajes de fallo más útiles. Por ejemplo, muestra diferencias entre dos strings o arrays.&lt;br /&gt;&lt;br /&gt;Realmente interesante y algo a profundizar...que lo disfruten!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339799433990725134-221111475477819186?l=jpbrocca.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://jpbrocca.blogspot.com/2007/11/jsspec.html</link><author>noreply@blogger.com (Juan Pablo Brocca)</author><thr:total>0</thr:total></item></channel></rss>

