<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on CSSLab</title>
    <link>https://csslab.cl/posts/</link>
    <description>Recent content in Posts on CSSLab</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>es-ES</language>
    <copyright>Todos los derechos reservados.&lt;br&gt; Escrito y mantenido por Jorge Epuñan desde 🇨🇱.</copyright>
    <lastBuildDate>Sat, 28 Mar 2026 01:08:25 +0000</lastBuildDate><atom:link href="https://csslab.cl/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>De Design System a Instruction System</title>
      <link>https://csslab.cl/2026/03/28/de-design-system-a-instruction-system/</link>
      <pubDate>Sat, 28 Mar 2026 01:08:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2026/03/28/de-design-system-a-instruction-system/</guid>
      <description>&lt;h1 id=&#34;siguen-siendo-necesarios-los-design-systems-en-la-era-de-agentes-de-ia&#34;&gt;¿Siguen siendo necesarios los Design Systems en la era de agentes de IA?&lt;/h1&gt;
&lt;p&gt;Durante la última década, los &lt;em&gt;design systems&lt;/em&gt; se consolidaron como un pilar fundamental en el desarrollo de productos digitales. Empresas como Google, IBM y Shopify demostraron que la estandarización de componentes, patrones y guías visuales no solo mejoraba la consistencia, sino también la velocidad de desarrollo y la colaboración entre equipos.&lt;/p&gt;
&lt;p&gt;Sin embargo, hacia 2025–2026 emerge una nueva pregunta: ¿siguen siendo necesarios los design systems en un contexto donde agentes de IA pueden generar interfaces completas a partir de instrucciones bien definidas?&lt;/p&gt;</description>
      <content>&lt;h1 id=&#34;siguen-siendo-necesarios-los-design-systems-en-la-era-de-agentes-de-ia&#34;&gt;¿Siguen siendo necesarios los Design Systems en la era de agentes de IA?&lt;/h1&gt;
&lt;p&gt;Durante la última década, los &lt;em&gt;design systems&lt;/em&gt; se consolidaron como un pilar fundamental en el desarrollo de productos digitales. Empresas como Google, IBM y Shopify demostraron que la estandarización de componentes, patrones y guías visuales no solo mejoraba la consistencia, sino también la velocidad de desarrollo y la colaboración entre equipos.&lt;/p&gt;
&lt;p&gt;Sin embargo, hacia 2025–2026 emerge una nueva pregunta: ¿siguen siendo necesarios los design systems en un contexto donde agentes de IA pueden generar interfaces completas a partir de instrucciones bien definidas?&lt;/p&gt;
&lt;h2 id=&#34;el-rol-histórico-del-design-system&#34;&gt;El rol histórico del Design System&lt;/h2&gt;
&lt;p&gt;Un design system tradicional incluye:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Librerías de componentes reutilizables&lt;/li&gt;
&lt;li&gt;Tokens de diseño (colores, tipografía, spacing)&lt;/li&gt;
&lt;li&gt;Guías de UX/UI&lt;/li&gt;
&lt;li&gt;Documentación y buenas prácticas&lt;/li&gt;
&lt;li&gt;Integración con herramientas de desarrollo (Storybook, Figma, etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Su objetivo principal es reducir la ambigüedad y evitar inconsistencias en productos complejos. Algunos buenos ejemplos son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://material.io/design&#34;&gt;https://material.io/design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ibm.com/design/language/&#34;&gt;https://www.ibm.com/design/language/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://polaris.shopify.com/&#34;&gt;https://polaris.shopify.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;el-cambio-de-paradigma-ia--instrucciones-skills&#34;&gt;El cambio de paradigma: IA + instrucciones (skills)&lt;/h2&gt;
&lt;p&gt;Con la adopción masiva de modelos generativos y agentes especializados, el flujo de desarrollo está cambiando:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Antes: &lt;strong&gt;Diseño → Figma → Design System → Implementación manual&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Ahora: &lt;strong&gt;Prompt / Skill → Agente IA → UI generada → Iteración&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Herramientas emergentes como &lt;a href=&#34;https://v0.dev/&#34;&gt;v0&lt;/a&gt;, &lt;a href=&#34;https://www.lovable.dev/&#34;&gt;Lovable&lt;/a&gt; y &lt;a href=&#34;https://bolt.new/&#34;&gt;Bold&lt;/a&gt; permiten generar interfaces completas (React, Tailwind, etc.) a partir de descripciones declarativas.&lt;/p&gt;
&lt;p&gt;Esto introduce un nuevo concepto clave: &lt;strong&gt;las instrucciones estructuradas (skills) como fuente de verdad&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;lo-que-la-ia-puede-reemplazar-parcialmente&#34;&gt;Lo que la IA puede reemplazar parcialmente&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Componentes repetitivos&lt;/li&gt;
&lt;li&gt;Variantes visuales&lt;/li&gt;
&lt;li&gt;Boilerplate frontend&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;lo-que-no-desaparece-todavía&#34;&gt;Lo que NO desaparece (todavía)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Consistencia semántica profunda&lt;/li&gt;
&lt;li&gt;Decisiones de diseño organizacionales&lt;/li&gt;
&lt;li&gt;Gobernanza&lt;/li&gt;
&lt;li&gt;Experiencia compleja&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;de-design-system-a-instruction-system&#34;&gt;De Design System a &lt;em&gt;Instruction System&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;Antes: &lt;strong&gt;Design System como código&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Button&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;variant&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;primary&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;size&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;lg&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ahora: &lt;strong&gt;Design System como instrucción&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Usa botones primarios con alto contraste, bordes redondeados y feedback accesible.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Un ejemplo en la práctica:&lt;/p&gt;
&lt;h4 id=&#34;enfoque-tradicional&#34;&gt;Enfoque tradicional&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-jsx&#34; data-lang=&#34;jsx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; { &lt;span style=&#34;color:#a6e22e&#34;&gt;Button&lt;/span&gt; } &lt;span style=&#34;color:#a6e22e&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@company/ui&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;Button&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;variant&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;primary&amp;#34;&lt;/span&gt;&amp;gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Guardar&lt;/span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;Button&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;enfoque-con-ia&#34;&gt;Enfoque con IA&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Genera un botón principal para acción crítica, con:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- alto contraste
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- accesibilidad WCAG AA
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- padding amplio
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- feedback visual en hover
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Las ventajas que aparecen con el enfoque de desarrollo con asistencia de Inteligencia Artificial:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Velocidad: menor fricción inicial, ideal para prototipos y MVPs.&lt;/li&gt;
&lt;li&gt;Flexibilidad: no estás limitado a un set rígido de componentes.&lt;/li&gt;
&lt;li&gt;Adaptabilidad: IA puede adaptar la UI según el caso de uso.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Al mismo tiempo, surger riesgos y desafíos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deriva de diseño (Design Drift): sin reglas claras, cada generación puede divergir.&lt;/li&gt;
&lt;li&gt;Falta de estandarización: difícil mantener coherencia en equipos grandes.&lt;/li&gt;
&lt;li&gt;Dependencia del prompt: resultados inconsistentes si las instrucciones no son precisas.&lt;/li&gt;
&lt;li&gt;Auditoría y mantenimiento: más difícil rastrear decisiones que antes estaban codificadas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;hacia-un-modelo-híbrido&#34;&gt;Hacia un modelo híbrido&lt;/h2&gt;
&lt;p&gt;La propuesta que me surge es asignar responsabilidades diferentes a cada enfoque, no se reemplaza completamente el design system, sino que se combinan ambos mundos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Núcleo estable (Design System ligero)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tokens
Principios de diseño
Componentes críticos&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Capa dinámica (IA + skills)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Generación de UI
Variantes
Experimentación&lt;/p&gt;
&lt;p&gt;Ejemplo de arquitectura híbrida en un proyecto:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/design-system
  tokens.json
  core-components/

 /ai-skills
  button.md
  form.md
  layout.md
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;últimas-palabras&#34;&gt;Últimas palabras&lt;/h2&gt;
&lt;p&gt;No, los design systems no han muerto. Pero su forma tradicional —como librerías rígidas de componentes— está siendo desafiada. Estamos transitando hacia un modelo donde:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La intención reemplaza a la implementación&lt;/li&gt;
&lt;li&gt;Las instrucciones complementan al código&lt;/li&gt;
&lt;li&gt;Los agentes de IA actúan como intérpretes del sistema de diseño&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El futuro no es &lt;em&gt;design system vs IA&lt;/em&gt;, sino:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Design Systems como contratos semánticos, ejecutados por agentes inteligentes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h4 id=&#34;para-leer-más&#34;&gt;Para leer más:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.nngroup.com/articles/design-systems-101/&#34;&gt;https://www.nngroup.com/articles/design-systems-101/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://uxdesign.cc/design-systems-are-evolving-into-platforms-ia-ux-2025&#34;&gt;https://uxdesign.cc/design-systems-are-evolving-into-platforms-ia-ux-2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>CSS View Transitions: guía técnica de @view-transition</title>
      <link>https://csslab.cl/2026/02/06/css-view-transition/</link>
      <pubDate>Fri, 06 Feb 2026 01:08:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2026/02/06/css-view-transition/</guid>
      <description>&lt;p&gt;El módulo CSS &lt;strong&gt;View Transitions&lt;/strong&gt; introduce una forma nativa de crear animaciones fluidas entre diferentes vistas de una aplicación web. A diferencia de soluciones basadas en JavaScript o librerías externas, esta especificación permite definir transiciones visuales directamente desde CSS, integrándose con la &lt;em&gt;View Transition API&lt;/em&gt; del navegador.&lt;/p&gt;
&lt;p&gt;El objetivo principal es mejorar la continuidad visual al cambiar de estado dentro de una página (SPA) o al navegar entre documentos del mismo origen (MPA), manteniendo un rendimiento óptimo y una implementación declarativa.&lt;/p&gt;</description>
      <content>&lt;p&gt;El módulo CSS &lt;strong&gt;View Transitions&lt;/strong&gt; introduce una forma nativa de crear animaciones fluidas entre diferentes vistas de una aplicación web. A diferencia de soluciones basadas en JavaScript o librerías externas, esta especificación permite definir transiciones visuales directamente desde CSS, integrándose con la &lt;em&gt;View Transition API&lt;/em&gt; del navegador.&lt;/p&gt;
&lt;p&gt;El objetivo principal es mejorar la continuidad visual al cambiar de estado dentro de una página (SPA) o al navegar entre documentos del mismo origen (MPA), manteniendo un rendimiento óptimo y una implementación declarativa.&lt;/p&gt;
&lt;h2 id=&#34;qué-es-view-transition&#34;&gt;¿Qué es @view-transition?&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;@view-transition&lt;/code&gt; es una &lt;code&gt;CSS at-rule&lt;/code&gt; que permite a un documento participar en transiciones de vista cuando ocurre una navegación o un cambio de estado compatible. Su uso es especialmente relevante en transiciones cross-document, donde dos páginas distintas comparten una animación de entrada y salida.&lt;/p&gt;
&lt;p&gt;Esta regla no define animaciones por sí sola, sino que habilita el contexto en el que el navegador genera pseudo-elementos especiales &lt;code&gt;(::view-transition-*)&lt;/code&gt; que pueden ser animados con CSS.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@&lt;span style=&#34;color:#66d9ef&#34;&gt;view-transition&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;navigation&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;auto&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;none&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;types&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;none&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;custom-ident&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;#&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p class=&#34;codepen&#34; data-height=&#34;450&#34; data-default-tab=&#34;result&#34; data-slug-hash=&#34;JoKBvPr&#34; data-pen-title=&#34;CSS @view-transition example&#34; data-user=&#34;juanbrujo&#34; style=&#34;height: 450px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&#34;&gt;
  &lt;span&gt;See the Pen &lt;a href=&#34;https://codepen.io/juanbrujo/pen/JoKBvPr&#34;&gt;
  CSS @view-transition example&lt;/a&gt; by Jorge Epuñan (&lt;a href=&#34;https://codepen.io/juanbrujo&#34;&gt;@juanbrujo&lt;/a&gt;)
  on &lt;a href=&#34;https://codepen.io&#34;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;script async src=&#34;https://public.codepenassets.com/embed/index.js&#34;&gt;&lt;/script&gt;
&lt;h2 id=&#34;propiedades&#34;&gt;Propiedades&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;navigation&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;auto&lt;/strong&gt;: habilita automáticamente transiciones en navegaciones same-origin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;none&lt;/strong&gt;: desactiva las transiciones de navegación.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;types&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Permite definir uno o más identificadores de tipo para personalizar transiciones específicas.&lt;/li&gt;
&lt;li&gt;Estos tipos pueden ser utilizados junto a pseudo-clases como &lt;code&gt;:active-view-transition-type()&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ejemplo&#34;&gt;Ejemplo:&lt;/h2&gt;
&lt;p&gt;En cada página que participa en la transición se declara la regla:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@&lt;span style=&#34;color:#66d9ef&#34;&gt;view-transition&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;navigation&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;auto&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Luego se definen animaciones usando los pseudo-elementos generados por el navegador:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@&lt;span style=&#34;color:#66d9ef&#34;&gt;keyframes&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;fade-out&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;to&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;opacity&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;transform&lt;/span&gt;: translateY(&lt;span style=&#34;color:#ae81ff&#34;&gt;-8&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@&lt;span style=&#34;color:#66d9ef&#34;&gt;keyframes&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;fade-in&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;opacity&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;transform&lt;/span&gt;: translateY(&lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;to&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;opacity&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;transform&lt;/span&gt;: translateY(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;::&lt;span style=&#34;color:#a6e22e&#34;&gt;view-transition-old&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;root&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;animation&lt;/span&gt;: fade-out &lt;span style=&#34;color:#ae81ff&#34;&gt;250&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ms&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;ease&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;forwards&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;::&lt;span style=&#34;color:#a6e22e&#34;&gt;view-transition-new&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;root&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;animation&lt;/span&gt;: fade-in &lt;span style=&#34;color:#ae81ff&#34;&gt;250&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ms&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;ease&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;forwards&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;soporte-actual-en-navegadores&#34;&gt;Soporte actual en navegadores&lt;/h3&gt;
&lt;p&gt;El soporte para &lt;strong&gt;CSS View Transitions&lt;/strong&gt; ha avanzado rápidamente, pero aún no es completamente uniforme:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chrome / Edge&lt;/strong&gt;: Soporte estable para view transitions. Las transiciones cross-document están disponibles en versiones recientes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safari (macOS / iOS)&lt;/strong&gt;: Soporte incorporado a partir de Safari 18.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firefox&lt;/strong&gt;: Implementación progresiva en versiones recientes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fallback&lt;/strong&gt;: En navegadores sin soporte, la navegación o el cambio de estado ocurre normalmente sin animación.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;No existe actualmente una forma estandarizada de detectar soporte de &lt;code&gt;@view-transition&lt;/code&gt; usando @supports&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;limitaciones-técnicas&#34;&gt;Limitaciones técnicas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Restricción de mismo origen&lt;/strong&gt;: Las transiciones entre documentos solo funcionan si ambos pertenecen al mismo origen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control limitado del ciclo de vida&lt;/strong&gt;: El navegador gestiona la captura y el renderizado de vistas, lo que limita el control fino en ciertos escenarios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compatibilidad parcial de types&lt;/strong&gt;: Algunas características avanzadas aún no están disponibles en todos los navegadores.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Necesidad de fallback&lt;/strong&gt;: Siempre se recomienda diseñar la experiencia considerando navegadores sin soporte.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;referencias&#34;&gt;Referencias&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;MDN: &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@view-transition&#34;&gt;@view-transition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CSS-Tricks: &lt;a href=&#34;https://css-tricks.com/toe-dipping-into-view-transitions/&#34;&gt;Toe Dipping Into View Transitions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>&amp;lt;meter&amp;gt; y &amp;lt;progress&amp;gt; de HTML5</title>
      <link>https://csslab.cl/2025/05/04/meter-progress-html5/</link>
      <pubDate>Sun, 04 May 2025 01:08:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2025/05/04/meter-progress-html5/</guid>
      <description>&lt;h1 id=&#34;uso-y-diferencias-de-cómo-usar-meter-y-progress-de-html5&#34;&gt;Uso y diferencias de cómo usar meter y progress de HTML5&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;HTML5&lt;/strong&gt; introdujo nuevas etiquetas que permiten construir componentes de interfaz de usuario comunes sin necesidad de &lt;em&gt;JavaScript&lt;/em&gt; adicional. Dos de estos elementos son &lt;code&gt;&amp;lt;progress&amp;gt;&lt;/code&gt; y &lt;code&gt;&amp;lt;meter&amp;gt;&lt;/code&gt;, útiles para mostrar progreso de tareas y mediciones dentro de un rango conocido, respectivamente. Al final del artículo tendrás un ejemplo aplicado.&lt;/p&gt;</description>
      <content>&lt;h1 id=&#34;uso-y-diferencias-de-cómo-usar-meter-y-progress-de-html5&#34;&gt;Uso y diferencias de cómo usar meter y progress de HTML5&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;HTML5&lt;/strong&gt; introdujo nuevas etiquetas que permiten construir componentes de interfaz de usuario comunes sin necesidad de &lt;em&gt;JavaScript&lt;/em&gt; adicional. Dos de estos elementos son &lt;code&gt;&amp;lt;progress&amp;gt;&lt;/code&gt; y &lt;code&gt;&amp;lt;meter&amp;gt;&lt;/code&gt;, útiles para mostrar progreso de tareas y mediciones dentro de un rango conocido, respectivamente. Al final del artículo tendrás un ejemplo aplicado.&lt;/p&gt;
&lt;h2 id=&#34;la-etiqueta-progress&#34;&gt;La etiqueta &lt;code&gt;&amp;lt;progress&amp;gt;&lt;/code&gt;:&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;progress&amp;gt;&lt;/code&gt; permite crear fácilmente barras de progreso en aplicaciones web. Es útil para mostrar el avance de tareas como la carga de archivos o la navegación en formularios de múltiples pasos.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;progress&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;50&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;max&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;100&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;progress&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Hay dos atributos que debe especificar en un elemento &lt;code&gt;&amp;lt;progress&amp;gt;&lt;/code&gt;: &lt;strong&gt;max&lt;/strong&gt; y &lt;strong&gt;value&lt;/strong&gt;. El atributo &lt;strong&gt;max&lt;/strong&gt; especifica el total, y el atributo &lt;strong&gt;value&lt;/strong&gt; especifica cuánto del total se ha completado.&lt;/p&gt;
&lt;p&gt;Si se omite el atributo &lt;strong&gt;value&lt;/strong&gt;, el navegador mostrará una barra de progreso indeterminada, útil cuando no se conoce el tiempo exacto de finalización.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://csslab.cl/wp-content/uploads/2025/progress.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Para personalizar el estilo de las barras de progreso, se pueden utilizar &lt;em&gt;pseudo-elementos&lt;/em&gt; específicos para cada navegador. A continuación, se muestra un ejemplo que funciona en navegadores modernos:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;progress&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;appearance&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;none&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;height&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border-radius&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#eee&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;box-shadow&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;inset&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; rgba(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0.2&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A la fecha de publicación de este artículo, para customizar los estilos de &lt;strong&gt;progress&lt;/strong&gt; se deben usar &lt;strong&gt;pseudo-clases&lt;/strong&gt; CSS específicos:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;progress&lt;/span&gt;::&lt;span style=&#34;color:#a6e22e&#34;&gt;-webkit-progress-bar&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#eee&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border-radius&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;progress&lt;/span&gt;::&lt;span style=&#34;color:#a6e22e&#34;&gt;-webkit-progress-value&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;blue&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border-radius&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;progress&lt;/span&gt;::&lt;span style=&#34;color:#a6e22e&#34;&gt;-moz-progress-bar&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;blue&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border-radius&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esto crea una barra de progreso con esquinas redondeadas y un color verde para indicar el progreso.&lt;/p&gt;
&lt;h2 id=&#34;la-etiqueta-meter&#34;&gt;La etiqueta &lt;code&gt;&amp;lt;meter&amp;gt;&lt;/code&gt;:&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;meter&amp;gt;&lt;/code&gt; se utiliza para representar una medición dentro de un rango conocido, como el uso de espacio en disco o la temperatura. A diferencia de &lt;code&gt;&amp;lt;progress&amp;gt;&lt;/code&gt;, que muestra el avance dentro de un total, &lt;code&gt;&amp;lt;meter&amp;gt;&lt;/code&gt; indica un valor dentro de un rango definido.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://csslab.cl/wp-content/uploads/2025/meter.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;meter&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;min&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;max&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;100&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;low&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;30&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;high&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;70&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;optimum&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;50&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;45&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;meter&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sus atributos son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;min&lt;/strong&gt; y &lt;strong&gt;max&lt;/strong&gt;: Definen el rango mínimo y máximo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;low&lt;/strong&gt; y &lt;strong&gt;high&lt;/strong&gt;: Indican los límites para valores bajos y altos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;optimum&lt;/strong&gt;: Especifica el valor óptimo dentro del rango.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;value&lt;/strong&gt;: Representa el valor actual.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El navegador ajustará el color de la barra según el valor actual y los atributos definidos.&lt;/p&gt;
&lt;p&gt;Al igual que con &lt;code&gt;&amp;lt;progress&amp;gt;&lt;/code&gt;, se pueden aplicar estilos personalizados a &lt;code&gt;&amp;lt;meter&amp;gt;&lt;/code&gt; utilizando &lt;strong&gt;pseudo-elementos&lt;/strong&gt; específicos:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;meter&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;appearance&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;none&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;height&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border-radius&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#eee&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;box-shadow&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;inset&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; rgba(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0.2&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;meter&lt;/span&gt;::&lt;span style=&#34;color:#a6e22e&#34;&gt;-webkit-meter-bar&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#eee&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border-radius&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;meter&lt;/span&gt;::&lt;span style=&#34;color:#a6e22e&#34;&gt;-webkit-meter-optimum-value&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;green&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border-radius&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;meter&lt;/span&gt;::&lt;span style=&#34;color:#a6e22e&#34;&gt;-webkit-meter-suboptimum-value&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;orange&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border-radius&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;meter&lt;/span&gt;::&lt;span style=&#34;color:#a6e22e&#34;&gt;-webkit-meter-even-less-good-value&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;red&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border-radius&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;meter&lt;/span&gt;::&lt;span style=&#34;color:#a6e22e&#34;&gt;-moz-meter-bar&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border-radius&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;meter&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;-moz-meter-optimum&lt;/span&gt;::&lt;span style=&#34;color:#a6e22e&#34;&gt;-moz-meter-bar&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;green&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;meter&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;-moz-meter-sub-optimum&lt;/span&gt;::&lt;span style=&#34;color:#a6e22e&#34;&gt;-moz-meter-bar&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;orange&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;meter&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;-moz-meter-sub-sub-optimum&lt;/span&gt;::&lt;span style=&#34;color:#a6e22e&#34;&gt;-moz-meter-bar&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;red&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esto aplica colores diferentes según el valor actual del &lt;code&gt;&amp;lt;meter&amp;gt;&lt;/code&gt;, facilitando la visualización de si el valor es óptimo, subóptimo o crítico.&lt;/p&gt;
&lt;h3 id=&#34;demo&#34;&gt;Demo:&lt;/h3&gt;
&lt;p class=&#34;codepen&#34; data-height=&#34;500&#34; data-default-tab=&#34;result&#34; data-slug-hash=&#34;azOpJqL&#34; data-pen-title=&#34;Untitled&#34; data-user=&#34;juanbrujo&#34; style=&#34;height: 500px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&#34;&gt;
  &lt;span&gt;See the Pen &lt;a href=&#34;https://codepen.io/juanbrujo/pen/azOpJqL&#34;&gt;
  Untitled&lt;/a&gt; by Jorge Epuñan (&lt;a href=&#34;https://codepen.io/juanbrujo&#34;&gt;@juanbrujo&lt;/a&gt;)
  on &lt;a href=&#34;https://codepen.io&#34;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;script async src=&#34;https://public.codepenassets.com/embed/index.js&#34;&gt;&lt;/script&gt;
&lt;h3 id=&#34;javascript&#34;&gt;JavaScript:&lt;/h3&gt;
&lt;p&gt;Para aplicaciones que requieren actualizaciones en tiempo real, como barras de progreso en directo o mediciones dinámicas, puedes actualizarlos dinámicamente utilizando JavaScript mediante &lt;em&gt;event listeners&lt;/em&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;updateProgress&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  document.&lt;span style=&#34;color:#a6e22e&#34;&gt;getElementById&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;uploadProgress&amp;#39;&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;setInterval&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;currentValue&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Math.&lt;span style=&#34;color:#a6e22e&#34;&gt;min&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;, document.&lt;span style=&#34;color:#a6e22e&#34;&gt;getElementById&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;uploadProgress&amp;#39;&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;updateProgress&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;currentValue&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}, &lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;compatibilidad-con-navegadores&#34;&gt;Compatibilidad con navegadores:&lt;/h3&gt;
&lt;p&gt;Los elementos &lt;code&gt;&amp;lt;progress&amp;gt;&lt;/code&gt; y &lt;code&gt;&amp;lt;meter&amp;gt;&lt;/code&gt; son compatibles con todos de los navegadores modernos. Sin embargo, la compatibilidad con &lt;strong&gt;pseudo-elementos&lt;/strong&gt; para dar estilos puede variar entre navegadores.&lt;/p&gt;
&lt;h3 id=&#34;links&#34;&gt;Links:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-progress-element&#34;&gt;Especificación de WHATWG sobre &lt;code&gt;&amp;lt;progress&amp;gt;&lt;/code&gt; y &lt;code&gt;&amp;lt;meter&amp;gt;&lt;/code&gt;&lt;/a&gt;:&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress&#34;&gt;Documentación de MDN sobre &lt;code&gt;&amp;lt;progress&amp;gt;&lt;/code&gt;&lt;/a&gt;:&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meter&#34;&gt;Documentación de MDN sobre &lt;code&gt;&amp;lt;meter&amp;gt;&lt;/code&gt;&lt;/a&gt;:&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>CSS text-wrap: La nueva forma de controlar saltos de línea</title>
      <link>https://csslab.cl/2025/04/27/css-text-wrap/</link>
      <pubDate>Sun, 27 Apr 2025 01:08:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2025/04/27/css-text-wrap/</guid>
      <description>&lt;p&gt;El mundo del diseño web está en constante evolución, y &lt;em&gt;CSS&lt;/em&gt; sigue introduciendo propiedades que nos dan mayor control sobre la presentación del texto. Una de las adiciones más interesantes recientemente es la propiedad &lt;code&gt;text-wrap&lt;/code&gt;, que permite a los desarrolladores definir con precisión cómo se comportan los saltos de línea en nuestros textos, algo que se necesitaba hace mucho tiempo.&lt;/p&gt;</description>
      <content>&lt;p&gt;El mundo del diseño web está en constante evolución, y &lt;em&gt;CSS&lt;/em&gt; sigue introduciendo propiedades que nos dan mayor control sobre la presentación del texto. Una de las adiciones más interesantes recientemente es la propiedad &lt;code&gt;text-wrap&lt;/code&gt;, que permite a los desarrolladores definir con precisión cómo se comportan los saltos de línea en nuestros textos, algo que se necesitaba hace mucho tiempo.&lt;/p&gt;
&lt;h2 id=&#34;qué-es-text-wrap&#34;&gt;¿Qué es text-wrap?&lt;/h2&gt;
&lt;p&gt;La propiedad &lt;code&gt;text-wrap&lt;/code&gt; está diseñada para gestionar el comportamiento de los saltos de línea en bloques de texto, ofreciendo valores como &lt;code&gt;wrap&lt;/code&gt;, &lt;code&gt;nowrap&lt;/code&gt;, &lt;code&gt;balance&lt;/code&gt; y &lt;code&gt;stable&lt;/code&gt;. Cada uno de estos valores proporciona diferentes opciones para controlar cómo el texto se adapta a los diferentes tamaños de pantalla.&lt;/p&gt;
&lt;h3 id=&#34;el-problema-de-los-textos-solitarios&#34;&gt;El problema de los textos solitarios&lt;/h3&gt;
&lt;p&gt;Uno de los problemas comunes en el diseño web responsive es la aparición de palabras solitarias en la última línea de un párrafo, especialmente en encabezados. Estas palabras aisladas (conocidas como &lt;em&gt;huérfanas&lt;/em&gt; en tipografía) pueden afectar negativamente el equilibrio visual y la legibilidad. Tradicionalmente, resolver esto  requería soluciones con &lt;em&gt;JavaScript&lt;/em&gt; o técnicas de &lt;em&gt;CSS&lt;/em&gt; como agregar un expacio a través de &lt;code&gt;&amp;amp;nbsp;&lt;/code&gt; entre las últimas palabras del texto. Pésimas soluciones.&lt;/p&gt;
&lt;h2 id=&#34;text-wrap-pretty&#34;&gt;text-wrap: pretty&lt;/h2&gt;
&lt;p&gt;El valor &lt;code&gt;pretty&lt;/code&gt; de la propiedad &lt;code&gt;text-wrap&lt;/code&gt; está diseñado específicamente para evitar estas palabras solitarias. Cuando se aplica, el navegador ajusta automáticamente el texto para asegurar que al menos dos palabras aparezcan en la última línea de un párrafo o encabezado.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;h1&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;text-wrap&lt;/span&gt;: pretty;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esto es particularmente útil para mejorar la apariencia de títulos y encabezados en diseños responsive, donde el ancho del contenedor puede cambiar significativamente según el dispositivo.&lt;/p&gt;
&lt;h2 id=&#34;text-wrap-balance&#34;&gt;text-wrap: balance&lt;/h2&gt;
&lt;p&gt;Otro valor interesante es &lt;code&gt;balance&lt;/code&gt;, que distribuye las palabras de manera más equilibrada entre todas las líneas. Esto es especialmente valioso para bloques de texto cortos como titulares, donde se busca una distribución visual óptima.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;h2&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;text-wrap&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;balance&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;demo&#34;&gt;Demo&lt;/h3&gt;
&lt;p&gt;Preferí no hacer una demo propia porque ya hay una muy completa en &lt;a href=&#34;https://codepen.io/jensimmons/pen/xxvoqNM?editors=1100&#34;&gt;CodePen&lt;/a&gt;:&lt;/p&gt;
&lt;p class=&#34;codepen&#34; data-height=&#34;450&#34; data-default-tab=&#34;result&#34; data-slug-hash=&#34;xxvoqNM&#34; data-pen-title=&#34;text-wrap: pretty&#34; data-user=&#34;jensimmons&#34; style=&#34;height: 450px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&#34;&gt;
  &lt;span&gt;See the Pen &lt;a href=&#34;https://codepen.io/jensimmons/pen/xxvoqNM&#34;&gt;
  text-wrap: pretty&lt;/a&gt; by Jen Simmons (&lt;a href=&#34;https://codepen.io/jensimmons&#34;&gt;@jensimmons&lt;/a&gt;)
  on &lt;a href=&#34;https://codepen.io&#34;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;script async src=&#34;https://public.codepenassets.com/embed/index.js&#34;&gt;&lt;/script&gt;
&lt;h3 id=&#34;combinando-con-otras-propiedades-de-texto&#34;&gt;Combinando con otras propiedades de texto&lt;/h3&gt;
&lt;p&gt;La propiedad &lt;code&gt;text-wrap&lt;/code&gt; se complementa perfectamente con otras propiedades de &lt;em&gt;CSS&lt;/em&gt; para control tipográfico, como &lt;code&gt;hyphens&lt;/code&gt;, &lt;code&gt;word-break&lt;/code&gt; y &lt;code&gt;overflow-wrap&lt;/code&gt;. Juntas, estas propiedades ofrecen un toolkit completo para optimizar la legibilidad y apariencia de nuestros textos en la web.&lt;/p&gt;
&lt;h3 id=&#34;soporte-en-navegadores&#34;&gt;Soporte en navegadores&lt;/h3&gt;
&lt;p&gt;El soporte para &lt;code&gt;text-wrap&lt;/code&gt; ya está disponible en varios navegadores modernos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;text-wrap: balance&lt;/code&gt; está soportado en &lt;em&gt;Chrome&lt;/em&gt; y navegadores basados en &lt;em&gt;Chromium&lt;/em&gt; desde la versión 113,
&lt;em&gt;Safari&lt;/em&gt; y &lt;em&gt;Firefox&lt;/em&gt; también han incorporado soporte para esta propiedad.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text-wrap: pretty&lt;/code&gt; está disponible en &lt;em&gt;Chrome&lt;/em&gt; 114+ y &lt;em&gt;Edge&lt;/em&gt; 114+&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;links&#34;&gt;Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/es/docs/Web/CSS/text-wrap&#34;&gt;text-wrap en MDN Web Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.w3.org/TR/css-text-4/&#34;&gt;CSS Text Module Level 4 en W3C&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>¿Qué es @container en CSS y cómo se usa?</title>
      <link>https://csslab.cl/2025/04/09/propiedad-css-container/</link>
      <pubDate>Wed, 09 Apr 2025 01:08:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2025/04/09/propiedad-css-container/</guid>
      <description>&lt;p&gt;En el mundo del diseño web, la adaptabilidad es clave. Ya tenemos &lt;code&gt;@media&lt;/code&gt; para adaptar nuestros estilos a distintos tamaños de pantalla, pero ¿qué pasa si queremos que un componente cambie su estilo según el tamaño de su contenedor y no del viewport? Ahí entra en juego una nueva y poderosa herramienta: &lt;code&gt;@container&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En este artículo te explico qué es, cómo se usa y te muestro ejemplos prácticos para que empieces a usarlo hoy mismo.&lt;/p&gt;</description>
      <content>&lt;p&gt;En el mundo del diseño web, la adaptabilidad es clave. Ya tenemos &lt;code&gt;@media&lt;/code&gt; para adaptar nuestros estilos a distintos tamaños de pantalla, pero ¿qué pasa si queremos que un componente cambie su estilo según el tamaño de su contenedor y no del viewport? Ahí entra en juego una nueva y poderosa herramienta: &lt;code&gt;@container&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En este artículo te explico qué es, cómo se usa y te muestro ejemplos prácticos para que empieces a usarlo hoy mismo.&lt;/p&gt;
&lt;h2 id=&#34;qué-es-container&#34;&gt;¿Qué es @container?&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;@container&lt;/code&gt; es una regla de CSS (también conocida como &lt;em&gt;Container Queries&lt;/em&gt;) que permite aplicar estilos a un elemento en función del tamaño de su contenedor, no del tamaño de la ventana del navegador.&lt;/p&gt;
&lt;p&gt;Esto permite que los componentes sean realmente adaptables, lo cual es muy útil en diseños modulares y reutilizables. Antes de usarlo, necesitas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Definir qué elemento actuará como contenedor usando la propiedad &lt;code&gt;container-type&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Escribir reglas &lt;code&gt;@container&lt;/code&gt; dentro del CSS.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;card&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  container-type: &lt;span style=&#34;color:#66d9ef&#34;&gt;inline&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;size&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Esto le indica al navegador: &lt;em&gt;Observa el ancho de este elemento para aplicar las reglas siguientes&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;ejemplo-básico-cambiar-layout-de-una-tarjeta&#34;&gt;Ejemplo básico: Cambiar layout de una tarjeta&lt;/h2&gt;
&lt;p&gt;Supongamos que tienes una tarjeta &lt;code&gt;.card&lt;/code&gt; con un título y una imagen. Puedes hacer que el diseño cambie si el contenedor es más ancho de 400px:&lt;/p&gt;
&lt;h3 id=&#34;html&#34;&gt;HTML:&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;card&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;img&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;src&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;foto.jpg&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;alt&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Foto&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;h2&lt;/span&gt;&amp;gt;Título de la tarjeta&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;h2&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;css&#34;&gt;CSS:&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;card&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  container-type: &lt;span style=&#34;color:#66d9ef&#34;&gt;inline&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;size&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;solid&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;#ccc&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;padding&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;rem&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;display&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;grid&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  gap: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;rem&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@&lt;span style=&#34;color:#66d9ef&#34;&gt;container&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;min-width&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;400px&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  .&lt;span style=&#34;color:#a6e22e&#34;&gt;card&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;grid-template-columns&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;fr &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;fr;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;align-items&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;center&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  .&lt;span style=&#34;color:#a6e22e&#34;&gt;card&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;img&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;max-width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;150&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En este ejemplo, si el contenedor es más ancho de 400px, imagen y texto dentro de la tarjeta se ordenan en columnas.&lt;/p&gt;
&lt;h2 id=&#34;consultas-más-específicas-container-name&#34;&gt;Consultas más específicas: container-name&lt;/h2&gt;
&lt;p&gt;Si necesitas aplicar reglas a un contenedor específico, puedes usar &lt;code&gt;container-name&lt;/code&gt; y hacer consultas específicas:&lt;/p&gt;
&lt;h3 id=&#34;css-1&#34;&gt;CSS:&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;sidebar&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  container-type: &lt;span style=&#34;color:#66d9ef&#34;&gt;inline&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;size&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  container-name: sidebar-container;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@&lt;span style=&#34;color:#66d9ef&#34;&gt;container&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;sidebar-container&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;min-width&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;300px&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  .&lt;span style=&#34;color:#a6e22e&#34;&gt;widget&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;display&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;flex&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;demo&#34;&gt;Demo:&lt;/h2&gt;
&lt;p class=&#34;codepen&#34; data-height=&#34;500&#34; data-default-tab=&#34;html,result&#34; data-slug-hash=&#34;XJWwQxa&#34; data-pen-title=&#34;Untitled&#34; data-user=&#34;juanbrujo&#34; style=&#34;height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&#34;&gt;
  &lt;span&gt;See the Pen &lt;a href=&#34;https://codepen.io/juanbrujo/pen/XJWwQxa&#34;&gt;
  Untitled&lt;/a&gt; by Jorge Epuñan (&lt;a href=&#34;https://codepen.io/juanbrujo&#34;&gt;@juanbrujo&lt;/a&gt;)
  on &lt;a href=&#34;https://codepen.io&#34;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;script async src=&#34;https://public.codepenassets.com/embed/index.js&#34;&gt;&lt;/script&gt;
&lt;h3 id=&#34;links&#34;&gt;Links:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://caniuse.com/css-container-queries&#34; target=&#34;_blank&#34;&gt;CSS Container Queries en Can I Use&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codepen.io/collection/XQrgJo&#34; target=&#34;_blank&#34;&gt;Container Queries demos&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/GoogleChromeLabs/container-query-polyfill&#34; target=&#34;_blank&#34;&gt;container-query-polyfill&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Transparencia a un color declarado como variable en CSS</title>
      <link>https://csslab.cl/2024/12/19/transparencia-color-variable/</link>
      <pubDate>Thu, 19 Dec 2024 01:08:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2024/12/19/transparencia-color-variable/</guid>
      <description>&lt;p&gt;Una tarea común en el diseño es aplicar transparencia a un color, y con técnicas más actuales, colores definidos como variable. Esto puede lograrse con pre-procesadores CSS y nativamente utilizando combinaciones de sintaxis modernas como rgba(), hsla() y otros ya soportados ampliamente. Este artículo explica cómo manejar esta necesidad técnica con ejemplos prácticos.&lt;/p&gt;</description>
      <content>&lt;p&gt;Una tarea común en el diseño es aplicar transparencia a un color, y con técnicas más actuales, colores definidos como variable. Esto puede lograrse con pre-procesadores CSS y nativamente utilizando combinaciones de sintaxis modernas como rgba(), hsla() y otros ya soportados ampliamente. Este artículo explica cómo manejar esta necesidad técnica con ejemplos prácticos.&lt;/p&gt;
&lt;h2 id=&#34;definir-variables-de-color-en-css&#34;&gt;Definir Variables de Color en CSS&lt;/h2&gt;
&lt;p&gt;Las variables CSS se declaran dentro de un selector, generalmente &lt;code&gt;:root&lt;/code&gt; para que estén disponibles globalmente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;root&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --color-principal: &lt;span style=&#34;color:#ae81ff&#34;&gt;#3498db&lt;/span&gt;; &lt;span style=&#34;color:#75715e&#34;&gt;/* Azul claro */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esta declaración permite reutilizar &lt;code&gt;--color-principal&lt;/code&gt; en cualquier lugar del código.&lt;/p&gt;
&lt;h2 id=&#34;la-transparencia-en-css&#34;&gt;La transparencia en CSS&lt;/h2&gt;
&lt;p&gt;Para agregar transparencia a un color, CSS ofrece funciones como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;rgba()&lt;/strong&gt;: Permite especificar colores en el formato RGB con un canal alfa para controlar la opacidad:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;color&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;rgba&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;52&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;152&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;219&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;0&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;/* color azul con 50% de opacidad */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;hsla()&lt;/strong&gt;: Similar a &lt;code&gt;rgba()&lt;/code&gt;, pero usa el modelo de color HSL (Hue, Saturation, Lightness):&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;color&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;hsla&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;204&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;70&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%,&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;53&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%,&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;0&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;/* azul con 50% de opacidad */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Como notarás, para definir colores utilizando rgba() y hsla() necesitas convertir la variable en hexacromía, lo que implica un nuevo impedimento. Pero encontré una propiedad que soluciona mi problema a la perfección:&lt;/p&gt;
&lt;h2 id=&#34;la-función-color-mix&#34;&gt;La función color-mix()&lt;/h2&gt;
&lt;p&gt;A partir de &lt;a href=&#34;https://www.w3.org/TR/css-color-5/&#34;&gt;CSS Color Module Level 5&lt;/a&gt;, &lt;code&gt;color-mix()&lt;/code&gt; permite mezclar colores en hexacromía declarados como variables directamente con transparencia:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;root&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --color-principal: &lt;span style=&#34;color:#ae81ff&#34;&gt;#3498db&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;elemento&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#a6e22e&#34;&gt;color-mix&lt;/span&gt;(in srgb, &lt;span style=&#34;color:#a6e22e&#34;&gt;var&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;--&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;color&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;principal) &lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;transparent&lt;/span&gt;); &lt;span style=&#34;color:#75715e&#34;&gt;/* variable CSS con 50% de opacidad */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;links&#34;&gt;Links:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Soporte de navegadores de CSS color-mix en &lt;a href=&#34;https://caniuse.com/mdn-css_types_color_color-mix&#34;&gt;Can I Use&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Vite &#43; Vue &#43; Ant Design System &#43; custom design</title>
      <link>https://csslab.cl/2022/12/18/vite-vue-antdv-custom/</link>
      <pubDate>Sun, 18 Dec 2022 01:08:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2022/12/18/vite-vue-antdv-custom/</guid>
      <description>&lt;p&gt;En un &lt;a href=&#34;https://producthackers.com/es/blog/design-system&#34;&gt;Design System&lt;/a&gt; que estoy trabajando actualmente, el stack consiste en: &lt;a href=&#34;https://vitejs.dev/&#34;&gt;Vite&lt;/a&gt;, &lt;a href=&#34;https://vuejs.org/&#34;&gt;Vue&lt;/a&gt;, &lt;a href=&#34;https://antdv.com/docs/vue/introduce&#34;&gt;Ant Design System (Antdv)&lt;/a&gt; y otras librerías. Mi intención es customizar &lt;strong&gt;Antdv&lt;/strong&gt; con tal de no crear nuevas clases o sobreescribir estilos sino nativamente crear la identidad gráfica, a través de custom variables de &lt;strong&gt;Antdv&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;El proceso no fue corto y finalmente encontré la receta, la que muestro en este artículo con tal de ayudar a alguien más.&lt;/p&gt;</description>
      <content>&lt;p&gt;En un &lt;a href=&#34;https://producthackers.com/es/blog/design-system&#34;&gt;Design System&lt;/a&gt; que estoy trabajando actualmente, el stack consiste en: &lt;a href=&#34;https://vitejs.dev/&#34;&gt;Vite&lt;/a&gt;, &lt;a href=&#34;https://vuejs.org/&#34;&gt;Vue&lt;/a&gt;, &lt;a href=&#34;https://antdv.com/docs/vue/introduce&#34;&gt;Ant Design System (Antdv)&lt;/a&gt; y otras librerías. Mi intención es customizar &lt;strong&gt;Antdv&lt;/strong&gt; con tal de no crear nuevas clases o sobreescribir estilos sino nativamente crear la identidad gráfica, a través de custom variables de &lt;strong&gt;Antdv&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;El proceso no fue corto y finalmente encontré la receta, la que muestro en este artículo con tal de ayudar a alguien más.&lt;/p&gt;
&lt;p&gt;Desde ya dejo el &lt;a href=&#34;https://github.com/juanbrujo/vite-vue-antdv-custom&#34;&gt;enlace al repositorio funcional&lt;/a&gt; donde puedes verificar la funcionalidad.&lt;/p&gt;
&lt;h2 id=&#34;el-proceso&#34;&gt;El proceso&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Instala con &lt;strong&gt;NPM&lt;/strong&gt;, &lt;strong&gt;Yarn&lt;/strong&gt; o el &lt;em&gt;bundler&lt;/em&gt; que quieras: &lt;strong&gt;Vite&lt;/strong&gt;, &lt;strong&gt;Vue&lt;/strong&gt;, &lt;strong&gt;Ant Design System Vue&lt;/strong&gt; (no mostraré este proceso ya que asumo que sabrían como hacerlo en su proyecto actual o nuevo). Es importante que consideres utilizar la librería &lt;a href=&#34;https://github.com/antfu/unplugin-vue-components&#34;&gt;unplugin-vue-components&lt;/a&gt; la que permite que puedas importar &lt;strong&gt;Antdv&lt;/strong&gt; por módulos sin tener que declararlos manualmente, sino lo hace automágicamente. Esta es la configuración recomendada para esta stack. Además, necesitarás instalas la librería &lt;a href=&#34;https://www.npmjs.com/package/less&#34;&gt;Less&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;instalación-original&#34;&gt;Instalación original&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://i.imgur.com/26LRjS6.png&#34; alt=&#34;Antdv original&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;la-configuración&#34;&gt;La configuración&lt;/h2&gt;
&lt;p&gt;Aquí la receta especial. En tu archivo &lt;strong&gt;vite.config.(ts|js)&lt;/strong&gt; verifica lo siguiente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; { &lt;span style=&#34;color:#a6e22e&#34;&gt;defineConfig&lt;/span&gt; } &lt;span style=&#34;color:#a6e22e&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;vite&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;vue&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;@vitejs/plugin-vue&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Components&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;unplugin-vue-components/vite&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; { &lt;span style=&#34;color:#a6e22e&#34;&gt;AntDesignVueResolver&lt;/span&gt; } &lt;span style=&#34;color:#a6e22e&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;unplugin-vue-components/resolvers&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;default&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;defineConfig&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;plugins&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;Components&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;resolvers&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [&lt;span style=&#34;color:#a6e22e&#34;&gt;AntDesignVueResolver&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        { &lt;span style=&#34;color:#a6e22e&#34;&gt;importStyle&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;less&amp;#34;&lt;/span&gt; }  &lt;span style=&#34;color:#75715e&#34;&gt;// importante
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;      )],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;css&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;preprocessorOptions&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; { &lt;span style=&#34;color:#75715e&#34;&gt;// modifica aquí las variables de Less que necesites
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;less&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;modifyVars&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;primary-color&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#1DA57A&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;link-color&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#1DA57A&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;border-radius-base&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;16px&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;javascriptEnabled&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;antdv-modificado&#34;&gt;Antdv modificado&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://i.imgur.com/19uPcGe.png&#34; alt=&#34;Antdv modificado&#34;&gt;&lt;/p&gt;
&lt;p&gt;Puedes verificar &lt;a href=&#34;https://github.com/vueComponent/ant-design-vue/blob/main/components/style/themes/default.less&#34;&gt;todas las variables Less de Antdv en su repositorio&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;ver-demohttpsvite-vue-antdv-customnetlifyapp&#34;&gt;&lt;a href=&#34;https://vite-vue-antdv-custom.netlify.app/&#34;&gt;Ver demo&lt;/a&gt;&lt;/h3&gt;</content>
    </item>
    
    <item>
      <title>Pensamientos del futuro próximo</title>
      <link>https://csslab.cl/2021/12/16/pensamientos-del-futuro-proximo/</link>
      <pubDate>Fri, 17 Dec 2021 01:08:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2021/12/16/pensamientos-del-futuro-proximo/</guid>
      <description>Este artículo contiene pensamientos, experiencias personales y mucha observación de comportamiento. Espero sea útil.
Tenía reservada una hora médica y al pagar le pregunto a la asistente: «¿Para reservar un examen radiológico lo puedo hacer aquí mismo?» A lo que me responde: «No señorito, lo hace en el piso 1 o por internet o envía un correo a qwerty@examenes.xyz». Me siento a esperar mi hora y observo un tótem donde con tu identificación obtienes un número para que te atienda un humano, como lo acababa de hacer.</description>
      <content>&lt;p&gt;Este artículo contiene pensamientos, experiencias personales y mucha observación de comportamiento. Espero sea útil.&lt;/p&gt;
&lt;p&gt;Tenía reservada una hora médica y al pagar le pregunto a la asistente: &lt;em&gt;«¿Para reservar un examen radiológico lo puedo hacer aquí mismo?»&lt;/em&gt; A lo que me responde: &lt;em&gt;«No señorito, lo hace en el piso 1 o por internet o envía un correo a &lt;a href=&#34;mailto:qwerty@examenes.xyz&#34;&gt;qwerty@examenes.xyz&lt;/a&gt;»&lt;/em&gt;. Me siento a esperar mi hora y observo un tótem donde con tu identificación obtienes un número para que te atienda un humano, como lo acababa de hacer. Observo más gentes con sus teléfonos móviles esperando.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recordé que hace unos días le pedí a mi sobrino de 13 años que le buscara por internet a su abuela (mi mamá) una receta de cocina que quiere hacer. Le pedí además si lo hacía en su computador (tiene uno para jugar, con más luces que teclas claro) así podría leer mejor las recetas. Me dijo que mejor en el celular y lo proyectaba en el televisor para que se viera grande. «Gracias» – le dije y me preguntó finalmente:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;«¿Lo busco en Youtube?»&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ambas historias las relacioné recién sentado esperando al médico. Nuestro oficio tiene las horas contadas. Programar, diseñar, crear para web ya no puede ser así. No va a ser tal y como lo hemos hecho.&lt;/p&gt;
&lt;p&gt;Si piensas, adultos de más de 60 años apenas entran a la web por sus móviles y utilizando aplicaciones (de comunicación) básicamente; la juventud de hasta 16 años seguro ni conoce un &lt;em&gt;browser&lt;/em&gt; (se lo preguntaré a mi sobrino). Los que tenemos entre 23 y 55 años probablemente utilizamos computadores para trabajar (ofimática, programar, utilizar algún sistema interno hecho para Internet Explorer, enfin) y aún nos son útiles. Pero en el dia-a-dia, apenas utilizamos el navegador en nuestros mismos teléfonos.&lt;/p&gt;
&lt;p&gt;Sentado pensando esto mismo intenté agendar una hora para el examen antes mencionado utilizando Safari iOS y me costó un montón, y finalmente siendo un &lt;em&gt;heavy-user&lt;/em&gt; no lo terminé.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i.imgur.com/PGkvUAK.jpg&#34; alt=&#34;Esperando&#34;&gt;&lt;/p&gt;
&lt;p&gt;Lo que hacemos día a día tiene que cambiar pronto, para bien y no para peor.&lt;/p&gt;
&lt;p&gt;Pensar en la web como un medio de propagación de datos y ya no de despliegue de información.&lt;/p&gt;
&lt;p&gt;Olvidarse del browser y comenzar a pensar en motores de renderizado.&lt;/p&gt;
&lt;p&gt;Aplicar finalmente &lt;em&gt;webapps&lt;/em&gt; o aplicaciones híbridas como el fin último y no como un medio más. Recordé cuando en MacOS X aprendí a hacer &lt;a href=&#34;http://www.csslab.cl/2007/08/10/conditional-comments-el-widget/&#34; title=&#34;Enlace a Widget&#34;&gt;widgets&lt;/a&gt;, con HTML, CSS y JavaScript te permitía acceder algunas funciones del &lt;em&gt;filesystem&lt;/em&gt; del sistema operativo y a través de éste a algunas funcionalidades del &lt;em&gt;hardware&lt;/em&gt;. Luego creabas un &lt;em&gt;manifest.json&lt;/em&gt; le agregabas a la carpeta la extensión &lt;code&gt;.widget&lt;/code&gt; y ya estaba empaquetado y funcional para al doble-clic activarse. Las &lt;a href=&#34;https://es.wikipedia.org/wiki/Aplicaci%C3%B3n_web_progresiva&#34; title=&#34;Enlace a Aplicación web progresiva&#34;&gt;PWA&lt;/a&gt; llegaron mucho después.&lt;/p&gt;
&lt;p&gt;Tanto hardware diferente que podrían resumirse en pocos que interactúen con las personas directamente (cosas de películas pero que sabemos ya son realizables). Imaginé ese mismo tótem con mi identidad me mostró quien era y con que doctor y hora era mi atención, podría desplegar el medio de pago, seleccionar el seguro médico y entregarme el valor final y cobrarlo con mi tarjeta. Todo por API’s. Nada del otro mundo.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i.imgur.com/vnpKh15.jpg&#34; alt=&#34;Viejo Hardware&#34;&gt;&lt;/p&gt;
&lt;p&gt;Olvidarse de crear interfaces responsive sino que dedicadas al motor de renderizado, quien se encarga de mostrarlo correctamente en el dispositivo adecuado (sea un teléfono celular, un tótem de auto-atención o una aplicación de red social.&lt;/p&gt;
&lt;p&gt;Y que finalmente las empresas de software dejen de gastar tiempo, dinero y talento en &lt;a href=&#34;http://www.csslab.cl/etiqueta/frameworks/&#34; title=&#34;Enlace a CSSLab Etiqueta Frameworks&#34;&gt;frameworks&lt;/a&gt; librerías y herramientas sino en estandarizar y actualizar el código y las reglas que tendremos que aplicar y que tienen que soportar.&lt;/p&gt;
&lt;p&gt;Esta web tan divergente tiene que llegar a un fin, para nuestro bien, ya no es sano.&lt;/p&gt;
&lt;p&gt;Pienso que pronto ya nadie usará Internet tal como la hemos construido. Tiene los dias contados, ya no tiene sentido.&lt;/p&gt;
&lt;p&gt;Pasamos de una web de los ’90 lleno de información a una web del 2021 totalmente volcada a la multimedia y a vender lo que sea, con tal de monetizar fácil y rápidamente. No veo una vuelta atrás en esto.&lt;/p&gt;
&lt;p&gt;Pienso que ya no necesitamos esa web, que quede como un rezago como aún lo son una &lt;a href=&#34;https://es.wikipedia.org/wiki/Bulletin_Board_System&#34; title=&#34;Enlace a Bulletin Board System&#34;&gt;BBS&lt;/a&gt;, &lt;a href=&#34;https://es.wikipedia.org/wiki/Gopher&#34; title=&#34;Enlace a Gopher&#34;&gt;Gopher&lt;/a&gt;, &lt;a href=&#34;https://es.wikipedia.org/wiki/Internet_Relay_Chat&#34; title=&#34;Enlace a Internet Relay Chat&#34;&gt;IRC&lt;/a&gt; y porque no los &lt;em&gt;blogs&lt;/em&gt; y el mismo &lt;em&gt;e-mail&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i.imgur.com/km2PUy0.jpg&#34; alt=&#34;&#34; title=&#34;Fin&#34;&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Evento clear de un input search</title>
      <link>https://csslab.cl/2020/12/19/evento-clear-de-un-input-typesearch/</link>
      <pubDate>Sun, 20 Dec 2020 01:24:38 +0000</pubDate>
      
      <guid>https://csslab.cl/2020/12/19/evento-clear-de-un-input-typesearch/</guid>
      <description>&lt;p&gt;&lt;strong&gt;HTML5&lt;/strong&gt; hace años incorporó varios nuevos tipos de &lt;em&gt;input&lt;/em&gt;, entre ellos el &lt;em&gt;search&lt;/em&gt;. Este nuevo input -aparte de semántico- coloca una &lt;code&gt;✕&lt;/code&gt; para borrar el valor ingresado en el input y comenzar de nuevo con la búsqueda.&lt;/p&gt;</description>
      <content>&lt;p&gt;&lt;strong&gt;HTML5&lt;/strong&gt; hace años incorporó varios nuevos tipos de &lt;em&gt;input&lt;/em&gt;, entre ellos el &lt;em&gt;search&lt;/em&gt;. Este nuevo input -aparte de semántico- coloca una &lt;code&gt;✕&lt;/code&gt; para borrar el valor ingresado en el input y comenzar de nuevo con la búsqueda.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://csslab.cl/wp-content/uploads/2020/12/input.gif&#34; alt=&#34;input search&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/2009/03/06/tip-precoz-4-input-typesearch/&#34;&gt;En sus comienzos&lt;/a&gt; este comportamiento fue ignorado por muchos desarrolladores ya que era propietario de Safari (Webkit) pero actualmente con soporte más amplio, me ví en el caso de tener que utilizar este evento &lt;em&gt;clear&lt;/em&gt;, con el siguiente resultado: existe un nuevo evento para este input: &lt;em&gt;search&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Con el siguiente simple código veremos su comportamiento:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;search&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;searchbox&amp;#34;&lt;/span&gt; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;document.&lt;span style=&#34;color:#a6e22e&#34;&gt;getElementById&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;searchbox&amp;#34;&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;addEventListener&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;search&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;event&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;search X clicked&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://jsbin.com/yemaciyumi/1/edit?html,js,console,output&#34;&gt;Ver ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://caniuse.com/input-search&#34;&gt;Caniuse: input search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://caniuse.com/mdn-api_htmlinputelement_search_event&#34;&gt;Caniuse: search event&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Detectar dark-mode en browsers</title>
      <link>https://csslab.cl/2020/09/16/detectar-dark-mode-en-browsers/</link>
      <pubDate>Wed, 16 Sep 2020 15:13:06 +0000</pubDate>
      
      <guid>https://csslab.cl/2020/09/16/detectar-dark-mode-en-browsers/</guid>
      <description>Hace ya varios meses que diferentes sistemas operativos y aplicaciones traen como opcional el dark-mode, donde todo lo claro se ha vuelto oscuro. ¿Moda, accesibilidad? Realmente no he indagado, pero eso trae pequeños problemas en cuanto al uso de navegadores web. Me topé con uno en específico que me llevó a escribir este artículo.
Hechos: Navegando por Internet y con varios enlaces abiertos, veo que un favicon de color negro apenas se nota en el tab de color gris oscuro.</description>
      <content>&lt;p&gt;Hace ya varios meses que diferentes sistemas operativos y aplicaciones traen como opcional el &lt;em&gt;dark-mode&lt;/em&gt;, donde todo lo claro se ha vuelto oscuro. ¿Moda, accesibilidad? Realmente no he indagado, pero eso trae pequeños problemas en cuanto al uso de navegadores web. Me topé con uno en específico que me llevó a escribir este artículo.&lt;/p&gt;
&lt;h3 id=&#34;hechos&#34;&gt;Hechos:&lt;/h3&gt;
&lt;p&gt;Navegando por Internet y con varios enlaces abiertos, veo que un favicon de color negro apenas se nota en el tab de color gris oscuro.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;//www.csslab.cl/wp-content/uploads/2020/09/Untitled-1.jpg&#34; alt=&#34;Detectar dark-mode en browsers&#34;&gt;&lt;/p&gt;
&lt;p&gt;Pequeño problema pero solucionable. Hay 2 técnicas para detectar el &lt;em&gt;dark-mode&lt;/em&gt; en el browser: con CSS y con JS. Veamos ambos códigos:&lt;/p&gt;
&lt;h3 id=&#34;css&#34;&gt;CSS:&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Dark-mode */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@&lt;span style=&#34;color:#66d9ef&#34;&gt;media&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;prefers-color-scheme&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;dark&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;body&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;black&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;color&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;white&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* Light-mode */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@&lt;span style=&#34;color:#66d9ef&#34;&gt;media&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;prefers-color-scheme&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;light&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;body&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;white&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;color&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;black&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/darkmode/ejemplocssdarkmode.html&#34;&gt;CSS Dark-mode&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;js&#34;&gt;JS:&lt;/h3&gt;
&lt;p&gt;Para hacerlo con JavaScript &lt;a href=&#34;https://www.csslab.cl/2015/02/17/detectando-media-queries-con-javascript/&#34;&gt;debes detectar&lt;/a&gt; el mismo &lt;code&gt;@media (prefers-color-scheme: dark)&lt;/code&gt; para luego retornar &lt;code&gt;true/false&lt;/code&gt; y hacer lo que quieras con el DOM:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;window.&lt;span style=&#34;color:#a6e22e&#34;&gt;matchMedia&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;(prefers-color-scheme: dark)&amp;#39;&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;matches&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Por ejemplo, en el siguiente código cambiamos el favicon.ico si tiene el modo dark habilitado:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;favicon&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; document.&lt;span style=&#34;color:#a6e22e&#34;&gt;querySelector&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;#favicon&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (window.&lt;span style=&#34;color:#a6e22e&#34;&gt;matchMedia&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    window.&lt;span style=&#34;color:#a6e22e&#34;&gt;matchMedia&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;(prefers-color-scheme: dark)&amp;#39;&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;matches&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;favicon&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;favicon-dark.ico&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/darkmode/ejemplojsdarkmode.html&#34;&gt;Dark-mode JS&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://caniuse.com/?search=prefers-color-scheme&#34;&gt;Can I Use: prefers-color-scheme media query&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://flaviocopes.com/javascript-detect-dark-mode/&#34;&gt;How to detect dark mode using JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </item>
    
    <item>
      <title>Evitar el spam del mailto (el que he utilizado)</title>
      <link>https://csslab.cl/2019/03/08/evitar-el-spam-del-mailto-el-que-he-utilizado/</link>
      <pubDate>Fri, 08 Mar 2019 13:36:50 +0000</pubDate>
      
      <guid>https://csslab.cl/2019/03/08/evitar-el-spam-del-mailto-el-que-he-utilizado/</guid>
      <description>&lt;p&gt;&lt;em&gt;Spambots&lt;/em&gt; aman &lt;em&gt;scrapear&lt;/em&gt; páginas para sacar emails para, evidentemente, mandar email spam. En este corto artículo presentaré la técnica que he utilizado y ha sido efectivo, además la encuentro simple entre varias que analicé. Incluye HTML, CSS y opcional (puedes seguir utilizando &lt;strong&gt;href=&amp;ldquo;mailto:nombre@email.com&amp;rdquo;&lt;/strong&gt; un poco de JavaScript para hacerle aún más difícil el trabajo al &lt;em&gt;spambot&lt;/em&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;&lt;em&gt;Spambots&lt;/em&gt; aman &lt;em&gt;scrapear&lt;/em&gt; páginas para sacar emails para, evidentemente, mandar email spam. En este corto artículo presentaré la técnica que he utilizado y ha sido efectivo, además la encuentro simple entre varias que analicé. Incluye HTML, CSS y opcional (puedes seguir utilizando &lt;strong&gt;href=&amp;ldquo;mailto:nombre@email.com&amp;rdquo;&lt;/strong&gt; un poco de JavaScript para hacerle aún más difícil el trabajo al &lt;em&gt;spambot&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Tenemos un clásico enlace con el email:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mailto:nombre@email.com&amp;#34;&lt;/span&gt;&amp;gt;nombre@email.com&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;tip-1&#34;&gt;Tip 1:&lt;/h2&gt;
&lt;p&gt;Revertimos el texto con el email dentro de la etiqueta &lt;strong&gt;&lt;a&gt;&lt;/strong&gt; para volver a revertirlo con CSS:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mailto:nombre@email.com&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;reverse&amp;#34;&lt;/span&gt;&amp;gt;moc.liame@erbmon&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;reverse&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;unicode-bidi&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;bidi-override&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;direction&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;rtl&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;tip-2&#34;&gt;Tip 2:&lt;/h2&gt;
&lt;p&gt;Quitamos el &lt;strong&gt;mailto=&amp;quot;&amp;quot;&lt;/strong&gt; el cual también puede ser scrapeado y con un poco de JavaScript hacemos accesible el poder utilizarlo para abrir un cliente de correo al clic:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;reverse&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;data-name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;nombre&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;data-domain&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;email&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;data-tld&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;com&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;onclick&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;window.location.href = `mailto:${this.dataset.name}@${this.dataset.domain}.${this.dataset.tld}`; return false;&amp;#34;&lt;/span&gt;&amp;gt;moc.liame@erbmon&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si no te gusta el &lt;strong&gt;onclick=&amp;quot;&amp;quot;&lt;/strong&gt; en el markup puedes generar una función con el mismo comportamiento.&lt;/p&gt;
&lt;h3 id=&#34;ver-resultado-final&#34;&gt;Ver resultado final:&lt;/h3&gt;
&lt;h2 class=&#34;codepen&#34; data-height=&#34;550&#34; data-theme-id=&#34;dark&#34; data-default-tab=&#34;html,result&#34; data-user=&#34;juanbrujo&#34; data-slug-hash=&#34;QovxOe&#34; style=&#34;height: 339px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid black; margin: 1em 0; padding: 1em;&#34; data-pen-title=&#34;Avoid email spam trick&#34; id=&#34;codepen&#34;&gt;Codepen&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/juanbrujo/pen/QovxOe/&#34;&gt;Link ejemplo&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Reset de todas las propiedades CSS de selectores con una sola propiedad: all</title>
      <link>https://csslab.cl/2018/11/09/reset-de-todas-las-propiedades-css-de-selectores-con-una-sola-propiedad-all/</link>
      <pubDate>Fri, 09 Nov 2018 14:03:41 +0000</pubDate>
      
      <guid>https://csslab.cl/2018/11/09/reset-de-todas-las-propiedades-css-de-selectores-con-una-sola-propiedad-all/</guid>
      <description>Existe una propiedad CSS que remueve todas los estilos aplicados por el browser a un selector y la deja sin nada, desnuda y cruda. No me refiero a un reseter, menos a un normalizer. La propiedad all: unset; aplicada a un selector, por ejemplo, un &amp;lt;input /&amp;gt;, &amp;lt;button&amp;gt;, &amp;lt;select&amp;gt; y muchos otros que tienen diferencias de render entre browsers, puedes remover todo estilo aplicado por defecto y crear los tuyos de cero sin tener que sobre-escribirlos.</description>
      <content>&lt;p&gt;Existe una propiedad &lt;strong&gt;CSS&lt;/strong&gt; que remueve todas los estilos aplicados por el browser a un selector y la deja sin nada, desnuda y cruda. No me refiero a un reseter, menos a un normalizer. La propiedad &lt;code&gt;all: unset;&lt;/code&gt; aplicada a un selector, por ejemplo, un &lt;code&gt;&amp;lt;input /&amp;gt;, &amp;lt;button&amp;gt;, &amp;lt;select&amp;gt;&lt;/code&gt; y muchos otros que tienen diferencias de render entre browsers, puedes remover todo estilo aplicado por defecto y crear los tuyos de cero sin tener que sobre-escribirlos.&lt;/p&gt;
&lt;p&gt;Un ejemplo a continuación con los siguientes elementos HTML:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;button&lt;/span&gt;&amp;gt;button&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;button&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;input&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;select&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;option&lt;/span&gt;&amp;gt;select&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;option&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;select&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&amp;gt;link&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#34;codepen&#34; data-height=&#34;265&#34; data-theme-id=&#34;dark&#34; data-slug-hash=&#34;qQNZLW&#34; data-default-tab=&#34;html,result&#34; data-user=&#34;juanbrujo&#34; data-pen-title=&#34;Example 1: CSS all: unset property / value&#34; id=&#34;codepen&#34;&gt;Codepen&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/juanbrujo/pen/qQNZLW/&#34;&gt;Link ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Crearemos una clase &lt;strong&gt;CSS&lt;/strong&gt; para aplicar el estilo a las etiquetas y ver el resultado esperado:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;unstyle&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;all&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;unset&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#34;codepen&#34; data-height=&#34;265&#34; data-theme-id=&#34;dark&#34; data-slug-hash=&#34;xQOOKx&#34; data-default-tab=&#34;html,result&#34; data-user=&#34;juanbrujo&#34; data-pen-title=&#34;Example 2: CSS all: unset property / value&#34; id=&#34;codepen-1&#34;&gt;Codepen&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/juanbrujo/pen/xQOOKx/&#34;&gt;Link ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Al aplicar &lt;code&gt;all: unset;&lt;/code&gt; todo parece similar, solo texto los cuales puedes aún interactuar (button, input, select y link (si tuvieran algo). Ahora podemos crear estilos base para, por ejemplo, &lt;code&gt;.button&lt;/code&gt; donde el mismo estilo se aplique a todas las etiquetas que tengan esta clase:&lt;/p&gt;
&lt;h2 class=&#34;codepen&#34; data-height=&#34;265&#34; data-theme-id=&#34;dark&#34; data-slug-hash=&#34;QJEEyB&#34; data-default-tab=&#34;html,result&#34; data-user=&#34;juanbrujo&#34; data-pen-title=&#34;Example 3: CSS all: unset property / value&#34; id=&#34;codepen-2&#34;&gt;Codepen&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/juanbrujo/pen/QJEEyB/&#34;&gt;Link ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Como observan, no necesitamos quitar el &lt;code&gt;text-decoration: underline;&lt;/code&gt; del &lt;a&gt;o el &lt;code&gt;border: 0;&lt;/code&gt; del &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt;, simplemente escribimos el CSS que queremos para cualquier etiqueta que necesitamos se comporte como un botón.&lt;/p&gt;
&lt;h3 id=&#34;últimas-observaciones&#34;&gt;Últimas observaciones&lt;/h3&gt;
&lt;p&gt;Como consejo, no se les ocurra utilizar esta propiedad como su nuevo reseter / normalizar o algo por el estilo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;body&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;all&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;unset&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esta propiedad es para situaciones puntuales, como las que acabo de mostrar. Quizás para listas (ordenadas, desordenadas o de definición) y algunos otros elementos puntuales. Quizás sea útil para crear componentes de vista (UI components) en sus propias guías de estilos.&lt;/p&gt;
&lt;h4 id=&#34;soporte&#34;&gt;Soporte:&lt;/h4&gt;
&lt;p&gt;A la fecha de publicado este artículo no se ve mal:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i.imgur.com/7g4Qerx.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h4 id=&#34;link&#34;&gt;Link:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/es/docs/Web/CSS/all&#34;&gt;CSS all in MDN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://caniuse.com/#feat=css-all&#34;&gt;Can I Use: all&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </item>
    
    <item>
      <title>Autocorrección de input en móviles</title>
      <link>https://csslab.cl/2018/08/21/autocorreccion-de-inputs-en-moviles/</link>
      <pubDate>Tue, 21 Aug 2018 13:48:38 +0000</pubDate>
      
      <guid>https://csslab.cl/2018/08/21/autocorreccion-de-inputs-en-moviles/</guid>
      <description>&lt;p&gt;¿Se han enfrentado en un formulario al ingresar texto a un input el dispositivo te ofrece autocorregir lo ingresado? Es fastidioso con campos de password por ejemplo o cuando quieres ingresar un email o un nombre de usuario. Además, suelen capitalizar las primeras palabras. Bueno, se puede deshabilitar fácilmente utilizando 2 simples atributos:&lt;/p&gt;</description>
      <content>&lt;p&gt;¿Se han enfrentado en un formulario al ingresar texto a un input el dispositivo te ofrece autocorregir lo ingresado? Es fastidioso con campos de password por ejemplo o cuando quieres ingresar un email o un nombre de usuario. Además, suelen capitalizar las primeras palabras. Bueno, se puede deshabilitar fácilmente utilizando 2 simples atributos:&lt;/p&gt;
&lt;h3 id=&#34;autocorrectoff&#34;&gt;autocorrect=&amp;ldquo;off&amp;rdquo;&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;nombre_input&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;autocorrect&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;off&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;autocapitalizeoff&#34;&gt;autocapitalize=&amp;ldquo;off&amp;rdquo;&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;nombre_input&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;autocapitalize&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;off&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/autocomplete-moviles&#34;&gt;Ver ejemplo (en móvil)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;soporte&#34;&gt;Soporte:&lt;/h4&gt;
&lt;p&gt;Por ahora sólo iOS en Safari Mobile y Chrome. &lt;a href=&#34;https://developer.mozilla.org/es/docs/Web/HTML/Elemento/input#Atributos&#34; target=&#34;_blank&#34;&gt;Más info&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Centrando verticalmente IV: CSS Grid</title>
      <link>https://csslab.cl/2017/12/18/centrando-verticalmente-iv-css-grids/</link>
      <pubDate>Mon, 18 Dec 2017 21:20:33 +0000</pubDate>
      
      <guid>https://csslab.cl/2017/12/18/centrando-verticalmente-iv-css-grids/</guid>
      <description>&lt;p&gt;Con &lt;strong&gt;CSS Grid&lt;/strong&gt; a la vuelta de la esquina en cuanto a soporte &lt;em&gt;cross-browser&lt;/em&gt;, podemos ya considerarlo para centrar horizontal y verticalmente. De &lt;a href=&#34;http://www.csslab.cl/etiqueta/centrado-vertical/&#34;&gt;todos los artículos escritos anteriormente&lt;/a&gt; esta es lejos la manera más simple y fácil de lograr centrar un elemento respecto de su contenedor.&lt;/p&gt;</description>
      <content>&lt;p&gt;Con &lt;strong&gt;CSS Grid&lt;/strong&gt; a la vuelta de la esquina en cuanto a soporte &lt;em&gt;cross-browser&lt;/em&gt;, podemos ya considerarlo para centrar horizontal y verticalmente. De &lt;a href=&#34;http://www.csslab.cl/etiqueta/centrado-vertical/&#34;&gt;todos los artículos escritos anteriormente&lt;/a&gt; esta es lejos la manera más simple y fácil de lograr centrar un elemento respecto de su contenedor.&lt;/p&gt;
&lt;p&gt;HTML:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;container&amp;#34;&lt;/span&gt;&amp;gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;centered&amp;#34;&lt;/span&gt;&amp;gt;Centrado con CSS Grid&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;container&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;height&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;display&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;grid&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;centered&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;margin&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;auto&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#34;codepen&#34; data-height=&#34;400&#34; data-theme-id=&#34;dark&#34; data-slug-hash=&#34;PEZLWd&#34; data-default-tab=&#34;html,result&#34; data-user=&#34;juanbrujo&#34; id=&#34;codepen&#34;&gt;Codepen&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://codepen.io/juanbrujo/pen/PEZLWd/&#34;&gt;Link ejemplo&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>CSS3 @supports</title>
      <link>https://csslab.cl/2017/12/04/css3-supports/</link>
      <pubDate>Mon, 04 Dec 2017 14:05:39 +0000</pubDate>
      
      <guid>https://csslab.cl/2017/12/04/css3-supports/</guid>
      <description>&lt;p&gt;CSS @supports&lt;/p&gt;
&lt;p&gt;CSS3 trae consigo un nuevo selector como parte del grupo condicional &lt;em&gt;feature queries&lt;/em&gt;: &lt;strong&gt;@supports&lt;/strong&gt;. Esta regla (no es en sí un selector) prueba si el browser soporta cierto par de &lt;strong&gt;propiedad: valor&lt;/strong&gt; y los operadores &lt;strong&gt;AND, IN, OR&lt;/strong&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;CSS @supports&lt;/p&gt;
&lt;p&gt;CSS3 trae consigo un nuevo selector como parte del grupo condicional &lt;em&gt;feature queries&lt;/em&gt;: &lt;strong&gt;@supports&lt;/strong&gt;. Esta regla (no es en sí un selector) prueba si el browser soporta cierto par de &lt;strong&gt;propiedad: valor&lt;/strong&gt; y los operadores &lt;strong&gt;AND, IN, OR&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;uso&#34;&gt;Uso:&lt;/h3&gt;
&lt;p&gt;Por ejemplo, si se quiere determinar si el browser soporta CSS Grid, se utiliza la nomenclatura como a continuación:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@&lt;span style=&#34;color:#66d9ef&#34;&gt;supports&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;display&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;grid&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  .&lt;span style=&#34;color:#a6e22e&#34;&gt;wrapper&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;display&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;grid&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;grid-template-columns&lt;/span&gt;: &lt;span style=&#34;color:#a6e22e&#34;&gt;repeat&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;fr);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;grid-gap&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;grid-auto-rows&lt;/span&gt;: &lt;span style=&#34;color:#a6e22e&#34;&gt;minmax&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;auto&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  .&lt;span style=&#34;color:#a6e22e&#34;&gt;column-one&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;grid-column&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;grid-row&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/gagocobeki/edit?html,css,output,height=400px&#34;&gt;Ejemplo JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Para algo más complejo, en el siguiente ejemplo preguntamos si el browser no soporta CSS Grid para entregar un fallaback:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@&lt;span style=&#34;color:#66d9ef&#34;&gt;supports&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;display&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;grid&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; { &lt;span style=&#34;color:#66d9ef&#34;&gt;float&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;left&lt;/span&gt;; }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;soporte&#34;&gt;Soporte:&lt;/h3&gt;
&lt;p&gt;Actualmente su soporte es amplio en browsers modernos, salvo a la fecha de la excepción de IE11 el cual no tienen ningún soporte.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://csslab.cl/wp-content/uploads/2017/12/Screen-Shot-2017-12-04-at-10.54.49-1024x527.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;cuestionamiento&#34;&gt;Cuestionamiento:&lt;/h3&gt;
&lt;p&gt;Esto es algo personal, pero este &lt;em&gt;feature querie&lt;/em&gt; en específico me causa un regreso a la web que era reinada por los browsers y no por los estándares. Escribir código para navegadores específicos y dejar sin soporte a otros que no tienen las mismas características es volver un poco a la época de los &lt;em&gt;Applets&lt;/em&gt;, prefijos &lt;em&gt;-webkit -moz&lt;/em&gt; y otros. Ojalá sea sólo una impresión mía.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://caniuse.com/#feat=css-featurequeries&#34;&gt;CSS Feature Queries @caniuse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/es/docs/Web/CSS/@supports&#34;&gt;@supports @mdn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Input vacío con CSS</title>
      <link>https://csslab.cl/2017/07/05/input-vacio-con-css/</link>
      <pubDate>Wed, 05 Jul 2017 14:28:44 +0000</pubDate>
      
      <guid>https://csslab.cl/2017/07/05/input-vacio-con-css/</guid>
      <description>&lt;p&gt;Reto: diseñador envió una interfaz donde un color diferente no sólo al &lt;em&gt;placeholder&lt;/em&gt;, sino al &lt;em&gt;background-color&lt;/em&gt; del mismo input como se ve a continuación:&lt;/p&gt;</description>
      <content>&lt;p&gt;Reto: diseñador envió una interfaz donde un color diferente no sólo al &lt;em&gt;placeholder&lt;/em&gt;, sino al &lt;em&gt;background-color&lt;/em&gt; del mismo input como se ve a continuación:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2017/07/Screen-Shot-2017-07-05-at-09.42.26.png&#34; alt=&#34;Screen Shot 2017-07-05 at 09.42.26&#34; width=&#34;739&#34; height=&#34;216&#34; class=&#34;aligncenter size-full wp-image-2475&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2017/07/Screen-Shot-2017-07-05-at-09.42.26.png 739w, http://www.csslab.cl/wp-content/uploads/2017/07/Screen-Shot-2017-07-05-at-09.42.26-300x88.png 300w&#34; sizes=&#34;(max-width: 739px) 100vw, 739px&#34; /&gt; 
&lt;p&gt;Me dije:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;OK, puedo cambiarle el color al texto del &lt;em&gt;placeholder&lt;/em&gt; pero no conozco una propiedad &lt;em&gt;CSS&lt;/em&gt; que me diga si el input está vacío para darle el color de fondo al input. Y no quiero meter &lt;em&gt;JS&lt;/em&gt; sólo para eso. Investigaré.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;placeholder-shown&#34;&gt;:placeholder-shown&lt;/h3&gt;
&lt;p&gt;Esta propiedad es aún un &lt;a href=&#34;https://www.w3.org/TR/selectors4/#placeholder&#34;&gt;Working Draft&lt;/a&gt; pero actualmente tiene soporte para Firefox, Chrome, Safari, Opera y los &lt;em&gt;browsers&lt;/em&gt; móviles más populares. Si, IE no está soportado aún pero qué diablos.&lt;/p&gt;
&lt;p&gt;A continuación, el &lt;em&gt;CSS&lt;/em&gt; con el cual logré lo que el diseño se proponía:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;display&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;block&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;padding&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;.6&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;em&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;.8&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;em&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;margin-bottom&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;.5&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;em&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;font-size&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1.1&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;em&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;color&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#1C2E36&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;solid&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;#D6E1E4&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;focus&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border-color&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#00BA68&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#FAFBFC&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;outline&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;placeholder-shown&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#FAFBFC&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt;::&lt;span style=&#34;color:#a6e22e&#34;&gt;-webkit-input-placeholder&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;color&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#A4B3B7&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/kawurifipu/edit?html,css,output,height=400px&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.w3.org/TR/selectors4/#placeholder&#34;&gt;The placeholder-shown pseudo-class :placeholder-shown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://caniuse.com/#feat=css-placeholder-shown&#34;&gt;:placeholder-shown CSS pseudo-class&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>De por qué el silencio</title>
      <link>https://csslab.cl/2017/04/20/de-por-que-el-silencio/</link>
      <pubDate>Thu, 20 Apr 2017 12:43:36 +0000</pubDate>
      
      <guid>https://csslab.cl/2017/04/20/de-por-que-el-silencio/</guid>
      <description>&lt;p&gt;Hace muchos meses que &lt;strong&gt;CSSLab&lt;/strong&gt; no se actualiza en cuanto a su contenido. Tampoco en su estructura. Lo último que hice fue cerrar las inscripciones a &lt;strong&gt;CSSLab Weekly&lt;/strong&gt; y las razones fueron entregadas a quienes recibían esos emails semanalmente, y tiene que ver con lo que escribo en este artículo personal. Entonces, llego a este momento en que quiero transparentar qué ha sucedido y cuál sería la el estado de este sitio que me ha dado tantas satisfacciones…&lt;/p&gt;</description>
      <content>&lt;p&gt;Hace muchos meses que &lt;strong&gt;CSSLab&lt;/strong&gt; no se actualiza en cuanto a su contenido. Tampoco en su estructura. Lo último que hice fue cerrar las inscripciones a &lt;strong&gt;CSSLab Weekly&lt;/strong&gt; y las razones fueron entregadas a quienes recibían esos emails semanalmente, y tiene que ver con lo que escribo en este artículo personal. Entonces, llego a este momento en que quiero transparentar qué ha sucedido y cuál sería la el estado de este sitio que me ha dado tantas satisfacciones…&lt;/p&gt;
&lt;h3 id=&#34;qué-pasó&#34;&gt;¿Qué pasó?&lt;/h3&gt;
&lt;p&gt;Muchas cosas. Básicamente tuve una crisis de pánico y &lt;em&gt;stress&lt;/em&gt; muy elevado durante agosto – septiembre 2016. Claro que venía de antes, se acumulaba, pero se gatilló en esa época. Busqué ayuda médica -afortunadamente- y en ello sigo hasta hoy, varios meses después. Busqué en internet y el famoso &lt;a href=&#34;http://devpression.com/&#34;&gt;devpression&lt;/a&gt; era una opción, pero lo mío no era eso, sino acumulación de &lt;em&gt;stress&lt;/em&gt; -personal y profesional- y que se gatilló bajo ciertas circunstancias y me afectó la parte cognitiva de mi desempeño; en otras palabras, no podía resolver problemas como lo venía haciendo por tantos años. Me afectó en lo personal y en mi trabajo, ambas cosas muy importantes en mi vida. Me alejé médicamente de lo laboral por 2 meses prácticamente, y apenas toqué el computador. Hacía ejercicios, leía, cuidaba de mi huerto y de mi gato. No quería ver televisión o escuchar música; no quería ruído en general, ni ver gente. Tampoco ver ó tocar código fuente, siendo algo esencial en mi vida por tantos años. Ni imaginar las veces que quise mandar todo a la cresta y comenzar de nuevo, en otro rubro, y en otro lugar. Pero paciencia y buenos consejos fueron clave para mi positivo avance.&lt;/p&gt;
&lt;h3 id=&#34;y-cómo-sigo&#34;&gt;¿Y cómo sigo?&lt;/h3&gt;
&lt;p&gt;Estoy con ayuda médica -psiquiátrica-, psicológica y alternativas. Hago &lt;em&gt;reiki&lt;/em&gt;, &lt;em&gt;yoga&lt;/em&gt;, tomo &lt;em&gt;flores de Bach&lt;/em&gt; y duermo con &lt;em&gt;aromaterapia&lt;/em&gt;. Personalmente creo que la suma de todos ellos me han ayudado a avanzar mucho en poco tiempo. Amigos cercanos a quienes les conté desde el comienzo me han apoyado mucho con consejos, libros y palabras de apoyo y mucho ánimo, y que mi estado es mejorable 100%. Aunque no lo imaginé, mi condición era más común que creía y concluí que por más que contara lo sucedido, si no lo has vivido no podrías comprenderlo.&lt;/p&gt;
&lt;h3 id=&#34;y-qué-haré&#34;&gt;¿Y qué haré?&lt;/h3&gt;
&lt;p&gt;Parte del problema era dedicarme 100% a otros y 0% a mí persona y mis intereres propios. Desde entonces estoy dedicado 99% a mí y 1% a otros. Lamentablemente eso implica no actualizar &lt;strong&gt;CSSLab&lt;/strong&gt; y seguir aprendiendo nuevas tecnologías sólo para mí, lo que me llena por el momento. Eso justifica la desactualización de este sitio, junto con la recuperación de la capacidad cognitiva para seguir aprendiendo y aplicando mis capacidades para resolver problemas. Veo un horizonte genial, he vuelto a hacer código y de mejor calidad, y las ganas que tengo de volver a ser el colaborador de antes crece cada día más.&lt;/p&gt;
&lt;h3 id=&#34;últimas-palabras&#34;&gt;Últimas palabras&lt;/h3&gt;
&lt;p&gt;Gracias por la paciencia. Si estas palabras te reflejan en algo tu estado actual, no temas en buscar ayuda. Por mi lado, en &lt;a href=&#34;http://www.twitter.com/csslab&#34;&gt;Twitter&lt;/a&gt; soy un poco más activo, agrego links y algunas palabras más interesantes para quienes me siguen. Pero estoy confiado que ya vendrán mejores momentos.&lt;/p&gt;
&lt;p&gt;Gracias totales por leerme y principalmente por la paciencia. Nos leemos muy pronto.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Múltiples event listeners en JavaScript</title>
      <link>https://csslab.cl/2016/08/22/multiples-event-listeners-en-javascript/</link>
      <pubDate>Mon, 22 Aug 2016 21:08:06 +0000</pubDate>
      
      <guid>https://csslab.cl/2016/08/22/multiples-event-listeners-en-javascript/</guid>
      <description>&lt;p&gt;En &lt;strong&gt;JavaScript&lt;/strong&gt;, para agregar un evento a un selector ó un conjunto de ellos se utiliza comúnmente &lt;code&gt;addEventListener()&lt;/code&gt; pero que tiene una sutil limitación: sólo puedes darle 1 evento a la vez.&lt;/p&gt;</description>
      <content>&lt;p&gt;En &lt;strong&gt;JavaScript&lt;/strong&gt;, para agregar un evento a un selector ó un conjunto de ellos se utiliza comúnmente &lt;code&gt;addEventListener()&lt;/code&gt; pero que tiene una sutil limitación: sólo puedes darle 1 evento a la vez.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;¿Por qué querría agregar más de un evento a un elemento?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Suena a locura pero puede suceder, principalmente en selectores HTML para formularios. &lt;a href=&#34;http://www.csslab.cl/2015/10/08/eventos-javascript-para-un-input-typenumber/&#34;&gt;La última vez que lo necesité fue para un elemento &lt;strong&gt;input&lt;/strong&gt; de tipo &lt;strong&gt;number&lt;/strong&gt;&lt;/a&gt; el cual agrega flechas para cambiar el valor, por lo que puedes ingresar un número por el teclado ó utilizando las flechas. Con eso, necesité escuchar el evento &lt;strong&gt;keyup&lt;/strong&gt; y &lt;strong&gt;change&lt;/strong&gt; para poder hacer algo con ese valor posteriormente:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/vopabacete/edit?html,js,console,output,height=400px&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/**
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * multipleEventsListeners.js
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * Add the capability to attach multiple events to an element, just like jQuery does
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * https://gist.github.com/juanbrujo/a1f77db1e6f7cb17b42b
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;multipleEventsListeners&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;elem&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;events&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;func&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;event&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;events&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;split&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;; &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;lt&lt;/span&gt;; &lt;span style=&#34;color:#a6e22e&#34;&gt;event&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;length&lt;/span&gt;; &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;++&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;elem&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;addEventListener&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;event&lt;/span&gt;[&lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;], &lt;span style=&#34;color:#a6e22e&#34;&gt;func&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;Use: 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;var input = document.querySelector(&amp;#39;input&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;multipleEventsListeners(input, &amp;#39;keyup change&amp;#39;, function(e){
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;  console.log(this.value);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;es6&#34;&gt;ES6:&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;multipleEventsListeners&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;elem&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;events&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;func&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;events&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;split&lt;/span&gt;().&lt;span style=&#34;color:#a6e22e&#34;&gt;forEach&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;e&lt;/span&gt; =&amp;gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;elem&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;addEventListener&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;e&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;func&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;));
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;Use: 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;const input = document.querySelector(&amp;#39;input&amp;#39;);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;multipleEventsListeners(input, &amp;#39;keyup change&amp;#39;, function(e) {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;  console.log(this.value);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;link&#34;&gt;Link:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/en/docs/Web/API/EventTarget/addEventListener&#34;&gt;EventTarget.addEventListener() en MDN&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Etiquetas de título en HTML5</title>
      <link>https://csslab.cl/2016/08/17/html5-y-seo/</link>
      <pubDate>Wed, 17 Aug 2016 20:38:32 +0000</pubDate>
      
      <guid>https://csslab.cl/2016/08/17/html5-y-seo/</guid>
      <description>Ya estamos acostumbrados al estándar HTML5 hace años y lo utilizamos tranquilamente en nuestros proyectos web este 2016. Pero, ¿realmente conoces su uso y lo aprovechas? No basta con declarar un nuevo doctype; si no utilizas correctamente sus etiquetas será poco o nada el provecho que le sacarás al estándar.
En este artículo me enfocaré en el uso y reglas recomendadas en HTML5 para las etiquetas HTML para título de contenido, las que van del &amp;lt;h1&amp;gt; al &amp;lt;h6&amp;gt;.</description>
      <content>&lt;p&gt;Ya estamos acostumbrados al estándar &lt;a href=&#34;http://www.csslab.cl/etiqueta/html5/&#34;&gt;&lt;strong&gt;HTML5&lt;/strong&gt;&lt;/a&gt; hace años y lo utilizamos tranquilamente en nuestros proyectos web este 2016. Pero, ¿realmente conoces su uso y lo aprovechas? No basta con declarar un nuevo &lt;em&gt;doctype&lt;/em&gt;; si no utilizas correctamente sus etiquetas será poco o nada el provecho que le sacarás al estándar.&lt;/p&gt;
&lt;p&gt;En este artículo me enfocaré en el uso y reglas recomendadas en &lt;strong&gt;HTML5&lt;/strong&gt; para las etiquetas &lt;strong&gt;HTML&lt;/strong&gt; para título de contenido, las que van del &amp;lt;h1&amp;gt; al &amp;lt;h6&amp;gt;.&lt;/p&gt;
&lt;p&gt;Por mucho tiempo se consideró que una regla en &lt;strong&gt;HTML&lt;/strong&gt; y el &lt;a href=&#34;http://www.csslab.cl/categoria/semantica/&#34;&gt;SEO&lt;/a&gt; era que cada página individual de un sitio debiese tener 1 sólo &amp;lt;h1&amp;amp;gt. Antes que eso, se utilizaba el logo / marca del sitio para colocar el nombre del sitio envuelto en ese &amp;lt;h1&amp;amp;gt con alguna técnica de &lt;a href=&#34;http://www.csslab.cl/2006/09/25/image-replacement-o-como-reemplazar-contenido-por-imagen/&#34;&gt;image-replacement&lt;/a&gt; del momento.&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;
  &amp;lt;body&amp;gt;
    &amp;lt;div id=&#34;header&#34;&amp;gt;
      &amp;lt;h1&amp;gt;Mi Sitio&amp;lt;/h1&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div id=&#34;content&#34;&amp;gt;
      &amp;lt;h2&amp;gt;Mi Título&amp;lt;/h2&amp;gt;
      &amp;lt;p&amp;gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit...&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Un concepto importante que debemos entender es el de &lt;em&gt;document outline&lt;/em&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;El &lt;em&gt;document outline&lt;/em&gt; es una estructura de un documento generado por los encabezados, títulos de formularios, títulos de tabs y cualquier otro punto de referencia apropiados para trazar el documento. El &lt;em&gt;user agent&lt;/em&gt; puede utilizar esta información para generar por ejemplo, una tabla de contenido, y para tecnologías para asistir a discapacitados a través de dispositivos / browsers de accesibilidad.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Un &lt;em&gt;outline&lt;/em&gt; común en &lt;strong&gt;HTML4&lt;/strong&gt; se muestra a continuación:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;
  &amp;lt;h1&amp;gt;Mi Sitio&amp;lt;/h1&amp;gt;
  &amp;lt;h2&amp;gt;Sobre M&amp;iacute;&amp;lt;/h2&amp;gt;
  &amp;lt;p&amp;gt;Lorem ipsum...&amp;lt;/p&amp;gt;
  &amp;lt;h3&amp;gt;Mis Gustos&amp;lt;/h3&amp;gt;
  &amp;lt;p&amp;gt;Lorem ipsum dolor sit amet...&amp;lt;/p&amp;gt;
  &amp;lt;h2&amp;gt;Cont&amp;aacute;ctame&amp;lt;/h2&amp;gt;
  &amp;lt;p&amp;gt;...&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lo que genera un outline:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mi Sitio
&lt;ol&gt;
&lt;li&gt;Sobre Mí
&lt;ol&gt;
&lt;li&gt;Mis Gustos&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Contáctame&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El concepto detrás del &lt;em&gt;document outline&lt;/em&gt; en &lt;strong&gt;HTML5&lt;/strong&gt; sugiere que las etiquetas de título sean entendidas siempre con referencia a las &lt;a href=&#34;http://www.csslab.cl/2007/08/21/lo-que-se-viene-html-5/&#34;&gt;etiquetas de seccionamiento&lt;/a&gt; incorporadas en esta versión del estándar. Las etiquetas &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;aside&amp;gt;&lt;/code&gt; y &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;, pueden ayudar a crear una estructura más lógica en el &lt;em&gt;document outline.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Los aspectos más importantes a considerar dentro del &lt;em&gt;document outline&lt;/em&gt; en &lt;strong&gt;HTML5&lt;/strong&gt; para entender realmente cómo aplicar las etiquetas de título son los siguientes:&lt;/p&gt;
&lt;h2 id=&#34;sectioning-root-sección-raíz&#34;&gt;Sectioning root (sección raíz)&lt;/h2&gt;
&lt;p&gt;Es un contenedor que provee el scope para las secciones definidas dentro de él. Cada uno tiene un diferente &lt;em&gt;outline&lt;/em&gt; y la etiqueta  es considerado el superior de todos. Otras son: &lt;code&gt;&amp;lt;blockquote&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;figure&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;td&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt;, y &lt;code&gt;&amp;lt;fieldset&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;sectioning-content-sección-de-contenido&#34;&gt;Sectioning content (sección de contenido):&lt;/h2&gt;
&lt;p&gt;Cada sección raíz es dividido en una serie de secciones de contenido, los que son anidables y semánticos. El tipo debe ser elegido y utilizado según la naturaleza del contenido que va a contener: &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt; y &lt;code&gt;&amp;lt;aside&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;heading-content-contenido-encabezado&#34;&gt;Heading content (contenido encabezado):&lt;/h2&gt;
&lt;p&gt;Son etiquetas de texto para las secciones de contenido: &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h3&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h4&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h5&amp;gt;&lt;/code&gt; y &lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Finalmente, un ejemplo práctico puede ser considerado el siguiente:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;
  &amp;lt;h1&amp;gt;Mi Sitio&amp;lt;/h1&amp;gt;
  &amp;lt;section&amp;gt;
    &amp;lt;h1&amp;gt;Sobre M&amp;iacute;&amp;lt;/h1&amp;gt;
    &amp;lt;p&amp;gt;Lorem ipsum...&amp;lt;/p&amp;gt;
    &amp;lt;section&amp;gt;
      &amp;lt;h1&amp;gt;Mis Gustos&amp;lt;/h1&amp;gt;
      &amp;lt;p&amp;gt;Lorem ipsum dolor sit amet...&amp;lt;/p&amp;gt;
    &amp;lt;/section&amp;gt;
  &amp;lt;/section&amp;gt;
  &amp;lt;section&amp;gt;
    &amp;lt;h1&amp;gt;Cont&amp;aacute;ctame&amp;lt;/h1&amp;gt;
    &amp;lt;p&amp;gt;...&amp;lt;/p&amp;gt;
  &amp;lt;/section&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;Mi Sitio
&lt;ol&gt;
&lt;li&gt;Sobre Mí
&lt;ol&gt;
&lt;li&gt;Mis Gustos&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Contáctame&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;sugerencia&#34;&gt;Sugerencia:&lt;/h3&gt;
&lt;p&gt;A continuación se sugiere un uso mental para las etiquetas de título dentro de una estructura de seccionamiento &lt;strong&gt;HTML5&lt;/strong&gt;, el que por supuesto depende mucho del tipo de proyecto web en que estés trabajando:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Utiliza una etiqueta &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; por sección raíz ó sección de contenido.&lt;/li&gt;
&lt;li&gt;Debería siempre agregarse un &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; entre la etiqueta &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; y la primera sección de contenido, para identificar el documento completo.&lt;/li&gt;
&lt;li&gt;Cuando una etiqueta &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; identifica una sección de contenido, ésta debe estar ubicada inmediatamente al abrir la etiqueta.&lt;/li&gt;
&lt;li&gt;Dado lo anterior, siempre la segunda etiqueta de título debe ser un &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; ó menor que la anterior para crear una estructura ordenada en cascada del &lt;em&gt;document outline.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;La especificación del estándar &lt;strong&gt;HTML5&lt;/strong&gt; permite que cualquier etiqueta de título sea utilizada para identificar una sección, de la &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; al &lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://w3c.github.io/html/sections.html#outlines&#34;&gt;Outlines | HTML 5.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://html5doctor.com/outlines/&#34;&gt;Document Outlines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://webdesign.tutsplus.com/articles/the-truth-about-multiple-h1-tags-in-the-html5-era--webdesign-16824&#34;&gt;The Truth About Multiple H1 Tags in the HTML5 Era&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </item>
    
    <item>
      <title>Grilla CSS Responsive / Fluid &#43; Fixed</title>
      <link>https://csslab.cl/2016/06/01/grilla-css-responsive-fluid-fixed/</link>
      <pubDate>Wed, 01 Jun 2016 15:52:51 +0000</pubDate>
      
      <guid>https://csslab.cl/2016/06/01/grilla-css-responsive-fluid-fixed/</guid>
      <description>&lt;p&gt;Grillas &lt;strong&gt;CSS&lt;/strong&gt; abundan y son múltiples sus utilidades (aunque se sigan usando de forma incorrecta y abusando de sus componentes asociados pero enfin, &lt;em&gt;herrar es umano&lt;/em&gt;). Vinieron para quedarse por mucho más tiempo y nos han acostumbrado a los &lt;em&gt;layout&lt;/em&gt; tan comunes que hoy en día todas nos parecen iguales: 3 columnas, grilla 12 columnas, responsive, líquido… a fin de cuentas todos terminan pareciéndose.&lt;/p&gt;</description>
      <content>&lt;p&gt;Grillas &lt;strong&gt;CSS&lt;/strong&gt; abundan y son múltiples sus utilidades (aunque se sigan usando de forma incorrecta y abusando de sus componentes asociados pero enfin, &lt;em&gt;herrar es umano&lt;/em&gt;). Vinieron para quedarse por mucho más tiempo y nos han acostumbrado a los &lt;em&gt;layout&lt;/em&gt; tan comunes que hoy en día todas nos parecen iguales: 3 columnas, grilla 12 columnas, responsive, líquido… a fin de cuentas todos terminan pareciéndose.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;¡Al-2016-todos-los-sitios-se-ven-iguales!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pero sucedió lo que temía. Llegó cliente -y la diseñadora de cómplice- con un requerimiento que me hizo erizar los pelos: &lt;cite&gt;“Jorge, estamos pensando en tener una grilla &lt;em&gt;responsive&lt;/em&gt; pero la columna de la derecha tenga un ancho fijo de 200px. Y que en el &lt;em&gt;breakpoint&lt;/em&gt; de móviles necesitamos que esta columna desaparezca”.&lt;/cite&gt;&lt;/p&gt;
&lt;img src=&#34;https://csslab.cl/wp-content/uploads/2016/06/giphy.gif&#34; alt=&#34;giphy&#34; width=&#34;450&#34; class=&#34;aligncenter size-full wp-image-2412&#34; /&gt; 
&lt;blockquote&gt;
&lt;p&gt;Grilla Responsive pero con columna fija. OK he visto eso, donde la columna del menú (generalmente de la derecha) tiene ancho fijo y la otra columna de contenido con porcentaje y un margin-left es el ancho de la columna fija.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;OK pero esta es &lt;em&gt;responsive&lt;/em&gt;. No creo haber visto algo así. Entonces me puse a pensar, prototipar, y encontrar con la solución más &lt;em&gt;crossbrowsing&lt;/em&gt; posible, y a continuación les presento lo logrado incluyendo soporte &lt;strong&gt;IE8+&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;la-solución&#34;&gt;La solución&lt;/h2&gt;
&lt;p&gt;Preferí utilizar la propiedad &lt;strong&gt;CSS&lt;/strong&gt; &lt;code&gt;display: table;&lt;/code&gt; y sus anexas por el &lt;em&gt;crossbrowsing&lt;/em&gt; y porque me permitía principalmente contener un layout fijo/elástico sin añadir mucho código o raros &lt;a href=&#34;http://www.csslab.cl/categoria/hacks/&#34;&gt;hacks&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;html&#34;&gt;HTML:&lt;/h4&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;div class=&#34;table-layout table-fixed&#34;&amp;gt;
  &amp;lt;!-- left / fluid column--&amp;gt;
  &amp;lt;div class=&#34;table-cell&#34;&amp;gt;
    &amp;lt;h1&amp;gt;fluid column&amp;lt;/h1&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;!-- right / fixed column--&amp;gt;
  &amp;lt;div class=&#34;table-cell fixed-width&#34;&amp;gt;
    &amp;lt;h1&amp;gt;fixed column: 200px&amp;lt;/h1&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;css&#34;&gt;CSS:&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* la tabla padre, contenedora */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;table-layout&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;display&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;table&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  .&lt;span style=&#34;color:#a6e22e&#34;&gt;table-layout&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;table-fixed&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;table-layout&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;fixed&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;/* cada celda lateral */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    .&lt;span style=&#34;color:#a6e22e&#34;&gt;table-layout&lt;/span&gt; .&lt;span style=&#34;color:#a6e22e&#34;&gt;table-cell&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;display&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;table-cell&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;vertical-align&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;top&lt;/span&gt;; &lt;span style=&#34;color:#75715e&#34;&gt;/* necesario para Safari y Firefox */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    .&lt;span style=&#34;color:#a6e22e&#34;&gt;table-layout&lt;/span&gt; .&lt;span style=&#34;color:#a6e22e&#34;&gt;fixed-width&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;; &lt;span style=&#34;color:#75715e&#34;&gt;/* el ancho fijo que estimes necesario */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;ejemplo-1&#34;&gt;EJEMPLO 1&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/wijumekeki/1/edit?height=400px,html,css,output&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;ejemplo-2&#34;&gt;EJEMPLO 2&lt;/h4&gt;
&lt;p&gt;Agregando la propiedad &lt;strong&gt;CSS&lt;/strong&gt; &lt;code&gt;table-layout: fixed;&lt;/code&gt; pude posicionar un carrusel adentro de un &lt;code&gt;table-cell&lt;/code&gt; sin que se desarmara y se fuera todo al carajo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/sopoxezumi/1/edit?height=400px,html,output&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;ejemplo-3&#34;&gt;EJEMPLO 3&lt;/h4&gt;
&lt;p&gt;Con una columna fluída y una fija, puedo posicionar en la columna fluída cualquier grilla &lt;strong&gt;CSS&lt;/strong&gt; de las columnas que fueran necesarias:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/rikerozeyo/1/edit?height=400px,html,output&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;ejemplo-4&#34;&gt;EJEMPLO 4&lt;/h4&gt;
&lt;p&gt;Finalmente, esta solución me permitía esconder la columna fija cuando la resolución alcanzara -por ejemplo- el &lt;em&gt;breakpoint&lt;/em&gt; de dispositivos móviles:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/silurumaxe/1/edit?height=400px,html,output&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content>
    </item>
    
    <item>
      <title>SCSS @media mixin</title>
      <link>https://csslab.cl/2016/04/06/scss-media-mixin/</link>
      <pubDate>Wed, 06 Apr 2016 12:48:30 +0000</pubDate>
      
      <guid>https://csslab.cl/2016/04/06/scss-media-mixin/</guid>
      <description>&lt;p&gt;Este útil &lt;a href=&#34;http://www.csslab.cl/etiqueta/pre-procesadores/&#34;&gt;&lt;strong&gt;mixin&lt;/strong&gt; de &lt;strong&gt;SCSS&lt;/strong&gt;&lt;/a&gt; me ha ayudado a mantener consistencia y legibilidad en el código de un proyecto donde estamos muchas personas trabajando de manera remota.&lt;/p&gt;</description>
      <content>&lt;p&gt;Este útil &lt;a href=&#34;http://www.csslab.cl/etiqueta/pre-procesadores/&#34;&gt;&lt;strong&gt;mixin&lt;/strong&gt; de &lt;strong&gt;SCSS&lt;/strong&gt;&lt;/a&gt; me ha ayudado a mantener consistencia y legibilidad en el código de un proyecto donde estamos muchas personas trabajando de manera remota.&lt;/p&gt;
&lt;p&gt;La idea es definir los valores normales para el estado que desees (&lt;em&gt;desktop-first&lt;/em&gt;, &lt;em&gt;mobile-first&lt;/em&gt;) y las variaciones de &lt;strong&gt;@media&lt;/strong&gt; las declaras dentro del mismo selector. Así es fácil saber todas las propiedades y valores que éste tiene, logrando inter-operabilidad en equipos de trabajo de varias personas y teniendo algunos de ellos mantener mi código y vice-versa.&lt;/p&gt;
&lt;pre class=&#34;language-scss&#34;&gt;&lt;code&gt;// variables:
$breakpoint-xs: 360px;
$breakpoint-sm: 767px;
$breakpoint-md: 1023px;
$breakpoint-lg: 1360px;

@mixin media($media) {
  @if $media == xs {
    @media (max-width: $breakpoint-sm) { @content; }
  }
  @else if $media == sm {
    @media (min-width: $breakpoint-sm) and (max-width: $breakpoint-md) { @content; }
  }
  @else if $media == md {
    @media (min-width: $breakpoint-md) and (max-width: $breakpoint-lg) { @content; }
  }
  @else if $media == lg {
    @media (min-width: $breakpoint-lg) { @content; }
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;uso&#34;&gt;Uso:&lt;/h3&gt;
&lt;pre class=&#34;language-scss&#34;&gt;&lt;code&gt;@include media(xs) {
  property: value;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo (SCSS):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;.elemento {
  font-size: 1.2em;
  color: #c00;

  @include media(xs) {
    font-size: 1.6em;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Output (CSS):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;.elemento {
  font-size: 1.2em;
  color: #c00;
}
@media (max-width: 767px) {
  .elemento {
    font-size: 1.6em;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;link&#34;&gt;Link:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://thesassway.com/intermediate/responsive-web-design-in-sass-using-media-queries-in-sass-32&#34; target=&#34;_blank&#34;&gt;Responsive Web Design in Sass: Using media queries in Sass 3.2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>La variable CSS currentColor</title>
      <link>https://csslab.cl/2016/02/09/variable-css-currentcolor/</link>
      <pubDate>Tue, 09 Feb 2016 19:32:21 +0000</pubDate>
      
      <guid>https://csslab.cl/2016/02/09/variable-css-currentcolor/</guid>
      <description>&lt;p&gt;Estos días se anunció que &lt;a href=&#34;https://developers.google.com/web/updates/2016/02/css-variables-why-should-you-care&#34; target=&#34;_blank&#34;&gt;Google Chrome incluye soporte para CSS Variables&lt;/a&gt;, lo que finalmente abre las puertas a que los &lt;a href=&#34;http://www.xanthir.com/b4Ko0&#34; target=&#34;_blank&#34;&gt;nuevos features de CSS&lt;/a&gt; sean finalmente adquirido por los &lt;em&gt;browsers&lt;/em&gt;. Pero una variable poco conocida y con buen soporte &lt;em&gt;crossbrowsing&lt;/em&gt; ha existido por años: &lt;strong&gt;currentColor&lt;/strong&gt;. Esta capacidad tiene muchas aplicaciones las que veremos en este artículo.&lt;/p&gt;</description>
      <content>&lt;p&gt;Estos días se anunció que &lt;a href=&#34;https://developers.google.com/web/updates/2016/02/css-variables-why-should-you-care&#34; target=&#34;_blank&#34;&gt;Google Chrome incluye soporte para CSS Variables&lt;/a&gt;, lo que finalmente abre las puertas a que los &lt;a href=&#34;http://www.xanthir.com/b4Ko0&#34; target=&#34;_blank&#34;&gt;nuevos features de CSS&lt;/a&gt; sean finalmente adquirido por los &lt;em&gt;browsers&lt;/em&gt;. Pero una variable poco conocida y con buen soporte &lt;em&gt;crossbrowsing&lt;/em&gt; ha existido por años: &lt;strong&gt;currentColor&lt;/strong&gt;. Esta capacidad tiene muchas aplicaciones las que veremos en este artículo.&lt;/p&gt;
&lt;p&gt;Uno de las características menos conocidas de &lt;strong&gt;CSS&lt;/strong&gt; es que si defines &lt;strong&gt;color&lt;/strong&gt; en una declaración junto al &lt;strong&gt;border&lt;/strong&gt; (por ejemplo) sin especificar el color, este &lt;strong&gt;border&lt;/strong&gt; va a adquirir el color del texto por defecto, por ejemplo:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;p { 
   color: #f00;
   border-bottom: 4px solid; 
}&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/habeyifuka/edit?height=400px,html,css,output&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Así si cambias el color de texto el color del borde también heredará el cambio del color (y además funciona con propiedades como &lt;strong&gt;outline&lt;/strong&gt; y &lt;strong&gt;box-shadow&lt;/strong&gt;):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/helowakeni/edit?height=400px,html,css,output&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Creo que se entendió el concepto. Veamos ahora un ejemplo práctico: dado un párrafo, es usual que los enlaces &lt;strong&gt;&lt;a&gt;&lt;/strong&gt; se les entregue el mismo color que el texto:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;p {
   color: #666;
}
p a {
   color: currentColor;
   font-weight: bold;
}&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/jizudateve/edit?height=400px,html,css,output&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Con el valor &lt;strong&gt;currentColor&lt;/strong&gt; podremos reducir las declaraciones de colores de nuestro código &lt;strong&gt;CSS&lt;/strong&gt;, e inclusive podremos construir un conjunto de interfaces (componentes) que dependan y hereden el color &lt;em&gt;automágicamente&lt;/em&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;p {
  color: #34495e;
}
p a {
  color: currentColor;
  font-weight: bold;
}
p .btn {
  display: inline-block;
  border-radius: 10px;
  border: 1px solid;
  text-decoration: none;
  padding: .1em 1em;
  line-height: 1.5;
}&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/xujizuriki/edit?height=400px,html,css,output&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://caniuse.com/#feat=currentcolor&#34; target=&#34;_blank&#34;&gt;CanIUse: currentColor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blogs.adobe.com/dreamweaver/2015/02/extending-the-color-cascade-with-the-css-currentcolor-variable.html&#34; target=&#34;_blank&#34;&gt;Extending the Color Cascade with the CSS currentColor Variable | Adobe Blogs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>La pseudo-class :not</title>
      <link>https://csslab.cl/2015/12/22/la-pseudo-class-not/</link>
      <pubDate>Tue, 22 Dec 2015 20:28:49 +0000</pubDate>
      
      <guid>https://csslab.cl/2015/12/22/la-pseudo-class-not/</guid>
      <description>&lt;p&gt;Esta es una de las &lt;a href=&#34;http://www.csslab.cl/2015/07/02/sobre-pseudo-clases-y-pseudo-elementos/&#34;&gt;pseudo-clases&lt;/a&gt; menos utilizadas pero con gran utilidad al momento de alcanzar selectores &lt;strong&gt;CSS&lt;/strong&gt; que no comparten cierta regla. &lt;strong&gt;La pseudo-clase :not permite seleccionar todos los selectores excepto que satisfacen cierta condición.&lt;/strong&gt; Esto es muy útil ya que solíamos definir las propiedades a los elementos que necesitábamos y luego escribíamos la excepción y dependiendo de cómo, podía ser con clase &lt;strong&gt;CSS&lt;/strong&gt; ó &lt;a href=&#34;http://www.csslab.cl/2007/12/06/la-descendencia-del-css/&#34;&gt;selectores hermanos/adyacentes&lt;/a&gt; u otros. Por ejemplo, para darle un borde separador a todos los elementos de un menú menos para el último podíamos:&lt;/p&gt;</description>
      <content>&lt;p&gt;Esta es una de las &lt;a href=&#34;http://www.csslab.cl/2015/07/02/sobre-pseudo-clases-y-pseudo-elementos/&#34;&gt;pseudo-clases&lt;/a&gt; menos utilizadas pero con gran utilidad al momento de alcanzar selectores &lt;strong&gt;CSS&lt;/strong&gt; que no comparten cierta regla. &lt;strong&gt;La pseudo-clase :not permite seleccionar todos los selectores excepto que satisfacen cierta condición.&lt;/strong&gt; Esto es muy útil ya que solíamos definir las propiedades a los elementos que necesitábamos y luego escribíamos la excepción y dependiendo de cómo, podía ser con clase &lt;strong&gt;CSS&lt;/strong&gt; ó &lt;a href=&#34;http://www.csslab.cl/2007/12/06/la-descendencia-del-css/&#34;&gt;selectores hermanos/adyacentes&lt;/a&gt; u otros. Por ejemplo, para darle un borde separador a todos los elementos de un menú menos para el último podíamos:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;.menu a {
  margin-right: 5px;
  padding-right: 5px;
  border-right: 2px solid gray;
}
.menu a:last-child {
  margin-right: 0;
  padding-right: 0;
  border-right: none;
}&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/xebuwecome/edit?height=400px,html,css,output&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Con &lt;code&gt;:not&lt;/code&gt; todo se hace más fácil y con mucho menos código:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;.menu a:not(:last-child) {
  margin-right: 5px;
  padding-right: 5px;
  border-right: 2px solid gray;
}&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/falumuruzi/edit?height=400px,html,css,output&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Soporte&lt;/strong&gt;: IE9+ con tranquilidad&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://bitsofco.de/2015/5-lesser-used-css-selectors/&#34; target=&#34;_blank&#34;&gt;5 Lesser Used CSS Selectors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://caniuse.com/#feat=css-sel3&#34; target=&#34;_blank&#34;&gt;Can I Use: CSS3 Selectors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Eventos JavaScript para un input type=&#34;number&#34;</title>
      <link>https://csslab.cl/2015/10/08/eventos-javascript-para-un-input-typenumber/</link>
      <pubDate>Thu, 08 Oct 2015 21:47:23 +0000</pubDate>
      
      <guid>https://csslab.cl/2015/10/08/eventos-javascript-para-un-input-typenumber/</guid>
      <description>&lt;p&gt;En un proyecto tengo que obtener el valor de un &lt;strong&gt;input&lt;/strong&gt; de tipo &lt;strong&gt;number&lt;/strong&gt;, el cual en algunos browsers trae controles para aumentar/disminuir el valor:&lt;/p&gt;</description>
      <content>&lt;p&gt;En un proyecto tengo que obtener el valor de un &lt;strong&gt;input&lt;/strong&gt; de tipo &lt;strong&gt;number&lt;/strong&gt;, el cual en algunos browsers trae controles para aumentar/disminuir el valor:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/wp-content/uploads/2015/10/input-number.png&#34; alt=&#34;&#34; width=&#34;196&#34; height=&#34;126&#34; class=&#34;aligncenter size-full wp-image-2346&#34; /&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; document.&lt;span style=&#34;color:#a6e22e&#34;&gt;querySelector&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;input&amp;#39;&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; document.&lt;span style=&#34;color:#a6e22e&#34;&gt;querySelector&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.log&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;multipleEventsListeners&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;input&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;keyup change&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;e&lt;/span&gt;){
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;textContent&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;New value: &amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;this&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;El evento que escucha el cambio a través de los controles es &lt;strong&gt;onchange&lt;/strong&gt;, y el que reacciona al cambio manual del valor de éste input es &lt;strong&gt;onkeyup&lt;/strong&gt;, como se muestra en el siguiente ejemplo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/tiruhuyaqu/edit?html,js,output,height=400px&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content>
    </item>
    
    <item>
      <title>🍻 can be styled</title>
      <link>https://csslab.cl/2015/07/10/%F0%9F%8D%BB-can-be-styled/</link>
      <pubDate>Fri, 10 Jul 2015 18:54:01 +0000</pubDate>
      
      <guid>https://csslab.cl/2015/07/10/%F0%9F%8D%BB-can-be-styled/</guid>
      <description>Sólo un experimento utilizando emojis como nombre de clase CSS. No se atrevan a usarlo en producción.
HTML: &amp;lt;p class=&#34;🍻&#34;&amp;gt;Emojis can be styled&amp;lt;/p&amp;gt; CSS: .🍻 { font-size: 10vmin; text-align: center; color: green; } .🍻:before { content: &#34;?&#34;; }  Ejemplo en jsbin.com
 </description>
      <content>&lt;p&gt;Sólo un experimento utilizando &lt;em&gt;emojis&lt;/em&gt; como nombre de clase &lt;strong&gt;CSS&lt;/strong&gt;. No se atrevan a usarlo en producción.&lt;/p&gt;
&lt;h3 id=&#34;html&#34;&gt;HTML:&lt;/h3&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;p class=&#34;🍻&#34;&amp;gt;Emojis can be styled&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;css&#34;&gt;CSS:&lt;/h3&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;.🍻 {
  font-size: 10vmin;
  text-align: center;
  color: green;
}
  .🍻:before {
    content: &#34;?&#34;;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/vuzomo/1/edit?height=400px,html,css,output&#34;&gt;Ejemplo en jsbin.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    </item>
    
    <item>
      <title>Alcanzar y manipular pseudo-elementos CSS con JavaScript</title>
      <link>https://csslab.cl/2015/07/09/alcanzar-y-manipular-pseudo-elementos-css-con-javascript/</link>
      <pubDate>Thu, 09 Jul 2015 22:00:09 +0000</pubDate>
      
      <guid>https://csslab.cl/2015/07/09/alcanzar-y-manipular-pseudo-elementos-css-con-javascript/</guid>
      <description>&lt;p&gt;Los &lt;a href=&#34;https://csslab.cl/2015/07/02/sobre-pseudo-clases-y-pseudo-elementos/&#34;&gt;&lt;em&gt;pseudo-elementos&lt;/em&gt;&lt;/a&gt; (y &lt;em&gt;pseudo-clases&lt;/em&gt;) son selectores &lt;strong&gt;CSS&lt;/strong&gt; virtuales que no existen esplícitamente en el árbol de &lt;a href=&#34;https://csslab.cl/2008/04/07/iniciandose-en-el-dom/&#34;&gt;DOM&lt;/a&gt;. Pero aparte de esa característica, puede ser manipulado con propiedades &lt;strong&gt;CSS&lt;/strong&gt; como cualquier otra, a excepción que agrega una nueva propiedad &lt;strong&gt;content&lt;/strong&gt; la que permite ingresar texto al &lt;em&gt;pseudo-elemento&lt;/em&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;Los &lt;a href=&#34;https://csslab.cl/2015/07/02/sobre-pseudo-clases-y-pseudo-elementos/&#34;&gt;&lt;em&gt;pseudo-elementos&lt;/em&gt;&lt;/a&gt; (y &lt;em&gt;pseudo-clases&lt;/em&gt;) son selectores &lt;strong&gt;CSS&lt;/strong&gt; virtuales que no existen esplícitamente en el árbol de &lt;a href=&#34;https://csslab.cl/2008/04/07/iniciandose-en-el-dom/&#34;&gt;DOM&lt;/a&gt;. Pero aparte de esa característica, puede ser manipulado con propiedades &lt;strong&gt;CSS&lt;/strong&gt; como cualquier otra, a excepción que agrega una nueva propiedad &lt;strong&gt;content&lt;/strong&gt; la que permite ingresar texto al &lt;em&gt;pseudo-elemento&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Como estos selectores no existen en el árbol del documento, cómo alcanzarlos y manipularlos con &lt;strong&gt;JavaScript&lt;/strong&gt;? Afortunadamente es posible con el método &lt;strong&gt;getComputedStyle()&lt;/strong&gt;:&lt;/p&gt;
&lt;h3 id=&#34;html&#34;&gt;HTML:&lt;/h3&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;p&amp;gt; Mundo&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;css&#34;&gt;CSS:&lt;/h3&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;p:before {
  content: &#34;Hola&#34;;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;js&#34;&gt;JS:&lt;/h3&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;var elem = document.querySelectorAll(&#34;p&#34;);
if( elem.length ) {
  [].forEach.call( elem, function(e) {
    var pseudoContent = window.getComputedStyle(e,&#39;:before&#39;).content;
    document.body.innerHTML += &#34;Pseudo-element content: &#34; + pseudoContent;
  });
}&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/coduno/edit?height=400px,html,css,js,output&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;También puedes obtener otras propiedades &lt;strong&gt;CSS&lt;/strong&gt; aplicadas, por ejemplo, el &lt;em&gt;color de texto&lt;/em&gt;:&lt;/p&gt;
&lt;h3 id=&#34;js-1&#34;&gt;JS:&lt;/h3&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;var pseudoColor = window.getComputedStyle(e,&#39;:before&#39;).getPropertyValue(&#39;color&#39;);&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/hahiwa/edit?height=400px,js,output&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;link&#34;&gt;Link:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://caniuse.com/#feat=getcomputedstyle&#34; target=&#34;_blank&#34;&gt;getComputedStyle in CanIUse&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Sobre pseudo-clases y pseudo-elementos</title>
      <link>https://csslab.cl/2015/07/02/sobre-pseudo-clases-y-pseudo-elementos/</link>
      <pubDate>Thu, 02 Jul 2015 16:34:14 +0000</pubDate>
      
      <guid>https://csslab.cl/2015/07/02/sobre-pseudo-clases-y-pseudo-elementos/</guid>
      <description>&lt;p&gt;Las &lt;strong&gt;pseudo-clases&lt;/strong&gt; y los &lt;strong&gt;pseudo-elementos&lt;/strong&gt; son tipos de selectores &lt;strong&gt;CSS&lt;/strong&gt; que permiten alcanzar estados y elementos que no están en el &lt;strong&gt;DOM&lt;/strong&gt; original. La lista de &lt;strong&gt;pseudo-clases&lt;/strong&gt; es amplia, la de &lt;strong&gt;pseudo-elementos&lt;/strong&gt; no ha crecido hasta la actual versión de &lt;strong&gt;CSS3&lt;/strong&gt; (aunque en &lt;a href=&#34;http://dev.w3.org/csswg/selectors-4/#pseudo-elements&#34; target=&#34;_blank&#34;&gt;CSS4&lt;/a&gt; se vienen varios más):&lt;/p&gt;</description>
      <content>&lt;p&gt;Las &lt;strong&gt;pseudo-clases&lt;/strong&gt; y los &lt;strong&gt;pseudo-elementos&lt;/strong&gt; son tipos de selectores &lt;strong&gt;CSS&lt;/strong&gt; que permiten alcanzar estados y elementos que no están en el &lt;strong&gt;DOM&lt;/strong&gt; original. La lista de &lt;strong&gt;pseudo-clases&lt;/strong&gt; es amplia, la de &lt;strong&gt;pseudo-elementos&lt;/strong&gt; no ha crecido hasta la actual versión de &lt;strong&gt;CSS3&lt;/strong&gt; (aunque en &lt;a href=&#34;http://dev.w3.org/csswg/selectors-4/#pseudo-elements&#34; target=&#34;_blank&#34;&gt;CSS4&lt;/a&gt; se vienen varios más):&lt;/p&gt;
&lt;h3 id=&#34;pseudo-clases&#34;&gt;Pseudo-clases:&lt;/h3&gt;
&lt;ul style=&#34;column-count:3&#34;&gt;
  &lt;li&gt;
    :link
  &lt;/li&gt;
  &lt;li&gt;
    :visited
  &lt;/li&gt;
  &lt;li&gt;
    :active
  &lt;/li&gt;
  &lt;li&gt;
    :hover
  &lt;/li&gt;
  &lt;li&gt;
    :focus
  &lt;/li&gt;
  &lt;li&gt;
    :target
  &lt;/li&gt;
  &lt;li&gt;
    :empty
  &lt;/li&gt;
  &lt;li&gt;
    :enabled
  &lt;/li&gt;
  &lt;li&gt;
    :disabled
  &lt;/li&gt;
  &lt;li&gt;
    :checked
  &lt;/li&gt;
  &lt;li&gt;
    :nth-child(n)
  &lt;/li&gt;
  &lt;li&gt;
    :nth-last-child(n)
  &lt;/li&gt;
  &lt;li&gt;
    :nth-of-type(n)
  &lt;/li&gt;
  &lt;li&gt;
    :nth-last-of-type(n)
  &lt;/li&gt;
  &lt;li&gt;
    :first-child
  &lt;/li&gt;
  &lt;li&gt;
    :first-of-type
  &lt;/li&gt;
  &lt;li&gt;
    :last-of-type
  &lt;/li&gt;
  &lt;li&gt;
    :only-child
  &lt;/li&gt;
  &lt;li&gt;
    :only-of-type
  &lt;/li&gt;
  &lt;li&gt;
    :root
  &lt;/li&gt;
  &lt;li&gt;
    :lang(x)
  &lt;/li&gt;
  &lt;li&gt;
    :not(s)
  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;pseudo-elementos&#34;&gt;Pseudo-elementos:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;::before&lt;/li&gt;
&lt;li&gt;::after&lt;/li&gt;
&lt;li&gt;::first-line&lt;/li&gt;
&lt;li&gt;::first-letter&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mientras las &lt;strong&gt;pseudo-clases&lt;/strong&gt; se encargan de entregar una manera de seleccionar elementos &lt;strong&gt;HTML&lt;/strong&gt; basados en la información que no es accesible en el &lt;strong&gt;DOM&lt;/strong&gt; (por ejemplo, el estado &lt;strong&gt;:active&lt;/strong&gt; ó su posición basado en los elementos hermanos como &lt;strong&gt;:nth-of-type()&lt;/strong&gt;), los &lt;strong&gt;pseudo-elementos&lt;/strong&gt; crean una abstracción en el &lt;strong&gt;DOM&lt;/strong&gt; creando un nuevo elemento virtual el que puede ser manipulado en su contenido y forma (por ejemplo &lt;strong&gt;::before&lt;/strong&gt;).&lt;/p&gt;
&lt;h3 id=&#34;nomenclatura&#34;&gt;Nomenclatura:&lt;/h3&gt;
&lt;p&gt;El estándar &lt;a href=&#34;http://www.w3.org/TR/CSS21/selector.html#pseudo-elements&#34; target=&#34;_blank&#34;&gt;&lt;strong&gt;CSS2.1&lt;/strong&gt; define a ambos con doble-punto &lt;strong&gt;(:)&lt;/strong&gt;&lt;/a&gt; pero en &lt;strong&gt;CSS3&lt;/strong&gt; las &lt;strong&gt;pseudo-clases&lt;/strong&gt; se prefijan con doble-punto &lt;strong&gt;(:)&lt;/strong&gt; y los &lt;strong&gt;pseudo-elementos&lt;/strong&gt; con doble-doble-punto &lt;strong&gt;(::)&lt;/strong&gt;. Lamentablemente nos queda &lt;strong&gt;IE8&lt;/strong&gt; en el regazo, soportando estas útiles e importantes pseudo-propiedades sólo con doble-punto &lt;strong&gt;(:)&lt;/strong&gt;; como consecuencia todos los &lt;em&gt;browsers&lt;/em&gt; siguen soportando ambas nomenclaturas. Si sigues soportando &lt;strong&gt;IE8&lt;/strong&gt;, debes usar doble-punto &lt;strong&gt;(:)&lt;/strong&gt;; caso contrario puedes utilizar doble-doble-punto &lt;strong&gt;(::)&lt;/strong&gt; para &lt;strong&gt;pseudo-elementos&lt;/strong&gt; si quieres obedecer las reglas CSS3 de &lt;strong&gt;W3C&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://css-tricks.com/pseudo-element-roundup/&#34; target=&#34;_blank&#34;&gt;A Whole Bunch of Amazing Stuff Pseudo Elements Can Do | CSS Tricks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://bitsofco.de/2015/pseudo-classes-pseudo-elements-and-colon-notation/&#34; target=&#34;_blank&#34;&gt;Pseudo-Classes, Pseudo-Elements, and Colon Notation | bitsofco.de&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/css-pseudo-4/&#34; target=&#34;_blank&#34;&gt;CSS Pseudo-Elements Module Level 4 | W3C&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Star-Rating sólo con CSS</title>
      <link>https://csslab.cl/2015/06/17/star-rating-solo-con-css/</link>
      <pubDate>Wed, 17 Jun 2015 13:04:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2015/06/17/star-rating-solo-con-css/</guid>
      <description>&lt;p&gt;Cualquier &lt;strong&gt;sistema de votación&lt;/strong&gt; (&lt;em&gt;star-rating system&lt;/em&gt;) requiere de los 3 componentes básicos de todo sitio web: &lt;strong&gt;HTML&lt;/strong&gt;, &lt;strong&gt;CSS&lt;/strong&gt; y &lt;strong&gt;JavaScript&lt;/strong&gt;. Pero a medida que la tecnología avanza, es posible dejar la ayuda que &lt;strong&gt;JavaScript&lt;/strong&gt; brindó por mucho tiempo mientras &lt;strong&gt;CSS&lt;/strong&gt; no entraba de lleno a la capa de interacción, principalmente a través de &lt;strong&gt;CSS3&lt;/strong&gt;. Pero existen propiedades &lt;strong&gt;CSS2&lt;/strong&gt; que siempre han permitido cierto grado de complejidad pero que por culpa de &lt;strong&gt;IE6&lt;/strong&gt; y su hermano mutante y deforme &lt;strong&gt;IE7&lt;/strong&gt; no eran posible utilizarlos. Con soporte &lt;strong&gt;IE8+&lt;/strong&gt; ya podemos utilizar tranquilamente -por ejemplo- &lt;a href=&#34;https://csslab.cl/2007/12/06/la-descendencia-del-css/&#34;&gt;selectores avanzados de atributos y descendientes&lt;/a&gt;, los que precisamente son los protagonistas de este artículo.&lt;/p&gt;</description>
      <content>&lt;p&gt;Cualquier &lt;strong&gt;sistema de votación&lt;/strong&gt; (&lt;em&gt;star-rating system&lt;/em&gt;) requiere de los 3 componentes básicos de todo sitio web: &lt;strong&gt;HTML&lt;/strong&gt;, &lt;strong&gt;CSS&lt;/strong&gt; y &lt;strong&gt;JavaScript&lt;/strong&gt;. Pero a medida que la tecnología avanza, es posible dejar la ayuda que &lt;strong&gt;JavaScript&lt;/strong&gt; brindó por mucho tiempo mientras &lt;strong&gt;CSS&lt;/strong&gt; no entraba de lleno a la capa de interacción, principalmente a través de &lt;strong&gt;CSS3&lt;/strong&gt;. Pero existen propiedades &lt;strong&gt;CSS2&lt;/strong&gt; que siempre han permitido cierto grado de complejidad pero que por culpa de &lt;strong&gt;IE6&lt;/strong&gt; y su hermano mutante y deforme &lt;strong&gt;IE7&lt;/strong&gt; no eran posible utilizarlos. Con soporte &lt;strong&gt;IE8+&lt;/strong&gt; ya podemos utilizar tranquilamente -por ejemplo- &lt;a href=&#34;https://csslab.cl/2007/12/06/la-descendencia-del-css/&#34;&gt;selectores avanzados de atributos y descendientes&lt;/a&gt;, los que precisamente son los protagonistas de este artículo.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/wp-content/uploads/2015/06/star-rating.gif&#34; alt=&#34;star-rating&#34; width=&#34;331&#34; height=&#34;122&#34; class=&#34;aligncenter size-full wp-image-2293&#34; /&gt; 
&lt;p&gt;Me propuse a hacer un &lt;em&gt;star-rating&lt;/em&gt; con &lt;strong&gt;HTML&lt;/strong&gt; y &lt;strong&gt;CSS&lt;/strong&gt;, dejando a &lt;strong&gt;JavaScript&lt;/strong&gt; la tarea de conectar el dato con el servidor, si fuese el caso. Terminé con 2 opciones diferentes, y al ponerme a investigar descubrí que ya existía por lo menos una de las soluciones a las que llegué. Para no perder el trabajo, de todas maneras las expongo aquí por si a alguien más les son útiles.&lt;/p&gt;
&lt;p&gt;Para ambos ejemplos el marcado &lt;strong&gt;HTML&lt;/strong&gt; es el mismo:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;div class=&#34;star-rating&#34;&amp;gt;
  &amp;lt;a href=&#34;#&#34;&amp;gt;&amp;#9733;&amp;lt;/a&amp;gt;
  &amp;lt;a href=&#34;#&#34;&amp;gt;&amp;#9733;&amp;lt;/a&amp;gt;
  &amp;lt;a href=&#34;#&#34;&amp;gt;&amp;#9733;&amp;lt;/a&amp;gt;
  &amp;lt;a href=&#34;#&#34;&amp;gt;&amp;#9733;&amp;lt;/a&amp;gt;
  &amp;lt;a href=&#34;#&#34;&amp;gt;&amp;#9733;&amp;lt;/a&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;técnica-1&#34;&gt;Técnica 1&lt;/h3&gt;
&lt;p&gt;Consiste en al hacer &lt;strong&gt;:hover&lt;/strong&gt; a todo el contenedor &lt;strong&gt;.star-rating&lt;/strong&gt; y al elemento (estrella), se cambia el color de todos al color de estrella seleccionado (amarillo), salvo a los selectores hermanos del elemento que vuelven a tener el color normal:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;.star-rating a {
  display: inline-block;
  color: #95a5a6; /* gris (normal) */
}
.star-rating:hover a {
  color: #f39c12; /* amarillo (seleccionado) */
}
  .star-rating:hover a:hover ~ a {
    color: #95a5a6; /* gris (normal) */
  }&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/jajajuwefu/1/edit?height=400px,html,css,output&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;técnica-2&#34;&gt;Técnica 2&lt;/h3&gt;
&lt;p&gt;Como en &lt;strong&gt;CSS&lt;/strong&gt; los hermanos adyacentes sólo alcanzan los que están hacia adelante en el árbol que el propio, no podemos dar estilos a los anteriores al &lt;strong&gt;:hover&lt;/strong&gt;, el cual es el propósito de todo &lt;em&gt;star-rating&lt;/em&gt;. Entonces, por qué no darlos vuelta? Flotamos los elementos (estrellas) hacia la derecha (&lt;strong&gt;float: right;&lt;/strong&gt;) logrando invertirlos y obtenemos el resultado que necesitamos:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;.star-rating a {
  float: right;
  color: #95a5a6; /* gris (normal) */
}
  .star-rating a:hover {
    color: #f39c12; /* amarillo (seleccionado) */
  }
  .star-rating a:hover ~ a {
    color: #f39c12; /* amarillo (seleccionado) */
  }&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/rijuyehuhe/1/edit?height=400px,html,css,output&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content>
    </item>
    
    <item>
      <title>Hover Intent moderno en menues dropdown</title>
      <link>https://csslab.cl/2015/05/07/hover-intent-moderno-en-menues-dropdown/</link>
      <pubDate>Thu, 07 May 2015 12:12:07 +0000</pubDate>
      
      <guid>https://csslab.cl/2015/05/07/hover-intent-moderno-en-menues-dropdown/</guid>
      <description>&lt;p&gt;La utilidad (y poca accesibilidad) de los menúes &lt;em&gt;dropdown&lt;/em&gt; son conocidos e incuestionables. Pero existe un pequeño problema cuando el usuario navega sobre ellos, el cual se puede apreciar a continuación:&lt;/p&gt;</description>
      <content>&lt;p&gt;La utilidad (y poca accesibilidad) de los menúes &lt;em&gt;dropdown&lt;/em&gt; son conocidos e incuestionables. Pero existe un pequeño problema cuando el usuario navega sobre ellos, el cual se puede apreciar a continuación:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/wp-content/uploads/2015/05/ej1.gif&#34; alt=&#34;Ejemplo 1 Hover Intent moderno en menues dropdown | CSSLab.cl&#34; width=&#34;800&#34; height=&#34;400&#34; class=&#34;alignnone size-full wp-image-2258&#34; /&gt; 
&lt;h3 id=&#34;el-problema&#34;&gt;El Problema&lt;/h3&gt;
&lt;p&gt;Vemos que cuando se pasa el &lt;em&gt;mouse&lt;/em&gt; sobre los elementos que gatillan los paneles se sobreponen a lo que está debajo de ellos si el movimiento es lo suficientemente rápido. No es un comportamiento crítico pero la solución es tan simple que mejor es tenerla siempre presente.&lt;/p&gt;
&lt;p&gt;Como sabemos la construcción de un menú &lt;em&gt;dropdown&lt;/em&gt; (un elemento que contiene sub-elementos que son desplegados sólo cuando el usuario pasa el mouse sobre el elemento padre) no es más que un cambio en el pseudo-estado &lt;strong&gt;:hover&lt;/strong&gt;. Si está sobre el elemento muestra los sub-elementos, si no, vuelve a esconderlos.&lt;/p&gt;
&lt;p&gt;El HTML base:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;ul class=&#34;nav&#34;&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&#34;#&#34;&amp;gt;Element&amp;lt;/a&amp;gt;
    &amp;lt;ul&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Sub-Element&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Sub-Element&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&#34;#&#34;&amp;gt;Element&amp;lt;/a&amp;gt;
    &amp;lt;ul&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Sub-Element&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Sub-Element&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
  &amp;lt;/li&amp;gt;
  ...
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y el CSS base:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;.nav {
  position: relative;
}
	.nav ul {
	  position: absolute;
	}
	.nav li {
	  list-style: none;
	}
	.nav a {
	  display: block;
	  width: 90px;
	}
	.nav &gt; li {
	  float: left;
	}
		.nav &gt; li &gt; a + ul {
		  visibility: hidden;
		}
			.nav &gt; li:hover &gt; a + ul {
			  visibility: visible;
			}
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/xaverosizi/1/edit?output&amp;amp;height=300px&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;la-solución&#34;&gt;La Solución&lt;/h3&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/wp-content/uploads/2015/05/ejem2.gif&#34; alt=&#34;Ejemplo 2 Hover Intent moderno en menues dropdown | CSSLab.cl&#34; width=&#34;800&#34; height=&#34;400&#34; class=&#34;alignnone size-full wp-image-2265&#34; /&gt; 
&lt;p&gt;Lo que se propone es atrasar el comportamiento del &lt;strong&gt;:hover&lt;/strong&gt; a los sub-elementos, con unos pocos milisegundos (&lt;strong&gt;ms&lt;/strong&gt;) de &lt;em&gt;delay&lt;/em&gt; (en mis ejemplos, 0.3ms). Con esto haremos que el usuario cuando esté pasando sobre los elementos no los despliegue al instante sino que espere esos milisegundos antes de gatillarlos, denotando la verdadera intención del usuario: mostrar los sub-elementos o sólo pasar sobre el elemento. Este comportamiento se denomina &lt;strong&gt;hover intent&lt;/strong&gt; y se puede realizar de 2 maneras: mediante la propiedad &lt;strong&gt;CSS3&lt;/strong&gt; &lt;strong&gt;transition-delay&lt;/strong&gt; y con &lt;em&gt;fallback&lt;/em&gt; con &lt;strong&gt;JS&lt;/strong&gt; para los &lt;em&gt;browsers&lt;/em&gt; que no soportan esta propiedad (&lt;strong&gt;IE9&lt;/strong&gt; e inferiores):&lt;/p&gt;
&lt;h4 id=&#34;utilzando-css3&#34;&gt;Utilzando CSS3:&lt;/h4&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;/* 
  la declaración resumida es: 
  transition: propiedad duración tipo delay;
*/
.nav &gt; li &gt; a + ul {
  visibility: hidden;
  /* al salir el mouse del menu desplegado no debe haber delay
     por eso está en 0s */
  transition: visibility 0s linear 0s;
}
  .nav &gt; li:hover &gt; a + ul {
    visibility: visible;
    /* al entrar el mouse al elemento hay un delay de 300ms
       para desplegar el menu */
    transition: visibility 0s linear 0.3s;
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/latesurabo/1/edit?css,output&amp;amp;height=300px&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;utilzando-jsjquery&#34;&gt;Utilzando JS/jQuery:&lt;/h4&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;(function () { 
  var menuDropdown = $(&#39;.nav&#39;),
      delay = 300; // retardo dropdown (ms)

  // esconde los submenues por defecto
  $(&#39;a + ul&#39;, menuDropdown).hide();

  $(&#34;li&#34;, menuDropdown).hover(function() { // mousein
    var elem = $(this);

  // indicador que el mouse ha entrado al elemento padre
  elem.attr(&#39;mIn&#39;, &#39;true&#39;);

  setTimeout(function () {
    // mostramos submenu
    if (elem.attr(&#39;mIn&#39;) == &#39;true&#39;) {
      $(&#39;a + ul&#39;, elem).show();
    }
    }, delay);
    
  }, function() { // mouseout

    // indicador que el mouse ha salido del submenu desplegado
    $(this).attr(&#39;mIn&#39;, &#39;false&#39;);
    // escondemos submenu
    $(&#39;a + ul&#39;, $(this)).hide();
    
  });
}());
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jsbin.com/giripayolo/1/edit?js,output&amp;amp;height=300px&#34;&gt;Ejemplo en JS Bin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content>
    </item>
    
    <item>
      <title>Selects con estilo</title>
      <link>https://csslab.cl/2015/03/24/selects-con-estilo/</link>
      <pubDate>Tue, 24 Mar 2015 15:50:41 +0000</pubDate>
      
      <guid>https://csslab.cl/2015/03/24/selects-con-estilo/</guid>
      <description>&lt;p&gt;Estamos en pleno año 2015, la humanidad está trabajando para llevar humanos a Marte y todavía no podemos dar estilos &lt;strong&gt;CSS&lt;/strong&gt; &lt;em&gt;crossbrowsing&lt;/em&gt; a las etiquetas &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; Y para qué mencionar los &lt;code&gt;&amp;lt;input type=&amp;quot;checkbox&amp;quot;&amp;gt;&lt;/code&gt; y &lt;code&gt;&amp;lt;input type=&amp;quot;radio&amp;quot;&amp;gt;&lt;/code&gt;…&lt;/p&gt;</description>
      <content>&lt;p&gt;Estamos en pleno año 2015, la humanidad está trabajando para llevar humanos a Marte y todavía no podemos dar estilos &lt;strong&gt;CSS&lt;/strong&gt; &lt;em&gt;crossbrowsing&lt;/em&gt; a las etiquetas &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; Y para qué mencionar los &lt;code&gt;&amp;lt;input type=&amp;quot;checkbox&amp;quot;&amp;gt;&lt;/code&gt; y &lt;code&gt;&amp;lt;input type=&amp;quot;radio&amp;quot;&amp;gt;&lt;/code&gt;…&lt;/p&gt;
&lt;p&gt;A pesar de existir &lt;em&gt;plugins&lt;/em&gt; y artimañas que lo permitan, siempre he recomendado dejar los estilos por defecto de los elementos de formularios, ya que por años han sigo bloqueadores de la conversión. Por su importancia, los formularios deben tener los menos impedimentos posibles a la hora de que el usuario llene el campo, y la incompatibilidad ó mal aplicación de un diseño a estos campos suelen ser una de las principales causas de rebote en la conversiones. El usuario quiere responder o seleccionar un campo, y éste no funciona o al click no queda seleccionado. Frustración aparte, despídete de los datos de ese usuario.&lt;/p&gt;
&lt;p&gt;En el presente, teniendo &lt;strong&gt;IE11&lt;/strong&gt; como &lt;em&gt;browser&lt;/em&gt; por defecto de &lt;em&gt;Microsoft&lt;/em&gt;, &lt;em&gt;Chrome / Opera&lt;/em&gt; compartiendo un mismo motor de render y &lt;em&gt;Firefox&lt;/em&gt; con cada vez más frecuentes actualizaciones, podemos respirar más tranquilos y entregar estilos &lt;strong&gt;CSS&lt;/strong&gt; directo al elemento &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; sin preocuparse de utilizar algún plugin, eso sí siempre y cuando el soporte mínimo sea &lt;strong&gt;IE9+&lt;/strong&gt;. Para &lt;strong&gt;IE8&lt;/strong&gt; y menores aún deberás tomar una decisión: no le doy diseño personalizado, ó agrego esfuerzo aplicando un plugin como &lt;a href=&#34;http://harvesthq.github.io/chosen/&#34; title=&#34;Enlace externo a &amp;quot;jQuery Chosen&amp;quot;&#34; target=&#34;_blank&#34;&gt;Chosen&lt;/a&gt; ó &lt;a href=&#34;http://lcdsantos.github.io/jQuery-Selectric/&#34; title=&#34;Enlace externo a &amp;quot;jQuery Selectric&amp;quot;&#34; target=&#34;_blank&#34;&gt;Selectric&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Vamos al asunto: dado un &lt;code&gt;&amp;lt;select&amp;gt;&amp;lt;option value=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/select&amp;gt;&lt;/code&gt;, existen 2 técnicas dependiendo del diseño que se le vaya a aplicar: con una imagen de fondo, o sin (puro &lt;strong&gt;CSS&lt;/strong&gt; si el diseño lo permite):&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;div class=&#34;select&#34;&amp;gt;
  &amp;lt;select&amp;gt;
    &amp;lt;option value=&#34;&#34;&amp;gt;Seleccione uno:&amp;lt;/option&amp;gt;
    &amp;lt;option value=&#34;opcion-1&#34;&amp;gt;Opción 1&amp;lt;/option&amp;gt;
    &amp;lt;option value=&#34;opcion-2&#34;&amp;gt;Opción 2&amp;lt;/option&amp;gt;
    &amp;lt;option value=&#34;opcion-n&#34;&amp;gt;Opción N&amp;lt;/option&amp;gt;
  &amp;lt;/select&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;IE 9&lt;/strong&gt; no permite remover la flecha por defecto del campo &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt;, entonces lo que hacemos es darle rodear el &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; con un contenedor, el que tiene un ancho menor (el &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; tendrá un &lt;strong&gt;width: 130%;&lt;/strong&gt;) y con eso esconderemos la flecha ya que estará fuera del contenedor del &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt;. Para el resto de los &lt;em&gt;browsers&lt;/em&gt;, deberemos limpiar el estilo por defecto del &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; mediante la propiedad &lt;strong&gt;CSS appearance: none;&lt;/strong&gt; (con prefix) para luego aplicar el diseño:&lt;/p&gt;
&lt;h3 id=&#34;técnica-1-con-imagen-de-fondo&#34;&gt;Técnica 1: con imagen de fondo&lt;/h3&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;.select {
  border: 1px solid #ccc;
  width: 140px;
  overflow: hidden;
  background: #fff url(&#34;arrowdown.gif&#34;) no-repeat 90% center;
}
  .select select {
    padding: 5px 8px;
    width: 130%;
    border: none;
    box-shadow: none;
    background-color: transparent;
    background-image: none;
    appearance: none;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;técnica-2-puro-css&#34;&gt;Técnica 2: puro CSS&lt;/h3&gt;
&lt;p&gt;Suponiendo el diseño es sencillo, simple y orientado a la conversión, basta que el &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; tenga un fondo y un borde de color sólido y la bendita flecha / triángulo que siempre será útil. Para hacer triángulos con &lt;strong&gt;CSS&lt;/strong&gt; uso mi &lt;a href=&#34;https://csslab.cl/2014/06/10/triangulos-con-css-less-mixin/&#34; title=&#34;Enlace en CSSLab a &amp;quot; Triángulos con CSS: LESS Mixin&amp;quot;&#34; target=&#34;_blank&#34;&gt;mixin en LESS&lt;/a&gt; ó un &lt;a href=&#34;http://apps.eky.hk/css-triangle-generator/&#34; title=&#34;Enlace en CSSLab a &amp;quot;CSS triangle generator&amp;quot;&#34; target=&#34;_blank&#34;&gt;generador de triángulos CSS&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;select&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;position&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;relative&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;solid&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;#ccc&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;120&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;overflow&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;hidden&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#fff&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  .&lt;span style=&#34;color:#a6e22e&#34;&gt;select&lt;/span&gt;:&lt;span style=&#34;color:#a6e22e&#34;&gt;before&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;content&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;position&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;absolute&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;right&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;top&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;height&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;border-style&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;solid&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;border-width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;border-color&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#000&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;transparent&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;transparent&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;transparent&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;z-index&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pointer-events: &lt;span style=&#34;color:#66d9ef&#34;&gt;none&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  .&lt;span style=&#34;color:#a6e22e&#34;&gt;select&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;select&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;padding&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;130&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;border&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;none&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;box-shadow&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;none&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;background-color&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;transparent&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;background-image&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;none&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;appearance&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;none&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;iframe width=&#34;100%&#34; height=&#34;300&#34; src=&#34;//jsfiddle.net/4Lop9gj3/1/embedded/result,html,css/&#34; allowfullscreen=&#34;allowfullscreen&#34; frameborder=&#34;0&#34;&gt;&lt;/iframe&gt;</content>
    </item>
    
    <item>
      <title>Autocomplete nativo con datalist</title>
      <link>https://csslab.cl/2015/03/17/autocomplete-nativo-datalist/</link>
      <pubDate>Tue, 17 Mar 2015 18:26:34 +0000</pubDate>
      
      <guid>https://csslab.cl/2015/03/17/autocomplete-nativo-datalist/</guid>
      <description>&lt;p&gt;Un intersante y poco conocido elemento &lt;strong&gt;HTML5&lt;/strong&gt; es &lt;code&gt;&amp;lt;datalist&amp;gt;&lt;/code&gt;, con el cual permite crear de forma nativa un campo de &lt;em&gt;input&lt;/em&gt; con &lt;em&gt;autocomplete&lt;/em&gt;, y con nativo me refiero sin &lt;strong&gt;JavaScript&lt;/strong&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;Un intersante y poco conocido elemento &lt;strong&gt;HTML5&lt;/strong&gt; es &lt;code&gt;&amp;lt;datalist&amp;gt;&lt;/code&gt;, con el cual permite crear de forma nativa un campo de &lt;em&gt;input&lt;/em&gt; con &lt;em&gt;autocomplete&lt;/em&gt;, y con nativo me refiero sin &lt;strong&gt;JavaScript&lt;/strong&gt;.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/wp-content/uploads/2015/03/datalist.gif&#34; alt=&#34;datalist&#34; width=&#34;710&#34; height=&#34;260&#34; class=&#34;alignnone size-full wp-image-2232&#34; /&gt; 
&lt;p&gt;Para utilizarlo, necesitarás un campo de &lt;code&gt;&amp;lt;input /&amp;gt;&lt;/code&gt; común y corriente y linkearlo con el listado de palabras/términos a ser desplegados cuando el usuario tipea en este &lt;code&gt;&amp;lt;input /&amp;gt;&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;label&amp;gt;Marcas de Cerveza&amp;lt;/label&amp;gt;
&amp;lt;input list=&#34;cervezas&#34; placeholder=&#34;Escribe una marca de cerveza:&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora construímos el listado con &lt;code&gt;&amp;lt;datalist&amp;gt;&lt;/code&gt; y en cada &lt;code&gt;&amp;lt;option&amp;gt;&lt;/code&gt; las opciones disponibles:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;datalist id=&#34;cervezas&#34;&amp;gt;
	&amp;lt;option value=&#34;Heineken&#34; /&amp;gt;
	&amp;lt;option value=&#34;Budweiser&#34; /&amp;gt;
	&amp;lt;option value=&#34;Skol&#34; /&amp;gt;
	&amp;lt;option value=&#34;Cristal&#34; /&amp;gt;
	&amp;lt;option value=&#34;Quilmes&#34; /&amp;gt;
	&amp;lt;option value=&#34;Estrella Damm&#34; /&amp;gt;
	&amp;lt;option value=&#34;Sol&#34; /&amp;gt;
	&amp;lt;option value=&#34;Cusqueña&#34; /&amp;gt;
	&amp;lt;option value=&#34;Paceña&#34; /&amp;gt;
	&amp;lt;option value=&#34;Tecate&#34; /&amp;gt;
	&amp;lt;option value=&#34;Corona&#34; /&amp;gt;
	&amp;lt;option value=&#34;Águila&#34; /&amp;gt;
	&amp;lt;option value=&#34;Guinness&#34; /&amp;gt;
	&amp;lt;option value=&#34;Carlsberg&#34; /&amp;gt;
	&amp;lt;option value=&#34;Becks&#34; /&amp;gt;
	&amp;lt;option value=&#34;Brahma&#34; /&amp;gt;
	&amp;lt;option value=&#34;Polar&#34; /&amp;gt;
	&amp;lt;option value=&#34;Medalla&#34; /&amp;gt;
&amp;lt;/datalist&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/datalist/ejemplo1.html&#34;&gt;Ver Ejemplo 1&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nótese que para linkear el &lt;code&gt;&amp;lt;input /&amp;gt;&lt;/code&gt; con el &lt;code&gt;&amp;lt;datalist&amp;gt;&lt;/code&gt; se utiliza el atributo &lt;strong&gt;list=&amp;ldquo;ID-DEL-DATALIST&amp;rdquo;&lt;/strong&gt;. Otro detalle, el &lt;em&gt;autocomplete&lt;/em&gt; detecta &lt;strong&gt;las primeras letras&lt;/strong&gt; de la palabra/término definido en cada &lt;code&gt;&amp;lt;option /&amp;gt;&lt;/code&gt; y no las letras intermedias que contiene la palabra.&lt;/p&gt;
&lt;h3 id=&#34;carga-dinámica-de-datos&#34;&gt;Carga dinámica de datos&lt;/h3&gt;
&lt;p&gt;Si la lista llega a ser muy extensa, podemos hacer una carga dinámica de las palabras/términos mediante &lt;strong&gt;AJAX&lt;/strong&gt;. Para ello necesitaremos un poco de &lt;strong&gt;JavaScript&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Carguemos el listado de países en un campo mientras el usuario está escribiendo en él:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;input id=&#34;paises&#34; list=&#34;json-paises&#34; placeholder=&#34;Escribe el nombre de un país&#34; /&amp;gt;
&amp;lt;datalist id=&#34;json-paises&#34;&amp;gt;&amp;lt;/datalist&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt; para llamar el &lt;strong&gt;JSON&lt;/strong&gt; por &lt;strong&gt;AJAX&lt;/strong&gt; y llenar el &lt;code&gt;&amp;lt;datalist&amp;gt;&lt;/code&gt; con los países:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Definición de un par de variables
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;dataList&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; document.&lt;span style=&#34;color:#a6e22e&#34;&gt;querySelector&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;#json-paises&amp;#39;&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#a6e22e&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; document.&lt;span style=&#34;color:#a6e22e&#34;&gt;querySelector&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;#paises&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Creamos un nuevo XMLHttpRequest
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;request&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;XMLHttpRequest&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Una ves listo, definimos eventos para sus estados
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;request&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;onreadystatechange&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;response&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;request&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;readyState&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;request&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;status&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;// Parseando JSON
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;jsonOptions&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;JSON&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;parse&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;request&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;responseText&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;// Iterando sobre el arreglo JSON
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;jsonOptions&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;forEach&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;item&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// Creando un option por cada país.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;option&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; document.&lt;span style=&#34;color:#a6e22e&#34;&gt;createElement&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;option&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;option&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;item&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;dataList&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;appendChild&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;option&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;input&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;placeholder&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Escribe el nombre de un país&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    } &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;// Error!
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;input&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;placeholder&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Error al cargar lista de países ;^(&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Cambiamos el texto del placeholder
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;input&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;placeholder&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Cargando países&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Abrimos y enviamos el request
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;request&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;open&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;GET&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;json-paises.json&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;request&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;send&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;El formato del &lt;strong&gt;json-paises.json&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Afganistán&amp;#34;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Albania&amp;#34;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Alemania&amp;#34;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Andorra&amp;#34;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Angola&amp;#34;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Anguila&amp;#34;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Antigua y Barbuda&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/datalist/ejemplo2.html&#34;&gt;Ver Ejemplo 2&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;soporte&#34;&gt;Soporte:&lt;/h3&gt;
&lt;p&gt;Desde &lt;strong&gt;IE10&lt;/strong&gt;, pasando por &lt;strong&gt;Firefox&lt;/strong&gt;, &lt;strong&gt;Chrome&lt;/strong&gt;, &lt;strong&gt;Opera&lt;/strong&gt;, &lt;strong&gt;Android Browser&lt;/strong&gt; y sólo &lt;strong&gt;Safari&lt;/strong&gt; decepcionando.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.teamtreehouse.com/creating-autocomplete-dropdowns-datalist-element&#34; target=&#34;_blank&#34;&gt;Creating Autocomplete Dropdowns with the Datalist Element | treehouse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://caniuse.com/#feat=datalist&#34; target=&#34;_blank&#34;&gt;Can I Use: datalist&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Detectando media queries con JavaScript</title>
      <link>https://csslab.cl/2015/02/17/detectando-media-queries-con-javascript/</link>
      <pubDate>Tue, 17 Feb 2015 15:33:30 +0000</pubDate>
      
      <guid>https://csslab.cl/2015/02/17/detectando-media-queries-con-javascript/</guid>
      <description>&lt;p&gt;Hace varios años tuve la inquietud de poder trabajar con el ancho y alto del &lt;em&gt;viewport&lt;/em&gt; y sus cambios mediante &lt;a href=&#34;https://csslab.cl/tags/jquery/&#34;&gt;jQuery&lt;/a&gt;, logrando crear un plugin para ello. &lt;a href=&#34;https://csslab.cl/2009/07/22/jquery-browsersizr/&#34;&gt;BrowserSizr&lt;/a&gt; fue pionero en una época donde &lt;a href=&#34;https://csslab.cl/2013/02/04/layout-responsive-adaptativo-flexible/&#34;&gt;responsive&lt;/a&gt; no existía como palabra ni concepto. Desde entonces se ha masificado y estandarizado este comportamiento, y el &lt;strong&gt;DOM&lt;/strong&gt; ya permite detectar y probar los resultados de media queries mediante &lt;strong&gt;JavaScript&lt;/strong&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;Hace varios años tuve la inquietud de poder trabajar con el ancho y alto del &lt;em&gt;viewport&lt;/em&gt; y sus cambios mediante &lt;a href=&#34;https://csslab.cl/tags/jquery/&#34;&gt;jQuery&lt;/a&gt;, logrando crear un plugin para ello. &lt;a href=&#34;https://csslab.cl/2009/07/22/jquery-browsersizr/&#34;&gt;BrowserSizr&lt;/a&gt; fue pionero en una época donde &lt;a href=&#34;https://csslab.cl/2013/02/04/layout-responsive-adaptativo-flexible/&#34;&gt;responsive&lt;/a&gt; no existía como palabra ni concepto. Desde entonces se ha masificado y estandarizado este comportamiento, y el &lt;strong&gt;DOM&lt;/strong&gt; ya permite detectar y probar los resultados de media queries mediante &lt;strong&gt;JavaScript&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;El objeto &lt;strong&gt;MediaQueryList&lt;/strong&gt; puede recibir el estado de una &lt;em&gt;query&lt;/em&gt; ó recibir notificaciones cuando estos estados cambien. Para utilizarlo, antes, se debe crear el objeto representando el &lt;em&gt;media query&lt;/em&gt; a través del método window.matchMedia. En el siguiente ejemplo, trabajaremos con el valor de &lt;strong&gt;600px&lt;/strong&gt; de un &lt;strong&gt;max-width&lt;/strong&gt; que ya tengo definido con &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;mediaquery&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; window.&lt;span style=&#34;color:#a6e22e&#34;&gt;matchMedia&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;(max-width: 600px)&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;mediaquery&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;matches&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#75715e&#34;&gt;// mediaquery es 600
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;} &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;// mediaquery no es 600
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/matchMedia/ejemplo1.html&#34;&gt;Ver ejemplo 1&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si necesitas constantemente saber en qué estado está el o los media queries, es más eficiente registrar un `listener` que pueda entregarte el resultado siempre que un cambio ocurra:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;function handleOrientationChange(mediaquery) {
  if (mediaquery.matches) {
    // mediaquery dentro de 600
  } else {
    // mediaquery fuera de 600
  }
}
mediaquery.addListener(handleOrientationChange);&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/matchMedia/ejemplo2.html&#34;&gt;Ver ejemplo 2&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;soporte&#34;&gt;Soporte:&lt;/h4&gt;
&lt;p&gt;Chrome, Safari, Firefox, IE10+.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Testing_media_queries&#34; target=&#34;_blank&#34;&gt;Testing media queries | MDN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/paulirish/matchMedia.js/&#34; target=&#34;_blank&#34;&gt;matchMedia polyfill for testing media queries in JS | GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Detectar Blur / Focus a la ventana</title>
      <link>https://csslab.cl/2015/01/30/detectar-blur-focus-a-la-ventana/</link>
      <pubDate>Fri, 30 Jan 2015 15:41:48 +0000</pubDate>
      
      <guid>https://csslab.cl/2015/01/30/detectar-blur-focus-a-la-ventana/</guid>
      <description>Este pequeño snippet permite detectar y realizar alguna acción mediante JavaScript cuando una ventana/tab esté activa (focus) ó desactiva (blur).
Algunas aplicaciones útiles que se me ocurren:
 Guardar datos si el usuario está en un formulario. Iniciar/detener animaciones que quieras que el usuario vea.  A pesar de actualmente existir una API para Page Visibility sabemos que su soporte para IE es escaso. En este caso se utilizarán los eventos onfocus y onblur los que tienen buen soporte (IE8+).</description>
      <content>&lt;p&gt;Este pequeño &lt;em&gt;snippet&lt;/em&gt; permite detectar y realizar alguna acción mediante &lt;a href=&#34;https://csslab.cl/categories/javascript/&#34; title=&#34;Enlace en CSSLab a Javascript&#34;&gt;JavaScript&lt;/a&gt; cuando una ventana/tab esté activa (&lt;em&gt;focus&lt;/em&gt;) ó desactiva (&lt;em&gt;blur&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Algunas aplicaciones útiles que se me ocurren:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Guardar datos si el usuario está en un formulario.&lt;/li&gt;
&lt;li&gt;Iniciar/detener animaciones que quieras que el usuario vea.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A pesar de actualmente existir una &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API&#34; title=&#34;Enlace Externo a Page Visibility API&#34; target=&#34;_blank&#34;&gt;API para Page Visibility&lt;/a&gt; sabemos que su soporte para IE es escaso. En este caso se utilizarán los eventos &lt;strong&gt;onfocus&lt;/strong&gt; y &lt;strong&gt;onblur&lt;/strong&gt; los que tienen buen soporte (IE8+).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;windowBlurFocus&lt;/span&gt;(){
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;focused&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  window.&lt;span style=&#34;color:#a6e22e&#34;&gt;onfocus&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;focused&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;onFocus&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  window.&lt;span style=&#34;color:#a6e22e&#34;&gt;onblur&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;focused&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;onBlur&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/window-blurfocus/&#34;&gt;Ver Ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    </item>
    
    <item>
      <title>Workflow Moderno para Proyectos Front-end</title>
      <link>https://csslab.cl/2014/12/30/workflow-moderno-para-proyectos-front-end/</link>
      <pubDate>Tue, 30 Dec 2014 16:57:15 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/12/30/workflow-moderno-para-proyectos-front-end/</guid>
      <description>&lt;p&gt;Hace unas semanas preparé una pequeña presentación mostrando mi más nuevo proyecto personal: un &lt;em&gt;workflow&lt;/em&gt;, una nueva manera de trabajar proyectos &lt;em&gt;front-end&lt;/em&gt;. Lo he utilizado y perfeccionando a medida que encuentro mejoras, y aquí les comparto los slides de la presentación. Básicamente muestro herramientas de automatización que ayudan a optimizar el flujo de trabajo y por ende minimizar errores, como &lt;a href=&#34;http://gruntjs.com/&#34; target=&#34;_blank&#34;&gt;GruntJS&lt;/a&gt; y de mantenimiento de librerías como &lt;a href=&#34;http://www.bower.io&#34; target=&#34;_blank&#34;&gt;Bower&lt;/a&gt;, además de mi &lt;a href=&#34;https://github.com/juanbrujo/simple-grunt-workflow&#34; target=&#34;_blank&#34;&gt;boilerplate&lt;/a&gt; y cómo utilizarlos en tu ambiente de desarrollo local.&lt;/p&gt;</description>
      <content>&lt;p&gt;Hace unas semanas preparé una pequeña presentación mostrando mi más nuevo proyecto personal: un &lt;em&gt;workflow&lt;/em&gt;, una nueva manera de trabajar proyectos &lt;em&gt;front-end&lt;/em&gt;. Lo he utilizado y perfeccionando a medida que encuentro mejoras, y aquí les comparto los slides de la presentación. Básicamente muestro herramientas de automatización que ayudan a optimizar el flujo de trabajo y por ende minimizar errores, como &lt;a href=&#34;http://gruntjs.com/&#34; target=&#34;_blank&#34;&gt;GruntJS&lt;/a&gt; y de mantenimiento de librerías como &lt;a href=&#34;http://www.bower.io&#34; target=&#34;_blank&#34;&gt;Bower&lt;/a&gt;, además de mi &lt;a href=&#34;https://github.com/juanbrujo/simple-grunt-workflow&#34; target=&#34;_blank&#34;&gt;boilerplate&lt;/a&gt; y cómo utilizarlos en tu ambiente de desarrollo local.&lt;/p&gt;
&lt;p&gt;A continuación la presentación en &lt;a href=&#34;https://speakerdeck.com/csslab/workflow-moderno-para-proyectos-front-end&#34; target=&#34;_blank&#34;&gt;Speakerdeck&lt;/a&gt; y más abajo el enlace al HTML de los slides.&lt;/p&gt;
&lt;script async=&#34;&#34; class=&#34;speakerdeck-embed&#34; data-id=&#34;65e4698056080132b721068d4fdc98ab&#34; data-ratio=&#34;1.29456384323641&#34; src=&#34;//speakerdeck.com/assets/embed.js&#34;&gt;&lt;/script&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/curso/workflow-moderno-proyectos-web/&#34;&gt;Ver presentación&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content>
    </item>
    
    <item>
      <title>Conoce cómo funciona el browser y optimiza tu código frontend</title>
      <link>https://csslab.cl/2014/11/26/conoce-como-funciona-el-browser-y-optimiza-tu-codigo-front-end/</link>
      <pubDate>Wed, 26 Nov 2014 15:49:30 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/11/26/conoce-como-funciona-el-browser-y-optimiza-tu-codigo-front-end/</guid>
      <description>&lt;p&gt;Hace no más de 2 años que la tendencia de los usuarios de internet han visto cómo han crecido de manera indirecta las siguientes afirmaciones:&lt;/p&gt;</description>
      <content>&lt;p&gt;Hace no más de 2 años que la tendencia de los usuarios de internet han visto cómo han crecido de manera indirecta las siguientes afirmaciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los sitios han crecido en peso de sus archivos (&lt;strong&gt;CSS&lt;/strong&gt;, &lt;strong&gt;JS&lt;/strong&gt;, imágenes, tipografías).
&lt;ul&gt;
&lt;li&gt;La cantidad de usuarios que utilizan redes móviles (2G, 3G y 4G) ha crecido mucho, pero muuuucho.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por ende:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hay poca consciencia de que sitios pesados y redes móviles limitadas no son buenos coeficientes de una misma ecuación.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Esto debe llevarnos a una nueva manera de pensar sobre la optimización de sitios relativos al &lt;em&gt;front-end&lt;/em&gt;. Y no sólo por los usuarios y las experiencias que puedan llevar un lento desempeño de tus sitios en sus dispositivos; recuerda que Google considera dentro de su algoritmo de posicionamiento que el tiempo de renderizado sea menor a 1 segundo, suponiendo que con 3 segundos el usuario ya se fue de tu sitio y esperando 10 segundos lo más probable es que nunca más vuelva.&lt;/p&gt;
&lt;p&gt;En este artículo mostraré cómo funciona un &lt;em&gt;browser&lt;/em&gt; desde que inicia el render del código de una página y con esa información algunas técnicas para aumentar la optimización de los elementos que la componen.&lt;/p&gt;
&lt;h2 id=&#34;tramo-crítico-de-renderizado&#34;&gt;Tramo crítico de renderizado&lt;/h2&gt;
&lt;p&gt;Por años se consideró como &lt;em&gt;velocidad de carga&lt;/em&gt; como la rapidez en que vemos la estructura, diseño y contenido de la página cargada. Pero luego Google definió el &lt;em&gt;tramo crítico de renderizado&lt;/em&gt; (&lt;strong&gt;critical rendering path&lt;/strong&gt;) como la secuencia de pasos que el &lt;em&gt;browser&lt;/em&gt; toma de convertir código y recursos asociados en la vista inicial de una página web. Esto cambia la noción completamente, orientándola hacia lo esencial, lo fundamental en tu esa página para después cargar lo secundario. ¿El foco? &lt;strong&gt;Contenido más rápido, mayor &lt;em&gt;pagerank&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A continuación mostraré los procesos que suceden cuando ingresas una &lt;em&gt;URL&lt;/em&gt; en el &lt;em&gt;browser&lt;/em&gt; y el servidor resuelve lo que esa &lt;em&gt;URL&lt;/em&gt; contiene:&lt;/p&gt;
&lt;h2 id=&#34;de-nada-a-contenido&#34;&gt;De nada a contenido&lt;/h2&gt;
&lt;p&gt;Básicamente lo primero que entregará un servidor será código &lt;strong&gt;HTML&lt;/strong&gt; como el siguiente:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&#34;es&#34;&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Título&amp;lt;/title&amp;gt;
    &amp;lt;link href=&#34;style.css&#34; rel=&#34;stylesheet&#34;&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
      &amp;lt;p&amp;gt;Texto &amp;lt;b&amp;gt;en negrita&amp;lt;/b&amp;gt;.
      &amp;lt;img src=&#34;imagen.jpg&#34;&amp;gt;
    &amp;lt;/p&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lo que hace el navegador es &lt;em&gt;parsear&lt;/em&gt; este código dentro del &lt;strong&gt;DOM&lt;/strong&gt; (&lt;em&gt;Document Object Model&lt;/em&gt;), el que corresponde a la representación en forma de árbol del lenguaje &lt;strong&gt;HTML&lt;/strong&gt;. El &lt;em&gt;browser&lt;/em&gt; construye el &lt;strong&gt;DOM&lt;/strong&gt; incrementalmente, o sea, comienza a &lt;em&gt;parsear&lt;/em&gt; el &lt;strong&gt;HTML&lt;/strong&gt; apenas el primer trozo de código es recibido y agrega nodos a la estructura del árbol tanto como sea necesario:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2014/11/img1.png&#34; alt=&#34;img1&#34; class=&#34;alignnone size-full wp-image-2164&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2014/11/img1.png 800w, http://www.csslab.cl/wp-content/uploads/2014/11/img1-300x170.png 300w&#34; sizes=&#34;(max-width: 800px) 100vw, 800px&#34; /&gt; 
&lt;p&gt;En este punto la ventana del navegador aún no muestra nada, pero se está referenciando a un archivo &lt;strong&gt;style.css&lt;/strong&gt; dentro de &lt;head /&gt; Nótese que los estilos de un sitio son parte crítica del renderizado dado que tienen que ser descargados apenas el &lt;em&gt;parser&lt;/em&gt; &lt;strong&gt;HTML&lt;/strong&gt; pase por &lt;strong&gt;&lt;link /&gt;&lt;/strong&gt;. Si tenemos definido como estilos básicos:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;p { font-weight: normal; }
p b { display: none; }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Éstos son &lt;em&gt;parseados&lt;/em&gt; dentro de &lt;strong&gt;CSSOM&lt;/strong&gt; ó &lt;strong&gt;CSS Object Model&lt;/strong&gt;, el que desafortunadamente no puede ser construido incrementalmente como el &lt;strong&gt;DOM&lt;/strong&gt; debido al efecto cascada que determina la naturaleza de &lt;strong&gt;CSS&lt;/strong&gt;; imagina que después de la declaración &lt;strong&gt;CSS&lt;/strong&gt; anterior definieras:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;p { font-weight: bold; }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lo que causaría que sobre-escribieras la primera declaración de &lt;code&gt;p {}&lt;/code&gt;, demostrando que se debe esperar que todo el &lt;strong&gt;CSS&lt;/strong&gt; sea descargado y procesado antes podamos renderizarlo. Por ende, &lt;strong&gt;CSS&lt;/strong&gt; bloquea el render hasta que la representación de &lt;strong&gt;CSS&lt;/strong&gt; y &lt;strong&gt;HTML&lt;/strong&gt; sean entendidos por el &lt;em&gt;browser&lt;/em&gt;, construyendo recién en ese momento el árbol de renderizado (&lt;strong&gt;render tree&lt;/strong&gt;). Esta estructura combina el &lt;strong&gt;DOM&lt;/strong&gt; y &lt;strong&gt;CSSOM&lt;/strong&gt; pero considerando sólo los elementos visibles:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2014/11/img2.png&#34; alt=&#34;img2&#34; class=&#34;alignnone size-full wp-image-2167&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2014/11/img2.png 800w, http://www.csslab.cl/wp-content/uploads/2014/11/img2-300x170.png 300w&#34; sizes=&#34;(max-width: 800px) 100vw, 800px&#34; /&gt; 
&lt;p&gt;Como habrán notado, el &lt;strong&gt;&lt;b&gt;&lt;/strong&gt; dentro de &lt;strong&gt;&lt;p&gt;&lt;/strong&gt; no está considerado debido a que no es visible para el &lt;strong&gt;DOM&lt;/strong&gt; (&lt;code&gt;display: none;&lt;/code&gt;) mediante &lt;strong&gt;CSS&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Los pixeles recién aparecen luego de 2 pasos: estructura (&lt;em&gt;layout&lt;/em&gt;) y pintura (&lt;em&gt;paint&lt;/em&gt;). La estructura se encarga de calcular las posiciones y dimensiones de cada elemento respecto al viewport actual; ya la pintura agrega los colores, formas, sombras y demás efectos de estilo terminando de mostrar la página renderizada. Cada vez que el árbol de render cambia (por ej. mediante &lt;strong&gt;JavaScript&lt;/strong&gt;) o el &lt;em&gt;viewport&lt;/em&gt; cambia (utilizando &lt;a href=&#34;https://csslab.cl/2013/02/04/layout-responsive-adaptativo-flexible/&#34;&gt;interfaces líquidas, adaptativas ó responsive&lt;/a&gt;) estructura y pintado vuelven a crearse.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Estructuras líquidos/responsive tienen mayor carga en el layout/paint que estructuras adaptativas&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;El &lt;strong&gt;tramo crítico de renderizado&lt;/strong&gt; completo se ve en el siguiente diagrama:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2014/11/img3.png&#34; alt=&#34;img3&#34;  class=&#34;alignnone size-full wp-image-2169&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2014/11/img3.png 800w, http://www.csslab.cl/wp-content/uploads/2014/11/img3-300x116.png 300w&#34; sizes=&#34;(max-width: 800px) 100vw, 800px&#34; /&gt; 
&lt;h3 id=&#34;y-las-imágenes&#34;&gt;¿Y las imágenes?&lt;/h3&gt;
&lt;p&gt;No son considerados críticas para la construcción del &lt;strong&gt;DOM&lt;/strong&gt;, por lo tanto, no bloquean el renderizado de una página. Pero sí influyen y bloquean el evento &lt;strong&gt;Load&lt;/strong&gt;, el que corresponde a la carga y proceso de todos los elementos considerados dentro de un &lt;strong&gt;HTML&lt;/strong&gt; adicionando &lt;strong&gt;CSS&lt;/strong&gt; y &lt;strong&gt;JavaScript&lt;/strong&gt;. Así vemos que las imágenes deben ser siempre optimizadas pero no bloquean el tramo crítico de renderizado.&lt;/p&gt;
&lt;h2 id=&#34;no-olvidemos-a-javascript&#34;&gt;No olvidemos a JavaScript&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;JavaScript&lt;/strong&gt; es otro actor que influye directamente en nuestro tramo crítico de renderizado. A partir del primer código &lt;strong&gt;HTML&lt;/strong&gt; entregado, lo expandiremos agregando &lt;strong&gt;JavaScript&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&#34;es&#34;&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Título&amp;lt;/title&amp;gt;
    &amp;lt;link href=&#34;style.css&#34; rel=&#34;stylesheet&#34;&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
      &amp;lt;p&amp;gt;Texto &amp;lt;b&amp;gt;en negrita&amp;lt;/b&amp;gt;.
      &amp;lt;script&amp;gt;
      document.write(&#39;&amp;lt;h1&amp;gt;olakease&amp;lt;/h1&amp;gt;&#39;);
      var elem = document.querySelector(&#39;h1&#39;);
      elem.style.color = &#39;green&#39;;
	    &amp;lt;/script&amp;gt;  
      &amp;lt;img src=&#34;imagen.jpg&#34;&amp;gt;
    &amp;lt;/p&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este sencillo script demuestra que cambiar el &lt;strong&gt;DOM&lt;/strong&gt; puede tambien influir en el &lt;strong&gt;CSSOM&lt;/strong&gt;. Mientras &lt;strong&gt;JavaScript&lt;/strong&gt; agrega un nuevo elemento al &lt;strong&gt;DOM&lt;/strong&gt; &lt;code&gt;&amp;lt;h1&amp;gt;olakease&amp;lt;/h1&amp;gt;&lt;/code&gt;, el &lt;em&gt;parser&lt;/em&gt; debe parar hasta que el &lt;em&gt;script&lt;/em&gt; sea ejecutado por completo. Luego se determina el color del elemento recién creado, lo que hace que &lt;strong&gt;CSSOM&lt;/strong&gt; esté presente antes de que el &lt;em&gt;script&lt;/em&gt; sea ejecutado.&lt;/p&gt;
&lt;p&gt;Ahora aislemos el &lt;em&gt;script&lt;/em&gt; llevándolo a un llamado de un archivo externo &lt;strong&gt;.js&lt;/strong&gt;**:**&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&#34;es&#34;&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Título&amp;lt;/title&amp;gt;
    &amp;lt;link href=&#34;style.css&#34; rel=&#34;stylesheet&#34;&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
      &amp;lt;p&amp;gt;Texto &amp;lt;b&amp;gt;en negrita&amp;lt;/b&amp;gt;.
      &amp;lt;script src=&#34;app.js&#34;&amp;gt;&amp;lt;/script&amp;gt;  
      &amp;lt;img src=&#34;imagen.jpg&#34;&amp;gt;
    &amp;lt;/p&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2014/11/img4.png&#34; alt=&#34;img4&#34; class=&#34;alignnone size-full wp-image-2170&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2014/11/img4.png 800w, http://www.csslab.cl/wp-content/uploads/2014/11/img4-300x149.png 300w&#34; sizes=&#34;(max-width: 800px) 100vw, 800px&#34; /&gt; 
&lt;p&gt;El nuevo archivo externo realiza un request adicional, pero a pesar del lugar en que lo llames dentro del &lt;strong&gt;HTML&lt;/strong&gt;, siempre &lt;strong&gt;CSS&lt;/strong&gt; será parseado primero. Apenas &lt;strong&gt;CSSOM&lt;/strong&gt; es interpretado, el contenido del &lt;em&gt;script&lt;/em&gt; puede ser ejecutado y solo después de esto el &lt;em&gt;parser&lt;/em&gt; del &lt;strong&gt;DOM&lt;/strong&gt; puede terminar de ser ejecutado. Es un juego de &lt;strong&gt;parser-render-bloqueo-render-bloqueo-parser&lt;/strong&gt;.&lt;/p&gt;
&lt;img aria-describedby=&#34;caption-attachment-2176&#34; loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2014/11/scale-1024x624.jpg&#34; class=&#34;size-large wp-image-2176&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2014/11/scale-1024x624.jpg 1024w, http://www.csslab.cl/wp-content/uploads/2014/11/scale-300x182.jpg 300w, http://www.csslab.cl/wp-content/uploads/2014/11/scale-1200x731.jpg 1200w, http://www.csslab.cl/wp-content/uploads/2014/11/scale.jpg 1600w&#34; sizes=&#34;(max-width: 1024px) 100vw, 1024px&#34; /&gt;
&lt;h2 id=&#34;técnicas-de-optimización&#34;&gt;Técnicas de optimización&lt;/h2&gt;
&lt;p&gt;Ahora que conocemos los conceptos, es hora de anotar cómo podemos poner algo en práctica. Hay 3 puntos claves donde puedes optimizar el tramo crítico de renderizado y que permite que el &lt;em&gt;browser&lt;/em&gt; produzca resultados visibles con mayor rapidez.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No olvides tener en cuenta que debes utilizar estos consejos con cautela y sabiduría; hazlo con cuidado, asesórate y recuerda que no existen recetas milagrosas ni fórmulas de éxito; cada situación es particular.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;minimiza-los-bytes-que-son-llamados-por-el-servidor&#34;&gt;Minimiza los bytes que son llamados por el servidor&lt;/h3&gt;
&lt;p&gt;Regla simple: &lt;strong&gt;mientras más liviano tu sitio, más rápido carga y renderiza&lt;/strong&gt;. Sencillo. &lt;strong&gt;Minifica, comprime y utiliza caché en tus assets estáticos&lt;/strong&gt; y tu &lt;strong&gt;HTML&lt;/strong&gt;. No temas comprimir el código &lt;strong&gt;HTML&lt;/strong&gt; removiendo espacios blancos (&lt;em&gt;whitespaces&lt;/em&gt;) y comentarios innecesarios cuando vayas a ambiente productivo.&lt;/p&gt;
&lt;h3 id=&#34;minimiza-el-css-que-bloquea-el-renderizado&#34;&gt;Minimiza el &lt;strong&gt;CSS&lt;/strong&gt; que bloquea el renderizado&lt;/h3&gt;
&lt;p&gt;Recuerda que &lt;strong&gt;CSS&lt;/strong&gt; bloquea al renderizado y ejecución de &lt;strong&gt;JavaScript&lt;/strong&gt;, así que entregar los estilos al usuario lo más rápido posible es imperativo. Asegúrate que todas las etiquetas &lt;strong&gt;&lt;link&gt;&lt;/strong&gt; estén dentro del &lt;strong&gt;&lt;head&gt;&lt;/strong&gt; de tu documento &lt;strong&gt;HTML&lt;/strong&gt; para que el navegador las cargue y renderice de inmediato.&lt;/p&gt;
&lt;p&gt;Otra estrategia es disminuir el &lt;strong&gt;CSS&lt;/strong&gt; que bloquea el renderizado mediante &lt;em&gt;media queries&lt;/em&gt;. Digamos que nuestro sitio de ejemplo tiene estilos para impresión y reglas declaradas para dispositivos móviles en orientación &lt;em&gt;landscape&lt;/em&gt;. Puedes separar el &lt;strong&gt;CSS&lt;/strong&gt; en varios archivos y dejar que el &lt;em&gt;browser&lt;/em&gt; las parsee condicionalmente:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;head&amp;gt;
  &amp;lt;title&amp;gt;Sitio Ejemplo&amp;lt;/title&amp;gt;
  &amp;lt;link href=&#34;style.css&#34; rel=&#34;stylesheet&#34;&amp;gt;
  &amp;lt;link href=&#34;print.css&#34; rel=&#34;stylesheet&#34; media=&#34;print&#34;&amp;gt;
  &amp;lt;link href=&#34;landscape.css&#34; rel=&#34;stylesheet&#34; media=&#34;orientation:landscape&#34;&amp;gt;
&amp;lt;/head&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Claramente el peso de nuestro &lt;strong&gt;style.css&lt;/strong&gt; será menor debido al código removido y que repartimos entre los otros 2 archivos &lt;strong&gt;.css&lt;/strong&gt;, los cuales serán utilizados sólo cuando realmente necesarios. Esto no quiere decir que no serán cargados; el navegador los descarga al inicio pero en menor prioridad que el principal y en paralelo al proceso de renderizado.&lt;/p&gt;
&lt;p&gt;Otro recurso es agregar como estilo inline (dentro del &lt;strong&gt;&lt;head&gt;&lt;/strong&gt; mediante &lt;strong&gt;&lt;style&gt;&lt;/style&gt;&lt;/strong&gt;) evitando que el &lt;em&gt;browser&lt;/em&gt; realice un &lt;em&gt;request&lt;/em&gt; al servidor por un nuevo archivo. Esta técnica se utiliza para el primer render, el que se realiza &lt;strong&gt;above de fold&lt;/strong&gt;. El &lt;strong&gt;CSS&lt;/strong&gt; que comanda lo que primero está en el &lt;em&gt;viewport&lt;/em&gt; del &lt;em&gt;browser&lt;/em&gt;, para luego continuar con el resto de la estructura mediante archivos enlazados con &lt;strong&gt;&lt;link&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;head&amp;gt;
  &amp;lt;title&amp;gt;Sitio Ejemplo&amp;lt;/title&amp;gt;
  &amp;lt;script&amp;gt;
  header { ... }
  header nav { ... }
  header .logo { ... }
  &amp;lt;/script&amp;gt;
  &amp;lt;link href=&#34;style.css&#34; rel=&#34;stylesheet&#34;&amp;gt;
&amp;lt;/head&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Algunas herramientas que te ayudan a calcular el &lt;strong&gt;CSS&lt;/strong&gt; crítico (&lt;em&gt;above the fold&lt;/em&gt;) y separar los estilos para servir esta vista son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/filamentgroup/grunt-criticalCSS&#34; target=&#34;_blank&#34;&gt;grunt-criticalcss&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/addyosmani/critical&#34; target=&#34;_blank&#34;&gt;critical&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finalmente, ¿que tal llamar tus archivos &lt;strong&gt;.css&lt;/strong&gt; de forma &lt;a href=&#34;https://csslab.cl/?s=ajax&#34;&gt;asíncrona&lt;/a&gt;? Suena descabellado pero se creó &lt;a href=&#34;https://github.com/filamentgroup/loadCSS&#34; target=&#34;_blank&#34;&gt;loadCSS&lt;/a&gt;, una función &lt;strong&gt;JavaScript&lt;/strong&gt; que carga &lt;strong&gt;CSS&lt;/strong&gt; de forma asíncrona, especial para esos pesados &lt;a href=&#34;https://csslab.cl/2010/11/30/mas-y-mejores-tipografias-con-font-face/&#34;&gt;@font-face&lt;/a&gt; por ejemplo.&lt;/p&gt;
&lt;h3 id=&#34;minimiza-el-bloqueo-del-parser-de-javascript&#34;&gt;Minimiza el bloqueo del parser de JavaScript&lt;/h3&gt;
&lt;p&gt;Lo misma regla ocurre con &lt;strong&gt;JavaScript&lt;/strong&gt;. Si necesitas unas pocas líneas de código en el render inicial, considera agregarlos dentro de tu &lt;strong&gt;HTML&lt;/strong&gt; mediante &lt;strong&gt;&lt;script&gt;&lt;/script&gt;&lt;/strong&gt; ahorrarás descargas al servidor y por ende tendrás una respuesta más rápida al usuario.&lt;/p&gt;
&lt;p&gt;En un caso óptimo llamas todo tu &lt;strong&gt;JavaScript&lt;/strong&gt; en un mismo archivo al final de tu documento &lt;strong&gt;HTML&lt;/strong&gt;. Pero en otros pasos, escribiendo código modular, puedes separar tus archivos y llamarlos asincrónicamente siempre y cuando no interactúen con el &lt;strong&gt;DOM&lt;/strong&gt; ni el &lt;strong&gt;CSSOM&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;...
    &amp;lt;script src=&#34;retardo.js&#34; async&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con esto le dices al navegador que no necesita ejecutar el &lt;em&gt;script&lt;/em&gt; en el momento en que es llamado en documento &lt;strong&gt;HTML&lt;/strong&gt;. Esto también permite que el &lt;em&gt;browser&lt;/em&gt; continúe construyendo el &lt;strong&gt;DOM&lt;/strong&gt; y ejecute &lt;em&gt;scripts&lt;/em&gt; cuando el &lt;strong&gt;DOM&lt;/strong&gt; esté completo. Imagina código de &lt;em&gt;Analytics&lt;/em&gt;, redes sociales en este &lt;strong&gt;retardo.js&lt;/strong&gt;, el que no interactúa con el &lt;strong&gt;DOM&lt;/strong&gt; ni el &lt;strong&gt;CSSOM&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Finalmente, una técnica y herramienta interesante es &lt;a href=&#34;http://addyosmani.github.io/basket.js/&#34; target=&#34;_blank&#34;&gt;basket.js&lt;/a&gt; donde en teoría, cargas tus &lt;em&gt;script críticos&lt;/em&gt; y recurrentes y los guardas en el &lt;em&gt;localstorage&lt;/em&gt; del &lt;em&gt;browser&lt;/em&gt; (&lt;strong&gt;HTML5&lt;/strong&gt;), para utilizarlo desde ahí mientras dure la navegación del usuario y cuando éste regrese.&lt;/p&gt;
&lt;p&gt;Suena bien. Manos a la obra.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://developers.google.com/web/fundamentals/&#34; target=&#34;_blank&#34;&gt;Web Fundamentals by Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developers.google.com/speed/pagespeed/insights/&#34; target=&#34;_blank&#34;&gt;Google PageSpeed Insights&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.sitepoint.com/optimizing-critical-rendering-path/&#34; target=&#34;_blank&#34;&gt;Optimizing the Critical Rendering Path&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Recorrer arreglos en pre-processors</title>
      <link>https://csslab.cl/2014/11/05/recorrer-arreglos-en-pre-processors/</link>
      <pubDate>Wed, 05 Nov 2014 15:44:24 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/11/05/recorrer-arreglos-en-pre-processors/</guid>
      <description>&lt;p&gt;Hace unos 4 proyectos atrás, me enfrenté al dilema de crear y recorrer un &lt;strong&gt;array&lt;/strong&gt; de elementos -en este caso colores en hexacromía- y crear clases &lt;strong&gt;CSS&lt;/strong&gt; dinámicamente a partir de cada uno de los colores contenidos en el arreglo. Algo sencillo de lograr en &lt;strong&gt;JavaScript&lt;/strong&gt; pero que &lt;em&gt;curiosamente&lt;/em&gt; tiene diferentes soluciones por cada tipo de [pre-processor][1]. Mientras &lt;strong&gt;SCSS&lt;/strong&gt; y &lt;strong&gt;Stylus&lt;/strong&gt; son más sencillos, con &lt;strong&gt;LESS&lt;/strong&gt; es necesario un poco más de código para lograr lo mismo, pero que se espera se solucione en una pronta versión.&lt;/p&gt;</description>
      <content>&lt;p&gt;Hace unos 4 proyectos atrás, me enfrenté al dilema de crear y recorrer un &lt;strong&gt;array&lt;/strong&gt; de elementos -en este caso colores en hexacromía- y crear clases &lt;strong&gt;CSS&lt;/strong&gt; dinámicamente a partir de cada uno de los colores contenidos en el arreglo. Algo sencillo de lograr en &lt;strong&gt;JavaScript&lt;/strong&gt; pero que &lt;em&gt;curiosamente&lt;/em&gt; tiene diferentes soluciones por cada tipo de [pre-processor][1]. Mientras &lt;strong&gt;SCSS&lt;/strong&gt; y &lt;strong&gt;Stylus&lt;/strong&gt; son más sencillos, con &lt;strong&gt;LESS&lt;/strong&gt; es necesario un poco más de código para lograr lo mismo, pero que se espera se solucione en una pronta versión.&lt;/p&gt;
&lt;p&gt;A continuación, snippets de cómo recorrer arreglos y usar sus elementos en &lt;strong&gt;LESS&lt;/strong&gt;, &lt;strong&gt;SCSS&lt;/strong&gt; y &lt;strong&gt;Stylus&lt;/strong&gt;:&lt;/p&gt;
&lt;h3 id=&#34;less&#34;&gt;LESS&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;
// Creamos un arreglo con 4 colores:
@colores: &#39;#767676&#39;,&#39;#8cc079&#39;,&#39;#b35d5d&#39;,&#39;#81babd&#39;;
// Guardamos el total de elementos del arreglo:
@cuantos: length(@colores);
// Recorramos cada uno de los elementos del arreglo @colores:
.loop (@index) when (@index &gt; 0){
  // Obtengamos el nombre de cada color
  @color: e(extract(@colores,@index));
  // Ahora podemos utilizarlo:
  elemento-@{index} {
    color: @color;
  }
  .loop (@index - 1);
}
.loop(0){}
// Seguimos recorriendo hasta llegar al total (último):
.loop(@cuantos);
// Fin&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;scss&#34;&gt;SCSS&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;
// Creamos un arreglo con 4 colores:
$colores: (#767676, #8cc079, #b35d5d, #81babd);
// Recorramos cada uno de los elementos del arreglo @colores:
@each $color in $colores {
  // Obtengamos el índice de cada $color en $colores:
  $i: index($colores, $color);
  // Ahora podemos utilizarlo:
  elemento-#{$i} {
    color: $color;
  }
}
// Fin&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;stylus&#34;&gt;Stylus&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;
// Creamos un arreglo con 4 colores:
colores = ( #767676 #8cc079 #b35d5d #81babd )
// Guardamos el total de elementos del arreglo:
cuantos = length(colores) - 1
// Recorramos cada uno de los elementos del arreglo @colores hasta llegar al total (último):
for i in (0..cuantos)
// Ahora podemos utilizarlo:
  elemento-{i + 1}
    color colores[i]
// Fin&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/etiqueta/pre-procesadores/&#34;&gt;http://www.csslab.cl/etiqueta/pre-procesadores/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Tag: Pre-Procesadores&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Bordes Doblados Flat – LESS mixin</title>
      <link>https://csslab.cl/2014/10/08/bordes-doblados-flat-less-mixin/</link>
      <pubDate>Wed, 08 Oct 2014 15:34:33 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/10/08/bordes-doblados-flat-less-mixin/</guid>
      <description>&lt;p&gt;El siguiente es un &lt;em&gt;mixin&lt;/em&gt; para [LESS][1] que creé que genera el efecto de bordes doblados dado un elemento &lt;strong&gt;HTML&lt;/strong&gt; y con colores sólidos asociados.&lt;/p&gt;</description>
      <content>&lt;p&gt;El siguiente es un &lt;em&gt;mixin&lt;/em&gt; para [LESS][1] que creé que genera el efecto de bordes doblados dado un elemento &lt;strong&gt;HTML&lt;/strong&gt; y con colores sólidos asociados.&lt;/p&gt;
&lt;h3 id=&#34;uso&#34;&gt;Uso:&lt;/h3&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;.flatCornerFold(@foldSize,color,bgcolor,direction,intensity);&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;foldSize&lt;/strong&gt;: tamaño del doblez en forma de triángulo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;color&lt;/strong&gt;: HEX para doblez (más claro) y sombra (más oscuro).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bgcolor&lt;/strong&gt;: HEX para el fondo del triángulo; debería ser el mismo del fondo de la página (body) para dar el efecto de transparencia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;direction&lt;/strong&gt;: valores: bottomright (por defecto) | topright | topleft | bottomleft.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;intensity&lt;/strong&gt;: opacidad (0% ~ 100%) del efecto del doblez.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ejemplo&#34;&gt;Ejemplo:&lt;/h3&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;@color: #ecf0f1;
@bgcolor: #ecf0f1;
@foldSize: 3rem;
selector {
    .flatCornerFold(@foldSize,@color,@bgcolor,bottomright,25%);
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;ejemplo-avanzado&#34;&gt;Ejemplo Avanzado:&lt;/h3&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;selector {
    .flatCornerFold(1rem,#ecf0f1,#ecf0f1,bottomright,25%);
}
selector:after,
    selector:before {
        transition: .3s;
    }
selector:hover {
    .flatCornerFold(3rem,#ecf0f1,#ecf0f1,bottomright,25%);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/juanbrujo/flatCornerFold.less&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;flatCornerFold.less en GitHub&amp;quot;&#34; class=&#34;verejemplo&#34;&gt;Ver en GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/etiqueta/less/&#34;&gt;http://www.csslab.cl/etiqueta/less/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Etiquetas: LESS&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Loops para todos los gustos</title>
      <link>https://csslab.cl/2014/09/30/loops-para-todos-los-gustos/</link>
      <pubDate>Tue, 30 Sep 2014 13:45:05 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/09/30/loops-para-todos-los-gustos/</guid>
      <description>&lt;p&gt;En desarrollo &lt;em&gt;front-end&lt;/em&gt; se da a menudo que tengamos etiquetas y selectores que se repitan varias veces, con la misma o diferentes clases ó valores que vayan en incremento/decremento. Pero como &lt;strong&gt;HTML&lt;/strong&gt; y &lt;strong&gt;CSS&lt;/strong&gt; no son lenguajes de programación (no tienen lógica asociada) esto no lo podemos automatizar.&lt;/p&gt;</description>
      <content>&lt;p&gt;En desarrollo &lt;em&gt;front-end&lt;/em&gt; se da a menudo que tengamos etiquetas y selectores que se repitan varias veces, con la misma o diferentes clases ó valores que vayan en incremento/decremento. Pero como &lt;strong&gt;HTML&lt;/strong&gt; y &lt;strong&gt;CSS&lt;/strong&gt; no son lenguajes de programación (no tienen lógica asociada) esto no lo podemos automatizar.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Un &lt;em&gt;loop&lt;/em&gt; es un bloque de código que se ejecuta tanto cuanto una condición sea verdadera (true).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Afortunadamente, los [pre-processors][1] que existen actualmente son basados en lenguajes de programación ([JavaScript][2], &lt;strong&gt;Ruby&lt;/strong&gt;, etc.) a los que podemos aplicar este y muchos otros tipos de lógica y que luego interpretan el código y lo compilan como &lt;strong&gt;HTML/CSS&lt;/strong&gt; puro. En esta ocasión abordaré loops en los [pre-processors][1] más usados actualmente: &lt;strong&gt;[HTML]&lt;/strong&gt; &lt;a href=&#34;http://jade-lang.com/&#34; target=&#34;_blank&#34;&gt;Jade&lt;/a&gt;, &lt;a href=&#34;http://slim-lang.com/&#34; target=&#34;_blank&#34;&gt;Slim&lt;/a&gt;, &lt;a href=&#34;http://liquidmarkup.org/&#34; target=&#34;_blank&#34;&gt;Liquid&lt;/a&gt;, &lt;a href=&#34;http://haml.info/&#34; target=&#34;_blank&#34;&gt;Haml&lt;/a&gt;, &lt;strong&gt;[CSS]&lt;/strong&gt; &lt;a href=&#34;http://lesscss.org/&#34; target=&#34;_blank&#34;&gt;Less&lt;/a&gt;, &lt;a href=&#34;http://sass-lang.com/&#34; target=&#34;_blank&#34;&gt;Sass&lt;/a&gt; y &lt;a href=&#34;http://learnboost.github.io/stylus/&#34; target=&#34;_blank&#34;&gt;Stylus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En los siguientes ejemplos, para cada [pre-processor][1] se iterará sobre sus elementos 10 veces:&lt;/p&gt;
&lt;h3 id=&#34;jade&#34;&gt;Jade&lt;/h3&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;- for (var x = 0; x &amp;lt; 10; x++)
  element(attr=&#34;value&#34;)&lt;/code&gt;&amp;lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;slim&#34;&gt;Slim&lt;/h3&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;- for i in (1..10)
  element #{i}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;liquid&#34;&gt;Liquid&lt;/h3&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;{% for x in (1..10) %}
  Element {{ i }}
{% endfor %}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;haml&#34;&gt;Haml&lt;/h3&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;- (1..10).each do |i|
  %element&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;less&#34;&gt;Less&lt;/h3&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;.loop(@index) when (@index &gt; 0){
  selector:nth-child(@{index}) { 
    property: @index * 1px; 
  }
  .loop(@index - 1);
}
.loop(0){}
.loop(10);&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;sass&#34;&gt;Sass&lt;/h3&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;@for $i from 1 through 10
  .#{element}-#{$i}
    property: $i * 1px&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;stylus&#34;&gt;Stylus&lt;/h3&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;for $i in (1..10)
    property $i * 1px&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://jade-lang.com/&#34; target=&#34;_blank&#34;&gt;Jade: Node template engine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://slim-lang.com/&#34; target=&#34;_blank&#34;&gt;Slim: Fast, lightweight template engine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://liquidmarkup.org/&#34; target=&#34;_blank&#34;&gt;Liquid templating language&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://haml.info/&#34; target=&#34;_blank&#34;&gt;Haml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://lesscss.org/&#34; target=&#34;_blank&#34;&gt;Less: CSS pre-processor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://sass-lang.com/&#34; target=&#34;_blank&#34;&gt;Sass: Syntatically awesome stylesheets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://learnboost.github.io/stylus/&#34; target=&#34;_blank&#34;&gt;Stylus: expressive, robust, feature-rich CSS preprocessor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/etiqueta/pre-procesadores/&#34;&gt;http://www.csslab.cl/etiqueta/pre-procesadores/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Tag: Pre-Procesadores&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/categoria/javascript/&#34;&gt;http://www.csslab.cl/categoria/javascript/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Categoría: JavaScript&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Textos con borde</title>
      <link>https://csslab.cl/2014/09/17/textos-con-borde/</link>
      <pubDate>Wed, 17 Sep 2014 16:21:09 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/09/17/textos-con-borde/</guid>
      <description>&lt;p&gt;Un pequeño efecto que realicé para este nuevo diseño de CSSLab fue agregar borde a un caracter dentro de los blockquote, pero este efecto puede aplicarse a textos de cualquier tipo y con cualquier fuente, incluso si son @font-face. Entre las soluciones que encontré, existen principalmente 2:&lt;/p&gt;</description>
      <content>&lt;p&gt;Un pequeño efecto que realicé para este nuevo diseño de CSSLab fue agregar borde a un caracter dentro de los blockquote, pero este efecto puede aplicarse a textos de cualquier tipo y con cualquier fuente, incluso si son @font-face. Entre las soluciones que encontré, existen principalmente 2:&lt;/p&gt;
&lt;h3 id=&#34;-webkit-text-stroke&#34;&gt;-webkit-text-stroke&lt;/h3&gt;
&lt;p&gt;Esta propiedad &lt;a href=&#34;http://caniuse.com/#feat=text-stroke&#34; title=&#34;Enlace externo a &amp;quot;Can I Use&amp;quot;&#34; target=&#34;_blank&#34;&gt;sólo es utilizada por browsers Webkit&lt;/a&gt; y ha sido así desde que se creó. No ahondaré en su uso por este mismo motivo, pero mostraré su sintaxis:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;-webkit-text-stroke: 4px black;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;múltiples-text-shadow&#34;&gt;Múltiples text-shadow&lt;/h3&gt;
&lt;p&gt;Esta propiedad sí tiene amplio soporte y permite tener múltiples sombras alrededor de un mismo caracter, junto a regular su espesor y nivel de desenfoque hará que una línea del grueso que definamos rodee cada caracter, de la siguiente manera:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;text-shadow:
  -4px -4px 0 #000,  
  4px -4px 0 #000,
  -4px 4px 0 #000,
  4px 4px 0 #000;&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;texto-con-borde&#34;&gt;
  texto-con-borde
&lt;/div&gt;
&lt;h4 id=&#34;link&#34;&gt;Link:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://css-tricks.com/adding-stroke-to-web-text/&#34;&gt;Adding Stroke to Web Text | CSS Tricks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Cerrar video cuando termina en iOS</title>
      <link>https://csslab.cl/2014/09/04/cerrar-video-cuando-termina-en-ios/</link>
      <pubDate>Thu, 04 Sep 2014 04:06:39 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/09/04/cerrar-video-cuando-termina-en-ios/</guid>
      <description>En iOS, cuando intentamos utilizar un elemento nos vemos obligados a que el player del dispositivo se haga cargo. No podemos aplicar autoplay ni responder a su comportamiento, ya que es intrínseco del sistema operativo y no del browser. Felizmente iOS implementó un callback el cual responde a eventos del video y en este caso, responde cuando el video termina. Cuando tocamos un video podemos saber el final de éste y aplicar algún evento mediante [JavaScript][1].</description>
      <content>&lt;p&gt;En &lt;em&gt;iOS&lt;/em&gt;, cuando intentamos utilizar un elemento &lt;video /&gt; nos vemos obligados a que el &lt;em&gt;player&lt;/em&gt; del dispositivo se haga cargo. No podemos aplicar &lt;em&gt;autoplay&lt;/em&gt; ni responder a su comportamiento, ya que es intrínseco del sistema operativo y no del &lt;em&gt;browser&lt;/em&gt;. Felizmente &lt;strong&gt;iOS&lt;/strong&gt; implementó un &lt;em&gt;callback&lt;/em&gt; el cual responde a eventos del video y en este caso, responde cuando el video termina. Cuando tocamos un video podemos saber el final de éste y aplicar algún evento mediante [JavaScript][1].&lt;/p&gt;
&lt;p&gt;Dado el siguiente elemento de video:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;video id=&#34;video&#34; controls&amp;gt;&amp;lt;br /&gt;
   &amp;lt;source src=&#34;http://vjs.zencdn.net/v/oceans.webm&#34; type=&#34;video/webm&#34;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;br /&gt;
   &amp;lt;source src=&#34;http://vjs.zencdn.net/v/oceans.mp4&#34; type=&#34;video/mp4&#34;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con [JavaScript][1] podemos escuchar el final del video y aplicar algún otro evento:&lt;/p&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;$(&#39;#video&#39;).bind(&#39;ended&#39;, function() {   
  // Cerramos la ventana del video
  var videoEl = document.getElementById(&#39;video&#39;);  
  videoEl.webkitExitFullScreen();
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/categoria/javascript/&#34;&gt;http://www.csslab.cl/categoria/javascript/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;JavaScript&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Centrando texto verticalmente III: flexbox</title>
      <link>https://csslab.cl/2014/08/13/centrando-texto-verticalmente-iii-flexbox/</link>
      <pubDate>Wed, 13 Aug 2014 16:08:00 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/08/13/centrando-texto-verticalmente-iii-flexbox/</guid>
      <description>&lt;p&gt;No he escrito nada sobre la propiedad &lt;strong&gt;flexbox&lt;/strong&gt; debido a su poco alcance en los &lt;em&gt;browsers&lt;/em&gt; pero creo que ya es el momento. Se puede utilizar &lt;strong&gt;display: flex&lt;/strong&gt; desde &lt;em&gt;IE10+&lt;/em&gt; (con prefijo &lt;strong&gt;-ms-&lt;/strong&gt;) y &lt;em&gt;Firefox / Chrome / Opera&lt;/em&gt; lo soportan bastante bien.&lt;/p&gt;</description>
      <content>&lt;p&gt;No he escrito nada sobre la propiedad &lt;strong&gt;flexbox&lt;/strong&gt; debido a su poco alcance en los &lt;em&gt;browsers&lt;/em&gt; pero creo que ya es el momento. Se puede utilizar &lt;strong&gt;display: flex&lt;/strong&gt; desde &lt;em&gt;IE10+&lt;/em&gt; (con prefijo &lt;strong&gt;-ms-&lt;/strong&gt;) y &lt;em&gt;Firefox / Chrome / Opera&lt;/em&gt; lo soportan bastante bien.&lt;/p&gt;
&lt;p&gt;Por ahora esta propiedad permite la mejor manera de [centrar verticalmente][1] cualquier texto sin tener que agregar &lt;strong&gt;HTML&lt;/strong&gt; extra.&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;Dado el siguiente &lt;strong&gt;HTML&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;div class=&#34;vertical-centered-text&#34;&amp;gt;
  Este texto será centrado verticalmente gracias a display: flex;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El sencillo &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;.vertical-centered-text {
  -ms-display: flex;
  display: flex;
  /* alineacion vertical */
  align-items: center;
   /* alineacion horizontal */
  justify-content: center;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2014/08/01/centrando-texto-verticalmente-ii/&#34;&gt;http://www.csslab.cl/2014/08/01/centrando-texto-verticalmente-ii/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Centrado Vertical II&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Centrando texto verticalmente II</title>
      <link>https://csslab.cl/2014/08/01/centrando-texto-verticalmente-ii/</link>
      <pubDate>Fri, 01 Aug 2014 17:14:12 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/08/01/centrando-texto-verticalmente-ii/</guid>
      <description>&lt;p&gt;Recuerdas las tablas? Sabes que aún son útiles? No como etiqueta &lt;strong&gt;HTML&lt;/strong&gt;, sino la propiedad &lt;strong&gt;CSS&lt;/strong&gt; &lt;strong&gt;display: table&lt;/strong&gt;. Aquí presento una técnica sencilla y rápida que permite [centrar verticalmente][1] cualquier bloque de texto dado cierto elemento &lt;strong&gt;HTML&lt;/strong&gt; con alto fijo.&lt;/p&gt;</description>
      <content>&lt;p&gt;Recuerdas las tablas? Sabes que aún son útiles? No como etiqueta &lt;strong&gt;HTML&lt;/strong&gt;, sino la propiedad &lt;strong&gt;CSS&lt;/strong&gt; &lt;strong&gt;display: table&lt;/strong&gt;. Aquí presento una técnica sencilla y rápida que permite [centrar verticalmente][1] cualquier bloque de texto dado cierto elemento &lt;strong&gt;HTML&lt;/strong&gt; con alto fijo.&lt;/p&gt;
&lt;p&gt;Dado el siguiente &lt;strong&gt;HTML&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;div class=&#34;vertical-centered-text&#34;&amp;gt;
  &amp;lt;h2&amp;gt;Este texto será centrado verticalmente gracias a display: table; y display: table-cell;&amp;lt;/h2&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El &lt;strong&gt;CSS&lt;/strong&gt; que permite el centrado es el siguiente:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;.vertical-centered-text {
  height: 200px;
  display: table;
}
  .vertical-centered-text &gt; * {
    display: table-cell;
    vertical-align: middle;
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2008/03/19/centrando-texto-verticalmente/&#34;&gt;http://www.csslab.cl/2008/03/19/centrando-texto-verticalmente/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Centrado Vertical&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Familias tipográficas web-safe</title>
      <link>https://csslab.cl/2014/07/23/familias-tipograficas-web-safe/</link>
      <pubDate>Wed, 23 Jul 2014 22:53:46 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/07/23/familias-tipograficas-web-safe/</guid>
      <description>No hay cosa peor de que transfieras un diseño para web y que se vea mal en el computador de tu cliente que justo tiene una tipografía mala o una versión de sistema operativo que no te imaginabas aún existía. Para eso hay 2 muy buenas soluciones:
 Utilizar una fuente web-safe, es decir, que funciona correctamente a través de la gran mayoría de sistemas operativos y plataformas. Utilizar [@font-face][1] que hace un poco más lenta la carga pero como queda en memoria caché funciona de maravilla durante la navegación.</description>
      <content>&lt;p&gt;No hay cosa peor de que transfieras un diseño para web y que se vea mal en el computador de tu cliente que justo tiene una tipografía mala o una versión de sistema operativo que no te imaginabas aún existía. Para eso hay 2 muy buenas soluciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Utilizar una fuente &lt;em&gt;web-safe&lt;/em&gt;, es decir, que funciona correctamente a través de la gran mayoría de sistemas operativos y plataformas.&lt;/li&gt;
&lt;li&gt;Utilizar [@font-face][1] que hace un poco más lenta la carga pero como queda en memoria caché funciona de maravilla durante la navegación.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Con la primera opción trabajaremos este artículo. A continuación entrego una buena lista de &lt;strong&gt;font-family&lt;/strong&gt; que puedes estar tranquilo funcionará para tus clientes:&lt;/p&gt;
&lt;div class=&#34;fontfamily&#34;&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: Arial, Helvetica, sans-serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: Arial, Helvetica, sans-serif;&#34;&gt;
    font-family: Arial, Helvetica, sans-serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: &#39;Arial Black&#39;, Gadget, sans-serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: &#39;Arial Black&#39;, Gadget, sans-serif;&#34;&gt;
    font-family: &amp;#8216;Arial Black&amp;#8217;, Gadget, sans-serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: &#39;Bookman Old Style&#39;, serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: &#39;Bookman Old Style&#39;, serif;&#34;&gt;
    font-family: &amp;#8216;Bookman Old Style&amp;#8217;, serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: &#39;Comic Sans MS&#39;, cursive;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: &#39;Comic Sans MS&#39;, cursive;&#34;&gt;
    font-family: &amp;#8216;Comic Sans MS&amp;#8217;, cursive;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: Courier, monospace;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: Courier, monospace;&#34;&gt;
    font-family: Courier, monospace;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: &#39;Courier New&#39;, Courier, monospace;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: &#39;Courier New&#39;, Courier, monospace;&#34;&gt;
    font-family: &amp;#8216;Courier New&amp;#8217;, Courier, monospace;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: Garamond, serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: Garamond, serif;&#34;&gt;
    font-family: Garamond, serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: Georgia, serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: Georgia, serif;&#34;&gt;
    font-family: Georgia, serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: Impact, Charcoal, sans-serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: Impact, Charcoal, sans-serif;&#34;&gt;
    font-family: Impact, Charcoal, sans-serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: &#39;Lucida Console&#39;, Monaco, monospace;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: &#39;Lucida Console&#39;, Monaco, monospace;&#34;&gt;
    font-family: &amp;#8216;Lucida Console&amp;#8217;, Monaco, monospace;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: &#39;Lucida Sans Unicode&#39;, &#39;Lucida Grande&#39;, sans-serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: &#39;Lucida Sans Unicode&#39;, &#39;Lucida Grande&#39;, sans-serif;&#34;&gt;
    font-family: &amp;#8216;Lucida Sans Unicode&amp;#8217;, &amp;#8216;Lucida Grande&amp;#8217;, sans-serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: &#39;MS Sans Serif&#39;, Geneva, sans-serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: &#39;MS Sans Serif&#39;, Geneva, sans-serif;&#34;&gt;
    font-family: &amp;#8216;MS Sans Serif&amp;#8217;, Geneva, sans-serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: &#39;MS Serif&#39;, &#39;New York&#39;, sans-serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: &#39;MS Serif&#39;, &#39;New York&#39;, sans-serif;&#34;&gt;
    font-family: &amp;#8216;MS Serif&amp;#8217;, &amp;#8216;New York&amp;#8217;, sans-serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: &#39;Palatino Linotype&#39;, &#39;Book Antiqua&#39;, Palatino, serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: &#39;Palatino Linotype&#39;, &#39;Book Antiqua&#39;, Palatino, serif;&#34;&gt;
    font-family: &amp;#8216;Palatino Linotype&amp;#8217;, &amp;#8216;Book Antiqua&amp;#8217;, Palatino, serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: Symbol, sans-serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: Symbol, sans-serif;&#34;&gt;
    font-family: Symbol, sans-serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: Tahoma, Geneva, sans-serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: Tahoma, Geneva, sans-serif;&#34;&gt;
    font-family: Tahoma, Geneva, sans-serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: &#39;Times New Roman&#39;, Times, serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: &#39;Times New Roman&#39;, Times, serif;&#34;&gt;
    font-family: &amp;#8216;Times New Roman&amp;#8217;, Times, serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: &#39;Trebuchet MS&#39;, Helvetica, sans-serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: &#39;Trebuchet MS&#39;, Helvetica, sans-serif;&#34;&gt;
    font-family: &amp;#8216;Trebuchet MS&amp;#8217;, Helvetica, sans-serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: Verdana, Geneva, sans-serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: Verdana, Geneva, sans-serif;&#34;&gt;
    font-family: Verdana, Geneva, sans-serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: Webdings, sans-serif;&lt;/code&gt;&lt;/pre&gt;
  &lt;p style=&#34;font-family: Webdings, sans-serif;&#34;&gt;
    font-family: Webdings, sans-serif;
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;font-family: Wingdings, &#39;Zapf Dingbats&#39;, sans-serif;&lt;/code&gt;&lt;/pre&gt;&lt;p style=&#34;font-family: Wingdings, &#39;Zapf Dingbats&#39;, sans-serif;style=&#34;&#34;&gt;font-family: Wingdings, &amp;#8216;Zapf Dingbats&amp;#8217;, sans-serif;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2010/11/30/mas-y-mejores-tipografias-con-font-face/&#34;&gt;http://www.csslab.cl/2010/11/30/mas-y-mejores-tipografias-con-font-face/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Más y mejores tipografías con @font-face&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Aleatoriedad en LESS</title>
      <link>https://csslab.cl/2014/07/10/aleitoreidad-en-less/</link>
      <pubDate>Thu, 10 Jul 2014 15:36:58 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/07/10/aleitoreidad-en-less/</guid>
      <description>&lt;p&gt;Una de las muchas ventajas de los &lt;strong&gt;CSS&lt;/strong&gt; &lt;em&gt;pre-processors&lt;/em&gt; es permitir utilizar &lt;strong&gt;JavaScript&lt;/strong&gt; nativamente -bueno, el &lt;em&gt;pre-processor&lt;/em&gt; mismo está escrito en &lt;strong&gt;JavaScript&lt;/strong&gt;– y con ello extender su uso antes de procesar el archivo y transformarlo en nuestro querido &lt;strong&gt;.css&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;En este artículo mostraré varios &lt;em&gt;mixins&lt;/em&gt; que permiten generar algún grado de aleatoriedad (&lt;strong&gt;random&lt;/strong&gt;) dado cierto tipo de valor que necesites como por ejemplo, usándolos para calcular algún otro valor ya definido. Por supuesto puedes extenderlos, llevándolos a tus propias necesidades:&lt;/p&gt;</description>
      <content>&lt;p&gt;Una de las muchas ventajas de los &lt;strong&gt;CSS&lt;/strong&gt; &lt;em&gt;pre-processors&lt;/em&gt; es permitir utilizar &lt;strong&gt;JavaScript&lt;/strong&gt; nativamente -bueno, el &lt;em&gt;pre-processor&lt;/em&gt; mismo está escrito en &lt;strong&gt;JavaScript&lt;/strong&gt;– y con ello extender su uso antes de procesar el archivo y transformarlo en nuestro querido &lt;strong&gt;.css&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;En este artículo mostraré varios &lt;em&gt;mixins&lt;/em&gt; que permiten generar algún grado de aleatoriedad (&lt;strong&gt;random&lt;/strong&gt;) dado cierto tipo de valor que necesites como por ejemplo, usándolos para calcular algún otro valor ya definido. Por supuesto puedes extenderlos, llevándolos a tus propias necesidades:&lt;/p&gt;
&lt;h3 id=&#34;número-aleatorio&#34;&gt;Número aleatorio&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;/* makeRandom: 
   Mixin para generar un número aleatorio
   int debe ser 0 ó 1, 1 para hacerlo entero */
.makeRandom(@min: 0, @max: @min+1, @int: 0) { 
  .checkInt() {
    @getNum: `Math.random() * (@{max} - @{min} + @{int})`;
    @base: unit(`@{int} == 1 ? Math.floor(@{getNum}) : @{getNum}`);
  }
  .checkInt();
  @randNum: @base + @min;
}
/* Uso: */
.rand1 {
  .makeRandom(); /* random decimal entre 0 - 1 */
  random-number: @randNum;
}
.rand2 {
  .makeRandom(@max: 2); /* random decimal entre 0 - 2 */
  random-number: @randNum;
}
.rand3 {
  .makeRandom(10, 20, 1); /* random entero entre  10 - 20 */
  random-number: @randNum;  
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://gist.github.com/juanbrujo/91be803643a2b0007061&#34; title=&#34;Enlace externo a GitHub&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Gist: makeRandom()&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;aleatorio-de-un-arreglo&#34;&gt;Aleatorio de un arreglo&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;/* Definiendo algunas variables de colores en este caso */
@blue: #009be1;
@green: #64c200;
@red: #ff1842;
@orange: #ffbf00;
@yellow: #ffd400;
/* Creando el arreglo */
@colors: &#39;@{green}&#39;,&#39;@{blue}&#39;,&#39;@{red}&#39;,&#39;@{orange}&#39;,&#39;@{yellow}&#39;;
/* randomFromArray:
   Mixin para elegir un elemento
   aleatorio de un arreglo */
.randomFromArray(@min: 1, @max: length(@colors), @int: 0) {
  @getNum: `Math.random() * (@{max} - @{min} + @{int})`;
  @base: unit(`@{int} == 1 ? Math.floor(@{getNum}) : @{getNum}`);
  @randNum: floor( @base + @min );
  @color: e( extract(@colors, @randNum) );
}
/* Uso:*/
body {
  .randomFromArray();
  background-color: @color;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://gist.github.com/juanbrujo/972ed5d1dd488605fe90&#34; title=&#34;Enlace externo a GitHub&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Gist: randomFromArray()&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;generador-de-color-hex-aleatorio&#34;&gt;Generador de color HEX aleatorio&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;/* randomColor:
   Mixin para crear aleatoriamente
   una hexacromía para color */
.randomColor(){
  @randomColor: `Math.floor(Math.random()*16777215).toString(16)`;
  @colorHex: e(@randomColor);
  @color: ~&#34;#@{colorHex}&#34;;
}
/* Uso:*/
body {
  .randomColor();
  background-color: @color;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://gist.github.com/juanbrujo/7e4e17428dc8881d0e7e&#34; title=&#34;Enlace externo a GitHub&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Gist: randomColor()&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Estilos para IE9, IE10 e IE11</title>
      <link>https://csslab.cl/2014/06/18/estilos-para-ie9-ie10-e-ie11/</link>
      <pubDate>Wed, 18 Jun 2014 23:15:53 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/06/18/estilos-para-ie9-ie10-e-ie11/</guid>
      <description>&lt;p&gt;Desde &lt;strong&gt;IE10&lt;/strong&gt; quer ya no existen los [comentarios condicionales][1], ese útil invento de &lt;strong&gt;Microsoft&lt;/strong&gt; para que nosotros desarrolladores &lt;em&gt;front-end&lt;/em&gt; pudiéramos lidiar con los estilos específicos para &lt;strong&gt;IE5, 6, 7, 8&lt;/strong&gt;…. y &lt;strong&gt;9&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Los quitaron porque creían que con &lt;strong&gt;IE10&lt;/strong&gt; todo estaba solucionado y volvían a abrazar los estándares, lo que fue en parte cierto. Pero quedan detalles por solucionar y ante ello, encontré un útil [hack][2] para permitir estilos específicos para &lt;strong&gt;IE9, IE10&lt;/strong&gt; e &lt;strong&gt;IE11&lt;/strong&gt;:&lt;/p&gt;</description>
      <content>&lt;p&gt;Desde &lt;strong&gt;IE10&lt;/strong&gt; quer ya no existen los [comentarios condicionales][1], ese útil invento de &lt;strong&gt;Microsoft&lt;/strong&gt; para que nosotros desarrolladores &lt;em&gt;front-end&lt;/em&gt; pudiéramos lidiar con los estilos específicos para &lt;strong&gt;IE5, 6, 7, 8&lt;/strong&gt;…. y &lt;strong&gt;9&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Los quitaron porque creían que con &lt;strong&gt;IE10&lt;/strong&gt; todo estaba solucionado y volvían a abrazar los estándares, lo que fue en parte cierto. Pero quedan detalles por solucionar y ante ello, encontré un útil [hack][2] para permitir estilos específicos para &lt;strong&gt;IE9, IE10&lt;/strong&gt; e &lt;strong&gt;IE11&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@media screen and (min-width:0\0) { 
    /* Tus estilos CSS para IE9, IE10, IE11  */
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;… pero hay más …&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@media \0screen\,screen\9 {
    /* Tus estilos CSS para IE6, IE7, IE8  */
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@media \0screen { 
    /* Tus estilos CSS para IE8  */
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@media screen\0 { 
    /* Tus estilos CSS para IE8, IE9, IE10  */
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;link&#34;&gt;Link:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;[Moving IE specific CSS into @media blocks | keithclark.co.uk][3]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/?s=comentarios+condicionales&#34;&gt;http://www.csslab.cl/?s=comentarios+condicionales&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Comentarios Condicionales&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/categoria/hacks/&#34;&gt;http://www.csslab.cl/categoria/hacks/&lt;/a&gt; &amp;ldquo;Enlace en CSSlab a &amp;ldquo;Hacks&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://blog.keithclark.co.uk/moving-ie-specific-css-into-media-blocks/&#34;&gt;http://blog.keithclark.co.uk/moving-ie-specific-css-into-media-blocks/&lt;/a&gt; &amp;ldquo;Enlace externo a &amp;ldquo;Moving IE specific CSS into @media blocks | keithclark.co.uk&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Triángulos con CSS: LESS Mixin</title>
      <link>https://csslab.cl/2014/06/10/triangulos-con-css-less-mixin/</link>
      <pubDate>Tue, 10 Jun 2014 19:06:55 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/06/10/triangulos-con-css-less-mixin/</guid>
      <description>&lt;p&gt;Crear formas geométricas con puro &lt;strong&gt;CSS&lt;/strong&gt; y 1 elemento &lt;strong&gt;HTML&lt;/strong&gt; ha sido una tarea creada hace años ya y que &lt;a href=&#34;https://css-tricks.com/examples/ShapesOfCSS/&#34; title=&#34;Enlace externo a &amp;quot;Shapes of CSS&amp;quot;&#34; target=&#34;_blank&#34;&gt;tiene&lt;/a&gt; &lt;a href=&#34;http://www.css3shapes.com/&#34; title=&#34;Enlace externo a &amp;quot;CSS3 Shapes&amp;quot;&#34; target=&#34;_blank&#34;&gt;recopilaciones&lt;/a&gt; &lt;a href=&#34;http://www.samuelrossille.com/css-shape/&#34; title=&#34;Enlace externo a &amp;quot;CSS Shape Generator&amp;quot;&#34; target=&#34;_blank&#34;&gt;varias&lt;/a&gt; de métodos y usos. Personalmente para crear triángulos con &lt;strong&gt;CSS&lt;/strong&gt; uso un generador genial que espero nunca lo bajen: &lt;a href=&#34;http://apps.eky.hk/css-triangle-generator/&#34; title=&#34;Enlace externo a &amp;quot;CSS Triangle Generator&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSS triangle generator&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A raíz de su constante uso, creé un &lt;strong&gt;mixin&lt;/strong&gt; para &lt;strong&gt;LESS&lt;/strong&gt; que me permite crear triángulos &lt;em&gt;equilátero&lt;/em&gt;, &lt;em&gt;isósceles&lt;/em&gt; y &lt;em&gt;escaleno&lt;/em&gt; con sólo variar los valores de &lt;em&gt;ancho/alto&lt;/em&gt; y &lt;em&gt;dirección&lt;/em&gt;:&lt;/p&gt;</description>
      <content>&lt;p&gt;Crear formas geométricas con puro &lt;strong&gt;CSS&lt;/strong&gt; y 1 elemento &lt;strong&gt;HTML&lt;/strong&gt; ha sido una tarea creada hace años ya y que &lt;a href=&#34;https://css-tricks.com/examples/ShapesOfCSS/&#34; title=&#34;Enlace externo a &amp;quot;Shapes of CSS&amp;quot;&#34; target=&#34;_blank&#34;&gt;tiene&lt;/a&gt; &lt;a href=&#34;http://www.css3shapes.com/&#34; title=&#34;Enlace externo a &amp;quot;CSS3 Shapes&amp;quot;&#34; target=&#34;_blank&#34;&gt;recopilaciones&lt;/a&gt; &lt;a href=&#34;http://www.samuelrossille.com/css-shape/&#34; title=&#34;Enlace externo a &amp;quot;CSS Shape Generator&amp;quot;&#34; target=&#34;_blank&#34;&gt;varias&lt;/a&gt; de métodos y usos. Personalmente para crear triángulos con &lt;strong&gt;CSS&lt;/strong&gt; uso un generador genial que espero nunca lo bajen: &lt;a href=&#34;http://apps.eky.hk/css-triangle-generator/&#34; title=&#34;Enlace externo a &amp;quot;CSS Triangle Generator&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSS triangle generator&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A raíz de su constante uso, creé un &lt;strong&gt;mixin&lt;/strong&gt; para &lt;strong&gt;LESS&lt;/strong&gt; que me permite crear triángulos &lt;em&gt;equilátero&lt;/em&gt;, &lt;em&gt;isósceles&lt;/em&gt; y &lt;em&gt;escaleno&lt;/em&gt; con sólo variar los valores de &lt;em&gt;ancho/alto&lt;/em&gt; y &lt;em&gt;dirección&lt;/em&gt;:&lt;/p&gt;
&lt;h3 id=&#34;uso&#34;&gt;Uso&lt;/h3&gt;
&lt;p&gt;Llama el &lt;strong&gt;mixin&lt;/strong&gt; en tu sentencia &lt;strong&gt;CSS&lt;/strong&gt; y entrégale los valores que necesitas:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;.triangle(direccion,ancho,alto,color);&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;dirección-smallvaloressmall&#34;&gt;Dirección: &lt;small&gt;valores&lt;/small&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;top&lt;/li&gt;
&lt;li&gt;bottom&lt;/li&gt;
&lt;li&gt;left&lt;/li&gt;
&lt;li&gt;right&lt;/li&gt;
&lt;li&gt;topright&lt;/li&gt;
&lt;li&gt;topleft&lt;/li&gt;
&lt;li&gt;bottomright&lt;/li&gt;
&lt;li&gt;bottomleft&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;ejemplo-smallbásicosmall&#34;&gt;Ejemplo: &lt;small&gt;básico&lt;/small&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@tamano: 50px;
@color: red;
.basico {
  .triangle(bottomright,@tamano,@tamano,@color);
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;ejemplo-smallavanzadosmall&#34;&gt;Ejemplo: &lt;small&gt;avanzado&lt;/small&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@tamano: 50px;
@color: red;
.avanzado {
  width: @tamano*2;
  height: @tamano;
  line-height: @tamano;
  background-color: @color;
  position: relative;
  &amp;:after {
    position: absolute;
    left: 0;
    top: -@tamano;
    .triangle(top,@tamano,@tamano,@color);
  }
  &amp;:before {
    position: absolute;
    left: 0;
    top: @tamano;
    .triangle(topleft,@tamano*2,@tamano*2,@color);
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/juanbrujo/triangle-mixin.less&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver en GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p class=&#34;leyenda&#34;&gt;
  &lt;big&gt;*actualización: Gracias a &lt;a href=&#34;http://codepen.io/flodar/&#34; target=&#34;_blank&#34;&gt;Félix Ortega&lt;/a&gt; por traducir el mixin a &lt;strong&gt;SASS&lt;/strong&gt;:&lt;/big&gt;
&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>3D CSS3 transform con bordes dentados en Firefox</title>
      <link>https://csslab.cl/2014/05/16/3d-css3-transform-con-bordes-dentados-en-firefox/</link>
      <pubDate>Fri, 16 May 2014 13:51:34 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/05/16/3d-css3-transform-con-bordes-dentados-en-firefox/</guid>
      <description>&lt;p&gt;Sucede que creamos lindos estilos para elemento con &lt;strong&gt;CSS3&lt;/strong&gt; y queremos aplicar la propiedad &lt;strong&gt;transform&lt;/strong&gt; para darle profundidad 3D. Observamos que ocurre lo siguiente en &lt;strong&gt;Firefox&lt;/strong&gt;:&lt;/p&gt;</description>
      <content>&lt;p&gt;Sucede que creamos lindos estilos para elemento con &lt;strong&gt;CSS3&lt;/strong&gt; y queremos aplicar la propiedad &lt;strong&gt;transform&lt;/strong&gt; para darle profundidad 3D. Observamos que ocurre lo siguiente en &lt;strong&gt;Firefox&lt;/strong&gt;:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2014/05/dentados-browsers.png&#34; alt=&#34;&#34; title=&#34;dentados-browsers&#34; width=&#34;520&#34; height=&#34;420&#34; class=&#34;alignnone size-full wp-image-1872&#34; /&gt; 
&lt;h4 id=&#34;solución&#34;&gt;Solución:&lt;/h4&gt;
&lt;p&gt;Agregar la propiedad &lt;strong&gt;outline&lt;/strong&gt; con valor transparente ó con el mismo color del fondo.&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;outline: 1px solid transparent;&lt;/code&gt;&lt;/pre&gt;</content>
    </item>
    
    <item>
      <title>Automatización de tareas para proyectos en Front-End</title>
      <link>https://csslab.cl/2014/04/07/automatizacion-de-tareas-para-proyectos-en-front-end/</link>
      <pubDate>Mon, 07 Apr 2014 15:21:37 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/04/07/automatizacion-de-tareas-para-proyectos-en-front-end/</guid>
      <description>&lt;p&gt;&lt;strong&gt;GruntJS&lt;/strong&gt; es la herramienta de automatización de tareas escrita en &lt;em&gt;JavaScript&lt;/em&gt; que más crece actualmente. Es robusta y está activamente siendo mejorada, y sólo requiere &lt;em&gt;NodeJS&lt;/em&gt; para funcionar. Su fortaleza está en crear rutinas automatizadas para procesos repetitivos, como por ejemplo: compilar un archivo &lt;em&gt;LESS/SCSS/HAML/Handlebars/Liquid,&lt;/em&gt; minificar archivos &lt;strong&gt;.css&lt;/strong&gt; y &lt;strong&gt;.js&lt;/strong&gt;, concatenar librerías &lt;strong&gt;.js&lt;/strong&gt;, comprimir imágenes, recargar el &lt;em&gt;browser&lt;/em&gt; cada vez que hayan nuevos cambios entre muchos otros que se te puedan ocurrir.&lt;/p&gt;</description>
      <content>&lt;p&gt;&lt;strong&gt;GruntJS&lt;/strong&gt; es la herramienta de automatización de tareas escrita en &lt;em&gt;JavaScript&lt;/em&gt; que más crece actualmente. Es robusta y está activamente siendo mejorada, y sólo requiere &lt;em&gt;NodeJS&lt;/em&gt; para funcionar. Su fortaleza está en crear rutinas automatizadas para procesos repetitivos, como por ejemplo: compilar un archivo &lt;em&gt;LESS/SCSS/HAML/Handlebars/Liquid,&lt;/em&gt; minificar archivos &lt;strong&gt;.css&lt;/strong&gt; y &lt;strong&gt;.js&lt;/strong&gt;, concatenar librerías &lt;strong&gt;.js&lt;/strong&gt;, comprimir imágenes, recargar el &lt;em&gt;browser&lt;/em&gt; cada vez que hayan nuevos cambios entre muchos otros que se te puedan ocurrir.&lt;/p&gt;
&lt;p&gt;En esta ocasión mostraré un sencillo flujo que pueden utilizar para proyectos &lt;em&gt;front-end&lt;/em&gt;; es un buen comienzo para quienes no están familiarizados aún con su utilidad y el uso cotidiano del Terminal/Consola.&lt;/p&gt;
&lt;p&gt;Primero, debes tener lo fundamental para funcionar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://nodejs.org/download/&#34; target=&#34;_blank&#34;&gt;NodeJS&lt;/a&gt; (descargar e instalar)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://feedback.livereload.com/knowledgebase/articles/86242-how-do-i-install-and-use-the-browser-extensions&#34; target=&#34;_blank&#34;&gt;LiveReload&lt;/a&gt; (extensión de Chrome y otros navegadores)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Grunt command line interface&lt;/em&gt; (&lt;strong&gt;CLI&lt;/strong&gt;): se instala através del comando de terminal:
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;strong&gt;$&amp;lt;/strong&gt; sudo npm install -g grunt-cli&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/juanbrujo/simple-grunt-workflow&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Descargar desde GitHub&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;packagejson&#34;&gt;package.json&lt;/h4&gt;
&lt;p&gt;Es el archivo que contiene los nombres de las librerías que utilizaremos para automatizar nuestras tareas recurrentes y que reside en la raíz del proyecto. Aquí están el nombre y la versión de cada &lt;em&gt;plugin&lt;/em&gt; que necesitaremos, de una larga &lt;a href=&#34;http://gruntjs.com/plugins&#34; target=&#34;_blank&#34;&gt;lista de plugins&lt;/a&gt; existentes.&lt;/p&gt;
&lt;h4 id=&#34;gruntfilejs&#34;&gt;Gruntfile.js&lt;/h4&gt;
&lt;p&gt;Es el archivo base con el cual crearemos las tareas que necesitamos corra &lt;strong&gt;GruntJS&lt;/strong&gt; por nosotros y que reside en la raíz del proyecto junto a &lt;strong&gt;package.json&lt;/strong&gt;. En este archivo están definidas los &lt;em&gt;plugins&lt;/em&gt; que utilizaremos y cómo deben trabajar, en esta ocasión incluyo los siguientes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href=&#34;https://github.com/gruntjs/grunt-contrib-uglify&#34;&gt;uglify&lt;/a&gt;&lt;/em&gt; minifica archivos &lt;em&gt;JavaScript&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href=&#34;https://github.com/gruntjs/grunt-contrib-imagemin&#34;&gt;imagemin&lt;/a&gt;&lt;/em&gt; comprime imágenes&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href=&#34;https://github.com/gruntjs/grunt-contrib-less&#34;&gt;less&lt;/a&gt;&lt;/em&gt; compila y minifica archivos &lt;em&gt;.less&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href=&#34;https://github.com/gruntjs/grunt-contrib-watch&#34;&gt;watch&lt;/a&gt;&lt;/em&gt; corre tareas definidas cada vez que se realizan cambios a ellas, en este caso todas las anteriores.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href=&#34;https://github.com/zonak/grunt-ftp-deploy&#34;&gt;ftp-deploy&lt;/a&gt;&lt;/em&gt; realiza subida de los archivos que indiques a un servidor definido a través de &lt;em&gt;FTP&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;uso&#34;&gt;Uso&lt;/h4&gt;
&lt;p&gt;El directorio base se llama &lt;strong&gt;/proyecto-simple&lt;/strong&gt; y contiene todo lo necesario para comenzar a trabajar. Suponiendo que trabajas en un servidor local, la estructura básica de archivos es la siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;/proyecto-simple/Gruntfile.js&amp;lt;br /&gt;
/proyecto-simple/package.json&amp;lt;br /&gt;
/proyecto-simple/ftppass (este archivo cuando necesario debes renombrarlo a .ftppass)&amp;lt;br /&gt;
/proyecto-simple/index.html&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El directorio donde trabajarás tus assets se llama /assets-dev y contiene:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;/proyecto-simple/assets-dev/js/&amp;lt;br /&gt;
/proyecto-simple/assets-dev/less/&amp;lt;br /&gt;
/proyecto-simple/assets-dev/less/inc/&amp;lt;br /&gt;
/proyecto-simple/assets-dev/images/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Los que después de procesados por GruntJS residirán en /assets y son los que debes llamar desde tus archivos HTML:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;/proyecto-simple/assets/js/&amp;lt;br /&gt;
/proyecto-simple/assets/js/libs/&amp;lt;br /&gt;
/proyecto-simple/assets/css/&amp;lt;br /&gt;
/proyecto-simple/assets/images/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para comenzar a trabajar, en Terminal/Consola debes estar en el directorio que estés trabajando:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;strong&gt;$&amp;lt;/strong&gt; cd /path/to/proyecto-simple/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para instalar los &lt;em&gt;plugins&lt;/em&gt; a utilizarse y que están definidos en &lt;strong&gt;package.json&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;strong&gt;$&amp;lt;/strong&gt; sudo npm install&lt;/code&gt;&lt;/pre&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2014/04/1npm.png&#34; alt=&#34;&#34; title=&#34;1npm&#34; width=&#34;730&#34; height=&#34;508&#34; class=&#34;alignnone size-full wp-image-1854&#34; /&gt; 
&lt;p&gt;Con esto se llamarán a todos los repositorios e instalará los paquetes necesarios para hacer las tareas que tenemos asignadas. Esto puede tomar unos minutos y creará un directorio &lt;strong&gt;/node_modules&lt;/strong&gt; en la raíz de tu proyecto. Este directorio sólo le es útil a &lt;strong&gt;GruntJS&lt;/strong&gt;, no debemos utilizarlo en ambiente productivo.&lt;/p&gt;
&lt;p&gt;Antes de correr &lt;strong&gt;GruntJS&lt;/strong&gt;, abre &lt;strong&gt;Gruntfile.js&lt;/strong&gt; y revisa los &lt;em&gt;path&lt;/em&gt; que concuerden con los que estés trabajando, principamente los relacionados con &lt;em&gt;ftp-deploy&lt;/em&gt; (si lo vas a utilizar). Si todo concuerda, acciona el comando:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;strong&gt;$&amp;lt;/strong&gt; grunt&lt;/code&gt;&lt;/pre&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2014/04/2watch.png&#34; alt=&#34;&#34; title=&#34;2watch&#34; width=&#34;730&#34; height=&#34;466&#34; class=&#34;alignnone size-full wp-image-1855&#34; /&gt; 
&lt;p&gt;El cual comenzará a procesar las tareas y se quedará en &lt;em&gt;watch&lt;/em&gt; esperando cambios o actualizaciones en los archivos. En este momento debes llamar el directorio de trabajo en tu &lt;em&gt;browser&lt;/em&gt; (a través de tu servidor web local) y activar &lt;em&gt;LiveReload&lt;/em&gt;. Cuando el ícono cambie es porque está sincronizado con &lt;strong&gt;GruntJS&lt;/strong&gt; y a cada cambio en archivos &lt;strong&gt;html/less/js/images&lt;/strong&gt; en tu proyecto, &lt;em&gt;watch&lt;/em&gt; hará que se actualicen los archivos y &lt;em&gt;LiveReload&lt;/em&gt; recargará el &lt;em&gt;browser&lt;/em&gt; por tí.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2014/04/Screen-Shot-2014-04-03-at-5.12.04-PM.png&#34; alt=&#34;&#34; title=&#34;Screen Shot 2014-04-03 at 5.12.04 PM&#34; width=&#34;211&#34; height=&#34;116&#34; class=&#34;alignnone size-full wp-image-1852&#34; /&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2014/04/Screen-Shot-2014-04-03-at-5.13.24-PM.png&#34; alt=&#34;&#34; title=&#34;Screen Shot 2014-04-03 at 5.13.24 PM&#34; width=&#34;341&#34; height=&#34;127&#34; class=&#34;alignnone size-full wp-image-1853&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Si hay un error en tu sintaxis lo más probable es que &lt;strong&gt;GruntJS&lt;/strong&gt; te avise y deje de correr, por lo que debes corregirlo antes de continuar.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2014/04/3error.png&#34; alt=&#34;&#34; title=&#34;3error&#34; width=&#34;730&#34; height=&#34;466&#34; class=&#34;alignnone size-full wp-image-1856&#34; /&gt; 
&lt;h4 id=&#34;deploy&#34;&gt;Deploy&lt;/h4&gt;
&lt;p&gt;Se adjunta el plugin &lt;em&gt;ftp-deploy&lt;/em&gt; el que debe utilizarse cuando necesitas mover archivos a tu servidor productivo. Se configura en &lt;strong&gt;Gruntfile.js&lt;/strong&gt; la URL, puerto y dónde se lee el &lt;strong&gt;u/p&lt;/strong&gt; de acceso. Éstos se guardan en un archivo &lt;em&gt;ftppass&lt;/em&gt; el que se adjunta, pero en tu directorio de trabajo debe guardarse como archivo oculto &lt;strong&gt;&lt;em&gt;.ftppass&lt;/em&gt;&lt;/strong&gt;. Además, está pre-configurado los archivos y directorios que se excluyen, como &lt;strong&gt;Gruntfile.js&lt;/strong&gt;, &lt;strong&gt;package.json&lt;/strong&gt;, &lt;strong&gt;/assets-dev&lt;/strong&gt; y &lt;strong&gt;/node_modules&lt;/strong&gt; entre otros. Cuando necesites subir a productivo tus archivos, desactivas el &lt;em&gt;watch&lt;/em&gt; de &lt;strong&gt;GruntJS&lt;/strong&gt; (&lt;strong&gt;⌘+.&lt;/strong&gt; ó &lt;strong&gt;ctrl+.&lt;/strong&gt;) y envías todos tus archivos al servidor con el siguiente comando:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;$ grunt ftp-deploy&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Happy Coding 🙂&lt;/strong&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Animaciones CSS3 al fin del ciclo</title>
      <link>https://csslab.cl/2014/03/26/animaciones-css3-al-fin-del-ciclo/</link>
      <pubDate>Wed, 26 Mar 2014 21:19:32 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/03/26/animaciones-css3-al-fin-del-ciclo/</guid>
      <description>&lt;p&gt;Existe una propiedad &lt;strong&gt;CSS3&lt;/strong&gt; muy tímida y poco manejada pero que cumple un papel esencial cuando estamos trabajando con [animaciones &lt;strong&gt;CSS3&lt;/strong&gt;][1]. Supongamos que estamos creando una animación simple, que no necesitamos sea cíclica, por lo tanto, la ejecutaremos sólo 1 vez. La escribimos y la aplicamos, como a continuación:&lt;/p&gt;</description>
      <content>&lt;p&gt;Existe una propiedad &lt;strong&gt;CSS3&lt;/strong&gt; muy tímida y poco manejada pero que cumple un papel esencial cuando estamos trabajando con [animaciones &lt;strong&gt;CSS3&lt;/strong&gt;][1]. Supongamos que estamos creando una animación simple, que no necesitamos sea cíclica, por lo tanto, la ejecutaremos sólo 1 vez. La escribimos y la aplicamos, como a continuación:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;/* creando la animación */&amp;lt;br /&gt;
@keyframes gira-y-quedate {&amp;lt;br /&gt;
  from {&amp;lt;br /&gt;
    transform: rotate(0deg);&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  to {&amp;lt;br /&gt;
    transform: rotate(160deg);&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;#elemento {&amp;lt;br /&gt;
  animation-name: gira-y-quedate;&amp;lt;br /&gt;
  animation-duration: 1s;&amp;lt;br /&gt;
  animation-iteration-count 1;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;ejemploancho&#34;&gt;
  &lt;div id=&#34;elemento-ejemplo1&#34;&gt;
  &lt;/div&gt;
  &lt;p&gt;
    &lt;button class=&#34;btn_animar verejemplo&#34; rel=&#34;elemento-ejemplo1&#34;&gt;Animar&lt;/button&gt; &lt;/div&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;
  Como notarán al terminar la animación esperamos que quede con la rotación de 160 grados y se detenga pero lo que sucede es que vuelve al &amp;lt;em&amp;gt;keyframe&amp;lt;/em&amp;gt; inicial, a los 0 grados. Ese es el comportamiento por defecto de la propiedad &amp;lt;strong&amp;gt;animation-fill-mode&amp;lt;/strong&amp;gt;, la cual especifica cómo debe aplicarse una animación &amp;lt;strong&amp;gt;CSS&amp;lt;/strong&amp;gt; al elemento antes y después que se ejecute. Los valores de esta propiedad son:
&amp;lt;/p&amp;gt;

&amp;lt;ul&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;strong&amp;gt;none&amp;lt;/strong&amp;gt; (por defecto, la animación no aplicará ningún estilo al elemento antes ó despues de ejecutarse)
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;strong&amp;gt;forwards&amp;lt;/strong&amp;gt; (el elemento mantendrá su(s) valor(es) en el último keyframe de su animación)
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;strong&amp;gt;backwards&amp;lt;/strong&amp;gt; (el elemento aplicará su(s) valor(es) definidos en el primer keyframe de su animación)
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;strong&amp;gt;both&amp;lt;/strong&amp;gt; (la animación aplicará las propiedades de fowards y backwards, antes y después de ejecutarse)
  &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;

&amp;lt;p&amp;gt;
  Por lo que aplicando correctamente la propiedad al llamado de la animación obtenemos el resultado esperado:
&amp;lt;/p&amp;gt;

&amp;lt;pre&amp;gt;&amp;lt;code class=&amp;quot;language-markup&amp;quot;&amp;gt;#elemento {&amp;amp;lt;br /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;animation-name: gira-y-quedate;&amp;lt;br /&amp;gt;
animation-duration: 1s;&amp;lt;br /&amp;gt;
animation-iteration-count 1;&amp;lt;br /&amp;gt;
animation-fill-mode: forwards;&amp;lt;br /&amp;gt;
}&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&amp;quot;ejemploancho&amp;quot;&amp;gt;
  &amp;lt;div id=&amp;quot;elemento-ejemplo2&amp;quot;&amp;gt;
  &amp;lt;/div&amp;gt;
  
  &amp;lt;p&amp;gt;
    &amp;lt;button class=&amp;quot;btn_animar verejemplo&amp;quot; rel=&amp;quot;elemento-ejemplo2&amp;quot;&amp;gt;Animar&amp;lt;/button&amp;gt; &amp;lt;/div&amp;gt; 
    
    &amp;lt;h4&amp;gt;
      Link:
    &amp;lt;/h4&amp;gt;
    
    &amp;lt;ul&amp;gt;
      &amp;lt;li&amp;gt;
        &amp;lt;a href=&amp;quot;https://developer.mozilla.org/en-US/docs/Web/CSS/animation-play-state&amp;quot; target=&amp;quot;_blank&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;animation-play-state | MDN&amp;amp;quot;&amp;quot;&amp;gt;animation-play-state | MDN&amp;lt;/a&amp;gt;
      &amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
    
    &amp;lt;p&amp;gt;
    &amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2011/06/21/animaciones-css3-avanzadas/&#34;&gt;http://www.csslab.cl/2011/06/21/animaciones-css3-avanzadas/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Animaciones CSS3 avanzadas&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Checkboxes con estilo</title>
      <link>https://csslab.cl/2014/03/17/checkboxes-con-estilo/</link>
      <pubDate>Mon, 17 Mar 2014 14:12:29 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/03/17/checkboxes-con-estilo/</guid>
      <description>&lt;p&gt;Los formularios son una de las razones de porque el mundo corporativo entró a Internet: captura de datos de usuarios. Es la forma más fácil y rápida de obtener ese ansiado contacto, con el cual puedo convertir a ese usuario en mi cliente. Para los fabricantes de &lt;em&gt;browsers&lt;/em&gt;, la visualización de los campos de formularios no ha sido normalizada y cada uno lo hace a su criterio, incluso con diferencias entre el mismo &lt;em&gt;browser&lt;/em&gt; pero en diferentes plataformas.&lt;/p&gt;</description>
      <content>&lt;p&gt;Los formularios son una de las razones de porque el mundo corporativo entró a Internet: captura de datos de usuarios. Es la forma más fácil y rápida de obtener ese ansiado contacto, con el cual puedo convertir a ese usuario en mi cliente. Para los fabricantes de &lt;em&gt;browsers&lt;/em&gt;, la visualización de los campos de formularios no ha sido normalizada y cada uno lo hace a su criterio, incluso con diferencias entre el mismo &lt;em&gt;browser&lt;/em&gt; pero en diferentes plataformas.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2014/03/formCheckBox3.png&#34; alt=&#34;Checkboxes across browsers&#34; title=&#34;http://swatelier.info/at/forms/checkBox.htm&#34; width=&#34;580&#34; height=&#34;188&#34; class=&#34;alignnone size-full wp-image-1818&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2014/03/formCheckBox3.png 580w, http://www.csslab.cl/wp-content/uploads/2014/03/formCheckBox3-300x97.png 300w, http://www.csslab.cl/wp-content/uploads/2014/03/formCheckBox3-220x71.png 220w&#34; sizes=&#34;(max-width: 580px) 100vw, 580px&#34; /&gt; 
&lt;h3 id=&#34;técnica-1-css--javascript-ie8&#34;&gt;Técnica 1: CSS + JavaScript (IE8+)&lt;/h3&gt;
&lt;p&gt;Para darle un diseño mejor y uniforme entre &lt;em&gt;browsers&lt;/em&gt;/plataformas acudimos a un pequeño truco que involucra &lt;strong&gt;CSS&lt;/strong&gt; y una pizca de &lt;strong&gt;JavaScript&lt;/strong&gt; para el manejo de clases.&lt;/p&gt;
&lt;p&gt;Para un simple y sencillo formulario con algunos &lt;strong&gt;input&lt;/strong&gt; de tipo &lt;strong&gt;checkbox&lt;/strong&gt; (el uso de la &lt;strong&gt;class=&amp;ldquo;check&amp;rdquo;&lt;/strong&gt; es para diferenciarlo de otros campos puedan existir en el mismo formulario):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;fieldset&amp;gt;&amp;lt;br /&gt;
  &amp;lt;label class=&#34;check&#34; for=&#34;check1&#34;&amp;gt;&amp;lt;br /&gt;
    &amp;lt;input type=&#34;checkbox&#34; checked=&#34;checked&#34; id=&#34;check1&#34;&amp;gt;&amp;lt;br /&gt;
    Check 1&amp;lt;br /&gt;
  &amp;lt;/label&amp;gt;&amp;lt;br /&gt;
  &amp;lt;label class=&#34;check&#34; for=&#34;check2&#34;&amp;gt;&amp;lt;br /&gt;
    &amp;lt;input type=&#34;checkbox&#34; id=&#34;check2&#34;&amp;gt;&amp;lt;br /&gt;
    Check 2&amp;lt;br /&gt;
  &amp;lt;/label&amp;gt;&amp;lt;br /&gt;
  &amp;lt;label class=&#34;check&#34; for=&#34;check3&#34;&amp;gt;&amp;lt;br /&gt;
    &amp;lt;input type=&#34;checkbox&#34; id=&#34;check3&#34;&amp;gt;&amp;lt;br /&gt;
    Check 3&amp;lt;br /&gt;
  &amp;lt;/label&amp;gt;&amp;lt;br /&gt;
&amp;lt;/fieldset&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La técnica consiste en envolver el &lt;strong&gt;input=&amp;ldquo;checkbox&amp;rdquo;&lt;/strong&gt; dentro del &lt;strong&gt;label&lt;/strong&gt;, con tal de hacerlo completo &lt;em&gt;clickeable&lt;/em&gt;. Así, escondemos con &lt;strong&gt;CSS&lt;/strong&gt; el campo y trabajamos sólo con el &lt;strong&gt;label&lt;/strong&gt;, habilitando al &lt;em&gt;click&lt;/em&gt; en cada uno la inyección de una &lt;strong&gt;class=&amp;ldquo;c_on&amp;rdquo;&lt;/strong&gt; cuando el &lt;strong&gt;checkbox&lt;/strong&gt; está siendo seleccionado.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;label.check {&amp;lt;br /&gt;
  display: block;&amp;lt;br /&gt;
  cursor: pointer;&amp;lt;br /&gt;
  padding-left: 26px;&amp;lt;br /&gt;
  background: url(&#39;check_off.png&#39;) left center no-repeat;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
label.check input {&amp;lt;br /&gt;
  position: absolute;&amp;lt;br /&gt;
  left: -9999px;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
label.check.c_on {&amp;lt;br /&gt;
  background: url(&#39;check_on.png&#39;)  left center no-repeat;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finalmente acudimos a &lt;strong&gt;JavaScript&lt;/strong&gt; para hacer el cambio de clase para mostrar tal o cual imagen:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;var input = document.querySelectorAll(&#34;label.check input&#34;);&amp;lt;br /&gt;
if(input !== null) {&amp;lt;br /&gt;
  [].forEach.call(input, function(el) {&amp;lt;br /&gt;
    if(el.checked) {&amp;lt;br /&gt;
      el.parentNode.classList.add(&#39;c_on&#39;);&amp;lt;br /&gt;
    }&amp;lt;br /&gt;
    el.addEventListener(&#34;click&#34;, function(event) {&amp;lt;br /&gt;
      event.preventDefault();&amp;lt;br /&gt;
      el.parentNode.classList.toggle(&#39;c_on&#39;);&amp;lt;br /&gt;
    }, false);&amp;lt;br /&gt;
  });&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;técnica-2-css3-ie9&#34;&gt;Técnica 2: CSS3 (IE9+)&lt;/h3&gt;
&lt;p&gt;Para esta técnica reordenamos el &lt;strong&gt;HTML&lt;/strong&gt; ya que trabajaremos con [selectores avanzados de atributos][1] (&lt;em&gt;siblings&lt;/em&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;fieldset&amp;gt;&amp;lt;br /&gt;
  &amp;lt;input type=&#34;checkbox&#34; id=&#34;check1&#34; checked=&#34;checked&#34;&amp;gt;&amp;lt;br /&gt;
  &amp;lt;label for=&#34;check1&#34;&amp;gt;Check 1&amp;lt;/label&amp;gt;&amp;lt;br /&gt;
  &amp;lt;input type=&#34;checkbox&#34; id=&#34;check2&#34;&amp;gt;&amp;lt;br /&gt;
  &amp;lt;label for=&#34;check2&#34;&amp;gt;Check 2&amp;lt;/label&amp;gt;&amp;lt;br /&gt;
  &amp;lt;input type=&#34;checkbox&#34; id=&#34;check3&#34;&amp;gt;&amp;lt;br /&gt;
  &amp;lt;label for=&#34;check3&#34;&amp;gt;Check 3&amp;lt;/label&amp;gt;&amp;lt;br /&gt;
&amp;lt;/fieldset&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El &lt;strong&gt;CSS&lt;/strong&gt; es extenso, ya que se trabaja con &lt;em&gt;pseudo-clases&lt;/em&gt; &lt;strong&gt;:checked&lt;/strong&gt; y &lt;strong&gt;:not(:checked)&lt;/strong&gt;, además de &lt;em&gt;pseudo-elemento&lt;/em&gt; &lt;strong&gt;:after&lt;/strong&gt; como se lee a continuación:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;[type=&#34;checkbox&#34;] {&amp;lt;br /&gt;
  position: absolute;&amp;lt;br /&gt;
  left: -9999px;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
[type=&#34;checkbox&#34;] + label:after {&amp;lt;br /&gt;
  content: &#39;&#39;;&amp;lt;br /&gt;
  position: absolute;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
[type=&#34;checkbox&#34;] + label {&amp;lt;br /&gt;
  display: block;&amp;lt;br /&gt;
  position: relative;&amp;lt;br /&gt;
  padding-left: 26px;&amp;lt;br /&gt;
  cursor: pointer;&amp;lt;br /&gt;
  line-height: 36px;&amp;lt;br /&gt;
  font-size: 28px;&amp;lt;br /&gt;
  color: #e74c3c;&amp;lt;br /&gt;
  text-shadow: #2c3e50 2px 2px 1px;&amp;lt;br /&gt;
  transition: color .3s;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
[type=&#34;checkbox&#34;] + label:after {&amp;lt;br /&gt;
  width: 30px; &amp;lt;br /&gt;
  height: 30px;&amp;lt;br /&gt;
  transition: all .2s;&amp;lt;br /&gt;
  top: 0; &amp;lt;br /&gt;
  left: 0;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
/* OFF */&amp;lt;br /&gt;
[type=&#34;checkbox&#34;]:not(:checked) + label:after {&amp;lt;br /&gt;
  background: url(&#39;check_off.png&#39;) left center no-repeat;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
/* ON */&amp;lt;br /&gt;
[type=&#34;checkbox&#34;]:checked + label {&amp;lt;br /&gt;
  color: #fff;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
[type=&#34;checkbox&#34;]:checked + label:after {&amp;lt;br /&gt;
  background: url(&#39;check_on.png&#39;) left center no-repeat;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/12/06/la-descendencia-del-css/&#34;&gt;http://www.csslab.cl/2007/12/06/la-descendencia-del-css/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;La descendencia del CSS&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Auto-prefix en Sass</title>
      <link>https://csslab.cl/2014/03/05/auto-prefix-en-sass/</link>
      <pubDate>Wed, 05 Mar 2014 21:22:09 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/03/05/auto-prefix-en-sass/</guid>
      <description>&lt;p&gt;Utilizar pre-procesadores &lt;strong&gt;CSS&lt;/strong&gt; se ha vuelto una necesidad en la actualidad, ya que sus múltiples ventajas hacen que no exista excusa para seguir escribiendo &lt;strong&gt;CSS&lt;/strong&gt; puro. Lo mejor es que no intervenimos el lenguaje, sólo lo escribimos más eficiente.&lt;/p&gt;
&lt;p&gt;Ahora les presento un útil &lt;em&gt;mixin&lt;/em&gt; para &lt;strong&gt;Sass&lt;/strong&gt; que ayuda a lidiar con los prefijos propietarios de algunas propiedades &lt;strong&gt;CSS3&lt;/strong&gt;. Mientras de a poco los fabricantes de &lt;em&gt;browsers&lt;/em&gt; los van eliminando, aún tenemos que utilizarlos por compatibilidad retroactiva.&lt;/p&gt;</description>
      <content>&lt;p&gt;Utilizar pre-procesadores &lt;strong&gt;CSS&lt;/strong&gt; se ha vuelto una necesidad en la actualidad, ya que sus múltiples ventajas hacen que no exista excusa para seguir escribiendo &lt;strong&gt;CSS&lt;/strong&gt; puro. Lo mejor es que no intervenimos el lenguaje, sólo lo escribimos más eficiente.&lt;/p&gt;
&lt;p&gt;Ahora les presento un útil &lt;em&gt;mixin&lt;/em&gt; para &lt;strong&gt;Sass&lt;/strong&gt; que ayuda a lidiar con los prefijos propietarios de algunas propiedades &lt;strong&gt;CSS3&lt;/strong&gt;. Mientras de a poco los fabricantes de &lt;em&gt;browsers&lt;/em&gt; los van eliminando, aún tenemos que utilizarlos por compatibilidad retroactiva.&lt;/p&gt;
&lt;p&gt;Mixin:&lt;/p&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;$prefixes: &#34;webkit&#34;, &#34;moz&#34;, &#34;ms&#34;, &#34;o&#34;, &#34;none&#34;;
@mixin prefix($property, $arguments) {
 @each $prefix in $prefixes {
   @if $prefix == &#34;none&#34; {
     #{$property}: $arguments;
   } @else {
     -#{$prefix}-#{$property}: $arguments;
   } 
 }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Uso:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;elemento {
  @include prefix(propiedad, valor);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En el &lt;em&gt;browser&lt;/em&gt; renderiza:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;elemento {
  -webkit-propiedad: valor;
  -moz-propiedad: valor;
  -ms-propiedad: valor;
  -o-propiedad: valor;
  propiedad: valor;
}&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;/blockquote&gt;</content>
    </item>
    
    <item>
      <title>jQuery geoRegionalización</title>
      <link>https://csslab.cl/2014/01/22/jquery-georegionalizacion/</link>
      <pubDate>Wed, 22 Jan 2014 16:11:40 +0000</pubDate>
      
      <guid>https://csslab.cl/2014/01/22/jquery-georegionalizacion/</guid>
      <description>&lt;p&gt;Este sencillo plugin permite generar dependencia entre 2 &lt;strong&gt;&lt;select&gt;&lt;/strong&gt; y entre ellos mostrar la relación &lt;em&gt;region / comuna&lt;/em&gt; que conforma la distribución geopolítica de la República de Chile.&lt;/p&gt;</description>
      <content>&lt;p&gt;Este sencillo plugin permite generar dependencia entre 2 &lt;strong&gt;&lt;select&gt;&lt;/strong&gt; y entre ellos mostrar la relación &lt;em&gt;region / comuna&lt;/em&gt; que conforma la distribución geopolítica de la República de Chile.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/geoRegionalizacion/demo.html&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34; title=&#34;Demo de plugin &amp;quot;jQuery geoRegionalización&amp;quot;&#34;&gt;Ver Demo&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;html-base&#34;&gt;HTML base:&lt;/h4&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;
&amp;lt;label&amp;gt;Región: &amp;lt;/label&amp;gt;&amp;lt;br /&gt;
&amp;lt;select id=&#34;region&#34;&amp;gt;&amp;lt;br /&gt;
    &amp;lt;option value=&#34;&#34;&amp;gt;Seleccione&amp;lt;/option&amp;gt;&amp;lt;br /&gt;
&amp;lt;/select&amp;gt;&amp;lt;br /&gt;
&amp;lt;label&amp;gt;Comuna: &amp;lt;/label&amp;gt;&amp;lt;br /&gt;
&amp;lt;select id=&#34;comuna&#34;&amp;gt;&amp;lt;br /&gt;
    &amp;lt;option value=&#34;&#34;&amp;gt;Seleccione&amp;lt;/option&amp;gt;&amp;lt;br /&gt;
&amp;lt;/select&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;uso-base&#34;&gt;Uso base:&lt;/h4&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;
$(&#39;#region&#39;).geoRegionalizacion({
    regionDependiente: &#39;#comuna&#39;
});
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;uso-avanzado&#34;&gt;Uso avanzado:&lt;/h4&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;
$(&#39;#region-avanzado&#39;).geoRegionalizacion({
    regionDependiente: &#39;#comuna-avanzado&#39;,
    onRegionSelect: function(){
        console.log($(this).val());
    },
    onComunaSelect: function() {
        console.log($(this).val());
    },
    onCreate: function(){
        $(&#39;#region-avanzado, #comuna-avanzado&#39;).selectric(&#39;refresh&#39;);
    }
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/juanbrujo/georegionalizacion&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34; title=&#34;Descargar plugin &amp;quot;jQuery geoRegionalización - Chile&amp;quot;&#34;&gt;Descargar desde Github/a&amp;gt;&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Pseudo contenido con CSS</title>
      <link>https://csslab.cl/2013/12/11/pseudo-contenido-con-css/</link>
      <pubDate>Wed, 11 Dec 2013 15:18:16 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/12/11/pseudo-contenido-con-css/</guid>
      <description>&lt;p&gt;La propiedad &lt;strong&gt;CSS&lt;/strong&gt; &lt;strong&gt;content: «»;&lt;/strong&gt; viene siendo utilizada para entregar más estilos donde no necesitas extra marcado con &lt;strong&gt;HTML&lt;/strong&gt;. Su soporte es amplio (&lt;strong&gt;IE8+&lt;/strong&gt; y demases &lt;em&gt;browsers&lt;/em&gt; modernos). Su uso está atado a los &lt;em&gt;pseudo-elementos&lt;/em&gt; &lt;strong&gt;:after&lt;/strong&gt; y &lt;strong&gt;:before&lt;/strong&gt; y permite generar contenido (de tipo texto) en dicho &lt;em&gt;pseudo-elemento&lt;/em&gt;. Un ejemplo básico:&lt;/p&gt;</description>
      <content>&lt;p&gt;La propiedad &lt;strong&gt;CSS&lt;/strong&gt; &lt;strong&gt;content: «»;&lt;/strong&gt; viene siendo utilizada para entregar más estilos donde no necesitas extra marcado con &lt;strong&gt;HTML&lt;/strong&gt;. Su soporte es amplio (&lt;strong&gt;IE8+&lt;/strong&gt; y demases &lt;em&gt;browsers&lt;/em&gt; modernos). Su uso está atado a los &lt;em&gt;pseudo-elementos&lt;/em&gt; &lt;strong&gt;:after&lt;/strong&gt; y &lt;strong&gt;:before&lt;/strong&gt; y permite generar contenido (de tipo texto) en dicho &lt;em&gt;pseudo-elemento&lt;/em&gt;. Un ejemplo básico:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;div {&amp;lt;br /&gt;
  color: blue;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
  div:after {&amp;lt;br /&gt;
  	content: &#34;Link: &#34;&amp;lt;br /&gt;
  	color: gray;&amp;lt;br /&gt;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Resulta muy útil ya que disponemos de nuevos elementos (vale aclarar que no pertenecen al &lt;strong&gt;DOM&lt;/strong&gt;) los que podemos dar estilos anexos al elemento mismo que estamos manipulando con &lt;strong&gt;CSS&lt;/strong&gt;. Pero este no es el caso de este artículo… (se me ocurre hacer un videocast sobre eso).&lt;/p&gt;
&lt;p&gt;Dentro de lo que permite agragarse a través de content está &lt;strong&gt;attr()&lt;/strong&gt;, vale decir, cualquier atributo del elemento que estás manipulando con &lt;strong&gt;CSS&lt;/strong&gt;. Usualmente estás acostumbrado a hacerlo con [JavaScript][1] pero en este caso sólo con estilos podemos crear &lt;em&gt;pseudo-elementos&lt;/em&gt; y darle contenido nuevo y/o existente. Resulta muy útil si queremos, por ejemplo, hacer un &lt;em&gt;tooltip&lt;/em&gt; sólo con &lt;strong&gt;CSS&lt;/strong&gt; rescatando el texto dentro de &lt;strong&gt;title&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;a title=&#34;Título de este mágico tooltip sólo con CSS3&#34; href=&#34;#&#34;&amp;gt;tooltip sólo con CSS3&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;a[title]:hover:after { /* Este es el cuadrado del tooltip que contiene el texto */&amp;lt;br /&gt;
  content: attr(title);&amp;lt;br /&gt;
  color: #333;&amp;lt;br /&gt;
  position: absolute;&amp;lt;br /&gt;
  left: 50%; &amp;lt;br /&gt;
  top: -150%;&amp;lt;br /&gt;
  white-space: nowrap; &amp;lt;br /&gt;
  z-index: 10;&amp;lt;br /&gt;
  border-radius: 6px;&amp;lt;br /&gt;
  background-color: rgba(0,0,0,.7);&amp;lt;br /&gt;
  color: white;&amp;lt;br /&gt;
  font-size: .7em;&amp;lt;br /&gt;
  padding: .1em .5em;&amp;lt;br /&gt;
  text-shadow: black 1px 1px 0;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
a[title]:hover:before { /* Este es el triangulo del tooltip */&amp;lt;br /&gt;
  position: absolute;&amp;lt;br /&gt;
  top: -4px;&amp;lt;br /&gt;
  left: 60%;&amp;lt;br /&gt;
  content: &#34;&#34;;&amp;lt;br /&gt;
  width: 0;&amp;lt;br /&gt;
  height: 0;&amp;lt;br /&gt;
  border-style: solid;&amp;lt;br /&gt;
  border-width: 7px 7px 0 7px;&amp;lt;br /&gt;
  border-color: rgba(0,0,0,.7) transparent transparent transparent;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ya en un [muy antiguo artículo proponía su uso en hojas de estilos para impresión &lt;strong&gt;media=&amp;ldquo;print&amp;rdquo;&lt;/strong&gt;][2] donde para [mejor accesibilidad][3] a todos los links se entregara como información impresa la &lt;strong&gt;URL&lt;/strong&gt; al que corresponde ese link luego del texto del enlace mismo.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@media print {&amp;lt;br /&gt;
  a:after {&amp;lt;br /&gt;
    content: &#34; ( http://www.csslab.cl &#34; attr(href) &#34; ) &#34;;&amp;lt;br /&gt;
    font-size: small;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://caniuse.com/#feat=css-gencontent&#34; title=&#34;Enlace externo a &amp;quot;Can I Use&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSS Generated content&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/categoria/javascript/&#34;&gt;http://www.csslab.cl/categoria/javascript/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Javascript&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2005/11/15/mediaprint/&#34;&gt;http://www.csslab.cl/2005/11/15/mediaprint/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;media=”print” (actualizado)&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/categoria/accesibilidad/&#34;&gt;http://www.csslab.cl/categoria/accesibilidad/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Accesibilidad&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>CSS3: calc()</title>
      <link>https://csslab.cl/2013/11/18/css3-calc/</link>
      <pubDate>Mon, 18 Nov 2013 15:27:04 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/11/18/css3-calc/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Calc()&lt;/strong&gt; es una propiedad &lt;strong&gt;CSS3&lt;/strong&gt; que permite realizar operaciones matemáticas simples sustituyendo un valor fijo por una expresión dinámica de medida, por ejemplo, sumando o dividiendo anchos de un contenedor.&lt;/p&gt;</description>
      <content>&lt;p&gt;&lt;strong&gt;Calc()&lt;/strong&gt; es una propiedad &lt;strong&gt;CSS3&lt;/strong&gt; que permite realizar operaciones matemáticas simples sustituyendo un valor fijo por una expresión dinámica de medida, por ejemplo, sumando o dividiendo anchos de un contenedor.&lt;/p&gt;
&lt;p&gt;Lamentablemente con &lt;strong&gt;calc()&lt;/strong&gt; no podemos trabajar con valores expresados en otras propiedades (como las útiles variables de preprocesadores &lt;strong&gt;CSS&lt;/strong&gt;), sino que se deben trabajar con valores definidos como se ve en el siguiente ejemplo:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;width: calc(100%  - 10px);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Puedes utilizar las siguientes operaciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;+&lt;/strong&gt; (suma)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;–&lt;/strong&gt; (resta)&lt;/li&gt;
&lt;li&gt;***** (multiplicación)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/&lt;/strong&gt; (división)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Como ves en el ejemplo, puedes utilizar diferentes unidades en tu expresión de cálculo, y no se te ocurra dividir por cero (0).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Soporte: IE9+, Firefox 16+ (sin prefijo), Chrome 26+ (sin prefijo), Safari 6+.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/CSS/calc&#34; target=&#34;_blank&#34;&gt;calc @ Mozilla MDN&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Dando estilos a placeholder</title>
      <link>https://csslab.cl/2013/10/23/dando-estilos-a-placeholder/</link>
      <pubDate>Wed, 23 Oct 2013 17:31:56 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/10/23/dando-estilos-a-placeholder/</guid>
      <description>Con HTML5 llegaron muchas nuevas etiquetas y atributos, y se nota que en la W3C se esforzaron en la captura de datos. Los formularios tuvieron muchas mejoras y en este artículo mostraré como manipular un útil atributo: placeholder.
Placeholder permite integrar un texto predefinido dentro de un campo de texto (). En general este texto ya tiene un estilo según el browser que utilizamos y se acomoda a utilizar este estilo preexistente:</description>
      <content>&lt;p&gt;Con &lt;a href=&#34;http://www.csslab.cl/etiqueta/html5/&#34;&gt;HTML5&lt;/a&gt; llegaron muchas nuevas etiquetas y atributos, y se nota que en la &lt;strong&gt;W3C&lt;/strong&gt; se esforzaron en la captura de datos. Los &lt;a href=&#34;http://www.csslab.cl/etiqueta/formularios/&#34;&gt;formularios&lt;/a&gt; tuvieron muchas mejoras y en este artículo mostraré como manipular un útil atributo: &lt;strong&gt;placeholder&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Placeholder&lt;/strong&gt; permite integrar un texto predefinido dentro de un campo de texto (&lt;input&gt;). En general este texto ya tiene un estilo según el &lt;em&gt;browser&lt;/em&gt; que utilizamos y se acomoda a utilizar este estilo preexistente:&lt;/p&gt;
&lt;p&gt;Pero hay una propiedad &lt;strong&gt;CSS&lt;/strong&gt; -propietaria- que permite cambiar el estilo al texto que ingresas a través de placeholder:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;input::-webkit-input-placeholder {&amp;lt;br /&gt;
  color: red;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
input:-moz-placeholder {&amp;lt;br /&gt;
  color: red; &amp;lt;br /&gt;
}&amp;lt;br /&gt;
input:-ms-input-placeholder { &amp;lt;br /&gt;
  color: red; &amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
</content>
    </item>
    
    <item>
      <title>HTML5: el atributo download</title>
      <link>https://csslab.cl/2013/09/23/html5-el-atributo-download/</link>
      <pubDate>Mon, 23 Sep 2013 15:58:47 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/09/23/html5-el-atributo-download/</guid>
      <description>HTML 5 trae el nuevo atributo download para enlaces. Cuando utilizado dentro de un , este atributo puede ir definiéndose a sí mismo (lo que causará que se descargue solamente el archivo) ó puede contener el nombre del archivo a ser descargado, sin la ruta asociada la que va como de costumbre dentro del atributo href=&amp;quot;&amp;quot;. Con esto definido el archivo linkeado será forzado a ser descargado.
&amp;lt;a href=&#34;archivos/pdf/informe.pdf&#34; download&amp;gt;Descargar informe.</description>
      <content>&lt;p&gt;&lt;strong&gt;HTML 5&lt;/strong&gt; trae el nuevo atributo &lt;strong&gt;download&lt;/strong&gt; para enlaces. Cuando utilizado dentro de un &lt;strong&gt;&lt;a&gt;&lt;/strong&gt;, este atributo puede ir definiéndose a sí mismo (lo que causará que se descargue solamente el archivo) ó puede contener el nombre del archivo a ser descargado, sin la ruta asociada la que va como de costumbre dentro del atributo &lt;strong&gt;href=&amp;quot;&amp;quot;&lt;/strong&gt;. Con esto definido el archivo linkeado será forzado a ser descargado.&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;a href=&#34;archivos/pdf/informe.pdf&#34; download&amp;gt;Descargar informe.pdf [66kb]&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2013/09/informe.pdf&#34; download class=&#34;verejemplo bajar&#34;&gt;Ejemplo: descargar informe.pdf&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;a href=&#34;archivos/pdf/informe.pdf&#34; download=&#34;mi-lindo-informe&#34;&amp;gt;Descargar mi-lindo-informe.pdf [66kb]&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2013/09/informe.pdf&#34; download=&#34;mi-lindo-informe&#34; class=&#34;verejemplo bajar&#34;&gt;Ejemplo: descargar mi-lindo-informe.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Su soporte aún es limitado, siendo &lt;strong&gt;Firefox&lt;/strong&gt;, &lt;strong&gt;Opera&lt;/strong&gt; y &lt;strong&gt;Chrome&lt;/strong&gt; los únicos que por ahora responden a su uso. Y sólo &lt;em&gt;browsers desktop&lt;/em&gt; por el momento.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://caniuse.com/#feat=download&#34; title=&#34;Enlace externo a &amp;quot;Can I Use&amp;quot;&#34; target=&#34;_blank&#34; onclick=&#34;caniuse.toFeat(&#39;download&#39;);return false;&#34;&gt;Can I Use – Download attribute&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download&#34; title=&#34;Enlace externo a &amp;quot;html5rocks.com&amp;quot;&#34; target=&#34;_blank&#34;&gt;Downloading resources in HTML5: a[download] &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </item>
    
    <item>
      <title>overflow: scroll en iOS</title>
      <link>https://csslab.cl/2013/08/20/overflow-scroll-en-ios/</link>
      <pubDate>Tue, 20 Aug 2013 20:09:19 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/08/20/overflow-scroll-en-ios/</guid>
      <description>&lt;p&gt;En desktop, para tener un elemento escroleable basta con que declares un alto fijo y defines &lt;strong&gt;overflow: auto | overflow: scroll&lt;/strong&gt; y si el contenido interior es mayor que el alto aparecerá la barra de &lt;em&gt;scroll&lt;/em&gt; automáticamente. En &lt;em&gt;browsers&lt;/em&gt; móviles y tablets ocurre lo mismo pero la sensación es muy inferior ya que el &lt;em&gt;touch/drag&lt;/em&gt; es errático y no incluye el movimiento elástico que estamos acostumbrado al scroll en estos dispositivos &lt;em&gt;touch&lt;/em&gt;. En el siguiente video pueden ver claramente a lo que me refiero (en el cuadro de la derecha tiene aplicada la propiedad mágica):&lt;/p&gt;</description>
      <content>&lt;p&gt;En desktop, para tener un elemento escroleable basta con que declares un alto fijo y defines &lt;strong&gt;overflow: auto | overflow: scroll&lt;/strong&gt; y si el contenido interior es mayor que el alto aparecerá la barra de &lt;em&gt;scroll&lt;/em&gt; automáticamente. En &lt;em&gt;browsers&lt;/em&gt; móviles y tablets ocurre lo mismo pero la sensación es muy inferior ya que el &lt;em&gt;touch/drag&lt;/em&gt; es errático y no incluye el movimiento elástico que estamos acostumbrado al scroll en estos dispositivos &lt;em&gt;touch&lt;/em&gt;. En el siguiente video pueden ver claramente a lo que me refiero (en el cuadro de la derecha tiene aplicada la propiedad mágica):&lt;/p&gt;
&lt;p&gt;&lt;video width=&#34;640&#34; height=&#34;480&#34; controls&gt;&lt;source src=&#34;http://www.csslab.cl/ejemplos/ipad-scroll/ipad-scroll.mp4&#34; type=&#34;video/mp4&#34;/&gt;&lt;source src=&#34;http://www.csslab.cl/ejemplos/ipad-scroll/ipad-scroll.webm&#34; type=&#34;video/webm&#34;/&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h3 id=&#34;-webkit-overflow-scrolling-touch&#34;&gt;-webkit-overflow-scrolling: touch&lt;/h3&gt;
&lt;p&gt;Esta propiedad creada por &lt;em&gt;Apple&lt;/em&gt; especialmente para &lt;em&gt;Safari Mobile&lt;/em&gt; permite precisamente lo que no es soportado por este navegador: crear un &lt;em&gt;scroll&lt;/em&gt; a un elemento sin interferir en el el registro del &lt;em&gt;touch&lt;/em&gt; dentro de la ventana misma del &lt;em&gt;browser&lt;/em&gt;. En pocas palabras, permite un &lt;em&gt;scroll&lt;/em&gt; interno (con &lt;em&gt;momentum&lt;/em&gt;) dentro de una página que ya tiene un &lt;em&gt;scroll&lt;/em&gt; genérico, ya que en dispositivos móviles el evento &lt;em&gt;touch&lt;/em&gt; está asociado a la ventana completa. Esta propiedad fue agregada desde &lt;strong&gt;iOS 5.1&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;[Ver Ejemplo (en dispositivos touch)][1]{.verejemplo}&lt;/p&gt;
&lt;img src=&#34;http://qrfree.kaywa.com/?l=1&amp;#038;s=8&amp;#038;d=http%3A%2F%2Fwww.csslab.cl%2Fejemplos%2Fipad-scroll%2Fejemplo.html&#34; alt=&#34;Ejemplo&#34; width=&#34;150&#34; style=&#34;margin: 0 auto; display: block;&#34; /&gt; 
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/joehewitt/scrollability/&#34; title=&#34;Enlace externo a &amp;quot;Github: scrollability&amp;quot;&#34; target=&#34;_blank&#34;&gt;Scrollability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/jimeh/PastryKit&#34; title=&#34;Enlace externo a &amp;quot;Github: PastryKit&amp;quot;&#34; target=&#34;_blank&#34;&gt;PastryKit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/joelambert/ScrollFix&#34; title=&#34;Enlace externo a &amp;quot;Github: ScrollFix&amp;quot;&#34; target=&#34;_blank&#34;&gt;ScrollFix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/cubiq/iscroll&#34; title=&#34;Enlace externo a &amp;quot;Github: iScroll&amp;quot;&#34; target=&#34;_blank&#34;&gt;iScroll&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/ipad-scroll/ejemplo.html&#34;&gt;http://www.csslab.cl/ejemplos/ipad-scroll/ejemplo.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo Overflow: Scroll en iOS&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Web y especialización</title>
      <link>https://csslab.cl/2013/07/19/web-y-especializacion/</link>
      <pubDate>Fri, 19 Jul 2013 21:18:19 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/07/19/web-y-especializacion/</guid>
      <description>&lt;blockquote&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_abre.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;  
Oye Jorge, tengo ganas tomar un diplomado. ¿Sabes de alguno que me recomiendes?
&lt;p&gt;Hey, voy a hacer un postgrado en XXX de YYY en la Universidad ZZZ, ¿Qué te parece?&lt;br&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_cierra.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <content>&lt;blockquote&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_abre.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;  
Oye Jorge, tengo ganas tomar un diplomado. ¿Sabes de alguno que me recomiendes?
&lt;p&gt;Hey, voy a hacer un postgrado en XXX de YYY en la Universidad ZZZ, ¿Qué te parece?&lt;br&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_cierra.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ambos casos me han sucedido más de una vez y mi respuesta a ellas ha sido algo como: &lt;em&gt;«Mira, nosé, no estoy actualizado de la enseñanza en instituciones en nuestro oficio»&lt;/em&gt; junto con un &lt;em&gt;«¡pero seguro te irá bien!»&lt;/em&gt;. Pero por interno pienso: &lt;em&gt;«¿Para qué pierden tiempo y dinero? ¿Vale la pena un curso para aprender conocimiento que está ahí, libre, actualizado, complejo pero no ‘certificado’?»&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Mi [inquietud por el sistema educacional][1] no es nuevo y [ha sido enunciado y discutido en este mismo sitio][2], con resultado insólito: fuí invitado a hacer clases en una universidad. Confieso que fue una experiencia única; no me lo esperaba y sin embargo fue muy gratificante. Finalmente fueron 4 años en varios cursos, desde alumnos de primer año hasta a punto de egresar, con diferentes tipos de satisfacciones y que ahora muchos son profesionales. Pero en el fondo, experiencia.&lt;/p&gt;
&lt;p&gt;Una noche mi hijo me pide: &lt;em&gt;«Papi, quiero comer tortilla de atún»&lt;/em&gt;– y yo rápidamente pienso: &lt;em&gt;«sé que he visto como se hace pero A-HO-RA no sé como hacerlo.»&lt;/em&gt; Para ampliar mi angustia Diego (mi hijo) replica &lt;em&gt;«que quede como los de la Blanca, ¡son los mejores!»&lt;/em&gt; (tema aparte quién es Blanca, pero hace buenas tortillas). Quedamos en que la llamaríamos para que nos explique su receta, pero mi orgullo me decía &lt;em&gt;«busca tu propia receta»&lt;/em&gt;, lo que se tradujo en &lt;em&gt;«googlea y dale tu toque personal»&lt;/em&gt;. Finalmente, hice la tortilla de atún y le puse algo más (orégano, ajinomoto y cilantro picado) y el veredicto fue: &lt;em&gt;«¡Muy rico, diferente al de la Blanca!»&lt;/em&gt;. Orgullo para mí 😀&lt;/p&gt;
&lt;p&gt;Según mi visión existen 3 tipos de profesionales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El que sabe y hace la tarea designada.&lt;/li&gt;
&lt;li&gt;El que no sabe y resuelve la tarea designada por sus propios medios (lógica).&lt;/li&gt;
&lt;li&gt;El que no sabe y busca que le enseñen como hacer la tarea designada (Internet, cursos, esfuerzo propio y ojalá perseverancia).&lt;/li&gt;
&lt;/ul&gt;
&lt;dl&gt;
&lt;dt&gt;Para el primer tipo:&lt;/dt&gt;
&lt;dd&gt;¡genial! pero no le irá siempre bien, nadie se las sabe todo todas las veces.&lt;/dd&gt;
&lt;dt&gt;Para el segundo:&lt;/dt&gt;
&lt;dd&gt;¡dotado! pero no siempre le irá bien, seguro en alguna tarea no tendrá las habilidades.&lt;/dd&gt;
&lt;dt&gt;Para el tercero:&lt;/dt&gt;
&lt;dd&gt;ojalá puedas googlear y aprender, sino te saldrá caro (ó busca a alguien que te enseñe, ó busca un curso, ó dile a tu empleador que te espere porque tienes que aprender lo que te pidieron para después ver si puedes aplicarlo).&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Siempre he valorado más la experiencia por sobre los papeles. «Demuéstrame lo que sabes» es mi consigna cuando trabajo con alguien; aunque no lo explicite es lo que mantengo en mente. Felizmente he podido trabajar con gente, profesionales, del más alto nivel técnico, ético y profesional. Y de ellos, lo que me han demostrado:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;0% tiene estudios de postgrado.&lt;/li&gt;
&lt;li&gt;50% tiene estudios universitarios terminados.&lt;/li&gt;
&lt;li&gt;50% tiene estudios universitarios incompletos.&lt;/li&gt;
&lt;li&gt;25% estudió lo que ejerce actualmente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;El conocimiento es libre y está disponible, tómalo.&lt;/strong&gt; En Chile, el diploma puede ser aún un peso en ciertas empresas, pero todo depende de quién te contrate. En mi experiencia, nunca me han pedido validar mi título profesional (salvo para hacer clases en universidad). Conozco empresas que te piden tener y validar un título, &lt;strong&gt;pero ese diploma ¿Qué mide? ¿Qué profesores te miden? ¿Qué escuela te mide?&lt;/strong&gt; ¿Están vigentes, trabajan en el medio, saben que &lt;strong&gt;Mozilla&lt;/strong&gt; dejó &lt;strong&gt;OGG&lt;/strong&gt; por &lt;strong&gt;WebM&lt;/strong&gt;? Trabajamos en un medio muy cambiante, lo que sabes hoy próxima semana cambia y próximo mes ya es obsoleto. &lt;strong&gt;Lo que aprendes en un medio formal de aprendizaje no es suficiente para medir el conocimiento que tienes, pero sí para medir el método que puedes tener para aprender nuevos conocimientos&lt;/strong&gt;. Para mí esa es la diferencia.&lt;/p&gt;
&lt;p&gt;Últimas líneas: &lt;strong&gt;lee, conéctate, comparte, aprende.&lt;/strong&gt; Si te quedas atrás vendrá alguien más que te sobrepasará sin pensarlo. Nuestro medio es muy cambiante, se actualiza cada hora. &lt;strong&gt;Github&lt;/strong&gt;, &lt;strong&gt;RSS&lt;/strong&gt;, &lt;strong&gt;Twitter&lt;/strong&gt; son los medios para aprender lo último. Universidades y cursos son los que te dan metodología y un papel firmado que dice que puedes seguir procesos. Te dan herramientas pero debes saber manejarlas en la práctica. Y mantenerlas actualizadas.&lt;/p&gt;
&lt;p&gt;Aún así prefiero &lt;a href=&#34;https://www.coursera.org/&#34; title=&#34;Enlace externo a &amp;quot;Coursera&amp;quot;&#34; target=&#34;_blank&#34;&gt;Coursera&lt;/a&gt;, &lt;a href=&#34;http://www.codecademy.com/&#34; title=&#34;Enlace externo a &amp;quot;Codecademy&amp;quot;&#34; target=&#34;_blank&#34;&gt;Codecademy&lt;/a&gt;, &lt;a href=&#34;http://www.khanacademy.org/&#34; title=&#34;Enlace externo a &amp;quot;Khan Academy&amp;quot;&#34; target=&#34;_blank&#34;&gt;Khan Academy&lt;/a&gt; …&lt;/p&gt;
&lt;h4 id=&#34;no-dejaré-que-el-resultado-de-un-exámen-decida-mi-futuro&#34;&gt;No dejaré que el resultado de un exámen decida mi futuro.&lt;/h4&gt;
&lt;p&gt;Si tienes 6 minutos 10 segundos de tiempo no los desperdicies, dale &lt;em&gt;play&lt;/em&gt; al siguiente video.&lt;/p&gt;
&lt;div class=&#34;video-container&#34;&gt;
&lt;/div&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2006/07/03/html-y-la-ensenanza/&#34;&gt;http://www.csslab.cl/2006/07/03/html-y-la-ensenanza/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;HTML y la enseñanza&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2007/07/18/html-y-la-ensenanza-2/&#34;&gt;http://www.csslab.cl/2007/07/18/html-y-la-ensenanza-2/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;HTML y la enseñanza 2&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Íconos y pantallas iPhone/iPad</title>
      <link>https://csslab.cl/2013/06/18/iconos-y-pantallas-iphoneipad/</link>
      <pubDate>Tue, 18 Jun 2013 23:11:21 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/06/18/iconos-y-pantallas-iphoneipad/</guid>
      <description>&lt;p&gt;Para un &lt;a href=&#34;http://www.climapp.cl&#34; target=&#34;_blank&#34;&gt;proyecto espontáneo&lt;/a&gt; que se me ocurrió hacer, utilicé los &lt;a href=&#34;http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html&#34; title=&#34;Enlace enterno a &amp;quot;Safari Web Content Guide&amp;quot;&#34; target=&#34;_blank&#34;&gt;íconos y pantallas que recomienda Apple&lt;/a&gt; para todos los sitios que requieran ser visualizados en sus teléfonos y tabletas. En mis tiempos mozos, [cuando comencé a jugar con web móvil][1] sólo existía 1 tamaño y 1 resolución. Años han pasado y a continuación está la lista completa si quieres tener todo cubierto: &lt;strong&gt;icons&lt;/strong&gt; (resoluciones) y &lt;strong&gt;splash-screens&lt;/strong&gt; (resoluciones y orientación).&lt;/p&gt;</description>
      <content>&lt;p&gt;Para un &lt;a href=&#34;http://www.climapp.cl&#34; target=&#34;_blank&#34;&gt;proyecto espontáneo&lt;/a&gt; que se me ocurrió hacer, utilicé los &lt;a href=&#34;http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html&#34; title=&#34;Enlace enterno a &amp;quot;Safari Web Content Guide&amp;quot;&#34; target=&#34;_blank&#34;&gt;íconos y pantallas que recomienda Apple&lt;/a&gt; para todos los sitios que requieran ser visualizados en sus teléfonos y tabletas. En mis tiempos mozos, [cuando comencé a jugar con web móvil][1] sólo existía 1 tamaño y 1 resolución. Años han pasado y a continuación está la lista completa si quieres tener todo cubierto: &lt;strong&gt;icons&lt;/strong&gt; (resoluciones) y &lt;strong&gt;splash-screens&lt;/strong&gt; (resoluciones y orientación).&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;!-- Ícono iPhone --&amp;gt;&amp;lt;br /&gt;
&amp;lt;link href=&#34;apple-touch-icon-57x57.png&#34; sizes=&#34;57x57&#34; rel=&#34;apple-touch-icon&#34;&amp;gt;&amp;lt;br /&gt;
&amp;lt;!-- Ícono iPad--&amp;gt;&amp;lt;br /&gt;
&amp;lt;link href=&#34;apple-touch-icon-72x72.png&#34; sizes=&#34;72x72&#34; rel=&#34;apple-touch-icon&#34;&amp;gt;&amp;lt;br /&gt;
&amp;lt;!-- Ícono iPhone (Retina) --&amp;gt;&amp;lt;br /&gt;
&amp;lt;link href=&#34;apple-touch-icon-114x114.png&#34; sizes=&#34;114x114&#34; rel=&#34;apple-touch-icon&#34;&amp;gt;&amp;lt;br /&gt;
&amp;lt;!-- Ícono iPad (Retina) --&amp;gt;&amp;lt;br /&gt;
&amp;lt;link href=&#34;apple-touch-icon-144x144.png&#34; sizes=&#34;144x144&#34; rel=&#34;apple-touch-icon&#34;&amp;gt;&amp;lt;br /&gt;
&amp;lt;!-- Splash Screen iPhone --&amp;gt;&amp;lt;br /&gt;
&amp;lt;link href=&#34;apple-touch-startup-image-320x460.png&#34; media=&#34;(device-width: 320px)&#34; rel=&#34;apple-touch-startup-image&#34;&amp;gt;&amp;lt;br /&gt;
&amp;lt;!-- Splash Screen iPhone (Retina) --&amp;gt;&amp;lt;br /&gt;
&amp;lt;link href=&#34;apple-touch-startup-image-640x920.png&#34; media=&#34;(device-width: 320px) and (-webkit-device-pixel-ratio: 2)&#34; rel=&#34;apple-touch-startup-image&#34;&amp;gt;&amp;lt;br /&gt;
&amp;lt;!-- Splash Screen iPad (portrait) --&amp;gt;&amp;lt;br /&gt;
&amp;lt;link href=&#34;apple-touch-startup-image-768x1004.png&#34; media=&#34;(device-width: 768px) and (orientation: portrait)&#34; rel=&#34;apple-touch-startup-image&#34;&amp;gt;&amp;lt;br /&gt;
&amp;lt;!-- Splash Screen iPad (landscape) --&amp;gt;&amp;lt;br /&gt;
&amp;lt;link href=&#34;apple-touch-startup-image-748x1024.png&#34; media=&#34;(device-width: 768px) and (orientation: landscape)&#34; rel=&#34;apple-touch-startup-image&#34;&amp;gt;&amp;lt;br /&gt;
&amp;lt;!-- Splash Screen iPad (Retina, portrait) --&amp;gt;&amp;lt;br /&gt;
&amp;lt;link href=&#34;apple-touch-startup-image-1536x2008.png&#34; media=&#34;(device-width: 1536px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)&#34; rel=&#34;apple-touch-startup-image&#34;&amp;gt;&amp;lt;br /&gt;
&amp;lt;!-- Splash Screen iPad (Retina, landscape) --&amp;gt;&amp;lt;br /&gt;
&amp;lt;link href=&#34;apple-touch-startup-image-2048x1496.png&#34; media=&#34;(device-width: 1536px)  and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)&#34; rel=&#34;apple-touch-startup-image&#34;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/06/iconos.jpg&#34; alt=&#34;&#34; title=&#34;iconos&#34; width=&#34;300&#34; height=&#34;167&#34; class=&#34;alignright size-full wp-image-1684&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2013/06/iconos.jpg 450w, http://www.csslab.cl/wp-content/uploads/2013/06/iconos-300x166.jpg 300w, http://www.csslab.cl/wp-content/uploads/2013/06/iconos-220x122.jpg 220w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt; 
&lt;p&gt;Por defecto Safari agregará bordes redondos y un fino brillo al ícono, similar a cómo son tratados los íconos de aplicativos. Desde iOS 2 tienes la posibilidad de que el sistema no se comporte de esta manera; basta con agregar &lt;strong&gt;precomposed&lt;/strong&gt; al nombre del archivo, ó al nombre del &lt;strong&gt;rel&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;link href=&#34;apple-touch-icon-precomposed&#34; href=&#34; apple-touch-icon-precomposed.png&#34;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;link&#34;&gt;Link:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;[Mulitple “apple-touch-startup-image” resolutions for iOS | StackOverflow][2]&lt;/li&gt;
&lt;li&gt;[Apple Webpage Touch Icons][3]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2008/07/10/desarrollos-web-para-iphone/&#34;&gt;http://www.csslab.cl/2008/07/10/desarrollos-web-para-iphone/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Desarrollos Web para iPhone&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://stackoverflow.com/questions/4687698/mulitple-apple-touch-startup-image-resolutions-for-ios-web-app-esp-for-ipad&#34;&gt;http://stackoverflow.com/questions/4687698/mulitple-apple-touch-startup-image-resolutions-for-ios-web-app-esp-for-ipad&lt;/a&gt; &amp;ldquo;Enlace externo a StackOverflow&amp;rdquo;
[3]: &lt;a href=&#34;http://useyourloaf.com/blog/2013/02/23/apple-webpage-icons.html&#34;&gt;http://useyourloaf.com/blog/2013/02/23/apple-webpage-icons.html&lt;/a&gt; &amp;ldquo;Enlace externo a Use Your Loaf&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>IE v/s console</title>
      <link>https://csslab.cl/2013/06/13/ie-vs-console/</link>
      <pubDate>Thu, 13 Jun 2013 16:02:12 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/06/13/ie-vs-console/</guid>
      <description>&lt;p&gt;¿Cansado de soportar &lt;strong&gt;IE&lt;/strong&gt;? Te entiendo, pero aún hay clientes que piden que sus proyectos se vean en estos &lt;em&gt;browsers&lt;/em&gt; antiguos. Frustraciones aparte, cuando escribes &lt;strong&gt;Javascript&lt;/strong&gt; y usas &lt;strong&gt;console.log()&lt;/strong&gt; para debuggear tu código en la consola del &lt;em&gt;browser&lt;/em&gt;, es usual que éstas funcionalidades se quiebren en &lt;strong&gt;IE8-&lt;/strong&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;¿Cansado de soportar &lt;strong&gt;IE&lt;/strong&gt;? Te entiendo, pero aún hay clientes que piden que sus proyectos se vean en estos &lt;em&gt;browsers&lt;/em&gt; antiguos. Frustraciones aparte, cuando escribes &lt;strong&gt;Javascript&lt;/strong&gt; y usas &lt;strong&gt;console.log()&lt;/strong&gt; para debuggear tu código en la consola del &lt;em&gt;browser&lt;/em&gt;, es usual que éstas funcionalidades se quiebren en &lt;strong&gt;IE8-&lt;/strong&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;console.log(&#39;IE8- dará error por esto&#39;);&lt;/code&gt;&lt;/pre&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/06/iebreak.jpg&#34; alt=&#34;&#34; title=&#34;iebreak&#34; width=&#34;578&#34; height=&#34;415&#34; class=&#34;alignnone size-full wp-image-1660&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2013/06/iebreak.jpg 578w, http://www.csslab.cl/wp-content/uploads/2013/06/iebreak-300x215.jpg 300w, http://www.csslab.cl/wp-content/uploads/2013/06/iebreak-220x157.jpg 220w&#34; sizes=&#34;(max-width: 578px) 100vw, 578px&#34; /&gt; 
&lt;h4 id=&#34;solución-1&#34;&gt;Solución 1&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;window.console &amp;&amp; console.log(&#39;IE seguirá funcionando ahora, pero no mostrará nada en la consola. ¡Se lo pierde!&#39;);&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;solución-2&#34;&gt;Solución 2&lt;/h4&gt;
&lt;p&gt;Verifica si &lt;strong&gt;console&lt;/strong&gt; existe y si es &lt;em&gt;undefined&lt;/em&gt;, crea una vacía:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;if ( ! window.console ) console = { log: function(){} };&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Después utiliza console.log como quieras, no entregará error en IE:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;console.log(&#39;IE seguirá ignorando console.log&#39;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href=&#34;http://stackoverflow.com/questions/7585351/testing-for-console-log-statements-in-ie&#34; title=&#34;Enlace externo a StackOverflow&#34;&gt;Testing for console.log statements in IE | StackOverflow&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Giveaway Books</title>
      <link>https://csslab.cl/2013/05/23/giveaway-books/</link>
      <pubDate>Fri, 24 May 2013 02:30:37 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/05/23/giveaway-books/</guid>
      <description>Sorteo realizado, los libros fueron enviados por correo. Espero sean aprovechados. Gracias por interesarse, apenas tenga más leídos los vuelvo a distribuir.  Pantone Web Color
Edgar Méndez, México    The Psychology Of…
Pato Mas, Chile    No Me Hagas Pensar
Leticia Chamorro, Paraguay    [ES] Tengo unos libros que acumulan polvo y seguro será más útil a otras personas que a mi estante.</description>
      <content>&lt;div style=&#34;border: 2px solid darkgreen;padding:20px;overflow:hidden;margin:20px; 0&#34;&gt;
  &lt;p&gt;
    Sorteo realizado, los libros fueron enviados por correo. Espero sean aprovechados. Gracias por interesarse, apenas tenga más leídos los vuelvo a distribuir.
  &lt;/p&gt;
  &lt;div style=&#34;width:31%;margin:10px 1%;float:left;text-align:center;&#34;&gt;
    &lt;h4&gt;
      Pantone Web Color&lt;br /&gt;&lt;small&gt;Edgar Méndez, México&lt;/small&gt;
    &lt;/h4&gt;
  &lt;/div&gt;
  &lt;div style=&#34;width:31%;margin:10px 1%;float:left;text-align:center;&#34;&gt;
    &lt;h4&gt;
      The Psychology Of…&lt;br /&gt;&lt;small&gt;Pato Mas, Chile&lt;/small&gt;
    &lt;/h4&gt;
  &lt;/div&gt;
  &lt;div style=&#34;width:31%;margin:10px 1%;float:left;text-align:center;&#34;&gt;
    &lt;h4&gt;
      No Me Hagas Pensar&lt;br /&gt;&lt;small&gt;Leticia Chamorro, Paraguay&lt;/small&gt;
    &lt;/h4&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;[ES]&lt;/strong&gt; Tengo unos libros que acumulan polvo y seguro será más útil a otras personas que a mi estante. Quiero regalarlos, donde sea que estén en este planeta, me encargo de enviarlos y el costo es por mi cuenta. La condición es que sea leído por quien se lo adjudique y traspasado a algún conocido interesado en el mismo tema, para que no siga olvidado en otro oscuro e ineficiente librero.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Modalidad&lt;/em&gt;: Cada libro tiene una detallada descripción y al final hay un formulario donde pueden elegir el que más te interese. Inscríbete en el que te anime, y sortearé entre los inscritos en cada uno.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[PT]&lt;/strong&gt; Tenho uns livros que só acumulam pó y tenho certeza que terá mais utilizade a outras pessoas que à meu estante. Quero dar eles de presente, onde seja que morem no planeta, eu corro com os gastos. Minha condição é que seja lido e depois entregado a outra pessoa que esteja interessado no mesmo tema.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Modalidade&lt;/em&gt;: Cada livro tem uma descrição detalhada e no final um formulário onde preenchem os dados com o livro do seu interesse. Vou sortear e contactar entre os inscritos em cada livro.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/05/webpantone.jpg&#34; alt=&#34;Pantone Web Color: Resource Kit&#34; title=&#34;IMG_4119&#34; width=&#34;300&#34; height=&#34;300&#34; class=&#34;alignright size-medium wp-image-1607&#34; /&gt; 
&lt;h3 id=&#34;pantone-web-color-resource-kit&#34;&gt;Pantone Web Color: Resource Kit&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Idioma:&lt;/strong&gt; português&lt;br&gt;
&lt;strong&gt;Año:&lt;/strong&gt; 1997&lt;br&gt;
&lt;strong&gt;Estado:&lt;/strong&gt; usado, bueno.&lt;br&gt;
&lt;strong&gt;Alcance:&lt;/strong&gt; &lt;strong&gt;[ES]&lt;/strong&gt; estudiantes, personas que quieran aprender a combinar y generar gráficas con matices orientados a web. Muy didáctico.&lt;br&gt;
&lt;strong&gt;[PT]&lt;/strong&gt; estudantes, pessoas que queram aprender a combinar e gerar gráficas com matizes orientados à web. Muito didático.&lt;/p&gt;
&lt;hr style=&#34;clear:both;&#34; /&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/05/house.jpg&#34; alt=&#34;La Filosofía de House&#34; title=&#34;IMG_4108&#34; width=&#34;300&#34; height=&#34;300&#34; class=&#34;alignright size-medium wp-image-1612&#34; /&gt; 
&lt;h3 id=&#34;la-filosofía-de-house&#34;&gt;La Filosofía de House&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Idioma:&lt;/strong&gt; español&lt;br&gt;
&lt;strong&gt;Año:&lt;/strong&gt; 2010&lt;br&gt;
&lt;strong&gt;Estado:&lt;/strong&gt; usado.&lt;br&gt;
&lt;strong&gt;Alcance:&lt;/strong&gt; profesionales, personas con mentalidad orientada al pragmatismo filosófico, que se cuestionan desde el desayuno hasta sus propios sueños. Seguidores de la seria &lt;em&gt;House&lt;/em&gt;, pero más aún, seguidores de un estado mental de insatisfacción hacia el mundo material e inmaterial. Heidegger, Nietzsche, Spinoza y Nicholas Tesla son tus amigos.&lt;/p&gt;
&lt;hr style=&#34;clear:both;&#34; /&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/05/jobs.jpg&#34; alt=&#34;&#34; title=&#34;IMG_4105&#34; width=&#34;300&#34; height=&#34;300&#34; class=&#34;alignright size-medium wp-image-1615&#34; /&gt; 
&lt;h3 id=&#34;a-cabeça-de-steve-jobs&#34;&gt;A cabeça de Steve Jobs&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Idioma:&lt;/strong&gt; português&lt;br&gt;
&lt;strong&gt;Año:&lt;/strong&gt; 2008&lt;br&gt;
&lt;strong&gt;Estado:&lt;/strong&gt; excelente.&lt;br&gt;
&lt;strong&gt;Alcance:&lt;/strong&gt; &lt;strong&gt;[ES]&lt;/strong&gt; &lt;em&gt;Jobs&lt;/em&gt; generó cambios en muchos paradigmas, y en este libro se describe las razones de porqué él actuó como lo hizo. No justifica pero muestra todo lo necesario para entender la genial mentalidad de un emprendedor único en su especie.&lt;br&gt;
&lt;strong&gt;[PT]&lt;/strong&gt; &lt;em&gt;Jobs&lt;/em&gt; gerou mudanças em muitos paradigmas, e este livro descreve as razões de por quê ele atuou como ele fez. Não justifica mais mostra tudo o necessário para entender a genial mentalidade de um empreendedor únido em sua espécie.&lt;/p&gt;
&lt;hr style=&#34;clear:both;&#34; /&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/05/psycology.jpg&#34; alt=&#34;&#34; title=&#34;IMG_4118&#34; width=&#34;300&#34; height=&#34;300&#34; class=&#34;alignright size-medium wp-image-1616&#34; /&gt; 
&lt;h3 id=&#34;the-psychology-of-human-computer-interaction&#34;&gt;The Psychology of Human-Computer Interaction&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Idioma:&lt;/strong&gt; Inglés&lt;br&gt;
&lt;strong&gt;Año:&lt;/strong&gt; 1983&lt;br&gt;
&lt;strong&gt;Estado:&lt;/strong&gt; &lt;strong&gt;[ES]&lt;/strong&gt; Excelente, usado y rayado por mí mismo. &lt;strong&gt;[PT]&lt;/strong&gt; Excelente, usado e riscado por mim mesmo.&lt;br&gt;
&lt;strong&gt;Alcance:&lt;/strong&gt; &lt;strong&gt;[ES]&lt;/strong&gt; Compré este libro porque fue revisado por &lt;em&gt;Jeff Raskin&lt;/em&gt;, el ideador de la interfaz gráfica de Mac OS. ES INCREÍBLE, una joya donde muestran toda la experiencia del equipo XEROX PARK de 1981 por lograr la perfección en lo que creían serían las nuevas interfaces digitales: monitor-mouse-teclado. MUCHA TEORÍA.&lt;br&gt;
&lt;strong&gt;[PT]&lt;/strong&gt; Comprei este livro porque foi revisado por &lt;em&gt;Jeff Raskin&lt;/em&gt;, o idealista tras a interfaz de Mac OS. É INCRÍVEL, uma jóia onde mostram toda a experiência do time XEROX PARK de 1981 por obter a perfeição en o que pensavam sería as novas interfaces digitais: monitor-mouse-teclado. MUITA TEORÍA.&lt;/p&gt;
&lt;hr style=&#34;clear:both;&#34; /&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/05/pensar.jpg&#34; alt=&#34;&#34; title=&#34;IMG_4114&#34; width=&#34;300&#34; height=&#34;300&#34; class=&#34;alignright size-medium wp-image-1617&#34; /&gt; 
&lt;h3 id=&#34;não-me-faça-pensar&#34;&gt;Não me faça pensar&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Idioma:&lt;/strong&gt; Português&lt;br&gt;
&lt;strong&gt;Año:&lt;/strong&gt; 2006&lt;br&gt;
&lt;strong&gt;Estado:&lt;/strong&gt; Usado y prestado un par de veces.&lt;br&gt;
&lt;strong&gt;Alcance:&lt;/strong&gt; &lt;strong&gt;[ES]&lt;/strong&gt; Imperdible, si trabajas con web TIENES QUE LEERLO POR LO MENOS DOS VECES EN TU VIDA. Muy didáctico, muchas ilustraciones y ejemplos, perfecto para un viaje corto de unas 4 horas. Imprescindible.&lt;br&gt;
&lt;strong&gt;[PT]&lt;/strong&gt; Imperdível, se você trabalha com web TEM QUE TER E LER PELO MENOS DUAZ VEZES NA SUA VIDA. Muito didático, ilustrado e com exemplos, perfeito para uma viagem curta de umas 4 horas. Imprescindível.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>¿Qué no es HTML5?</title>
      <link>https://csslab.cl/2013/05/14/que-no-es-html5/</link>
      <pubDate>Wed, 15 May 2013 02:40:32 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/05/14/que-no-es-html5/</guid>
      <description>&lt;p&gt;Es un acrónimo ya muy utilizado y, la mayoría de las veces, mal denominado. Conocemos lo que es, trabajamos con él a diario, pero hay mucha gente que aún no conoce el real significado y por ende, sus limitaciones y alcances.&lt;/p&gt;</description>
      <content>&lt;p&gt;Es un acrónimo ya muy utilizado y, la mayoría de las veces, mal denominado. Conocemos lo que es, trabajamos con él a diario, pero hay mucha gente que aún no conoce el real significado y por ende, sus limitaciones y alcances.&lt;/p&gt;
&lt;p&gt;Esta presentación la trabajé hace un año, precisamente para mostrar a través de qué no es &lt;a href=&#34;https://csslab.cl/etiqueta/html5/&#34;&gt;HTML5&lt;/a&gt;, lo que realmente es. Lo hice al contrario para que al ser comprendido quede más profundo lo aprendido.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.andalaosa.cl/labs/que-no-es-html5/&#34; class=&#34;verejemplo&#34; title=&#34;Enlace externo a ¿Qué no es HTML5?&#34; target=&#34;_blank&#34;&gt;Ver Presentación&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Resumiendo, &lt;strong&gt;HTML5&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No es &lt;strong&gt;AJAX&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;No es &lt;strong&gt;Flash&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;No es &lt;strong&gt;CSS3&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;No son &lt;strong&gt;WebSockets&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;No es &lt;strong&gt;jQuery&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;No es todo &lt;strong&gt;Mobile&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;es más que sólo declarar un &lt;strong&gt;doctype&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;No es &lt;strong&gt;SVG&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;No es para &lt;strong&gt;IE&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por ende:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Es otra familia (más) de estándares para el desarrollo de aplicaciones y sitios web.&lt;/li&gt;
&lt;li&gt;Conformada por &lt;strong&gt;HTML&lt;/strong&gt;, &lt;strong&gt;JavaScript&lt;/strong&gt; y &lt;strong&gt;CSS3&lt;/strong&gt; que combinadas son soportadas de forma nativa por los dispositivos.&lt;/li&gt;
&lt;li&gt;Ya no necesitas indicar el tipo de &lt;strong&gt;doctype&lt;/strong&gt;, &lt;strong&gt;script&lt;/strong&gt; ó el &lt;strong&gt;link&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Contiene nuevas etiquetas de marcado semánticas y dedicadas a la indexación.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;audio&lt;/strong&gt; y &lt;strong&gt;video&lt;/strong&gt; finalmente son nativos.&lt;/li&gt;
&lt;li&gt;Llega &lt;strong&gt;canvas&lt;/strong&gt; para manejo gráfico avanzado.&lt;/li&gt;
&lt;li&gt;Permite animaciones aceleradas con uso de &lt;em&gt;GPU&lt;/em&gt; y almacenamiento de datos en el cliente mediante &lt;em&gt;LocalStorage&lt;/em&gt; y el uso nativo de hardware a través de &lt;em&gt;WebAPI’s&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Nuevos elementos e interacciones: &lt;em&gt;drag&amp;amp;drop&lt;/em&gt;, &lt;em&gt;browser history&lt;/em&gt;, &lt;em&gt;placeholder&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Review: CSS Hat</title>
      <link>https://csslab.cl/2013/05/06/review-css-hat/</link>
      <pubDate>Mon, 06 May 2013 19:23:09 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/05/06/review-css-hat/</guid>
      <description>&lt;p&gt;Codear &lt;strong&gt;HTML/CSS&lt;/strong&gt; es una tarea cada vez más requerida, y más exigente debido a lo rápido que avanza la tecnología web (gracias al aporte de muchos contribuidores anónimos, y al &lt;em&gt;silent upgrade&lt;/em&gt; de los &lt;em&gt;browsers&lt;/em&gt; entre otros factores). Por esto se agradece cuando llega una herramienta que nos facilite la vida y mantenga nuestro trabajo pulcro y por ende, valioso.&lt;/p&gt;</description>
      <content>&lt;p&gt;Codear &lt;strong&gt;HTML/CSS&lt;/strong&gt; es una tarea cada vez más requerida, y más exigente debido a lo rápido que avanza la tecnología web (gracias al aporte de muchos contribuidores anónimos, y al &lt;em&gt;silent upgrade&lt;/em&gt; de los &lt;em&gt;browsers&lt;/em&gt; entre otros factores). Por esto se agradece cuando llega una herramienta que nos facilite la vida y mantenga nuestro trabajo pulcro y por ende, valioso.&lt;/p&gt;
&lt;p&gt;Generadores de código fuente automáticos, pócimas mágicas que hacen el trabajo por nosotros existen por miles. Desde esas primeras versiones de &lt;strong&gt;Microsoft Frontpage&lt;/strong&gt; y &lt;strong&gt;Macromedia Dreamweaver&lt;/strong&gt;, nos han inundado de basura y han ayudado a destruir un oficio que, actualmente, ha sido reconocido como esencial y hay cada vez más personas y empresas que valoran el &lt;em&gt;clean &amp;amp; lightweight hand code&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;En esta ocasión mostraré mis impresiones sobre un &lt;em&gt;plugin&lt;/em&gt; de &lt;strong&gt;Photoshop&lt;/strong&gt; que realmente me impresionó tanto por su facilidad de uso como por el preciso código que genera. Llegué a &lt;a href=&#34;https://csshat.com/?ref=e54qts2y17&#34; title=&#34;Enlace externo a &amp;quot;CSS Hat&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSS Hat&lt;/a&gt; por una promoción de &lt;em&gt;Cyber Monday&lt;/em&gt; a fines del 2012. Estaba tan barato que lo compré para probarlo, y afortunadamente obtuvo la mejor de mis impresiones. Desde su facilidad de instalación (como cualquier &lt;em&gt;plugin&lt;/em&gt; de &lt;strong&gt;Photoshop&lt;/strong&gt;: ó le haces &lt;em&gt;doble click&lt;/em&gt; ó lo abres con tu &lt;strong&gt;Extensions Manager&lt;/strong&gt;) hasta su modo de uso.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csshat.com/?ref=e54qts2y17&#34; title=&#34;Enlace externo a &amp;quot;CSS Hat&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSS Hat&lt;/a&gt; te entrega, en su panel dentro de &lt;strong&gt;Photoshop&lt;/strong&gt;, el código &lt;strong&gt;CSS&lt;/strong&gt; generado a partir de una capa con estilos definidos en ella.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/05/csshat1.png&#34; width=&#34;570&#34; height=&#34;356&#34; alt=&#34;Review: CSS Hat - Imagen 1&#34; /&gt; 
&lt;p&gt;Veamos el siguiente ejemplo: tenemos un bello y estiloso botón diseñado en &lt;strong&gt;Photoshop&lt;/strong&gt;. Es importante que este botón tenga todos los estilos y efectos definidos como estilo de capa, por lo que el diseñador debe tener este tipo de consideración al definir su diseño. Con &lt;a href=&#34;https://csshat.com/?ref=e54qts2y17&#34; title=&#34;Enlace externo a &amp;quot;CSS Hat&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSS Hat&lt;/a&gt;, al ir seleccionado cada capa mostrará el código &lt;strong&gt;CSS&lt;/strong&gt; para ese estilo, instantáneamente.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/05/csshat2.png&#34; width=&#34;650&#34; height=&#34;276&#34; alt=&#34;Review: CSS Hat - Imagen 2&#34; /&gt; 
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/05/csshat3.png&#34; width=&#34;650&#34; height=&#34;276&#34; alt=&#34;Review: CSS Hat - Imagen 3&#34; /&gt; 
&lt;p&gt;Como notarás, tiene soporte para los pre-procesadores &lt;strong&gt;CSS&lt;/strong&gt; más utilizados, y tiene soporte para sus propias librerías de &lt;em&gt;mixins&lt;/em&gt; para hacerte el trabajo más fácil (los invito a mirar el de &lt;strong&gt;LESS&lt;/strong&gt;, tiene unos de los &lt;a href=&#34;http://lesshat.com/&#34; title=&#34;Enlace externo a &amp;quot;LESS Hat&amp;quot;&#34; target=&#34;_blank&#34;&gt;mixins más enfermos que he visto en mi vida&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Creo que con eso he dicho suficiente, &lt;a href=&#34;https://csshat.com/?ref=e54qts2y17&#34; title=&#34;Enlace externo a &amp;quot;CSS Hat&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSS Hat&lt;/a&gt; es una herramienta tan pequeña y útil que el precio es más que justo. Puede acelerar tu productividad considerablemente, y con el soporte para &lt;strong&gt;LESS&lt;/strong&gt;, &lt;strong&gt;SCSS&lt;/strong&gt;, &lt;strong&gt;SASS&lt;/strong&gt; y &lt;strong&gt;Stylus&lt;/strong&gt; lo hace increíble.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csshat.com/?ref=e54qts2y17&#34; title=&#34;Enlace externo a &amp;quot;CSS Hat&amp;quot;&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;CSS Hat&lt;/a&gt;[][1]&lt;/p&gt;
&lt;p&gt;[1]: CSS Hat&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Reemplazar el texto pero mantener el elemento hermano con jQuery</title>
      <link>https://csslab.cl/2013/04/17/reemplazar-texto-pero-mantener-elemento-hermano-jquery/</link>
      <pubDate>Wed, 17 Apr 2013 15:03:30 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/04/17/reemplazar-texto-pero-mantener-elemento-hermano-jquery/</guid>
      <description>&lt;p&gt;Problema: &lt;em&gt;WordPress&lt;/em&gt; imprime un código &lt;strong&gt;HTML&lt;/strong&gt; con el siguiente formato y necesito modificar sólo el texto, manteniendo el &lt;strong&gt;checkbox&lt;/strong&gt;:&lt;/p&gt;</description>
      <content>&lt;p&gt;Problema: &lt;em&gt;WordPress&lt;/em&gt; imprime un código &lt;strong&gt;HTML&lt;/strong&gt; con el siguiente formato y necesito modificar sólo el texto, manteniendo el &lt;strong&gt;checkbox&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;p class=&#34;login-remember&#34;&amp;gt;&amp;lt;br /&gt;
   &amp;lt;label&amp;gt;&amp;lt;br /&gt;
      &amp;lt;input name=&#34;rememberme&#34; type=&#34;checkbox&#34; id=&#34;rememberme&#34;&amp;gt; &amp;lt;!-- mantener --&amp;gt;&amp;lt;br /&gt;
      Recu&amp;eacute;rdame &amp;lt;!-- este texto debe ser otro --&amp;gt;&amp;lt;br /&gt;
   &amp;lt;/label&amp;gt;&amp;lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Primera solución:&lt;/strong&gt; modificar el &lt;em&gt;core&lt;/em&gt; del &lt;em&gt;CMS&lt;/em&gt;, lo que no me interesa. &lt;strong style=&#34;color:red;&#34;&gt;✖&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Segunda solución:&lt;/strong&gt; modificar el texto con jQuery, manteniendo el checkbox. &lt;strong style=&#34;color:green;&#34;&gt;✔&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;test-1-lo-obvio-reemplazar-el-texto-con-text-strong-stylecolorred10006strong&#34;&gt;Test 1: lo obvio, reemplazar el texto con text() &lt;strong style=&#34;color:red;&#34;&gt;✖&lt;/strong&gt;&lt;/h4&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;$(&#39;.login-remember label&#39;).text(&#39;Recordámelo&#39;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;http://jsfiddle.net/da6Lh/7/&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo 1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En este caso, apesar de sólo querer reemplazar el texto también reemplaza el &lt;strong&gt;checkbox&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&#34;test-2-clonar-el-checkbox-reemplazar-el-texto-con-html-y-volver-a-agregar-el-checkbox-clonado-strong-stylecolorgreen10004strong&#34;&gt;Test 2: clonar el checkbox, reemplazar el texto con html() y volver a agregar el checkbox clonado &lt;strong style=&#34;color:green;&#34;&gt;✔&lt;/strong&gt;&lt;/h4&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;var elemento = $(&#39;.login-remember label&#39;)
var checkbox = elemento.find(&#39;input&#39;).clone();
elemento.html(&#39; Recordámelo&#39;).prepend(checkbox);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;http://jsfiddle.net/da6Lh/8/&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo 2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Efectivo, no importa dónde o cómo está el texto. Limpiamos todo y volvemos a construir lo que está dentro del &lt;strong&gt;label&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&#34;test-3-buscar-dentro-del-contenido-del-label-donde-está-el-texto-y-reemplazarlo-strong-stylecolorgreen10004strong&#34;&gt;Test 3: buscar dentro del contenido del label donde está el texto y reemplazarlo &lt;strong style=&#34;color:green;&#34;&gt;✔&lt;/strong&gt;&lt;/h4&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;$(&#39;label&#39;).contents().last()[0].textContent=&#39; Recordámelo&#39;;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;http://jsfiddle.net/da6Lh/9/&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo 3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dependemos un poco del orden de los elementos dentro del &lt;strong&gt;label&lt;/strong&gt;, pero es una sencilla solución.&lt;/p&gt;
&lt;h3 id=&#34;cuál-es-la-mejor&#34;&gt;¿Cuál es la mejor?&lt;/h3&gt;
&lt;p&gt;Lo dejo a criterio de cada uno, seguro hay una más rápida que otra. Finalmente no utilicé ninguna de las soluciones anteriores; edité el &lt;em&gt;languages.po&lt;/em&gt; y volví a traducir el texto por el que quería. Pero el desafío fue interesante, y el aprendizaje quedó.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Movimiento del browser al arrastrar en móviles</title>
      <link>https://csslab.cl/2013/03/11/movimiento-del-browser-al-arrastrar-en-moviles/</link>
      <pubDate>Mon, 11 Mar 2013 17:00:23 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/03/11/movimiento-del-browser-al-arrastrar-en-moviles/</guid>
      <description>Este es un comportamiento por defecto de los browsers para [móviles][1], el cual al hacer algún tipo de arrastre extremo dentro del  (me refiero del extremo superior al inferior principalmente, ó si está en landscape de derecha a izquierda y viceversa) éste se mueve levemente con un efecto resorte, lo que eventualmente puede llegar a ser molesto si queremos concentrar nuestras interacciones en [eventos gestuales][2].
Para mejor entendimiento, play al siguiente video:</description>
      <content>&lt;p&gt;Este es un comportamiento por defecto de los &lt;em&gt;browsers&lt;/em&gt; para [móviles][1], el cual al hacer algún tipo de arrastre extremo dentro del &lt;strong&gt;&lt;body&gt;&lt;/strong&gt; (me refiero del extremo superior al inferior principalmente, ó si está en &lt;em&gt;landscape&lt;/em&gt; de derecha a izquierda y viceversa) éste se mueve levemente con un efecto resorte, lo que eventualmente puede llegar a ser molesto si queremos concentrar nuestras interacciones en [eventos gestuales][2].&lt;/p&gt;
&lt;p&gt;Para mejor entendimiento, &lt;em&gt;play&lt;/em&gt; al siguiente video:&lt;/p&gt;
&lt;p&gt;&lt;video width=&#34;640&#34; height=&#34;480&#34; controls&gt;&lt;source src=&#34;http://www.csslab.cl/ejemplos/touchmove/touchmove-ejemplo1.mp4&#34; type=&#34;video/mp4&#34;&gt;&lt;/source&gt;&lt;source src=&#34;http://www.csslab.cl/ejemplos/touchmove/touchmove-ejemplo1.ogv&#34; type=&#34;video/ogg&#34;&gt;&lt;/source&gt;&lt;source src=&#34;http://www.csslab.cl/ejemplos/touchmove/touchmove-ejemplo1.webm&#34; type=&#34;video/webm&#34;&gt;Tu browser es viejo, no soporta &lt;video&gt;.&lt;/p&gt;
&lt;/source&gt;&lt;/video&gt;
&lt;p&gt;&lt;em&gt;Abre ejemplo1.html en tu móvil, te sugiero usar el browser y no el lector de QR&lt;/em&gt;: &lt;a href=&#34;http://www.csslab.cl/ejemplos/touchmove/ejemplo1.html&#34;&gt;http://www.csslab.cl/ejemplos/touchmove/ejemplo1.html&lt;/a&gt;&lt;/p&gt;
&lt;img src=&#34;http://qrfree.kaywa.com/?l=1&amp;#038;s=8&amp;#038;d=http%3A%2F%2Fwww.csslab.cl%2Fejemplos%2Ftouchmove%2Fejemplo1.html&#34; alt=&#34;Ejemplo1&#34; width=&#34;150&#34; style=&#34;margin: 0 auto; display: block;&#34; /&gt; 
&lt;p&gt;Para deshabilitar este comportamiento se necesita de una pizca de &lt;strong&gt;CSS&lt;/strong&gt; y algo de &lt;strong&gt;JS&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;html, body {
   height: 100%;
   overflow: hidden;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;document.body.addEventListener(&#39;touchmove&#39;, function (event) {
   event.preventDefault();
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con esto bloqueamos por completo el evento &lt;em&gt;touch move&lt;/em&gt; a todo el &lt;strong&gt;body&lt;/strong&gt;, permitiendo todo lo que sea &lt;em&gt;tap&lt;/em&gt; (click en &lt;em&gt;desktop&lt;/em&gt;). Queda en tí si quieres volver a habilitarlo en algún sector para, por ejemplo, hacer funcionar un carrusel de imágenes através de un &lt;em&gt;swipe&lt;/em&gt; (deslizar de un lado al otro).&lt;/p&gt;
&lt;p&gt;&lt;video width=&#34;640&#34; height=&#34;480&#34; controls&gt;&lt;source src=&#34;http://www.csslab.cl/ejemplos/touchmove/touchmove-ejemplo2.mp4&#34; type=&#34;video/mp4&#34;&gt;&lt;/source&gt;&lt;source src=&#34;http://www.csslab.cl/ejemplos/touchmove/touchmove-ejemplo2.ogv&#34; type=&#34;video/ogg&#34;&gt;&lt;/source&gt;&lt;source src=&#34;http://www.csslab.cl/ejemplos/touchmove/touchmove-ejemplo2.webm&#34; type=&#34;video/webm&#34;&gt;Tu browser es viejo, no soporta &lt;video&gt;.&lt;/p&gt;
&lt;/source&gt;&lt;/video&gt;
&lt;p&gt;&lt;em&gt;Abre ejemplo2.html en tu móvil, te sugiero usar el browser y no el lector de QR&lt;/em&gt;: &lt;a href=&#34;http://www.csslab.cl/ejemplos/touchmove/ejemplo2.html&#34;&gt;http://www.csslab.cl/ejemplos/touchmove/ejemplo2.html&lt;/a&gt;&lt;/p&gt;
&lt;img src=&#34;http://qrfree.kaywa.com/?l=1&amp;#038;s=8&amp;#038;d=http%3A%2F%2Fwww.csslab.cl%2Fejemplos%2Ftouchmove%2Fejemplo2.html&#34; alt=&#34;Ejemplo2&#34; width=&#34;150&#34; style=&#34;margin: 0 auto; display: block;&#34; /&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/categoria/mobile/&#34;&gt;http://www.csslab.cl/categoria/mobile/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Categoría : Mobile&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2010/07/28/haptica-en-ios/&#34;&gt;http://www.csslab.cl/2010/07/28/haptica-en-ios/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Háptica en iOS&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Review: REWORK</title>
      <link>https://csslab.cl/2013/02/07/review-rework/</link>
      <pubDate>Thu, 07 Feb 2013 15:07:01 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/02/07/review-rework/</guid>
      <description>&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/02/IMG_0108-221x300.jpg&#34; alt=&#34;&#34; title=&#34;IMG_0108&#34; width=&#34;221&#34; height=&#34;300&#34; class=&#34;alignright size-medium wp-image-1512&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2013/02/IMG_0108-221x300.jpg 221w, http://www.csslab.cl/wp-content/uploads/2013/02/IMG_0108.jpg 591w&#34; sizes=&#34;(max-width: 221px) 100vw, 221px&#34; /&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;http://www.amazon.com/Rework-Jason-Fried/dp/0307463745/&#34; target=&#34;_blank&#34;&gt;REWORK&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Jason Fried &amp;amp; David Henemeier Hansson (fundadores de 37Signals)&lt;/em&gt;&lt;/p&gt;</description>
      <content>&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/02/IMG_0108-221x300.jpg&#34; alt=&#34;&#34; title=&#34;IMG_0108&#34; width=&#34;221&#34; height=&#34;300&#34; class=&#34;alignright size-medium wp-image-1512&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2013/02/IMG_0108-221x300.jpg 221w, http://www.csslab.cl/wp-content/uploads/2013/02/IMG_0108.jpg 591w&#34; sizes=&#34;(max-width: 221px) 100vw, 221px&#34; /&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;http://www.amazon.com/Rework-Jason-Fried/dp/0307463745/&#34; target=&#34;_blank&#34;&gt;REWORK&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Jason Fried &amp;amp; David Henemeier Hansson (fundadores de 37Signals)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;(No recuerdo cómo me decidí a encargar este libro, pero me impresionó que me llegara a mis manos dentro de 5 días, en plena época pre-navideña, punto para &lt;strong&gt;Amazon&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;REWORK&lt;/strong&gt; muestra de los orígenes de &lt;a href=&#34;http://www.37signals.com/&#34; target=&#34;_blank&#34;&gt;37Signals&lt;/a&gt; de palabras de sus mismos fundadores. Esta &lt;em&gt;empresa-notstartup&lt;/em&gt; estadounidense se hizo famosa mundialmente por su producto &lt;a href=&#34;http://basecamp.com/&#34; target=&#34;_blank&#34;&gt;Basecamp&lt;/a&gt; utilizada por el 90% de las agencias y empresas orientadas a la web alrededor del mundo y por &lt;a href=&#34;http://rubyonrails.org/&#34; target=&#34;_blank&#34;&gt;Rails&lt;/a&gt;, el framework favorito de quienes adoran &lt;strong&gt;Ruby&lt;/strong&gt;. Pero no esperen que expliquen su modelo de negocios o cómo nació la idea; lo que entregan es mucho mejor: &lt;strong&gt;cómo hacer bien las cosas en una empresa web y minimizar los riesgos y las decisiones estúpidas&lt;/strong&gt;. Tratan cómo han tomado buenos caminos, cómo han ido por malos y cómo dieron vuelta estas situaciones. Lecciones como en qué fijarse, qué ignorar, cómo no quedarse y cómo avanzar, filtrando tales o cuáles elementos y circunstancias… enseñanzas valiosas que se obtienen después de mucho prueba-error.&lt;/p&gt;
&lt;p&gt;Con un lenguaje fácil de llevar y muy informal, se hace muy rápida la lectura de este libro de más de 260 páginas. Parece mucho pero no me tomó más de 3 horas terminarlo, es ideal para un viaje corto en bus/avión ó una tarde en la playa.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/02/IMG_0109-300x225.jpg&#34; alt=&#34;&#34; title=&#34;IMG_0109&#34; width=&#34;300&#34; height=&#34;225&#34; class=&#34;alignleft size-medium wp-image-1515&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2013/02/IMG_0109-300x225.jpg 300w, http://www.csslab.cl/wp-content/uploads/2013/02/IMG_0109-220x165.jpg 220w, http://www.csslab.cl/wp-content/uploads/2013/02/IMG_0109-700x525.jpg 700w, http://www.csslab.cl/wp-content/uploads/2013/02/IMG_0109.jpg 800w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/02/IMG_0110-300x225.jpg&#34; alt=&#34;&#34; title=&#34;IMG_0110&#34; width=&#34;300&#34; height=&#34;225&#34; class=&#34;alignleft size-medium wp-image-1515&#34; /&gt;&lt;/p&gt;
&lt;p style=&#34;clear:both;&#34;&gt;
  Si tienes ideas de algún producto ó servicio orientado a la web y nunca te has atrevido a ponerlas en práctica, este es tu libro. Si estás decidido a aventurarte con tu propio emprendimiento, este libro es para tí. Si ya estás en rueda de financiamiento con tu startup, no perderás nada en leerlo. Si llevas años emprendiendo, no leerás nada que ya no sepas.
&lt;/p&gt;
&lt;blockquote&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_abre.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;  
Si a alguien aún le gusta los libros de papel, &lt;strike&gt;cambio&lt;/strike&gt; regalo este libro a quien me invite una cerveza y aprovechamos de conversar sobre web un rato en algún bar en Santiago. Si hay interés lo coordinamos en por los comentarios de este _post_.  
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_cierra.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;&lt;/blockquote&gt;</content>
    </item>
    
    <item>
      <title>Layout Responsive / Adaptativo / Flexible</title>
      <link>https://csslab.cl/2013/02/04/layout-responsive-adaptativo-flexible/</link>
      <pubDate>Mon, 04 Feb 2013 14:28:01 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/02/04/layout-responsive-adaptativo-flexible/</guid>
      <description>&lt;p&gt;Nuevos conceptos pero no tan nuevas técnicas. La moda del diseño/desarrollo &lt;em&gt;responsive&lt;/em&gt; hace necesaria una aclaración de algunas definiciones. Y qué mejor que hacerlo con un ejemplo utilizando las mismas técnicas descritas, para que puedan bucear por el código fuente.&lt;/p&gt;</description>
      <content>&lt;p&gt;Nuevos conceptos pero no tan nuevas técnicas. La moda del diseño/desarrollo &lt;em&gt;responsive&lt;/em&gt; hace necesaria una aclaración de algunas definiciones. Y qué mejor que hacerlo con un ejemplo utilizando las mismas técnicas descritas, para que puedan bucear por el código fuente.&lt;/p&gt;
&lt;h4 id=&#34;responsive&#34;&gt;Responsive&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Acuñado en 2010 por &lt;a href=&#34;http://www.twitter.com/beep&#34; target=&#34;_blank&#34;&gt;Ethan Marcotte&lt;/a&gt;, corresponde a una &lt;em&gt;grilla fluida que responde al cambio del ancho de un browser mediante mediaqueries&lt;/em&gt;, el cual incluye imágenes y videos.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;adaptativo&#34;&gt;Adaptativo&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Rama del responsiveness, &lt;em&gt;responde a múltiples versiones del mismo diseño que se adapta según el tamaño de la pantalla bajo diferentes anchos ya definidos&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;flexible&#34;&gt;Flexible&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;El más antiguo y soportado por todos los browsers, también denominado líquido. &lt;em&gt;Usa unidades de medidas como porcentajes y no requiere mediaqueries&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;[Ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/responsive-adaptativo-flexible/&#34;&gt;http://www.csslab.cl/ejemplos/responsive-adaptativo-flexible/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo Layout Responsive / Adaptativo / Flexible&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>El evento onPaste</title>
      <link>https://csslab.cl/2013/01/30/el-evento-onpaste/</link>
      <pubDate>Wed, 30 Jan 2013 15:49:35 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/01/30/el-evento-onpaste/</guid>
      <description>&lt;p&gt;Eventualmente podrías tener un &lt;strong&gt;&lt;textarea&gt;&lt;/strong&gt; donde permitas al usuario pegar lo que tiene guardado en su &lt;em&gt;clipboard&lt;/em&gt;. Quizás deseas impedir al usuario pegar contenido en un campo de formulario, por ejemplo, en uno de &lt;em&gt;password&lt;/em&gt;. Para ambos casos existe un evento denominado &lt;strong&gt;onPaste&lt;/strong&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;Eventualmente podrías tener un &lt;strong&gt;&lt;textarea&gt;&lt;/strong&gt; donde permitas al usuario pegar lo que tiene guardado en su &lt;em&gt;clipboard&lt;/em&gt;. Quizás deseas impedir al usuario pegar contenido en un campo de formulario, por ejemplo, en uno de &lt;em&gt;password&lt;/em&gt;. Para ambos casos existe un evento denominado &lt;strong&gt;onPaste&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&#34;impedir-pegar&#34;&gt;Impedir pegar:&lt;/h4&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;onPaste=&#34;return false;&#34;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;manipular-el-valor-de-lo-pegado&#34;&gt;Manipular el valor de lo pegado:&lt;/h4&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;onPaste=&#34;var e=this; setTimeout(function(){alert(e.value);}, 0);&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Debes usar un &lt;strong&gt;setTimeout&lt;/strong&gt; debido a que el evento &lt;strong&gt;onPaste&lt;/strong&gt; responde antes de que el contenido es pegado en el elemento, por lo que no tiene tiempo suficiente para manejarlo. &lt;strong&gt;setTimeout 0&lt;/strong&gt; es automáticamente recalculado a &lt;strong&gt;4ms&lt;/strong&gt; ya que es el valor mínimo en &lt;strong&gt;HTML5&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;[Ver ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/onpaste.html&#34;&gt;http://www.csslab.cl/ejemplos/onpaste.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo El evento onPaste&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Deshabilitar el autocomplete</title>
      <link>https://csslab.cl/2013/01/14/deshabilitar-el-autocomplete/</link>
      <pubDate>Mon, 14 Jan 2013 19:32:44 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/01/14/deshabilitar-el-autocomplete/</guid>
      <description>Los browsers crearon mejoras para que nosotros mortales podamos hacer tareas comunes de manera más fácil y fluída; es así como se creó el autocomplete de los campos de formularios, donde si ya has ingresado cierto dato en un  con un name respectivo y después en otro formulario con el mismo name el browser recordará lo que ingresaste y te lo sugerirá a medida que hagas focus o comiences a escribir en el campo (la única excepción es cuando el  es de tipo password).</description>
      <content>&lt;p&gt;Los &lt;em&gt;browsers&lt;/em&gt; crearon mejoras para que nosotros mortales podamos hacer tareas comunes de manera más fácil y fluída; es así como se creó el &lt;em&gt;autocomplete&lt;/em&gt; de los campos de formularios, donde si ya has ingresado cierto dato en un &lt;strong&gt;&lt;input&gt;&lt;/strong&gt; con un &lt;strong&gt;name&lt;/strong&gt; respectivo y después en otro formulario con el mismo &lt;strong&gt;name&lt;/strong&gt; el &lt;em&gt;browser&lt;/em&gt; recordará lo que ingresaste y te lo sugerirá a medida que hagas &lt;strong&gt;focus&lt;/strong&gt; o comiences a escribir en el campo (la única excepción es cuando el &lt;strong&gt;&lt;input&gt;&lt;/strong&gt; es de tipo &lt;strong&gt;password&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;Bueno, supongamos que por seguridad no quiero que el &lt;em&gt;browser&lt;/em&gt; recuerde esa información. Quizás estemos creando nuestro propio &lt;em&gt;suggest&lt;/em&gt; ó &lt;em&gt;autocomplete&lt;/em&gt; y no queremos que el del &lt;em&gt;browser&lt;/em&gt; nos estorbe. Bueno, para eso de inventó el atributo &lt;strong&gt;autocomplete=&amp;quot;&amp;quot;&lt;/strong&gt; el que se declara de la siguiente manera:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;form name=&#34;formejemplo&#34; id=&#34;formejemplo&#34; method=&#34;post&#34; autocomplete=&#34;off&#34; action=&#34;#&#34;&amp;gt;&amp;lt;/form&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Además, puedes utilizar el atributo sólo en el &lt;input&gt; que prefieras no tenga autocomplete:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;input name=&#34;username&#34; autocomplete=&#34;off&#34;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Su soporte es amplio, utilícenlo tranquilamente.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://msdn.microsoft.com/en-us/library/ms533486(VS.85).aspx&#34; title=&#34;Enlace externo a &amp;quot;MSDN: autocomplete attri&amp;quot;&#34; target=&#34;_blank&#34;&gt;MSDN: autocomplete attribute&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Mozilla/How_to_Turn_Off_Form_Autocompletion&#34; title=&#34;Enlace externo a &amp;quot;How to Turn Off Form Autocompletion&amp;quot;&#34; target=&#34;_blank&#34;&gt;How to Turn Off Form Autocompletion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/autocomplete.html&#34;&gt;http://www.csslab.cl/ejemplos/autocomplete.html&lt;/a&gt; &amp;ldquo;Enlace interno a &amp;ldquo;Ejemplo Autocomplete&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>jQuery dayTimr</title>
      <link>https://csslab.cl/2013/01/09/jquery-daytimr/</link>
      <pubDate>Wed, 09 Jan 2013 17:53:06 +0000</pubDate>
      
      <guid>https://csslab.cl/2013/01/09/jquery-daytimr/</guid>
      <description>&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/01/daytimr.png&#34; alt=&#34;jQuery dayTimr&#34; title=&#34;daytimr&#34; width=&#34;445&#34; height=&#34;147&#34; class=&#34;aligncenter size-full wp-image-1470&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2013/01/daytimr.png 445w, http://www.csslab.cl/wp-content/uploads/2013/01/daytimr-300x99.png 300w, http://www.csslab.cl/wp-content/uploads/2013/01/daytimr-220x72.png 220w&#34; sizes=&#34;(max-width: 445px) 100vw, 445px&#34; /&gt;
&lt;p&gt;Toma y utiliza la hora del día actual del usuario para hacer cualquier cosa a la página actual usando un simple callback. Sólo eso. ¡Funciona hasta en IE!&lt;/p&gt;
&lt;p&gt;Get and uses the user’s current time of the day to do anything to the current page using a simple callback. Just that. Even works in IE!&lt;/p&gt;</description>
      <content>&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2013/01/daytimr.png&#34; alt=&#34;jQuery dayTimr&#34; title=&#34;daytimr&#34; width=&#34;445&#34; height=&#34;147&#34; class=&#34;aligncenter size-full wp-image-1470&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2013/01/daytimr.png 445w, http://www.csslab.cl/wp-content/uploads/2013/01/daytimr-300x99.png 300w, http://www.csslab.cl/wp-content/uploads/2013/01/daytimr-220x72.png 220w&#34; sizes=&#34;(max-width: 445px) 100vw, 445px&#34; /&gt;
&lt;p&gt;Toma y utiliza la hora del día actual del usuario para hacer cualquier cosa a la página actual usando un simple callback. Sólo eso. ¡Funciona hasta en IE!&lt;/p&gt;
&lt;p&gt;Get and uses the user’s current time of the day to do anything to the current page using a simple callback. Just that. Even works in IE!&lt;/p&gt;
&lt;h5 id=&#34;selecciona-tu-idioma--select-your-language&#34;&gt;Selecciona tu idioma / Select your language:&lt;/h5&gt;
&lt;ul id=&#34;horizons_tab&#34; class=&#34;idTabs&#34;&gt;
  &lt;li&gt;
    &lt;a href=&#34;#english&#34; title=&#34;Read in English&#34;&gt;English&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&#34;#espanol&#34; title=&#34;Leer en Español&#34;&gt;Español&lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&#34;english&#34;&gt;
  &lt;h3&gt;
    EN
  &lt;/h3&gt;
  &lt;h4&gt;
    Use:
  &lt;/h4&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(function(){
   $(&#39;body&#39;).dayTimr();  &amp;lt;span class=&#34;comment&#34;&gt;// use any HTML element&amp;lt;/span&gt;
});&lt;/code&gt;&lt;/pre&gt;
  &lt;h4&gt;
    Settings:
  &lt;/h4&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(&#39;body&#39;).dayTimr({
	&#39;nightClass&#39; : &#39;night&#39;,         &amp;lt;span class=&#34;comment&#34;&gt;// name of the class used if it is night time&amp;lt;/span&gt;
	&#39;nightStart&#39; : &#39;21:00&#39;,         &amp;lt;span class=&#34;comment&#34;&gt;// time when night starts, must be HH:MM (if it is &gt;= 9 don&#39;t use the 0)&amp;lt;/span&gt;
	&#39;dawnClass&#39; : &#39;dawn&#39;,           &amp;lt;span class=&#34;comment&#34;&gt;// name of the class used if it is dawn time&amp;lt;/span&gt;
	&#39;dawnStart&#39; : &#39;0:00&#39;,           &amp;lt;span class=&#34;comment&#34;&gt;// time when dawn starts, must be HH:MM (if it is &gt;= 9 don&#39;t use the 0)&amp;lt;/span&gt;
	&#39;morningClass&#39; : &#39;morning&#39;,     &amp;lt;span class=&#34;comment&#34;&gt;// name of the class used if it is morning time&amp;lt;/span&gt;
	&#39;morningStart&#39; : &#39;7:00&#39;,        &amp;lt;span class=&#34;comment&#34;&gt;// time when morning starts, must be HH:MM (if it is &gt;= 9 don&#39;t use the 0)&amp;lt;/span&gt;
	&#39;afternoonClass&#39;: &#39;afternoon&#39;,  &amp;lt;span class=&#34;comment&#34;&gt;// name of the class used if it is afternoon time&amp;lt;/span&gt;
	&#39;afternoonStart&#39;: &#39;12:00&#39;,      &amp;lt;span class=&#34;comment&#34;&gt;// time when afternoon starts, must be HH:MM (if it is &gt;= 9 don&#39;t use the 0)&amp;lt;/span&gt;
	&#39;debug&#39; : false,                &amp;lt;span class=&#34;comment&#34;&gt;// if true show what&#39;s going on in the browser&#39;s console&amp;lt;/span&gt;
	onNight : function(){},         &amp;lt;span class=&#34;comment&#34;&gt;// callback if it is night; default it adds the nightClass to the body&amp;lt;/span&gt;
	onDawn : function(){},          &amp;lt;span class=&#34;comment&#34;&gt;// callback if it is dawn; default it adds the dawnClass to the body&amp;lt;/span&gt;
	onMorning : function(){},       &amp;lt;span class=&#34;comment&#34;&gt;// callback if it is morning; default it adds the morningClass to the body&amp;lt;/span&gt;
	onAfternoon : function(){}      &amp;lt;span class=&#34;comment&#34;&gt;// callback if it is afternoon; default it adds the afternoonClass to the body&amp;lt;/span&gt;
});&lt;/code&gt;&lt;/pre&gt;
  &lt;h5&gt;
    Changelog:
  &lt;/h5&gt;
  &lt;ul&gt;
    &lt;li&gt;
      1.0: now you can choose your behavior through the callback.
    &lt;/li&gt;
    &lt;li&gt;
      0.4.1: BUG: onMorning.call fixed.
    &lt;/li&gt;
    &lt;li&gt;
      0.4: First public release.
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;espanol&#34;&gt;
  &lt;h3&gt;
    ES
  &lt;/h3&gt;
  &lt;p&gt;
    Toma y utiliza la hora del día actual del usuario para hacer cualquier cosa a la página actual a través de un callaback. Sólo eso.
  &lt;/p&gt;
  &lt;h4&gt;
    Uso:
  &lt;/h4&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(function(){
   $(&#39;body&#39;).dayTimr();  &amp;lt;span class=&#34;comment&#34;&gt;// puedes utilizar cualquier elemento HTML&amp;lt;/span&gt;
});&lt;/code&gt;&lt;/pre&gt;
  &lt;h4&gt;
    Configuración:
  &lt;/h4&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(&#39;body&#39;).dayTimr({
	&#39;nightClass&#39; : &#39;night&#39;,         &amp;lt;span class=&#34;comment&#34;&gt;// nombre de la clase si es de noche&amp;lt;/span&gt;
	&#39;nightStart&#39; : &#39;21:00&#39;,         &amp;lt;span class=&#34;comment&#34;&gt;// hora cuando comienza la noche, debe ser en el formato HH:MM (si es &gt;= 9 no antepongas el 0)&amp;lt;/span&gt;
	&#39;dawnClass&#39; : &#39;dawn&#39;,           &amp;lt;span class=&#34;comment&#34;&gt;// nombre de la clase si es de madrugada&amp;lt;/span&gt;
	&#39;dawnStart&#39; : &#39;0:00&#39;,           &amp;lt;span class=&#34;comment&#34;&gt;// hora cuando comienza la madrugada, debe ser en el formato HH:MM (si es &gt;= 9 no antepongas el 0)&amp;lt;/span&gt;
	&#39;morningClass&#39; : &#39;morning&#39;,     &amp;lt;span class=&#34;comment&#34;&gt;// nombre de la clase si es de mañana&amp;lt;/span&gt;
	&#39;morningStart&#39; : &#39;7:00&#39;,        &amp;lt;span class=&#34;comment&#34;&gt;// hora cuando comienza la mañana, debe ser en el formato HH:MM (si es &gt;= 9 no antepongas el 0)&amp;lt;/span&gt;
	&#39;afternoonClass&#39;: &#39;afternoon&#39;,  &amp;lt;span class=&#34;comment&#34;&gt;// nombre de la clase si es de tarde&amp;lt;/span&gt;
	&#39;afternoonStart&#39;: &#39;12:00&#39;,      &amp;lt;span class=&#34;comment&#34;&gt;// hora cuando comienza la tarde, debe ser en el formato HH:MM (si es &gt;= 9 no antepongas el 0)&amp;lt;/span&gt;
	&#39;debug&#39; : false,                &amp;lt;span class=&#34;comment&#34;&gt;// si es true muestra lo que hace el plugin por la consola&amp;lt;/span&gt;
	onNight : function(){},         &amp;lt;span class=&#34;comment&#34;&gt;// callback si es de noche; por defecto inyecta al body la clase definida en nightClass&amp;lt;/span&gt;
	onDawn : function(){},          &amp;lt;span class=&#34;comment&#34;&gt;// callback si es de madrugada; por defecto inyecta al body la clase definida en dawnClass&amp;lt;/span&gt;
	onMorning : function(){},       &amp;lt;span class=&#34;comment&#34;&gt;// callback si es de mañana; por defecto inyecta al body la clase definida en morningClass&amp;lt;/span&gt;
	onAfternoon : function(){}      &amp;lt;span class=&#34;comment&#34;&gt;// callback si es de tarde; por defecto inyecta al body la clase definida en afternoonClass&amp;lt;/span&gt;
});&lt;/code&gt;&lt;/pre&gt;
  &lt;h5&gt;
    Cambios:
  &lt;/h5&gt;
  &lt;ul&gt;
    &lt;li&gt;
      1.0: ahora puedes definir el comportamiento a través del callback.
    &lt;/li&gt;
    &lt;li&gt;
      0.4.1: BUG: onMorning.call solucionado.
    &lt;/li&gt;
    &lt;li&gt;
      0.4: Primera publicación.
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/dayTimr/latest/&#34;&gt;Demo/Ejemplo&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/downloads/jQuery+dayTimr&#34;&gt;Download/Bajar Plugin&lt;/a&gt;{.bajar}&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Copyright 2013, CSSLab.cl – Free under the &lt;a href=&#34;http://www.opensource.org/licenses/mit-license.php&#34; title=&#34;Enlace externo a &amp;quot;Licensing  The MIT License&amp;quot;&#34; target=&#34;_blank&#34;&gt;MIT license&lt;/a&gt;&lt;/em&gt;. &lt;em&gt;Blackhole&lt;/em&gt; Icon from Turbomilk&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Diseñando con CSS3: micro-curso y slides</title>
      <link>https://csslab.cl/2012/12/26/disenando-con-css3-micro-curso-y-slides/</link>
      <pubDate>Wed, 26 Dec 2012 18:39:07 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/12/26/disenando-con-css3-micro-curso-y-slides/</guid>
      <description>&lt;p&gt;Hace meses que tengo la idea de generar varios &lt;em&gt;micro-cursos&lt;/em&gt;, donde en no más de 30 minutos expongo varias ideas puntuales sobre temas orientados al desarrollo web. En esta ocasión les traigo el primero de ellos: &lt;strong&gt;Diseñando con CSS3&lt;/strong&gt;, donde muestro y demuestro mis argumentos para el diseño web orientado al &lt;strong&gt;CSS3&lt;/strong&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;Hace meses que tengo la idea de generar varios &lt;em&gt;micro-cursos&lt;/em&gt;, donde en no más de 30 minutos expongo varias ideas puntuales sobre temas orientados al desarrollo web. En esta ocasión les traigo el primero de ellos: &lt;strong&gt;Diseñando con CSS3&lt;/strong&gt;, donde muestro y demuestro mis argumentos para el diseño web orientado al &lt;strong&gt;CSS3&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Nuevamente estos &lt;em&gt;slides&lt;/em&gt; vienen acompañados de mi radiofónica locución sincronizada por lo que sólo tienen que activar el audio de su computador, enchufar sus audífonos, poner &lt;em&gt;play&lt;/em&gt; al audio y escuchar/leer. Además, mucho del código fuente que se muestra puede editarse en cada &lt;em&gt;slide&lt;/em&gt; y verás como se modifican los estilos de ejemplo.&lt;/p&gt;
&lt;p&gt;Si no les interesa escucharme, ignoren el &lt;em&gt;player&lt;/em&gt; y denle con las flechas del teclado. En todo caso el audio pueden pararlo y adelantarlo si quieren, el &lt;em&gt;slide&lt;/em&gt; correspondiente se reubicará donde debería estar.&lt;/p&gt;
&lt;p class=&#34;atencion&#34;&gt;
  &lt;strong&gt;Advertencia:&lt;/strong&gt;&lt;br /&gt;La grabación hecha fue en una misma sesión y al estilo de conversación, no de charla.&lt;br /&gt;Imagínense que estamos en un bar conversando y me preguntan sobre CSS3 y y les voy contando todo lo que sé y deberían saben.&lt;br /&gt;Eso.
&lt;/p&gt;
&lt;h4 id=&#34;diseñando-con-css3-temario&#34;&gt;Diseñando con CSS3: temario&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;del Código al PSD&lt;/li&gt;
&lt;li&gt;Propiedades CSS3
&lt;ul&gt;
&lt;li&gt;de formas&lt;/li&gt;
&lt;li&gt;de textos&lt;/li&gt;
&lt;li&gt;de interacción&lt;/li&gt;
&lt;li&gt;de animación&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Herramientas
&lt;ul&gt;
&lt;li&gt;Editores de código fuente&lt;/li&gt;
&lt;li&gt;Elixires&lt;/li&gt;
&lt;li&gt;Generadores&lt;/li&gt;
&lt;li&gt;Software&lt;/li&gt;
&lt;li&gt;Editores / IDEs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[Ver Micro-Curso][1]{.bajar}&lt;/p&gt;
&lt;p style=&#34;text-align:center;&#34;&gt;
  &lt;a href=&#34;https://speakerdeck.com/csslab/disenando-con-css3&#34; target=&#34;_blank&#34;&gt;Enlace a la presentación en SpeakerDeck&lt;/a&gt;
&lt;/p&gt;
&lt;h4 id=&#34;recomendaciones&#34;&gt;Recomendaciones:&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;El uso de un &lt;em&gt;browser&lt;/em&gt; moderno (duh!) como &lt;strong&gt;Chrome/Safari&lt;/strong&gt; ó Firefox 14+&lt;/li&gt;
&lt;li&gt;Si vas a escuchar el audio, súbele el volumen y ponte audífonos para no molestar al resto.&lt;/li&gt;
&lt;li&gt;Comentarios sobre el contenido son bienvenidos.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&#34;text-align:center;&#34;&gt;
  &lt;p&gt;
    &amp;#10086;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;small&gt;Después del último slide hay un &lt;em&gt;easter-egg&lt;/em&gt;, para los amantes de la buena mesa &lt;a href=&#34;http://www.csslab.cl/ejemplos/curso/disenando-con-css3/#slide48&#34;&gt;mi receta personal de cebiche&lt;/a&gt; el cual preparé antes de dictar este micro-curso.&lt;/small&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &amp;#10086;
  &lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/curso/disenando-con-css3/&#34;&gt;http://www.csslab.cl/ejemplos/curso/disenando-con-css3/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Diseñando con CSS3&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Alcanzar el primer hijo de un selector pero no su descendencia</title>
      <link>https://csslab.cl/2012/12/18/alcanzar-el-primer-hijo-de-un-selector-pero-no-su-descendencia/</link>
      <pubDate>Tue, 18 Dec 2012 15:14:41 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/12/18/alcanzar-el-primer-hijo-de-un-selector-pero-no-su-descendencia/</guid>
      <description>Problema: a través de CSS, necesitaba entregar estilos al primer hijo de un elemento sin afectar la herencia (nietos y más allá); sólo necesito darle estilo al hijo directo de un selector.
Además: debiera ser genérico, sin restringirse al tipo de selector hijo que exista. Pueden ser , , , etc.
Y por último: que utilizara sólo CSS, nada de JavaScript.
Solución: después de mucho pensar y debatir en Twitter, dí con una una elegante solución que me satisfizo completamente.</description>
      <content>&lt;p&gt;Problema: a través de &lt;strong&gt;CSS&lt;/strong&gt;, necesitaba entregar estilos al &lt;em&gt;primer hijo de un elemento&lt;/em&gt; sin afectar la herencia (&lt;em&gt;nietos&lt;/em&gt; y más allá); sólo necesito darle estilo al &lt;em&gt;hijo directo de un selector&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Además: debiera ser genérico, sin restringirse al tipo de selector hijo que exista. Pueden ser &lt;li&gt;, &lt;p&gt;, &lt;span&gt;, etc.&lt;/p&gt;
&lt;p&gt;Y por último: que utilizara sólo &lt;strong&gt;CSS&lt;/strong&gt;, nada de &lt;strong&gt;JavaScript&lt;/strong&gt;.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/12/descendant.png&#34; alt=&#34;&#34; title=&#34;descendant&#34; width=&#34;650&#34; height=&#34;450&#34; class=&#34;aligncenter size-full wp-image-1449&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2012/12/descendant.png 650w, http://www.csslab.cl/wp-content/uploads/2012/12/descendant-300x207.png 300w, http://www.csslab.cl/wp-content/uploads/2012/12/descendant-220x152.png 220w&#34; sizes=&#34;(max-width: 650px) 100vw, 650px&#34; /&gt; 
&lt;p&gt;Solución: después de mucho pensar y debatir en &lt;em&gt;Twitter&lt;/em&gt;, dí con una una elegante solución que me satisfizo completamente. Para el &lt;strong&gt;HTML&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div&amp;gt;&amp;lt;br /&gt;
  &amp;lt;span&amp;gt;Hijo&amp;lt;/span&amp;gt;&amp;lt;br /&gt;
  &amp;lt;p&amp;gt;Hijo &amp;lt;b&amp;gt;nieto&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
  &amp;lt;pre&amp;gt;Hijo &amp;lt;code&amp;gt;nieto &amp;lt;i&amp;gt;bisnieto&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;div * {
   color: blue;
   background: gray;
}
   div &gt; :nth-child(n+1)  {
      color: red;
      background: darkgrey;
   }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/solohijo.html&#34;&gt;Ver ejemplo&lt;/a&gt;{.verejemplo}&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Reflejo horizontal y vertical con CSS3</title>
      <link>https://csslab.cl/2012/12/12/reflejo-horizontal-y-vertical-con-css3/</link>
      <pubDate>Wed, 12 Dec 2012 19:34:01 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/12/12/reflejo-horizontal-y-vertical-con-css3/</guid>
      <description>Me entretengo mucho inventando proyectos donde pueda aplicar CSS3 a destajo sin importarme un carajo las limitaciones de los browsers. Buscando una solución elegante para aplicar el mismo efecto reflejo que tan fácil es hacer en Photoshop, pero con CSS3, lo que quería realizar era el reflejo de un elemento HTML; no un transform: rotate(180deg); sino un reflejo espejo del mismo.
Flip horizontal: -moz-transform: scaleX(-1); -o-transform: scaleX(-1); -webkit-transform: scaleX(-1); transform: scaleX(-1); -ms-filter: &#34;</description>
      <content>&lt;p&gt;Me entretengo mucho &lt;a href=&#34;http://www.andalaosa.cl/labs/chilegram/&#34; title=&#34;Enlace externo a &amp;quot;Chilegram | Andalaosa.cl&amp;quot;&#34; target=&#34;_blank&#34;&gt;inventando proyectos&lt;/a&gt; donde &lt;a href=&#34;http://www.teconfiesoque.com/&#34; title=&#34;Enlace externo a &amp;quot;Te Confieso Que | Andalaosa.cl&amp;quot;&#34; target=&#34;_blank&#34;&gt;pueda aplicar &lt;strong&gt;CSS3&lt;/strong&gt;&lt;/a&gt; a destajo sin importarme un carajo las limitaciones de los &lt;em&gt;browsers&lt;/em&gt;. Buscando una solución elegante para aplicar el mismo efecto reflejo que tan fácil es hacer en &lt;em&gt;Photoshop&lt;/em&gt;, pero con &lt;strong&gt;CSS3&lt;/strong&gt;, lo que quería realizar era el reflejo de un elemento &lt;strong&gt;HTML&lt;/strong&gt;; no un &lt;strong&gt;transform: rotate(180deg);&lt;/strong&gt; sino un reflejo espejo del mismo.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/12/css3reflejo1.png&#34; alt=&#34;&#34; title=&#34;css3reflejo&#34; width=&#34;650&#34; height=&#34;220&#34; class=&#34;aligncenter size-full wp-image-1439&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2012/12/css3reflejo1.png 650w, http://www.csslab.cl/wp-content/uploads/2012/12/css3reflejo1-300x101.png 300w, http://www.csslab.cl/wp-content/uploads/2012/12/css3reflejo1-220x74.png 220w&#34; sizes=&#34;(max-width: 650px) 100vw, 650px&#34; /&gt; 
&lt;h4 id=&#34;flip-horizontal&#34;&gt;Flip horizontal:&lt;/h4&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;-moz-transform: scaleX(-1);
-o-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
-ms-filter: &#34;FlipH&#34;;
filter: FlipH;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;flip-vertical&#34;&gt;Flip vertical:&lt;/h4&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;-moz-transform: scaleY(-1);
-o-transform: scaleY(-1);
-webkit-transform: scaleY(-1);
transform: scaleY(-1);
-ms-filter: &#34;FlipV&#34;;
filter: FlipV;&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;/blockquote&gt;
</content>
    </item>
    
    <item>
      <title>Acceso a la cámara con móviles</title>
      <link>https://csslab.cl/2012/10/26/acceso-a-la-camara-con-moviles/</link>
      <pubDate>Fri, 26 Oct 2012 14:19:01 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/10/26/acceso-a-la-camara-con-moviles/</guid>
      <description>&lt;p&gt;Con &lt;strong&gt;iOS6&lt;/strong&gt; se agregaron en &lt;em&gt;Safari Mobile&lt;/em&gt; varias novedades que ya existían desde &lt;em&gt;Android Browser 3.0,&lt;/em&gt; pero las que me gustaría destacar en este articulo: &lt;em&gt;File upload&lt;/em&gt; (&lt;strong&gt;&lt;input type=&#34;file&#34;&gt;&lt;/strong&gt;) con el que ahora puedes agregar &lt;em&gt;submit&lt;/em&gt; de imágenes que tengas en dispositivo y acceso a la cámara del mismo:&lt;/p&gt;</description>
      <content>&lt;p&gt;Con &lt;strong&gt;iOS6&lt;/strong&gt; se agregaron en &lt;em&gt;Safari Mobile&lt;/em&gt; varias novedades que ya existían desde &lt;em&gt;Android Browser 3.0,&lt;/em&gt; pero las que me gustaría destacar en este articulo: &lt;em&gt;File upload&lt;/em&gt; (&lt;strong&gt;&lt;input type=&#34;file&#34;&gt;&lt;/strong&gt;) con el que ahora puedes agregar &lt;em&gt;submit&lt;/em&gt; de imágenes que tengas en dispositivo y acceso a la cámara del mismo:&lt;/p&gt;
&lt;h4 id=&#34;capturar-video-de-la-cámara&#34;&gt;Capturar video de la cámara&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;input type=&#34;file&#34; accept=&#34;video/*&#34; capture=&#34;camcorder&#34;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;capturar-foto-de-la-cámara&#34;&gt;Capturar foto de la cámara&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;input type=&#34;file&#34; accept=&#34;image/*&#34; capture=&#34;camera&#34;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;capturar-audio-del-microacutefono&#34;&gt;Capturar audio del micrófono&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;input type=&#34;file&#34; accept=&#34;audio/*&#34; capture=&#34;microphone&#34;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;div style=&#34;text-align:center;&#34;&gt;
  &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/10/qrcode.9817336.png&#34; alt=&#34;&#34; title=&#34;qrcode.9817336&#34; width=&#34;200&#34; height=&#34;200&#34; class=&#34;aligncenter size-full wp-image-1417&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2012/10/qrcode.9817336.png 200w, http://www.csslab.cl/wp-content/uploads/2012/10/qrcode.9817336-150x150.png 150w&#34; sizes=&#34;(max-width: 200px) 100vw, 200px&#34; /&gt;
&lt;/div&gt;
&lt;p class=&#34;leyenda&#34;&gt;
  Soporte: Safari Mobile 6. Android Browser 3.0, Android Chrome 0.16, Firefox Mobile 10.0.
&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/cam.html&#34;&gt;http://www.csslab.cl/ejemplos/cam.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo Acceso a la cámara con móviles&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Consecuencia</title>
      <link>https://csslab.cl/2012/10/11/consecuencia/</link>
      <pubDate>Thu, 11 Oct 2012 13:45:56 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/10/11/consecuencia/</guid>
      <description>«Buscamos al mejor programador: PHP (MVC), RoR, AS3 (OOP), JS y librerías, HTML5, CSS3, API rest, MySQL, SQLServer. Nociones de Photoshop un plus.» Hola, yo sé PHP y he trabajado con CodeIgniter y Yii. Sé Ruby, he trabajado con Node.js, Backbone y Angular JS, también domino jQuery, puedo hacer juegos en  y Impact JS como motor, incluso hice mi Hola Mundo en three.js; conozco la API de Facebook y Twitter aunque las odio.</description>
      <content>&lt;link href=&#39;http://fonts.googleapis.com/css?family=Annie+Use+Your+Telescope&#39; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; /&gt;
&lt;/link&gt; 
&lt;div id=&#34;consecuencia&#34;&gt;
  &lt;p class=&#34;arrow_box izq&#34;&gt;
    «Buscamos al mejor programador: &lt;strong&gt;PHP&lt;/strong&gt; (MVC), &lt;strong&gt;RoR&lt;/strong&gt;, &lt;strong&gt;AS3&lt;/strong&gt; (OOP), &lt;strong&gt;JS&lt;/strong&gt; y librerías, &lt;strong&gt;HTML5&lt;/strong&gt;, &lt;strong&gt;CSS3&lt;/strong&gt;, &lt;strong&gt;API rest&lt;/strong&gt;, &lt;strong&gt;MySQL&lt;/strong&gt;, &lt;strong&gt;SQLServer&lt;/strong&gt;. Nociones de &lt;strong&gt;Photoshop&lt;/strong&gt; un plus.»
  &lt;/p&gt;
  &lt;p class=&#34;arrow_box der&#34;&gt;
    Hola, yo sé &lt;strong&gt;PHP&lt;/strong&gt; y he trabajado con &lt;strong&gt;CodeIgniter&lt;/strong&gt; y &lt;strong&gt;Yii&lt;/strong&gt;. Sé &lt;strong&gt;Ruby&lt;/strong&gt;, he trabajado con &lt;strong&gt;Node.js&lt;/strong&gt;, &lt;strong&gt;Backbone&lt;/strong&gt; y &lt;strong&gt;Angular JS&lt;/strong&gt;, también domino &lt;strong&gt;jQuery&lt;/strong&gt;, puedo hacer juegos en &lt;strong&gt;&lt;canvas&gt;&lt;/strong&gt; y &lt;strong&gt;Impact JS&lt;/strong&gt; como motor, incluso hice mi &lt;em&gt;Hola Mundo&lt;/em&gt; en &lt;strong&gt;three.js&lt;/strong&gt;; conozco la &lt;strong&gt;API&lt;/strong&gt; de Facebook y Twitter aunque las odio. He trabajado con &lt;strong&gt;SQLServer&lt;/strong&gt; y &lt;strong&gt;MySQL&lt;/strong&gt;, obvio, pero me estoy sumergiendo en bases de datos &lt;strong&gt;NoSQL&lt;/strong&gt;.
  &lt;/p&gt;
  &lt;p class=&#34;arrow_box der&#34; style=&#34;margin-top: 0;&#34;&gt;
    ¡Ah! Mi inglés es bien técnico y he aportado a varios proyectos &lt;em&gt;OpenSource&lt;/em&gt;, los puedes revisar en mi &lt;strong&gt;GitHub&lt;/strong&gt;.
  &lt;/p&gt;
  &lt;p class=&#34;arrow_box izq&#34;&gt;
    ¡Genial, eres quien buscamos! ¿Cuánto pides?
  &lt;/p&gt;
  &lt;p class=&#34;arrow_box der&#34;&gt;
    Con todo lo que he invertido en mi aprendizaje y con lo que puedo entregarle a tu empresa en nuevos proyectos, pido &lt;strong&gt;$$$$$&lt;/strong&gt;.
  &lt;/p&gt;
  &lt;p class=&#34;arrow_box izq&#34;&gt;
    Ah, pero estábamos pensando en un presupuesto de &lt;strong&gt;$$$&lt;/strong&gt; para tu puesto.
  &lt;/p&gt;
  &lt;p class=&#34;arrow_box der&#34;&gt;
    Entiendo. Entonces cambien el llamado que publicaron. No buscan al mejor.
  &lt;/p&gt;
  &lt;p class=&#34;arrow_box der&#34;&gt;
    &lt;strong&gt;01001101 01100101 01100100 01101001 01101111 01100011 01110010 01100101 01110011&lt;/strong&gt;
  &lt;/p&gt;
&lt;/div&gt;
&lt;!-- /#consecuencia --&gt;</content>
    </item>
    
    <item>
      <title>FadeIn/Out en menú con CSS</title>
      <link>https://csslab.cl/2012/10/08/fadeinout-en-menu-con-css/</link>
      <pubDate>Mon, 08 Oct 2012 13:05:11 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/10/08/fadeinout-en-menu-con-css/</guid>
      <description>&lt;p&gt;Situación: tenemos un menú con &lt;strong&gt;N&lt;/strong&gt; elementos, los cuales se van activando (&lt;strong&gt;opacity: 1&lt;/strong&gt;) a medida que el &lt;em&gt;mouse&lt;/em&gt; pasa sobre cada uno, mientras el resto de los elementos permanecen inactivos (&lt;strong&gt;opacity: 0.5&lt;/strong&gt;). Un efecto simple que se puede realizar tranquilamente con &lt;strong&gt;CSS&lt;/strong&gt; y la caída estrepitosa de &lt;strong&gt;IE6&lt;/strong&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;Situación: tenemos un menú con &lt;strong&gt;N&lt;/strong&gt; elementos, los cuales se van activando (&lt;strong&gt;opacity: 1&lt;/strong&gt;) a medida que el &lt;em&gt;mouse&lt;/em&gt; pasa sobre cada uno, mientras el resto de los elementos permanecen inactivos (&lt;strong&gt;opacity: 0.5&lt;/strong&gt;). Un efecto simple que se puede realizar tranquilamente con &lt;strong&gt;CSS&lt;/strong&gt; y la caída estrepitosa de &lt;strong&gt;IE6&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Primero, el ejemplo del nunca mal ponderado menú horizontal con listas:&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 1][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Ahora, el efecto aplicado. Básicamente se agregan 2 instancias diferentes el cambio de opacidad, primero en el &lt;strong&gt;:hover&lt;/strong&gt; de &lt;strong&gt;#menu&lt;/strong&gt;, los links tendrán opacidad &lt;strong&gt;0.5&lt;/strong&gt; y al &lt;strong&gt;:hover&lt;/strong&gt; al elemento mismo opacidad &lt;strong&gt;1&lt;/strong&gt;, todo graciosamente animado mediante &lt;strong&gt;transition&lt;/strong&gt; de &lt;strong&gt;CSS3&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#menu a {
  transition: 0.3s opacity ease-in-out;
}
  #menu:hover a {
    opacity: 0.5;
  }
  #menu a:hover {
    opacity: 1;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 2][2]{.verejemplo}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El diseño del menú en sí y de cada botón es parte de su propio talento.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/menufadeinout/menu.html&#34;&gt;http://www.csslab.cl/ejemplos/menufadeinout/menu.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo1: Fade in/out en menú con CSS&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/menufadeinout/menu2.html&#34;&gt;http://www.csslab.cl/ejemplos/menufadeinout/menu2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo2: Fade in/out en menú con CSS&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>@font-face y renderizado de texto en Chrome Windows</title>
      <link>https://csslab.cl/2012/09/21/font-face-y-renderizado-de-texto-en-chrome-windows/</link>
      <pubDate>Fri, 21 Sep 2012 14:05:04 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/09/21/font-face-y-renderizado-de-texto-en-chrome-windows/</guid>
      <description>&lt;p&gt;Este es un &lt;em&gt;bug&lt;/em&gt; molesto, donde a partir de algunas tipografías (generalmente de palo seco y delgadas) tienen un pobre renderizado en &lt;em&gt;Chrome&lt;/em&gt; en &lt;em&gt;Windows&lt;/em&gt;. Buscando una solución me deparo con 4 diferentes; finalmente solo la solución 2 me resulta efectiva pero las dejo todas ya que puede variar con el tipo de tipografía y las propiedades que tenga el texto con problemas:&lt;/p&gt;</description>
      <content>&lt;p&gt;Este es un &lt;em&gt;bug&lt;/em&gt; molesto, donde a partir de algunas tipografías (generalmente de palo seco y delgadas) tienen un pobre renderizado en &lt;em&gt;Chrome&lt;/em&gt; en &lt;em&gt;Windows&lt;/em&gt;. Buscando una solución me deparo con 4 diferentes; finalmente solo la solución 2 me resulta efectiva pero las dejo todas ya que puede variar con el tipo de tipografía y las propiedades que tenga el texto con problemas:&lt;/p&gt;
&lt;h4 id=&#34;en-chrome-windows&#34;&gt;En Chrome Windows&lt;/h4&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/09/bug-win2.png&#34; alt=&#34;&#34; title=&#34;bug-win&#34; width=&#34;650&#34; height=&#34;980&#34; class=&#34;alignnone size-full wp-image-1335&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2012/09/bug-win2.png 650w, http://www.csslab.cl/wp-content/uploads/2012/09/bug-win2-198x300.png 198w, http://www.csslab.cl/wp-content/uploads/2012/09/bug-win2-220x331.png 220w&#34; sizes=&#34;(max-width: 650px) 100vw, 650px&#34; /&gt; 
&lt;h4 id=&#34;en-chrome-macos-x&#34;&gt;En Chrome MacOS X&lt;/h4&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/09/bug-mac2.png&#34; alt=&#34;&#34; title=&#34;bug-mac&#34; width=&#34;650&#34; height=&#34;740&#34; class=&#34;alignnone size-full wp-image-1336&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2012/09/bug-mac2.png 650w, http://www.csslab.cl/wp-content/uploads/2012/09/bug-mac2-263x300.png 263w, http://www.csslab.cl/wp-content/uploads/2012/09/bug-mac2-220x250.png 220w&#34; sizes=&#34;(max-width: 650px) 100vw, 650px&#34; /&gt; 
&lt;h3 id=&#34;solucioacuten-1-_smalltext-shadowsmall_&#34;&gt;Solución 1: &lt;em&gt;&lt;small&gt;text-shadow&lt;/small&gt;&lt;/em&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;text-shadow: rgba(0, 0, 0, .01) 0 0 1px;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 1][1]{.verejemplo}&lt;/p&gt;
&lt;h3 id=&#34;solucioacuten-2-_small-webkit-text-stroke-widthsmall_&#34;&gt;Solución 2: &lt;em&gt;&lt;small&gt;-webkit-text-stroke-width&lt;/small&gt;&lt;/em&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;-webkit-text-stroke-width: 0.6px;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 2][2]{.verejemplo}&lt;/p&gt;
&lt;h3 id=&#34;solucioacuten-3-_small-webkit-font-smoothingsmall_&#34;&gt;Solución 3: &lt;em&gt;&lt;small&gt;-webkit-font-smoothing&lt;/small&gt;&lt;/em&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;-webkit-font-smoothing: antialiased;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 3][3]{.verejemplo}&lt;/p&gt;
&lt;h3 id=&#34;solucioacuten-4-_smallorden-en-el-llamado-de-los-formatossmall_&#34;&gt;Solución 4: &lt;em&gt;&lt;small&gt;Orden en el llamado de los formatos&lt;/small&gt;&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Si utilizas una herramienta para conversión de fuentes para web como &lt;a href=&#34;http://www.fontsquirrel.com/fontface/generator&#34; title=&#34;Enlace externo a &amp;quot;Create Your Own @font-face Kits&amp;quot;&#34; target=&#34;_blank&#34;&gt;FontSquirrel&lt;/a&gt; probablemente te entregue la solución final ya lista para su uso, pero algunos aconsejan comenzar con definir &lt;strong&gt;SVG&lt;/strong&gt; (que es un formato vectorial de tipografías, por lo tanto no debiera deformarse) y seguido el resto de los otros formatos (.eot, .woff, .ttf).&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 4][4]{.verejemplo}&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://eligrey.com/blog/post/better-font-smoothing-in-google-chrome-on-windows&#34; target=&#34;_blank&#34;&gt;Better font smoothing in Google Chrome on Windows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://taitems.tumblr.com/post/7107609467/font-face-smoothing-in-windows-chrome&#34; target=&#34;_blank&#34;&gt;@font-face Smoothing in Windows Chrome&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://files.christophzillgens.com/webkit-font-smoothing.html&#34; target=&#34;_blank&#34;&gt;-webkit-font-smoothing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/font-face_chrome_win/ejemplo1.html&#34;&gt;http://www.csslab.cl/ejemplos/font-face_chrome_win/ejemplo1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Solución 1&amp;quot;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/font-face_chrome_win/ejemplo2.html&#34;&gt;http://www.csslab.cl/ejemplos/font-face_chrome_win/ejemplo2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Solución 2&amp;quot;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/font-face_chrome_win/ejemplo3.html&#34;&gt;http://www.csslab.cl/ejemplos/font-face_chrome_win/ejemplo3.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Solución 3&amp;quot;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/font-face_chrome_win/ejemplo4.html&#34;&gt;http://www.csslab.cl/ejemplos/font-face_chrome_win/ejemplo4.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Solución 4&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Mis Feeds</title>
      <link>https://csslab.cl/2012/08/30/mis-feeds/</link>
      <pubDate>Thu, 30 Aug 2012 21:04:47 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/08/30/mis-feeds/</guid>
      <description>&lt;p&gt;Leo todo el día, y es así que trato de estar al tanto de lo que sucede en el mundo web. Tengo muchos &lt;em&gt;feeds&lt;/em&gt; que me alimentan de información, principalmente relacionados con diseño, desarrollo, interacción y usabilidad. Por la mañana tengo los &lt;strong&gt;RSS&lt;/strong&gt; llenos de información, con lo que ha salido de nuevo mientras en mi zona horaria se duerme. La actividad no para, hay nuevos recursos desde Asia y Europa, y cuando comienza mi actividad en otros lugares ya están terminando y no puedo perderme esa información. Todo esto sumado a las cuentas de &lt;em&gt;Twitter&lt;/em&gt; que constantemente reviso con ejemplos y prototipos que diseñadores y desarrolladores están siempre creando y generosamente compartiendo.&lt;/p&gt;
&lt;p&gt;En este artículo quiero compartir algunos de esos &lt;em&gt;feeds&lt;/em&gt; &lt;strong&gt;RSS&lt;/strong&gt; y algunas cuentas de &lt;em&gt;Twitter&lt;/em&gt; que me mantienen al día en varios de los temas de mi interés.&lt;/p&gt;</description>
      <content>&lt;p&gt;Leo todo el día, y es así que trato de estar al tanto de lo que sucede en el mundo web. Tengo muchos &lt;em&gt;feeds&lt;/em&gt; que me alimentan de información, principalmente relacionados con diseño, desarrollo, interacción y usabilidad. Por la mañana tengo los &lt;strong&gt;RSS&lt;/strong&gt; llenos de información, con lo que ha salido de nuevo mientras en mi zona horaria se duerme. La actividad no para, hay nuevos recursos desde Asia y Europa, y cuando comienza mi actividad en otros lugares ya están terminando y no puedo perderme esa información. Todo esto sumado a las cuentas de &lt;em&gt;Twitter&lt;/em&gt; que constantemente reviso con ejemplos y prototipos que diseñadores y desarrolladores están siempre creando y generosamente compartiendo.&lt;/p&gt;
&lt;p&gt;En este artículo quiero compartir algunos de esos &lt;em&gt;feeds&lt;/em&gt; &lt;strong&gt;RSS&lt;/strong&gt; y algunas cuentas de &lt;em&gt;Twitter&lt;/em&gt; que me mantienen al día en varios de los temas de mi interés.&lt;/p&gt;
&lt;div id=&#34;grid&#34;&gt;
  &lt;div class=&#34;medium_box misfeeds&#34;&gt;
    &lt;h4&gt;
      Web
    &lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.smashingmagazine.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Smashing Magazine&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Smashing Magazine&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.designfloat.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Design Float&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Design Float&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://designmodo.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Designmodo&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Designmodo&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://net.tutsplus.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;NetTuts&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;NetTuts&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.webresourcesdepot.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Web Resources Depot&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Web Resources Depot&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.webappers.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;WebAppers&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;WebAppers&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://sixrevisions.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Six Revisions&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Six Revisions&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.splashnology.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Splashnology&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Splashnology&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://css-tricks.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;CSS Tricks&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;CSS Tricks&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://html5bookmarks.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;HTML5 Bookmarks&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;HTML5 Bookmarks&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.queness.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Queness&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Queness&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.smashingapps.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Smashing Apps&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Smashing Apps&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/smashingmag&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@smashingmag&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@smashingmag&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/codepo8&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@codepo8&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@codepo8&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/htmlcut&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@htmlcut&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@htmlcut&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/CreativeBloq&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@CreativeBloq&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@CreativeBloq&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/mezzoblue&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@mezzoblue&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@mezzoblue&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/codylindley&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@codylindley&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@codylindley&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/rem&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@rem&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@rem&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/reybango&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@reybango&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@reybango&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/Oja_la&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@Oja_la&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@Oja_la&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/coderwall&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@coderwall&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@coderwall&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/ImpressiveWebs&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@ImpressiveWebs&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@ImpressiveWebs&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/unconed&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@unconed&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@unconed&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/verekia&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@verekia&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@verekia&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/Tojiro&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@Tojiro&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@Tojiro&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/romancortes&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@romancortes&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@romancortes&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/_victa &amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@_victa&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@_victa&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/jQueryChile&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@jQueryChile&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@jQueryChile&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/philogb&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@philogb&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@philogb&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/simurai&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@simurai&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@simurai&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/bartaz&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@bartaz&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@bartaz&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/AlexDenning&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@AlexDenning&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@AlexDenning&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/mathias&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@mathias&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@mathias&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/desandro&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@desandro&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@desandro&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/ChromeExp&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@ChromeExp&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@ChromeExp&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/mrdoob&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@mrdoob&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@mrdoob&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/Vanesak&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@Vanesak&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@Vanesak&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/wpbeginner&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@wpbeginner&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@wpbeginner&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/johnpolacek&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@johnpolacek&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@johnpolacek&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/pointedCo&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@pointedCo&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@pointedCo&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/crnacura&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@crnacura&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@crnacura&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/GCotumaccio&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@GCotumaccio&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@GCotumaccio&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/mike_more&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@mike_more&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@mike_more&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/jscraftnet&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@jscraftnet&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/attasi&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@jscraftnet&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@attasi&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/robertnyman&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@robertnyman&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@robertnyman&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/RWD&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@RWD&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@RWD&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/LeaVerou&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@LeaVerou&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@LeaVerou&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/stefsull&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@stefsull&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@stefsull&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/codrops&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@codrops&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@codrops&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/TomLambie&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@TomLambie&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@TomLambie&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/textmator&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@textmator&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@textmator&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/hakimel&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@hakimel&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@hakimel&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/thomasfuchs&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@thomasfuchs&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@thomasfuchs&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/pinceladasdaweb&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@pinceladasdaweb&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@pinceladasdaweb&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/pelfusion&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@pelfusion&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@pelfusion&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/wireframes&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@wireframes&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@wireframes&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/addyosmani&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@addyosmani&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@addyosmani&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/usejquery&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;#038;quot@usejquery;&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@usejquery&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/iA&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@iA&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@iA&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/Inspirationf&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@Inspirationf&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@Inspirationf&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/chrisspooner&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@chrisspooner&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@chrisspooner&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/marcofolio&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@marcofolio&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@marcofolio&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/BinaryMoon&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@BinaryMoon&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@BinaryMoon&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/sorccu&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@sorccu&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@sorccu&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/iamFinch&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@iamFinch&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@iamFinch&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/ywarnier&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@ywarnie&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@ywarnier&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/abduzeedo&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@abduzeedo&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@abduzeedo&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/html5doctor&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@html5doctor&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@html5doctor&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/dimensionmedia&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@dimensionmedia&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@dimensionmedia&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/eseyo&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@eseyo&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@eseyo&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/bassistance&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@bassistance&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@bassistance&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/jeresig&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@jeresig&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@jeresig&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/wpengineer&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@wpengineer&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@wpengineer&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/Webstandard&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@Webstandard&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@Webstandard&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/KISSmetrics&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@KISSmetrics&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@KISSmetrics&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/timholl&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@timholl&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@timholl&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/nrauni&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@nrauni&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@nrauni&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/madebyivor&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@madebyivor&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@madebyivor&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;div class=&#34;medium_box misfeeds&#34;&gt;
    &lt;h4&gt;
      Tecnolog&amp;iacute;a
    &lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.microsiervos.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Microsiervos&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Microsiervos&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/mashable&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@mashable&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@mashable&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;div class=&#34;medium_box misfeeds&#34;&gt;
    &lt;h4&gt;
      Infograf&amp;iacute;a e Informaci&amp;oacute;n
    &lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://infosthetics.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Information Aesthetics&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Information Aesthetics&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/infographicsfyi&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@infographicsfyi&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@infographicsfyi&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/blprnt&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@blprnt&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@blprnt&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/mslima&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@mslima&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@mslima&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;div class=&#34;medium_box misfeeds&#34;&gt;
    &lt;h4&gt;
      Mi Repositorio
    &lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://zootool.com/user/csslab/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Zootool - CSSLab&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;CSSLab on Zootool&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;div class=&#34;medium_box misfeeds&#34;&gt;
    &lt;h4&gt;
      Tipograf&amp;iacute;a
    &lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://beautifultype.net/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Beautiful Type&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Beautiful Type&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.typographyserved.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Typography Serve&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Typography Serve &amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://upscaletypography.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Upscale Typography&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Upscale Typography&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/ilovetypography&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@ilovetypography&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@ilovetypography&amp;lt;br /&amp;gt; &amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;div class=&#34;medium_box misfeeds&#34;&gt;
    &lt;h4&gt;
      Arte
    &lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://fuckyeahmath.tumblr.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Fuck Yeah Math&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Fuck Yeah Math&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.thisiscolossal.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;This is Colossal&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;This is Colossal&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.ohbeautifulbeer.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Oh Beautiful Beer&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Oh Beautiful Beer&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;div class=&#34;medium_box misfeeds&#34;&gt;
    &lt;h4&gt;
      Miscel&amp;aacute;neos
    &lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.meneame.net/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Men&amp;amp;eacute;ame&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Men&amp;amp;eacute;ame&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.fogonazos.es/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Fogonazos&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Fogonazos&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://englishrussia.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;English Russia&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;English Russia&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://matiascallone.blogspot.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Visi&amp;amp;oacute;n Beta&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Visi&amp;amp;oacute;n Beta&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.boston.com/bigpicture/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;The Big Picture&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;The Big Picture&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://fronterasblog.wordpress.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Fronteras&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Fronteras&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.cookingideas.es/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Cooking Ideas&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Cooking Ideas&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://blogdebanderas.wordpress.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;Banderas del Mundo&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Banderas del Mundo&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.theworldgeography.com/&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;The World Geography&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;The World Geography&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/neiltyson&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@neiltyson&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@neiltyson&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/musichackday&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@musichackday&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@musichackday&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/NietzscheQuotes&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@NietzscheQuotes&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@NietzscheQuotes&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;
    &amp;lt;a href=&amp;quot;http://www.twitter.com/johnmaeda&amp;quot; title=&amp;quot;Enlace externo a &amp;amp;quot;@johnmaeda&amp;amp;quot;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;@johnmaeda&amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;</content>
    </item>
    
    <item>
      <title>Mejor renderizado para textos</title>
      <link>https://csslab.cl/2012/08/16/mejor-renderizado-para-textos/</link>
      <pubDate>Thu, 16 Aug 2012 21:04:35 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/08/16/mejor-renderizado-para-textos/</guid>
      <description>&lt;p&gt;Érase una vez una tímida propiedad &lt;strong&gt;CSS&lt;/strong&gt; que pocos conocen y nadie usa, pero que es muy beneficiosa cuando tratamos con textos.&lt;/p&gt;</description>
      <content>&lt;p&gt;Érase una vez una tímida propiedad &lt;strong&gt;CSS&lt;/strong&gt; que pocos conocen y nadie usa, pero que es muy beneficiosa cuando tratamos con textos.&lt;/p&gt;
&lt;p&gt;Es conocido que cada plataforma -y cada &lt;em&gt;browser&lt;/em&gt;– trata a las tipografías a su modo; es así como un &lt;strong&gt;font-size&lt;/strong&gt; de una &lt;strong&gt;Arial&lt;/strong&gt; no es similar no sólo dependiendo de la resolución ó la [densidad de pixeles del dispositivo][1] del usuario, sino que además dependiendo del &lt;strong&gt;OS&lt;/strong&gt; y del navegador que se está utilizando. Pero esos son factores que no podemos manejar del todo, y sólo resta ofrecer una buena experiencia y &lt;s&gt;rezar&lt;/s&gt; esforzarnos en que lo sea para la gran mayoría de los usuarios de nuestro proyecto web.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;text-rendering&lt;/strong&gt; es una propiedad (aún en &lt;em&gt;&lt;a href=&#34;http://www.w3.org/TR/SVG11/painting.html#TextRenderingProperty&#34; title=&#34;Enlace externo a &amp;quot;The &amp;lsquo;text-rendering&amp;rsquo; property&amp;quot;&#34; target=&#34;_blank&#34;&gt;working draft&lt;/a&gt;&lt;/em&gt;) que mejora la legibilidad de los textos, habilitando por ejemplo el &lt;em&gt;kerning&lt;/em&gt; y las ligaduras en las tipografías que lo permitan. Los valores son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;auto&lt;/strong&gt;: indica que el &lt;em&gt;browser&lt;/em&gt; debe decidir si optimizar o no el texto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;optimizeSpeed&lt;/strong&gt;: el &lt;em&gt;browser&lt;/em&gt; le dará prioridad a la rapidez del renderizado del texto, causando que se cancele el suavizado (&lt;em&gt;anti-aliasing&lt;/em&gt;) de la tipografía.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;optimizeLegibility&lt;/strong&gt;: mejora la legibilidad habilitando el &lt;em&gt;kerning&lt;/em&gt;, suavizado y/o las ligaduras de la tipografía, por sobre la rapidez del renderizado ó su geometría.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;geometricPrecision&lt;/strong&gt; – le da prioridad a la geometría del texto por sobre la rapidez ó legibilidad del texto.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ejemplos&#34;&gt;Ejemplos:&lt;/h3&gt;
&lt;div id=&#34;textrendering_ejemplos&#34;&gt;
  &lt;p class=&#34;con&#34; style=&#34;font-family: Arial, sans-serif; font-weight: bold;&#34;&gt;
    A Esta Hora
  &lt;/p&gt;
  &lt;p class=&#34;sin&#34; style=&#34;font-family: Arial, sans-serif; font-weight: bold;&#34;&gt;
    A Esta Hora
  &lt;/p&gt;
  &lt;p class=&#34;con&#34; style=&#34;font-family: serif; font-weight: bold; text-transform: uppercase;&#34;&gt;
    mi avatar
  &lt;/p&gt;
  &lt;p class=&#34;sin&#34; style=&#34;font-family: serif; font-weight: bold; text-transform: uppercase;&#34;&gt;
    mi avatar
  &lt;/p&gt;
  &lt;p class=&#34;con&#34; style=&#34;font-family: Baskerville, &#39;Times New Roman&#39;, serif;&#34;&gt;
    efficaz &amp; floral
  &lt;/p&gt;
  &lt;p class=&#34;sin&#34; style=&#34;font-family: Baskerville, &#39;Times New Roman&#39;, serif;&#34;&gt;
    efficaz &amp; floral
  &lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Soporte: &lt;strong&gt;Firefox 3+&lt;/strong&gt;, &lt;strong&gt;Safari 5+&lt;/strong&gt;, &lt;strong&gt;Chrome 4+&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&#34;enlaces&#34;&gt;Enlaces:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/SVG11/painting.html#TextRenderingProperty&#34; title=&#34;Enlace externo a &amp;quot;The ‘text-rendering’ property&amp;quot;&#34; target=&#34;_blank&#34;&gt;W3C – The ‘text-rendering’ property&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/es/docs/CSS/text-rendering&#34; title=&#34;Enlace externo a &amp;quot;text-rendering&amp;quot;&#34; target=&#34;_blank&#34;&gt;MDN – text-rendering&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://csslab.cl/curso/mobilewebdev/clase2.html#diseno-densidad&#34;&gt;http://csslab.cl/curso/mobilewebdev/clase2.html#diseno-densidad&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Desarrollo Móvil - Clase 2: densidad de pixeles&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Pointer-Events en CSS3</title>
      <link>https://csslab.cl/2012/07/27/pointer-events-en-css3/</link>
      <pubDate>Fri, 27 Jul 2012 19:59:08 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/07/27/pointer-events-en-css3/</guid>
      <description>&lt;p&gt;Tonteando con una idea que tuve de un &lt;a href=&#34;http://www.andalaosa.cl/labs/smogify/&#34; title=&#34;Enlace externo a &amp;quot;Smogify&amp;quot;&#34; target=&#34;_blank&#34;&gt;bookmarklet&lt;/a&gt; (una analogía gráfica que contamina visualmente un sitio web de la misma manera en que estamos contaminados quienes vivimos en grandes ciudades), tuve una epifanía y pude resolverla. La idea es crear una capa sobre todo el contenido del sitio: un &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; posicionado fijo, ancho y alto 100% y con un gradiente de color &lt;em&gt;smog&lt;/em&gt; a transparente.&lt;/p&gt;</description>
      <content>&lt;p&gt;Tonteando con una idea que tuve de un &lt;a href=&#34;http://www.andalaosa.cl/labs/smogify/&#34; title=&#34;Enlace externo a &amp;quot;Smogify&amp;quot;&#34; target=&#34;_blank&#34;&gt;bookmarklet&lt;/a&gt; (una analogía gráfica que contamina visualmente un sitio web de la misma manera en que estamos contaminados quienes vivimos en grandes ciudades), tuve una epifanía y pude resolverla. La idea es crear una capa sobre todo el contenido del sitio: un &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; posicionado fijo, ancho y alto 100% y con un gradiente de color &lt;em&gt;smog&lt;/em&gt; a transparente.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#smog {
   position: fixed;
   top: 0;
   left: 0;
   width: 100%;
   height: 100%;
   background: -moz-linear-gradient(top, rgba(140,127,86,0.85) 0%, rgba(140,127,86,0.4) 100%);
   background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(140,127,86,0.85)), color-stop(100%,rgba(140,127,86,0.4)));
   background: -webkit-linear-gradient(top, rgba(140,127,86,0.85) 0%,rgba(140,127,86,0.4) 100%);
   background: -o-linear-gradient(top, rgba(140,127,86,0.85) 0%,rgba(140,127,86,0.4) 100%);
   background: -ms-linear-gradient(top, rgba(140,127,86,0.85) 0%,rgba(140,127,86,0.4) 100%);
   background: linear-gradient(top, rgba(140,127,86,0.85) 0%,rgba(140,127,86,0.4) 100%);
   filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=&#34;#d98c7f56&#34;,endcolorstr=&#34;#668c7f56&#34;,gradienttype=&#34;0&#34;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Todo normal, es como si fuera un &lt;em&gt;overlay&lt;/em&gt; de una [ventana modal común y corriente][1], la que tapa todo lo que esté detrás y no deja que interactúes con nada más que el nuevo contenido levantado. Pero mi idea es que esta capa, aunque estuviera sobre, pudieras seguir utilizando el sitio y los enlaces normalmente. Ante esta duda, investigué y &lt;strong&gt;CSS3&lt;/strong&gt; trae una nueva propiedad que hace precisamente esto que necesitaba:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#smog {
   pointer-events: none;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con esta propiedad todos los elementos que estén bajo el nuevo creado, y que estén de alguna manera tapados por el mismo (sea un elementos con &lt;em&gt;background&lt;/em&gt; de color sólido, gradiente ó imagen) podrán ser accedidos (como enlace ó selección).&lt;/p&gt;
&lt;p&gt;[Ver ejemplo][2]{.verejemplo}&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/07/pointerevents.png&#34; alt=&#34;&#34; title=&#34;pointerevents&#34; width=&#34;600&#34; height=&#34;412&#34; class=&#34;aligncenter size-full wp-image-1099&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2012/07/pointerevents.png 600w, http://www.csslab.cl/wp-content/uploads/2012/07/pointerevents-300x206.png 300w, http://www.csslab.cl/wp-content/uploads/2012/07/pointerevents-220x151.png 220w&#34; sizes=&#34;(max-width: 600px) 100vw, 600px&#34; /&gt; 
&lt;p&gt;Su soporte en &lt;em&gt;browsers&lt;/em&gt; modernos es extenso: &lt;strong&gt;Firefox 3.6+, Chrome 4.0+, Safari 3.2+&lt;/strong&gt; y &lt;strong&gt;Android 2.1+&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://caniuse.com/#feat=pointer-events&#34; title=&#34;Enlace externo a &amp;quot;When can I use... Pointer Events&amp;quot;&#34; target=&#34;_blank&#34;&gt;When can I use… Pointer Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.webkit.org/specs/PointerEventsProperty.html&#34; title=&#34;Enlace externo a &amp;quot;The &#39;pointer-events&#39; property&amp;quot;&#34; target=&#34;_blank&#34;&gt;The ‘pointer-events’ property&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://stackoverflow.com/questions/3680429/click-through-a-div-to-underlying-elements&#34; title=&#34;Enlace externo a &amp;quot;Click through a DIV to underlying elements&amp;quot;&#34; target=&#34;_blank&#34;&gt;Click through a DIV to underlying elements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2008/01/30/ventana-modal-solo-con-css/&#34;&gt;http://www.csslab.cl/2008/01/30/ventana-modal-solo-con-css/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Ventana modal sólo con CSS&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/pointerevents.html&#34;&gt;http://www.csslab.cl/ejemplos/pointerevents.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Pointer-Events en CSS3 - Ejemplo&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Backgrounds múltiples en CSS3 y un truco gradual</title>
      <link>https://csslab.cl/2012/06/27/backgrounds-multiples-en-css3-y-un-truco-gradual/</link>
      <pubDate>Wed, 27 Jun 2012 19:14:00 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/06/27/backgrounds-multiples-en-css3-y-un-truco-gradual/</guid>
      <description>&lt;p&gt;Con &lt;strong&gt;CSS3&lt;/strong&gt; el soporte a &lt;em&gt;múltiple background&lt;/em&gt; nos permite ser mucho más creativos al momento de solucionar problemas de estilos, cuando antes sólo dependíamos de crear y anidar etiquetas y cortar esos &lt;strong&gt;gif’s&lt;/strong&gt; y &lt;strong&gt;png’s&lt;/strong&gt; que tanto nos han atormentado.&lt;/p&gt;
&lt;p&gt;La sintaxis para fondos múltiples es bastante intuitiva:&lt;/p&gt;</description>
      <content>&lt;p&gt;Con &lt;strong&gt;CSS3&lt;/strong&gt; el soporte a &lt;em&gt;múltiple background&lt;/em&gt; nos permite ser mucho más creativos al momento de solucionar problemas de estilos, cuando antes sólo dependíamos de crear y anidar etiquetas y cortar esos &lt;strong&gt;gif’s&lt;/strong&gt; y &lt;strong&gt;png’s&lt;/strong&gt; que tanto nos han atormentado.&lt;/p&gt;
&lt;p&gt;La sintaxis para fondos múltiples es bastante intuitiva:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;background: url(&amp;hellip;) top left no-repeat, url(&amp;hellip;) right bottom no-repeat;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Su soporte -a la fecha según &lt;a href=&#34;http://caniuse.com/#feat=multibackgrounds&#34; title=&#34;can I use: multiple background support&#34; target=&#34;_blank&#34;&gt;caniuse.com&lt;/a&gt;– es favorable para los &lt;em&gt;browsers&lt;/em&gt; modernos. Para los que no lo soporten esta declaración será totalmente ignorada, por lo que mi recomendación es que primero definas un &lt;strong&gt;background&lt;/strong&gt; como &lt;em&gt;fallback&lt;/em&gt; y luego escribas los múltiples que necesites.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 1][1]{.verejemplo}&lt;/p&gt;
&lt;h3 id=&#34;fondos-con-gradientes&#34;&gt;Fondos con gradientes&lt;/h3&gt;
&lt;p&gt;Como algunos ya podrán haber probado, con &lt;strong&gt;CSS3&lt;/strong&gt; podemos crear gradientes (lineales o radiales) y tratarlos directamente como imágenes. Su soporte también ya está ampliado y la sintaxis es familiar:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;background-image: -webkit-gradient(linear, 0 top, 0 bottom, from(#f00), to(#f60));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aunque no se han puesto de acuerdo con normalizarla, así es para &lt;em&gt;Firefox&lt;/em&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;background-image: -moz-linear-gradient(90deg, #f00, #f60);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 2][2]{.verejemplo}&lt;/p&gt;
&lt;h3 id=&#34;el-truco&#34;&gt;El truco&lt;/h3&gt;
&lt;p&gt;Necesitaba unir en el fondo del &lt;strong&gt;&lt;body&gt;&lt;/strong&gt; un patrón como imagen en &lt;strong&gt;png&lt;/strong&gt;, con un fondo gradiente radial. Lo que se haría antes sería el fondo gigantesco ya con el gradiente y el patrón, el cual pesaría muchos kilos y lo pondría como fondo del &lt;strong&gt;&lt;body&gt;&lt;/strong&gt; (quizás con [el fondo al 100%][3]), pero ahora la cosa cambió. Como el gradiente para &lt;strong&gt;CSS&lt;/strong&gt; es una imagen, podemos utilizarlo como un &lt;strong&gt;background-image&lt;/strong&gt; más. El código quedó de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;background-color: #141414;
background-image: url(&#39;pattern.png&#39;);
background-image: url(&#39;pattern.png&#39;), -webkit-gradient(linear, 50% 50%, 0, 50% 50%, 500, from(#f00), to(#300));
background-image: url(&#39;pattern.png&#39;), -webkit-linear-gradient(#f00, #300);
background-image: url(&#39;pattern.png&#39;),    -moz-linear-gradient(#f00, #300);
background-image: url(&#39;pattern.png&#39;),    -ms-linear-gradient(r#f00, #300);
background-image: url(&#39;pattern.png&#39;),      -o-linear-gradient(#f00, #300);
background-image: url(&#39;pattern.png&#39;),         linear-gradient(#f00, #300);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 3][4]{.verejemplo}&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://caniuse.com/#feat=multibackground&#34; title=&#34;Enlace externo a &amp;quot;can I use: CSS Multiple Backgrounds&amp;quot;&#34; target=&#34;_blank&#34;&gt;can I use: CSS Multiple Backgrounds&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://caniuse.com/#feat=css-gradients&#34; title=&#34;Enlace externo a &amp;quot;can I use: CSS Gradients&amp;quot;&#34; target=&#34;_blank&#34;&gt;can I use: CSS Gradients&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://snook.ca/archives/html_and_css/multiple-bg-css-gradients&#34; title=&#34;Enlace externo a &amp;quot;Multiple backgrounds and CSS gradient&amp;quot;&#34; target=&#34;_blank&#34;&gt;Multiple backgrounds and CSS gradient&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/multiplebackground/ejemplo1.html&#34;&gt;http://www.csslab.cl/ejemplos/multiplebackground/ejemplo1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 1&amp;quot;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/multiplebackground/ejemplo2.html&#34;&gt;http://www.csslab.cl/ejemplos/multiplebackground/ejemplo2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 2&amp;quot;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2012/03/29/tip-precoz-fondo-al-100-con-css3/&#34;&gt;http://www.csslab.cl/2012/03/29/tip-precoz-fondo-al-100-con-css3/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Tip Precoz: Fondo al 100% con CSS3&amp;quot;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/multiplebackground/ejemplo3.html&#34;&gt;http://www.csslab.cl/ejemplos/multiplebackground/ejemplo3.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 3&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Impresión portarretrato con CSS3</title>
      <link>https://csslab.cl/2012/05/29/impresion-portarretrato-con-css3/</link>
      <pubDate>Tue, 29 May 2012 14:54:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/05/29/impresion-portarretrato-con-css3/</guid>
      <description>&lt;p&gt;Contexto: día de semana laboral, cliente envía sus observaciones:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/05/impresion-portarretrado-css3.png&#34; alt=&#34;CSSLab.cl - Impresión portarretrato con CSS3&#34; title=&#34;impresion-portarretrado-css3&#34; width=&#34;650&#34; height=&#34;400&#34; class=&#34;aligncenter size-full wp-image-1076&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2012/05/impresion-portarretrado-css3.png 650w, http://www.csslab.cl/wp-content/uploads/2012/05/impresion-portarretrado-css3-300x184.png 300w, http://www.csslab.cl/wp-content/uploads/2012/05/impresion-portarretrado-css3-220x135.png 220w&#34; sizes=&#34;(max-width: 650px) 100vw, 650px&#34; /&gt; 
&lt;p&gt;Después de leer un poco, dí con la solución la que presento a continuación. Básicamente con &lt;strong&gt;CSS2&lt;/strong&gt; existió una propiedad que permitía que se definiera el modo de impresión a través de estilos:&lt;/p&gt;</description>
      <content>&lt;p&gt;Contexto: día de semana laboral, cliente envía sus observaciones:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/05/impresion-portarretrado-css3.png&#34; alt=&#34;CSSLab.cl - Impresión portarretrato con CSS3&#34; title=&#34;impresion-portarretrado-css3&#34; width=&#34;650&#34; height=&#34;400&#34; class=&#34;aligncenter size-full wp-image-1076&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2012/05/impresion-portarretrado-css3.png 650w, http://www.csslab.cl/wp-content/uploads/2012/05/impresion-portarretrado-css3-300x184.png 300w, http://www.csslab.cl/wp-content/uploads/2012/05/impresion-portarretrado-css3-220x135.png 220w&#34; sizes=&#34;(max-width: 650px) 100vw, 650px&#34; /&gt; 
&lt;p&gt;Después de leer un poco, dí con la solución la que presento a continuación. Básicamente con &lt;strong&gt;CSS2&lt;/strong&gt; existió una propiedad que permitía que se definiera el modo de impresión a través de estilos:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@Page {
   size: landscape;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 1][1]{.verejemplo}&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/05/ejemplo1.jpg&#34; alt=&#34;CSSLab.cl - Impresión portarretrato con CSS3 - Ejemplo 1&#34; title=&#34;ejemplo1&#34; width=&#34;650&#34; height=&#34;430&#34; class=&#34;aligncenter size-full wp-image-1089&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2012/05/ejemplo1.jpg 650w, http://www.csslab.cl/wp-content/uploads/2012/05/ejemplo1-300x198.jpg 300w, http://www.csslab.cl/wp-content/uploads/2012/05/ejemplo1-220x145.jpg 220w&#34; sizes=&#34;(max-width: 650px) 100vw, 650px&#34; /&gt; 
&lt;p&gt;Como podrán notar este a definición es de comportamiento y no de estilos, por lo que fue desestimada desde &lt;strong&gt;CSS2.1&lt;/strong&gt; y de ahí que sigue en el purgatorio de las propiedades olvidadas (aunque en la actualidad sólo &lt;em&gt;Chrome&lt;/em&gt; lo sigue soportando). Me quedaban 2 soluciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;con algún modo através de &lt;strong&gt;JavaScript&lt;/strong&gt;, ó&lt;/li&gt;
&lt;li&gt;modificar el &lt;em&gt;driver&lt;/em&gt; de cada marca y modelo de impresora y de alguna manera comunicar el &lt;strong&gt;HTML&lt;/strong&gt; con ellas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Continué indagando y finalmente dí con un truco que involucra &lt;strong&gt;CSS3&lt;/strong&gt;. Primero, debes definir el (los) elemento(s) que necesitas imprimir en este modo (en mi caso era sólo una imagen), y darle estilos dentro de un [media=&amp;ldquo;print&amp;rdquo;][2] rotando este(os) elemento(s) aprovechando la impresión vertical pero con el elemento girado:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;style type=&#34;text/css&#34; media=&#34;print&#34;&amp;gt;
   img {
      transform: scale(1.2) rotate(-90deg) translate(-200px, 0);
   }
&amp;lt;/style&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Básicamente, lo que hacemos es con la propiedad &lt;strong&gt;CSS3&lt;/strong&gt; [transform][3] rotar el elemento &lt;strong&gt;-90º&lt;/strong&gt;, lo escalo un poco para que se vea mayor (&lt;strong&gt;1.2&lt;/strong&gt;, opcional) y lo muevo &lt;strong&gt;-200px&lt;/strong&gt; en el eje X para que quede centrado en una hoja tamaño &lt;strong&gt;A4&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 2][4]{.verejemplo}&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/05/ejemplo2.jpg&#34; alt=&#34;CSSLab.cl - Impresión portarretrato con CSS3 - Ejemplo 2&#34; title=&#34;ejemplo1&#34; width=&#34;650&#34; height=&#34;430&#34; class=&#34;aligncenter size-full wp-image-1089&#34; /&gt; 
&lt;p&gt;Funciona perfecto en &lt;strong&gt;IE9+&lt;/strong&gt;, &lt;strong&gt;Chrome&lt;/strong&gt;, &lt;strong&gt;Safari&lt;/strong&gt; (enfin, &lt;em&gt;browsers&lt;/em&gt; modernos). Ya para &lt;strong&gt;IE8-&lt;/strong&gt;, deberás aplicar &amp;lt;a href=&amp;ldquo;&lt;a href=&#34;http://msdn.microsoft.com/en-us/library/ms533014(v=vs.85).aspx%22&#34;&gt;http://msdn.microsoft.com/en-us/library/ms533014(v=vs.85).aspx&amp;quot;&lt;/a&gt; title=&amp;ldquo;Enlace externo a &amp;ldquo;Matrix Filter&amp;rdquo;&amp;rdquo; target=&amp;quot;_blank&amp;rdquo;&amp;gt;filtros de matrices&lt;/a&gt;, los cuales fueron un horrible invento de &lt;em&gt;Microsoft&lt;/em&gt;.&lt;/p&gt;
&lt;p class=&#34;leyenda&#34;&gt;
  ** Omit&amp;iacute; intencionalmente todos las definiciones propietarias &lt;strong&gt;CSS3&lt;/strong&gt; pero en el ejemplo puedes inspeccionar y ver&amp;aacute;s el c&amp;oacute;digo completo.
&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://css-discuss.incutio.com/wiki/Print_Stylesheets#The_.40page_rule_and_forcing_Landscape_orientation&#34; title=&#34;Enlace externo a &amp;quot;Printing Web documents and CSS&amp;quot;&#34; target=&#34;_blank&#34;&gt;Printing Web documents and CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;a href=&amp;ldquo;&lt;a href=&#34;http://www.useragentman.com/IETransformsTranslator/%22&#34;&gt;http://www.useragentman.com/IETransformsTranslator/&amp;quot;&lt;/a&gt; title=&amp;ldquo;Enlace externo a &amp;ldquo;IE&amp;rsquo;s CSS3 Transforms Translator&amp;rdquo;&amp;rdquo; target=&amp;quot;_blank&amp;rdquo;&amp;gt;IE’s CSS3 Transforms Translator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://csslab.cl/ejemplos/landscape/ejemplo1.html&#34;&gt;http://csslab.cl/ejemplos/landscape/ejemplo1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Ejemplo 1 - Impresión portarretrato con CSS3&amp;quot;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2008/06/24/tip-precoz-2-combinando-media/&#34;&gt;http://www.csslab.cl/2008/06/24/tip-precoz-2-combinando-media/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;combinando @media&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2011/01/31/animaciones-y-transformaciones-con-css3/&#34;&gt;http://www.csslab.cl/2011/01/31/animaciones-y-transformaciones-con-css3/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Animaciones y Transformaciones con CSS3&amp;quot;&amp;rdquo;
[4]: &lt;a href=&#34;http://csslab.cl/ejemplos/landscape/ejemplo2.html&#34;&gt;http://csslab.cl/ejemplos/landscape/ejemplo2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Ejemplo 2 - Impresión portarretrato con CSS3&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Aceleración por hardware con CSS3</title>
      <link>https://csslab.cl/2012/05/17/aceleracion-por-hardware-con-css3/</link>
      <pubDate>Thu, 17 May 2012 21:25:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/05/17/aceleracion-por-hardware-con-css3/</guid>
      <description>&lt;p&gt;La mayoría de los &lt;em&gt;browsers&lt;/em&gt; modernos (&lt;strong&gt;Chome 10+,&lt;/strong&gt; &lt;strong&gt;Firefox 4+&lt;/strong&gt;) usan la tarjeta gráfica para ayudar a las animaciones que son más difíciles de renderizar (&lt;strong&gt;WebGL&lt;/strong&gt; hace uso por defecto de esta memoria, por eso corre tan bien en computadores capaces).&lt;/p&gt;
&lt;p&gt;Si estás haciendo [animaciones y transformaciones varias utilizando CSS3][1], existe un truco para engañar al &lt;em&gt;browser&lt;/em&gt; y forzar a que utilice el &lt;strong&gt;GPU&lt;/strong&gt; para realizar las animaciones. Basta con que declares la siguiente propiedad y valor (si no la estás utilizando):&lt;/p&gt;</description>
      <content>&lt;p&gt;La mayoría de los &lt;em&gt;browsers&lt;/em&gt; modernos (&lt;strong&gt;Chome 10+,&lt;/strong&gt; &lt;strong&gt;Firefox 4+&lt;/strong&gt;) usan la tarjeta gráfica para ayudar a las animaciones que son más difíciles de renderizar (&lt;strong&gt;WebGL&lt;/strong&gt; hace uso por defecto de esta memoria, por eso corre tan bien en computadores capaces).&lt;/p&gt;
&lt;p&gt;Si estás haciendo [animaciones y transformaciones varias utilizando CSS3][1], existe un truco para engañar al &lt;em&gt;browser&lt;/em&gt; y forzar a que utilice el &lt;strong&gt;GPU&lt;/strong&gt; para realizar las animaciones. Basta con que declares la siguiente propiedad y valor (si no la estás utilizando):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;-webkit-transform: translateZ(0);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si ya la estabas utilizando sigue con lo que tenías, que la &lt;strong&gt;GPU&lt;/strong&gt; se encargará de hacer el mejor trabajo posible con tu animación.&lt;/p&gt;
&lt;p class=&#34;atencion&#34;&gt;
  &amp;#10086;&lt;br /&gt;Nota: no creas que hace milagros; no hay garant&amp;iacute;a de que mejore notablemente la performance. Con esto simplemente activar&amp;aacute;s la memoria gr&amp;aacute;fica, por ende utilizar&amp;aacute;s m&amp;aacute;s bater&amp;iacute;a si est&amp;aacute;s en un m&amp;oacute;vil/tablet/laptop.&lt;br /&gt;&amp;#10086;
&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2011/01/31/animaciones-y-transformaciones-con-css3/&#34;&gt;http://www.csslab.cl/2011/01/31/animaciones-y-transformaciones-con-css3/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Animaciones y Transformaciones con CSS3&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Desarrollo Móvil: mini-curso y slides</title>
      <link>https://csslab.cl/2012/04/19/desarrollo-movil-mini-curso-y-slides/</link>
      <pubDate>Thu, 19 Apr 2012 18:41:30 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/04/19/desarrollo-movil-mini-curso-y-slides/</guid>
      <description>&lt;p&gt;Hace unas semanas impartí un mini-curso teórico sobre &lt;strong&gt;diseño y desarrollo web para dispositivos móviles&lt;/strong&gt;. El resultado fueron 3 días de &lt;em&gt;slides&lt;/em&gt;, charla y demostraciones, las que comparto en esta ocasión para que pueda ser escuchada, analizada y criticada abiertamente.&lt;/p&gt;</description>
      <content>&lt;p&gt;Hace unas semanas impartí un mini-curso teórico sobre &lt;strong&gt;diseño y desarrollo web para dispositivos móviles&lt;/strong&gt;. El resultado fueron 3 días de &lt;em&gt;slides&lt;/em&gt;, charla y demostraciones, las que comparto en esta ocasión para que pueda ser escuchada, analizada y criticada abiertamente.&lt;/p&gt;
&lt;p&gt;Como valor agregado, posterior al curso volví a grabar (tratando de recordar lo dicho en esos momentos) y disponibilizo los slides con audio y auto-navegación, es decir, en la parte superior de cada slide encontrarán un player de &lt;strong&gt;&lt;video&gt;&lt;/strong&gt; con el cual pueden hacer &lt;em&gt;play&lt;/em&gt; y escuchar mi monótona voz mientras se cruzan de brazos, conectan audífonos y ven como pasan los slides uno a uno, sincronizados con lo que se va mencionando. Con audio cada clase no son más de 20 minutos.&lt;/p&gt;
&lt;p class=&#34;atencion&#34;&gt;
  &lt;strong&gt;Advertencia:&lt;/strong&gt;&lt;br /&gt;La grabación hecha en cada uno de los 3 slides fueron en una misma sesión y al estilo de conversación, no de charla.&lt;br /&gt;Imagínense que estamos en un bar conversando y me preguntan sobre mobile y y les voy contando todo lo que sé y deberían saben.&lt;br /&gt;Eso.
&lt;/p&gt;
&lt;p&gt;Si no les interesa escucharme, ignoren el &lt;em&gt;player&lt;/em&gt; y denle con las flechas. En todo caso el audio pueden pararlo y adelantarlo si quieren, el &lt;em&gt;slide&lt;/em&gt; correspondiente se reubicará donde debería estar.&lt;/p&gt;
&lt;h4 id=&#34;clase-1-introducción-al-desarrollo-móvil&#34;&gt;Clase 1: Introducción al desarrollo móvil&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Roadmap&lt;/li&gt;
&lt;li&gt;Herramientas&lt;/li&gt;
&lt;li&gt;Dispositivos / Browsers&lt;/li&gt;
&lt;li&gt;Códigos base&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[Ver Clase 1][1]{.bajar}&lt;/p&gt;
&lt;h4 id=&#34;clase-2-diseño-orientado-al-móvil&#34;&gt;Clase 2: Diseño orientado al móvil&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Resoluciones y Tamaños&lt;/li&gt;
&lt;li&gt;Densidad de pixeles&lt;/li&gt;
&lt;li&gt;Qué evitar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[Ver Clase 2][2]{.bajar}&lt;/p&gt;
&lt;h4 id=&#34;clase-3-desarrollo-orientado-al-móvil&#34;&gt;Clase 3: Desarrollo orientado al móvil&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Detección&lt;/li&gt;
&lt;li&gt;Was ist Modernizr&lt;/li&gt;
&lt;li&gt;Sitio dedicado v/s sitio responsivo&lt;/li&gt;
&lt;li&gt;Media queries&lt;/li&gt;
&lt;li&gt;HTML/CSS&lt;/li&gt;
&lt;li&gt;Javascript&lt;/li&gt;
&lt;li&gt;Herramientas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[Ver Clase 3][3]{.bajar}&lt;/p&gt;
&lt;h4 id=&#34;recomendaciones&#34;&gt;Recomendaciones:&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;El uso de un &lt;em&gt;browser&lt;/em&gt; moderno (duh!) como &lt;strong&gt;Chrome/Safari&lt;/strong&gt; ó Firefox 9+&lt;/li&gt;
&lt;li&gt;Si vas a escuchar el audio, súbele el volumen y ponte audífonos.&lt;/li&gt;
&lt;li&gt;Comentarios sobre el contenido son bienvenidos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&#34;https://speakerdeck.com/csslab/clase-1-introduccion-al-desarrollo-movil&#34; target=&#34;_blank&#34;&gt;Clase 1&lt;/a&gt;, &lt;a href=&#34;https://speakerdeck.com/csslab/clase-2-diseno-orientado-al-movil&#34; target=&#34;_blank&#34;&gt;clase 2&lt;/a&gt; y &lt;a href=&#34;https://speakerdeck.com/csslab/clase-3-desarrollo-orientado-al-movil&#34; target=&#34;_blank&#34;&gt;clase 3&lt;/a&gt; en &lt;em&gt;Speakerdeck&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/curso/mobilewebdev/clase1.html&#34;&gt;http://www.csslab.cl/ejemplos/curso/mobilewebdev/clase1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;1. Introducción al desarrollo móvil&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/curso/mobilewebdev/clase2.html&#34;&gt;http://www.csslab.cl/ejemplos/curso/mobilewebdev/clase2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;2. Diseño orientado al móvil&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/curso/mobilewebdev/clase3.html&#34;&gt;http://www.csslab.cl/ejemplos/curso/mobilewebdev/clase3.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;3. Desarrollo orientado al móvil&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Experimento: rotación oblícua con CSS3</title>
      <link>https://csslab.cl/2012/04/17/experimento-rotacion-oblicua-con-css3/</link>
      <pubDate>Tue, 17 Apr 2012 15:29:11 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/04/17/experimento-rotacion-oblicua-con-css3/</guid>
      <description>&lt;p&gt;Sólo quería probar cómo a partir de un elemento-caja, lograba girarlo 45º y rotarlo al mismo tiempo. No sé qué uso práctico pueda tener, pero dejo el código resumido para que lo estudien ya que no fue fácil (todo lo que sean sombras, gradientes lo pueden ver en el &lt;em&gt;source&lt;/em&gt; del ejemplo final).&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;HTML&lt;/strong&gt; es una imagen común y corriente:&lt;/p&gt;</description>
      <content>&lt;p&gt;Sólo quería probar cómo a partir de un elemento-caja, lograba girarlo 45º y rotarlo al mismo tiempo. No sé qué uso práctico pueda tener, pero dejo el código resumido para que lo estudien ya que no fue fácil (todo lo que sean sombras, gradientes lo pueden ver en el &lt;em&gt;source&lt;/em&gt; del ejemplo final).&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;HTML&lt;/strong&gt; es una imagen común y corriente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;img src=&#34;http://www.be-studios.com/tests/foto_diegol.jpg&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pero la magia está en la [animación con &lt;strong&gt;CSS3&lt;/strong&gt;][1]:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@-webkit-keyframes girando {
   0%   { transform: rotate(45deg) rotate3d(1,1,0,0deg);   }
   25%  { transform: rotate(45deg) rotate3d(1,1,0,90deg);  }
   50%  { transform: rotate(45deg) rotate3d(1,1,0,180deg); }
   75%  { transform: rotate(45deg) rotate3d(1,1,0,270deg); }
   100% { transform: rotate(45deg) rotate3d(1,1,0,360deg); }
}
   img {
      position: absolute;
      top: 20%;
      left: 30%;
      animation: girando linear infinite 2s;
      transform-style: preserve-3d;
   }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://dabblet.com/gist/2406119&#34; class=&#34;dabblet&#34; title=&#34;Enlace externo a &amp;quot;Dabblet&amp;quot;&#34; target=&#34;_blank&#34;&gt;Ver Gist en Dabblet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Adelante, puedes ver cómo funciona en tu celular ⬇&lt;/p&gt;
&lt;div id=&#34;qrcode&#34;&gt;
&lt;/div&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3schools.com/css3/css3_3dtransforms.asp&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;CSS3 3D Transforms&amp;quot;&#34;&gt;CSS3 3D Transforms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.eleqtriq.com/2010/05/understanding-css-3d-transforms/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Understanding CSS 3D Transforms&amp;quot;&#34;&gt;Understanding CSS 3D Transforms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.webkit.org/blog/386/3d-transforms/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;3D Transforms&amp;quot;&#34;&gt;3D Transforms&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2011/06/21/animaciones-css3-avanzadas/&#34;&gt;http://www.csslab.cl/2011/06/21/animaciones-css3-avanzadas/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Animaciones CSS3 avanzadas&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/css3rotacionoblicua/&#34;&gt;http://www.csslab.cl/ejemplos/css3rotacionoblicua/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo rotación oblícua con CSS3&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Tip Precoz: obtener valor numérico con JavaScript</title>
      <link>https://csslab.cl/2012/04/11/tip-precoz-obtener-valor-numerico-con-javascript/</link>
      <pubDate>Wed, 11 Apr 2012 15:56:57 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/04/11/tip-precoz-obtener-valor-numerico-con-javascript/</guid>
      <description>&lt;p&gt;Con [jQuery][1] constantemente necesitamos crear variables para tomar valores &lt;strong&gt;CSS&lt;/strong&gt; de elementos, para luego construir nuevos elementos o interacciones; constantemente lo hago en plugins cono [Timelinr][2] o [Blox][3]!, pero &lt;strong&gt;JavaScript&lt;/strong&gt; nos ofrece un método más rápido que el andar haciendo &lt;strong&gt;slices&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Desde el siguiente ejemplo, tomaremos la el valor &lt;strong&gt;CSS&lt;/strong&gt; de &lt;strong&gt;margin-top&lt;/strong&gt; del buscador de este mismo sitio; normalmente lo haríamos de esta manera:&lt;/p&gt;</description>
      <content>&lt;p&gt;Con [jQuery][1] constantemente necesitamos crear variables para tomar valores &lt;strong&gt;CSS&lt;/strong&gt; de elementos, para luego construir nuevos elementos o interacciones; constantemente lo hago en plugins cono [Timelinr][2] o [Blox][3]!, pero &lt;strong&gt;JavaScript&lt;/strong&gt; nos ofrece un método más rápido que el andar haciendo &lt;strong&gt;slices&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Desde el siguiente ejemplo, tomaremos la el valor &lt;strong&gt;CSS&lt;/strong&gt; de &lt;strong&gt;margin-top&lt;/strong&gt; del buscador de este mismo sitio; normalmente lo haríamos de esta manera:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;var marginT = $(&#39;#search_container&#39;).css(&#39;margin-top&#39;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;#&#34; class=&#34;verejemplo&#34; onclick=&#34;ejemplo1(); return false;&#34;&gt;Click para ver ejemplo 1&lt;/a&gt;&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/04/Screen-Shot-2012-04-11-at-12.39.01.png&#34; alt=&#34;Ejemplo1: obtener valor numérico con JavaScript&#34; width=&#34;534&#34; height=&#34;267&#34; class=&#34;aligncenter size-full wp-image-1034&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2012/04/Screen-Shot-2012-04-11-at-12.39.01.png 534w, http://www.csslab.cl/wp-content/uploads/2012/04/Screen-Shot-2012-04-11-at-12.39.01-300x150.png 300w, http://www.csslab.cl/wp-content/uploads/2012/04/Screen-Shot-2012-04-11-at-12.39.01-220x110.png 220w&#34; sizes=&#34;(max-width: 534px) 100vw, 534px&#34; /&gt; 
&lt;p&gt;El valor entregado efectivamente es el correcto: &lt;strong&gt;10px&lt;/strong&gt; pero lo necesitamos numérico. Para ello utilizamos &lt;a href=&#34;http://w3schools.com/jsref/jsref_replace.asp&#34; title=&#34;Enlace externo a &amp;quot;JavaScript replace()&amp;quot;&#34; target=&#34;_blank&#34;&gt;replace()&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;var marginT = $(&#39;#search_container&#39;).css(&#39;margin-top&#39;).replace(&#39;px&#39;,&#39;&#39;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;javascript:void(0)&#34; class=&#34;verejemplo&#34; onclick=&#34;ejemplo2();&#34;&gt;Click para ver ejemplo 2&lt;/a&gt;&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/04/Screen-Shot-2012-04-11-at-12.46.39.png&#34; alt=&#34;Ejemplo2: obtener valor numérico con JavaScript&#34; width=&#34;534&#34; height=&#34;267&#34; class=&#34;aligncenter size-full wp-image-1035&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2012/04/Screen-Shot-2012-04-11-at-12.46.39.png 534w, http://www.csslab.cl/wp-content/uploads/2012/04/Screen-Shot-2012-04-11-at-12.46.39-300x150.png 300w, http://www.csslab.cl/wp-content/uploads/2012/04/Screen-Shot-2012-04-11-at-12.46.39-220x110.png 220w&#34; sizes=&#34;(max-width: 534px) 100vw, 534px&#34; /&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/tag/jquery/&#34;&gt;http://www.csslab.cl/tag/jquery/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;jQuery&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2011/08/18/jquery-timelinr/&#34;&gt;http://www.csslab.cl/2011/08/18/jquery-timelinr/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;jQuery Timelinr&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2009/05/25/jquery-blox/&#34;&gt;http://www.csslab.cl/2009/05/25/jquery-blox/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Blox!&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Tip Precoz: Background al 100% con CSS3</title>
      <link>https://csslab.cl/2012/03/29/tip-precoz-background-al-100-con-css3/</link>
      <pubDate>Thu, 29 Mar 2012 17:58:31 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/03/29/tip-precoz-background-al-100-con-css3/</guid>
      <description>&lt;p&gt;Entramos en una era donde cada vez más podemos aprovechar las bondades de &lt;strong&gt;CSS3&lt;/strong&gt; sin tener que parchar funcionalidad con &lt;em&gt;scripts&lt;/em&gt; y &lt;em&gt;plugins&lt;/em&gt; de &lt;strong&gt;JavaScript&lt;/strong&gt;. En esta ocasión, utilizaremos una propiedad &lt;strong&gt;CSS3&lt;/strong&gt; para hacer que una imagen de fondo cubra el 100% de la ventana, escalándose hasta adaptarse. Afortunadamente los &lt;em&gt;browsers&lt;/em&gt; están aplicando suavizado a los elementos por defecto, y en general la imagen no debería de verse (muy) pixelada (si está en una resolución decente y bien optimizada, claro).&lt;/p&gt;</description>
      <content>&lt;p&gt;Entramos en una era donde cada vez más podemos aprovechar las bondades de &lt;strong&gt;CSS3&lt;/strong&gt; sin tener que parchar funcionalidad con &lt;em&gt;scripts&lt;/em&gt; y &lt;em&gt;plugins&lt;/em&gt; de &lt;strong&gt;JavaScript&lt;/strong&gt;. En esta ocasión, utilizaremos una propiedad &lt;strong&gt;CSS3&lt;/strong&gt; para hacer que una imagen de fondo cubra el 100% de la ventana, escalándose hasta adaptarse. Afortunadamente los &lt;em&gt;browsers&lt;/em&gt; están aplicando suavizado a los elementos por defecto, y en general la imagen no debería de verse (muy) pixelada (si está en una resolución decente y bien optimizada, claro).&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;background-size: cover;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta propiedad (anexa) de &lt;strong&gt;background&lt;/strong&gt; permite hacer lo que necesitamos. Lamentablemente estamos en una etapa en que los estándares y quienes los implementan no se ponen del todo de acuerdo y debemos utilizar esos molestosos prefijos, pero fuera de eso funciona de maravilla.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;body {
   background: url(&#39;../img/thai.jpg&#39;) center center no-repeat;
   -webkit-background-size: cover;
   -moz-background-size: cover;
   background-size: cover;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Soporte: &lt;strong&gt;Safari, Chrome, Firefox 3.6+, IE9+, Opera10+&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/poster/&#34;&gt;http://www.csslab.cl/ejemplos/poster/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo fondo al 100% con CSS3&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Review 7: 100 Things Every Designer Needs to Know About People</title>
      <link>https://csslab.cl/2012/03/21/review-7-100-things-every-designer-needs-to-know-about-people/</link>
      <pubDate>Wed, 21 Mar 2012 15:35:28 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/03/21/review-7-100-things-every-designer-needs-to-know-about-people/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2012/03/libro1.jpg&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/03/libro1-238x300.jpg&#34; alt=&#34;&#34; title=&#34;libro1&#34; width=&#34;238&#34; height=&#34;300&#34; class=&#34;alignright size-medium wp-image-1006&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2012/03/libro1-238x300.jpg 238w, http://www.csslab.cl/wp-content/uploads/2012/03/libro1-220x277.jpg 220w, http://www.csslab.cl/wp-content/uploads/2012/03/libro1.jpg 600w&#34; sizes=&#34;(max-width: 238px) 100vw, 238px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;100 Things Every Designer Needs to Know About People&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Susan M Weinschenk, Ph.D.&lt;br&gt;
Edición 1, ISBN-10: 0321767535 | ISBN-13: 978-0321767530&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Antes que todo y primero que nada, este libro fue un préstamo de un amigo quien gentilmente me recomendó leerlo. Sus palabras fueron (creo): &amp;ldquo;lo compré en &lt;em&gt;Amazon&lt;/em&gt; y es interesante&amp;rdquo;. Suficiente en ese entonces para darle una oportunidad.&lt;/p&gt;</description>
      <content>&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2012/03/libro1.jpg&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/03/libro1-238x300.jpg&#34; alt=&#34;&#34; title=&#34;libro1&#34; width=&#34;238&#34; height=&#34;300&#34; class=&#34;alignright size-medium wp-image-1006&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2012/03/libro1-238x300.jpg 238w, http://www.csslab.cl/wp-content/uploads/2012/03/libro1-220x277.jpg 220w, http://www.csslab.cl/wp-content/uploads/2012/03/libro1.jpg 600w&#34; sizes=&#34;(max-width: 238px) 100vw, 238px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;100 Things Every Designer Needs to Know About People&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Susan M Weinschenk, Ph.D.&lt;br&gt;
Edición 1, ISBN-10: 0321767535 | ISBN-13: 978-0321767530&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Antes que todo y primero que nada, este libro fue un préstamo de un amigo quien gentilmente me recomendó leerlo. Sus palabras fueron (creo): &amp;ldquo;lo compré en &lt;em&gt;Amazon&lt;/em&gt; y es interesante&amp;rdquo;. Suficiente en ese entonces para darle una oportunidad.&lt;/p&gt;
&lt;p&gt;Segundo: un libro que tiene en su cubierta el nombre del autor con su grado académico no me impresiona para nada, más aún si el tema involucra diseño gráfico o desarrollo web.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;&lt;strong&gt;100 Things…&lt;/strong&gt;&amp;rdquo; terminó siendo un libro interesante de leer, pero si estuviera aún en la Universidad. Trata sobre el estudio de &lt;strong&gt;Susan&lt;/strong&gt; (psicóloga, se nota) sobre el comportamiento del usuario frente a diferentes estímulos que existen cuando se encuentra con un sitio web. Para ser exactos, son 100 hechos que se consideran y que son avalados por estudios sobre el comportamiento del usuario.&lt;/p&gt;
&lt;p&gt;Lo bueno es que está bastante resumido. Lo malo, es que es muy superficial y fácil de leer. Personalmente me gustan lecturas algo más complejas y que me permitan trabajar más el cerebro, pero en este libro &lt;strong&gt;Susan&lt;/strong&gt; no deja mucho a la imaginación y entrega todo lo que tiene, muy simple y resumido. Cuando menciona estudios hechos por investigadores, no agrega las fuentes utilizadas (no hay ningún pié de página) pero al final del libro están todas las referencias utilizadas, por si alguien se asoma a consultarlos. Aún más, trabaja tan bien cada una de las 100 ideas (y las separa por temas: Como ven, leen, recuerdan, piensa, decide, etc.) que deja un resumen de lo que el lector debe recordar (&lt;em&gt;Takeaways&lt;/em&gt;), algo así como ‘si no quieres seguir leyendo quédate con el resumen’.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2012/03/libro2.jpg&#34; alt=&#34;Review en CSSLab.cl: 100 Things Every Designer Needs to Know About People&#34;&gt;&lt;/p&gt;
&lt;p&gt;Finalizando, &amp;ldquo;&lt;strong&gt;100 Things…&lt;/strong&gt;&amp;rdquo; es un libro muy bueno para ser leído por un universitario o quien esté en una etapa de aprendizaje, es fundamental para que se conozcan los estudios y conclusiones hechas en base al comportamiento del usuario. Pero para un profesional que ya tiene bagage, si no conoce 90 de las 100 es que está mal enfocado (he conocido a muchos que le hacen falta un repaso por este libro en todo caso).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La guinda de la torta: ¡Publicidad! ¡En un Libro! Primera vez que lo veo, no me dejo de impresionar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2012/03/libro3.jpg&#34; alt=&#34;Review en CSSLab.cl: 100 Things Every Designer Needs to Know About People&#34;&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 42</title>
      <link>https://csslab.cl/2012/03/08/lo-vi-y-me-gusto-42/</link>
      <pubDate>Thu, 08 Mar 2012 21:12:47 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/03/08/lo-vi-y-me-gusto-42/</guid>
      <description>#42 – 8 marzo 2012</description>
      <content>&lt;p&gt;#42 – 8 marzo 2012&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://metiendoruido.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/03/metiendoruido.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://coleure.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/03/coleure.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://bookwriteronline.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/03/bookwriteronline.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.dd3web.com.ar/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/03/dd3web.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Estilos alternados con CSS3, jQuery y Mootools</title>
      <link>https://csslab.cl/2012/02/13/estilos-alternados-con-css3-jquery-y-mootools/</link>
      <pubDate>Mon, 13 Feb 2012 15:44:16 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/02/13/estilos-alternados-con-css3-jquery-y-mootools/</guid>
      <description>&lt;p&gt;Este será un artículo corto y preciso: cómo alternar estilos dentro de un mismo elemento utilizando 3 técnicas diferentes.&lt;/p&gt;
&lt;p&gt;Con el siguiente &lt;strong&gt;HTML&lt;/strong&gt; de ejemplo:&lt;/p&gt;</description>
      <content>&lt;p&gt;Este será un artículo corto y preciso: cómo alternar estilos dentro de un mismo elemento utilizando 3 técnicas diferentes.&lt;/p&gt;
&lt;p&gt;Con el siguiente &lt;strong&gt;HTML&lt;/strong&gt; de ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;ul&amp;gt;
   &amp;lt;li&amp;gt;Elemento Uno&amp;lt;/li&amp;gt;
   &amp;lt;li&amp;gt;Elemento Dos&amp;lt;/li&amp;gt;
   &amp;lt;li&amp;gt;Elemento Tres&amp;lt;/li&amp;gt;
   &amp;lt;li&amp;gt;Elemento Cuatro&amp;lt;/li&amp;gt;
   &amp;lt;li&amp;gt;Elemento Cinco&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;css3&#34;&gt;CSS3&lt;/h4&gt;
&lt;p&gt;Comencemos con la más vanguardista: con &lt;strong&gt;CSS3&lt;/strong&gt;, a cada elemento impar (&lt;em&gt;odd&lt;/em&gt;) agrégale el estilo definido:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;ul li:nth-child(odd) {
   background-color: #999;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Si quieres los elementos pares, basta cambiar &lt;em&gt;odd&lt;/em&gt; por &lt;em&gt;even&lt;/em&gt;.&lt;/p&gt;
&lt;h4 id=&#34;jquery&#34;&gt;jQuery&lt;/h4&gt;
&lt;p&gt;Sigamos con el popular &lt;strong&gt;jQuery&lt;/strong&gt;: cómo lograr estilos intercalados para elementos dependientes de uno padre:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(&#34;ul li:odd&#34;).addClass(&#34;impar&#34;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Teniendo en el &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;.impar {
   background-color: #999;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][2]{.verejemplo}&lt;/p&gt;
&lt;h4 id=&#34;mootools&#34;&gt;Mootools&lt;/h4&gt;
&lt;p&gt;Terminemos con el poderoso &lt;strong&gt;Mootools&lt;/strong&gt;, mismo &lt;strong&gt;CSS&lt;/strong&gt; anterior:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$$(&#34;ul li&#34;).each(function(el, count) {
   el.addClass(count % 2 == 0 ? &#39;&#39; : &#39;impar&#39;);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][3]{.verejemplo}&lt;/p&gt;
&lt;p class=&#34;leyenda&#34;&gt;
  * Si te fijaste, tanto &lt;strong&gt;jQuery&lt;/strong&gt; como &lt;strong&gt;Mootools&lt;/strong&gt; no coinciden en el zebra con el m&amp;eacute;todo con &lt;strong&gt;CSS3&lt;/strong&gt; porque manipula los elementos con &lt;strong&gt;Javascript&lt;/strong&gt; y los interpreta como un &lt;em&gt;array&lt;/em&gt;, el que tiene un &amp;iacute;ndice de 0 y a partir de ah&amp;iacute; comienza a contar hacia adelante. En el fondo no es realmente &lt;em&gt;&amp;#8216;impar&amp;#8217;&lt;/em&gt; o &lt;em&gt;&amp;#8216;par&amp;#8217;&lt;/em&gt;, ten en cuenta que lo importante es la alternancia en los elementos.
&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/zebra/ejemplo_css3.html&#34;&gt;http://www.csslab.cl/ejemplos/zebra/ejemplo_css3.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Ejemplo CSS3 estilos alternados&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/zebra/ejemplo_jquery.html&#34;&gt;http://www.csslab.cl/ejemplos/zebra/ejemplo_jquery.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Ejemplo jQuery estilos alternados&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/zebra/ejemplo_mootools.html&#34;&gt;http://www.csslab.cl/ejemplos/zebra/ejemplo_mootools.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Ejemplo Mootools estilos alternados&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Nuevos cursores con CSS3</title>
      <link>https://csslab.cl/2012/01/11/nuevos-cursores-con-css3/</link>
      <pubDate>Wed, 11 Jan 2012 14:46:45 +0000</pubDate>
      
      <guid>https://csslab.cl/2012/01/11/nuevos-cursores-con-css3/</guid>
      <description>&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/01/handcursor.png&#34; alt=&#34;&#34; title=&#34;handcursor&#34; width=&#34;140&#34; height=&#34;138&#34; class=&#34;alignright size-full wp-image-934&#34; /&gt;
&lt;p&gt;El &lt;strong&gt;cursor&lt;/strong&gt; del &lt;em&gt;mouse&lt;/em&gt; es un elemento muy poco considerado en el momento del diseño ó al aplicar estilos &lt;strong&gt;CSS&lt;/strong&gt;. Pero la verdad es que es un complemento importantísimo de la accesibilidad y usabilidad, y por esa razón fue considerado en el momento de crearse tantos valores para esta propiedad.&lt;/p&gt;
&lt;p&gt;Su uso es muy fácil y es aplicable no sólo a la &lt;strong&gt;pseudo-class&lt;/strong&gt; &lt;strong&gt;:hover&lt;/strong&gt;, sino que a cualquier etiqueta &lt;strong&gt;HTML&lt;/strong&gt;:&lt;/p&gt;</description>
      <content>&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2012/01/handcursor.png&#34; alt=&#34;&#34; title=&#34;handcursor&#34; width=&#34;140&#34; height=&#34;138&#34; class=&#34;alignright size-full wp-image-934&#34; /&gt;
&lt;p&gt;El &lt;strong&gt;cursor&lt;/strong&gt; del &lt;em&gt;mouse&lt;/em&gt; es un elemento muy poco considerado en el momento del diseño ó al aplicar estilos &lt;strong&gt;CSS&lt;/strong&gt;. Pero la verdad es que es un complemento importantísimo de la accesibilidad y usabilidad, y por esa razón fue considerado en el momento de crearse tantos valores para esta propiedad.&lt;/p&gt;
&lt;p&gt;Su uso es muy fácil y es aplicable no sólo a la &lt;strong&gt;pseudo-class&lt;/strong&gt; &lt;strong&gt;:hover&lt;/strong&gt;, sino que a cualquier etiqueta &lt;strong&gt;HTML&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34; style=&#34;cursor: help; font-weight: bold;&#34;&gt;&amp;lt;strong style=&#34;cursor: help;&#34;&amp;gt;&amp;iexcl;Ayuda!&amp;lt;/strong&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lamentablemente la visualización de cada tipo de &lt;strong&gt;cursor&lt;/strong&gt; depende del sistema operativo del usuario, y la capacidad de visualizarlo depende del &lt;em&gt;browser&lt;/em&gt; que esté utilizando.&lt;/p&gt;
&lt;p&gt;A continuación nombro todas las variedades y al final una página de ejemplo con todos ellos aplicados para que tengan al &lt;strong&gt;cursor&lt;/strong&gt; considerado en su próximo proyecto:&lt;/p&gt;
&lt;h3 id=&#34;css2&#34;&gt;CSS2:&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;cursor: auto;
cursor: inherit;
cursor: crosshair;
cursor: default;
cursor: help;
cursor: move;
cursor: pointer;
cursor: progress;
cursor: text;
cursor: wait;
cursor: e-resize;
cursor: ne-resize;
cursor: nw-resize;
cursor: n-resize;
cursor: se-resize;
cursor: sw-resize;
cursor: s-resize;
cursor: w-resize;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;css3-smallfuncionan-en-los-browsers-modernos-ie9-ff-35-chrome-safari-opera-9small&#34;&gt;CSS3 &lt;small&gt;(funcionan en los browsers modernos (IE9+, FF 3.5+, Chrome, Safari, Opera 9+)&lt;/small&gt;:&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;cursor: none;
cursor: context-menu;
cursor: cell;
cursor: vertical-text;
cursor: alias;
cursor: copy;
cursor: no-drop;
cursor: not-allowed;
cursor: ew-resize;
cursor: ns-resize;
cursor: nesw-resize;
cursor: nwse-resize;
cursor: col-resize;
cursor: row-resize;
cursor: all-scroll;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;propietarios-smallfirefox-y-chromesafarismall&#34;&gt;Propietarios &lt;small&gt;(Firefox y Chrome/Safari)&lt;/small&gt;:&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;cursor: -webkit-grab;
cursor: -moz-grab;
cursor: -webkit-grabbing;
cursor: -moz-grabbing;
cursor: -webkit-zoom-in;
cursor: -moz-zoom-in;
cursor: -webkit-zoom-out;
cursor: -moz-zoom-out;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;tu-propio-cursor&#34;&gt;Tu propio cursor:&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;cursor: url(images/cursor.cur);
cursor: url(images/cursor.png), default;&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&#34;leyenda&#34; style=&#34;text-align: left;&#34;&gt;
  * para mejor fallback despu&amp;eacute;s del url() utiliza algunos de los cursores CSS2&lt;br /&gt; * Para Firefox y Chrome/Safari utiliza un PNG transparente.&lt;br /&gt; * IE require que sea un archive .cur&lt;br /&gt; * Opera no lo soporta
&lt;/p&gt;
&lt;p&gt;[Ver cursores][1]{.verejemplo}&lt;/p&gt;
&lt;h4 id=&#34;link&#34;&gt;Link:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.sitepoint.com/css3-cursor-styles/&#34; title=&#34;Enlace externo a &amp;quot;Introducing the New Cursor Styles in CSS3 - SitePoint&amp;quot;&#34; target=&#34;_blank&#34;&gt;Introducing the New Cursor Styles in CSS3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/cursor/&#34;&gt;http://www.csslab.cl/ejemplos/cursor/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Nuevos cursores con CSS3&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Construir para Retina Display</title>
      <link>https://csslab.cl/2011/12/15/construir-para-retina-display/</link>
      <pubDate>Thu, 15 Dec 2011 18:45:01 +0000</pubDate>
      
      <guid>https://csslab.cl/2011/12/15/construir-para-retina-display/</guid>
      <description>&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/12/retina.jpg&#34; alt=&#34;&#34; title=&#34;retina&#34; width=&#34;350&#34; height=&#34;525&#34; class=&#34;alignright size-full wp-image-915&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2011/12/retina.jpg 350w, http://www.csslab.cl/wp-content/uploads/2011/12/retina-200x300.jpg 200w, http://www.csslab.cl/wp-content/uploads/2011/12/retina-220x330.jpg 220w&#34; sizes=&#34;(max-width: 350px) 100vw, 350px&#34; /&gt;
&lt;p&gt;Desde la salida del &lt;a href=&#34;http://www.apple.com/iphone/features/retina-display.html&#34; title=&#34;Enlace externo a &amp;quot;iPhone Retina Display&amp;quot;&#34; target=&#34;_blank&#34;&gt;Retina Display&lt;/a&gt;, se duplicó la densidad de pixeles que utilizábamos para diseñar y construir sitios webs para [iPhone][1]. Aunque si seguías utilizando los acostumbrados [480x320px][2] de las pantallas anteriores, se nota bastante el pixel en estos nuevos teléfonos. Pero si trabajas para la nueva resolución de &lt;strong&gt;960x640px&lt;/strong&gt;, ¿qué haces con los modelos anteriores?&lt;/p&gt;</description>
      <content>&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/12/retina.jpg&#34; alt=&#34;&#34; title=&#34;retina&#34; width=&#34;350&#34; height=&#34;525&#34; class=&#34;alignright size-full wp-image-915&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2011/12/retina.jpg 350w, http://www.csslab.cl/wp-content/uploads/2011/12/retina-200x300.jpg 200w, http://www.csslab.cl/wp-content/uploads/2011/12/retina-220x330.jpg 220w&#34; sizes=&#34;(max-width: 350px) 100vw, 350px&#34; /&gt;
&lt;p&gt;Desde la salida del &lt;a href=&#34;http://www.apple.com/iphone/features/retina-display.html&#34; title=&#34;Enlace externo a &amp;quot;iPhone Retina Display&amp;quot;&#34; target=&#34;_blank&#34;&gt;Retina Display&lt;/a&gt;, se duplicó la densidad de pixeles que utilizábamos para diseñar y construir sitios webs para [iPhone][1]. Aunque si seguías utilizando los acostumbrados [480x320px][2] de las pantallas anteriores, se nota bastante el pixel en estos nuevos teléfonos. Pero si trabajas para la nueva resolución de &lt;strong&gt;960x640px&lt;/strong&gt;, ¿qué haces con los modelos anteriores?&lt;/p&gt;
&lt;p&gt;Suele ser común el pensamiento que 1 &lt;em&gt;pixel&lt;/em&gt; en &lt;strong&gt;CSS&lt;/strong&gt; es 1 &lt;em&gt;pixel&lt;/em&gt; en la pantalla del dispositivo. Cuando entramos al nuevo mundo de la alta definición un &lt;em&gt;pixel&lt;/em&gt; en &lt;strong&gt;CSS&lt;/strong&gt; termina siendo múltiples en la pantalla. Un ejemplo es si defino un &lt;em&gt;zoom&lt;/em&gt; de 2x, entonces 1 &lt;em&gt;pixel&lt;/em&gt; de &lt;strong&gt;CSS&lt;/strong&gt; termina siendo 2×2 cuadrados de &lt;em&gt;pixel&lt;/em&gt; en el dispositivo. Y eso es lo que está sucediendo desde el &lt;em&gt;iPhone 4&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Entonces, la pregunta es sencilla: &lt;em&gt;¿Cómo trabajamos con Retina sin dejar de lado las resoluciones anteriores?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;La respuesta viene de la mano del potente &lt;em&gt;Mobile Safari&lt;/em&gt; y su capacidad de responder mediante &lt;a href=&#34;http://www.w3.org/TR/css3-mediaqueries/&#34; title=&#34;Enlace externo a &amp;quot;Media Queries&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSS3 media queries&lt;/a&gt;. Podemos detectar si el dispositivo duplica la densidad del pixel, y si es así modificar el estilo reemplazando las imágenes por una de doble resolución:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;link rel=&#34;stylesheet&#34; type=&#34;text/css&#34; href=&#34;css/normal.css&#34;&amp;gt;
&amp;lt;link rel=&#34;stylesheet&#34; type=&#34;text/css&#34; href=&#34;css/retina.css&#34; media=&#34;only screen and (&amp;lt;strong&gt;-webkit-min-device-pixel-ratio: 2&amp;lt;/strong&gt;)&#34; &amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El secreto está en que definas las imágenes que querrás se vean de mejor calidad en un &lt;em&gt;iPhone 4+&lt;/em&gt; mediante &lt;strong&gt;background-image&lt;/strong&gt; de &lt;strong&gt;CSS&lt;/strong&gt;, por ejemplo:&lt;/p&gt;
&lt;h4 id=&#34;normalcss&#34;&gt;normal.css&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#logo {
   background-image: url(&#39;images/logo.png&#39;);
   background-size: 100px 100px;
   background-repeat: no-repeat;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;retinacss&#34;&gt;retina.css&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#logo {
   background-image: url(&#39;images/logo_hi.png&#39;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Te recomiendo apreciar el ejemplo desde tu teléfono móvil, para que realmente veas los resultados:&lt;/em&gt;&lt;/p&gt;
&lt;div id=&#34;qrcode&#34;&gt;
&lt;/div&gt;
&lt;p&gt;Como el navegador va a leer sí o sí &lt;strong&gt;normal.css&lt;/strong&gt;, y por gracia del &lt;strong&gt;media=&amp;ldquo;only screen and (-webkit-min-device-pixel-ratio: 2)&lt;/strong&gt; sólo los dispositivos que tengan duplicados su resolución leerán &lt;strong&gt;retina.css&lt;/strong&gt; y sobreescribirán los estilos definidos en esta hoja de estilos por sobre la anterior. La idea es que sólo definas las propiedades que cambien, no es necesario que reescribas todo el código.&lt;/p&gt;
&lt;h3 id=&#34;mediante-js&#34;&gt;Mediante JS&lt;/h3&gt;
&lt;p&gt;Otra manera es hacerlo mediante &lt;strong&gt;JavaScript&lt;/strong&gt;, la cual encuentro innecesaria pero de todas maneras dejo la opción:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;if (window.devicePixelRatio &amp;gt;= 2) {
   document.write(&#34;&amp;lt;link href=&#39;css/retina.css&#39; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; media=&#39;screen&#39; /&amp;gt;&#34;);
} else {
   document.write(&#34;&amp;lt;link href=&#39;normal.css&#39; rel=&#39;stylesheet&#39; type=&#39;text/css&#39; media=&#39;screen&#39; /&amp;gt;&#34;);&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://flowz.com/2010/07/css-image-replacement-for-iphone-4-high-dpi-retina-display/&#34; title=&#34;Enlace externo a &amp;quot;CSS Image Replacement for iPhone 4 High-DPI Retina Display&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSS Image Replacement for iPhone 4 High-DPI Retina Display&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.iwalt.com/2010/06/targeting-the-iphone-4-retina-display-with-css3-media-queries.html&#34; title=&#34;Enlace externo a &amp;quot;Targeting the iPhone 4 Retina Display with CSS3 Media Queries&amp;quot;&#34; target=&#34;_blank&#34;&gt;Targeting the iPhone 4 Retina Display with CSS3 Media Queries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/css3-mediaqueries/&#34; title=&#34;Enlace externo a &amp;quot;Media Queries by W3C&amp;quot;&#34; target=&#34;_blank&#34;&gt;Media Queries by W3C&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/category/iphone/&#34;&gt;http://www.csslab.cl/category/iphone/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Artículos con categoría iPhone&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2008/07/10/desarrollos-web-para-iphone/&#34;&gt;http://www.csslab.cl/2008/07/10/desarrollos-web-para-iphone/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Desarrollos Web para iPhone&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/retina/&#34;&gt;http://www.csslab.cl/ejemplos/retina/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 1 - Construir para Retina Display&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Outlinr: a bookmarklet</title>
      <link>https://csslab.cl/2011/12/06/outlinr-a-bookmarklet/</link>
      <pubDate>Tue, 06 Dec 2011 15:43:21 +0000</pubDate>
      
      <guid>https://csslab.cl/2011/12/06/outlinr-a-bookmarklet/</guid>
      <description>&lt;p&gt;Outlinr: simple y rápido web inspector, ni menos ni más / simple and fast web inspector, neither more nor less&lt;/p&gt;</description>
      <content>&lt;p&gt;Outlinr: simple y rápido web inspector, ni menos ni más / simple and fast web inspector, neither more nor less&lt;/p&gt;
&lt;h5 id=&#34;selecciona-tu-idioma--select-your-language&#34;&gt;Selecciona tu idioma / Select your language:&lt;/h5&gt;
&lt;ul id=&#34;horizons_tab&#34; class=&#34;idTabs&#34;&gt;
  &lt;li&gt;
    &lt;a href=&#34;#english&#34; title=&#34;Read in English&#34;&gt;English&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&#34;#espanol&#34; title=&#34;Leer en Español&#34;&gt;Español&lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&#34;english&#34;&gt;
  &lt;h3&gt;
    EN
  &lt;/h3&gt;
  &lt;p&gt;
    Frequently on my debugging stage (when I need to solve something within the &lt;strong&gt;HTML/CSS&lt;/strong&gt; markup that is causing some conflict) I use the &lt;strong&gt;CSS&lt;/strong&gt; &lt;strong&gt;outline&lt;/strong&gt; property to contour the &lt;strong&gt;HTML&lt;/strong&gt; elements so as I can visually locate where the elements are positioned, if they&amp;#8217;re collapsing, which elements are involving, etc. I use &lt;strong&gt;outline&lt;/strong&gt; because it&amp;#8217;s a property that does not modify the &lt;a href=&#34;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&#34; title=&#34;Link in CSSLab.cl to &amp;quot;Como caja: el modelo&amp;quot;&#34;&gt;box model&lt;/a&gt; and won&amp;#8217;t going to break more elements that are already working fine. If I use &lt;strong&gt;border&lt;/strong&gt; instead, it will add 1 or 2 &lt;strong&gt;px&lt;/strong&gt; to the box and can add more unnecessary problems. In addition, I use the &lt;strong&gt;red&lt;/strong&gt; color not only because it&amp;#8217;s strongly visible, but it&amp;#8217;s fastest writing on the keyboard (lazy huh?).
  &lt;/p&gt;
  &lt;p&gt;
    Anyway, that was the introduction. I made this &lt;em&gt;&lt;a href=&#34;http://www.csslab.cl/2009/02/20/mis-bookmarklets/&#34; title=&#34;Link in CSSLab.cl to &amp;quot;Mis Bookmarklets&amp;quot;&#34;&gt;bookmarklet&lt;/a&gt;&lt;/em&gt; that does the job for me directly on the browser, so I don&amp;#8217;t add dirt to my stylesheet or to the &lt;strong&gt;HTML&lt;/strong&gt; file. I could use the web inspector from the browser (or &lt;em&gt;Firebug&lt;/em&gt;) but this method is quicker. The &lt;em&gt;bookmarklet&lt;/em&gt; asks you for which selector to draw (&lt;strong&gt;div&lt;/strong&gt; is by default but it could be any selector from &lt;a href=&#34;http://www.csslab.cl/tag/jquery/&#34; title=&#34;Link in CSSLab to &amp;quot;jQuery&amp;quot;&#34;&gt;jQuery&lt;/a&gt; sentences) and the &lt;strong&gt;color&lt;/strong&gt; (&lt;strong&gt;red&lt;/strong&gt; is the default but it can be &lt;strong&gt;blue&lt;/strong&gt;, &lt;strong&gt;green&lt;/strong&gt;, &lt;strong&gt;#f60&lt;/strong&gt;, etc).
  &lt;/p&gt;
  &lt;p&gt;
    I hope it can be useful for somebody else than me.
  &lt;/p&gt;
  &lt;p&gt;
    &lt;em&gt;Requirement: you have to be connected to the Internet, it calls &lt;strong&gt;jQuery&lt;/strong&gt; from &lt;strong&gt;Google API&amp;#8217;s&lt;/strong&gt;.&lt;/em&gt;
  &lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;espanol&#34;&gt;
  &lt;h3&gt;
    ES
  &lt;/h3&gt;
  &lt;p&gt;
    Frecuentemente en mi etapa de &lt;em&gt;debugging&lt;/em&gt; (cuando necesito solucionar algo dentro del marcado &lt;strong&gt;HTML/CSS&lt;/strong&gt; que estuviera provocando alg&amp;uacute;n conflicto) utilizo la propiedad &lt;strong&gt;CSS&lt;/strong&gt; &lt;strong&gt;outline&lt;/strong&gt; para contornar los elementos &lt;strong&gt;HTML&lt;/strong&gt; y ver d&amp;oacute;nde est&amp;aacute;n ubicados, si est&amp;aacute;n colapsando, qu&amp;eacute; elementos envuelve, etc. Utilizo &lt;strong&gt;outline&lt;/strong&gt; porque es una propiedad que no influye en el &lt;a href=&#34;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&#34; title=&#34;Enlace en CSSLab.cl a &amp;quot;Como caja: el modelo&amp;quot;&#34;&gt;modelo de caja&lt;/a&gt; y no va a hacer que se quiebren los elementos que ya s&amp;eacute; que est&amp;aacute;n correctamente posicionados. Si utilizara &lt;strong&gt;border&lt;/strong&gt; le agregar&amp;iacute;a m&amp;iacute;nimo 1 &amp;oacute; 2 pixeles a la caja y seguro provocar&amp;iacute;a un problema m&amp;aacute;s del que estoy tratando de resolver. Adem&amp;aacute;s, utilizo el color &lt;strong&gt;rojo&lt;/strong&gt; no porque es uno de los colores m&amp;aacute;s fuertes y menos comunes dentro de un &lt;em&gt;layout&lt;/em&gt;, sino que es el m&amp;aacute;s r&amp;aacute;pido de escribir (en ingl&amp;eacute;s) dentro del &lt;strong&gt;CSS&lt;/strong&gt;. Me acostumbr&amp;eacute;.
  &lt;/p&gt;
  &lt;p&gt;
    Enfin, esa fue la introducci&amp;oacute;n. Hice un &lt;a href=&#34;http://www.csslab.cl/2009/02/20/mis-bookmarklets/&#34; title=&#34;Link in CSSLab.cl to &amp;quot;Mis Bookmarklets&amp;quot;&#34;&gt;&lt;strong&gt;bookmarklet&lt;/strong&gt;&lt;/a&gt; que hace ese trabajo por m&amp;iacute; directo en el &lt;em&gt;browser&lt;/em&gt;, sin tener que ensuciar mi hoja de estilos y menos el &lt;strong&gt;HTML&lt;/strong&gt;. Podr&amp;iacute;a utilizar el &lt;em&gt;web inspector&lt;/em&gt; del &lt;em&gt;browser&lt;/em&gt; (&amp;oacute; &lt;em&gt;Firebug&lt;/em&gt;) pero este m&amp;eacute;todo es m&amp;aacute;s r&amp;aacute;pido. El &lt;em&gt;bookmarklet&lt;/em&gt; te pregunta qu&amp;eacute; selectores dibujar (por defecto es &lt;strong&gt;div&lt;/strong&gt; pero puedes utilizar cualquier selector mediante las sentencias de &lt;a href=&#34;http://www.csslab.cl/tag/jquery/&#34; title=&#34;Enlace en CSSLab a &amp;quot;jQuery&amp;quot;&#34;&gt;jQuery&lt;/a&gt;) y adem&amp;aacute;s del &lt;strong&gt;color&lt;/strong&gt; (por defecto es &lt;strong&gt;red&lt;/strong&gt; pero puedes utilizar &lt;strong&gt;blue&lt;/strong&gt;, &lt;strong&gt;green&lt;/strong&gt;, &lt;strong&gt;#f60&lt;/strong&gt;, etc).
  &lt;/p&gt;
  &lt;p&gt;
    Espero pueda ser &amp;uacute;til a alguien m&amp;aacute;s que a m&amp;iacute;.
  &lt;/p&gt;
  &lt;p&gt;
    &lt;em&gt;Requisito: tienes que estar conectado a Internet ya que llama a &lt;strong&gt;jQuery&lt;/strong&gt; desde &lt;strong&gt;Google API&amp;#8217;s&lt;/strong&gt;.&lt;/em&gt;
  &lt;/p&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 class=&#34;bookmarklet&#34; id=&#34;outlinr1-smalllarr-clickdragsmall&#34;&gt;[Outlinr][1] &lt;small&gt;← click&amp;amp;drag&lt;/small&gt;&lt;/h3&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4 id=&#34;how-to-install-a-bookmarklet--cómo-instalar-un-bookmarklet&#34;&gt;How to install a bookmarklet / Cómo instalar un bookmarklet&lt;/h4&gt;
&lt;p&gt;####&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/02/pasos.gif&#34; alt=&#34;Uso de Bookmarklets&#34; width=&#34;597&#34; height=&#34;554&#34; /&gt;&lt;/p&gt;
&lt;p&gt;[1]: javascript:(function(e,a,g,h,f,c,b,d)%7Bif(!(f=e.jQuery)%7C%7Cg%3Ef.fn.jquery%7C%7Ch(f))%7Bc=a.createElement(%22script%22);c.type=%22text/javascript%22;c.src=%22http://ajax.googleapis.com/ajax/libs/jquery/%22+g+%22/jquery.min.js%22;c.onload=c.onreadystatechange=function()%7Bif(!b&amp;amp;&amp;amp;(!(d=this.readyState)%7C%7Cd==%22loaded%22%7C%7Cd==%22complete%22))%7Bh((f=e.jQuery).noConflict(1),b=1);f(c).remove()%7D%7D;a.documentElement.childNodes%5B0%5D.appendChild(c)%7D%7D)(window,document,%221.3.2%22,function($,L)%7B$(prompt(&amp;lsquo;HTML Element? Use jQuery Selectors&amp;rsquo;,&amp;lsquo;div&amp;rsquo;)).css(&amp;lsquo;outline&amp;rsquo;,&amp;lsquo;1px%20solid%20&amp;rsquo;+prompt(&amp;lsquo;Color? Use HEX or ColorNames&amp;rsquo;,&amp;lsquo;red&amp;rsquo;));%7D);&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Columnas Múltiples con CSS3</title>
      <link>https://csslab.cl/2011/11/16/columnas-multiples-con-css3/</link>
      <pubDate>Wed, 16 Nov 2011 14:06:21 +0000</pubDate>
      
      <guid>https://csslab.cl/2011/11/16/columnas-multiples-con-css3/</guid>
      <description>&lt;p&gt;La idea de diagramar contenido con columnas múltiples es un método heredado del diseño editorial, donde se utilizan retículas para diagramar tanto texto como imágenes (y publicidad, claro). Su uso se justifica en la capacidad del lector de seguir la misma línea de texto sin perderse en su continuidad. El texto de divide en varias columnas de menos ancho facilitando la comprensión del tema que se está tratando.&lt;/p&gt;</description>
      <content>&lt;p&gt;La idea de diagramar contenido con columnas múltiples es un método heredado del diseño editorial, donde se utilizan retículas para diagramar tanto texto como imágenes (y publicidad, claro). Su uso se justifica en la capacidad del lector de seguir la misma línea de texto sin perderse en su continuidad. El texto de divide en varias columnas de menos ancho facilitando la comprensión del tema que se está tratando.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/11/csslab_multicolumn.png&#34; alt=&#34;Columnas Múltiples con CSS3&#34; title=&#34;csslab_multicolumn&#34; width=&#34;600&#34; height=&#34;445&#34; class=&#34;alignnone size-full wp-image-892&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2011/11/csslab_multicolumn.png 600w, http://www.csslab.cl/wp-content/uploads/2011/11/csslab_multicolumn-300x222.png 300w, http://www.csslab.cl/wp-content/uploads/2011/11/csslab_multicolumn-220x163.png 220w&#34; sizes=&#34;(max-width: 600px) 100vw, 600px&#34; /&gt; 
&lt;p&gt;La implementación de columnas múltiples en &lt;strong&gt;CSS&lt;/strong&gt; no es algo nuevo, &lt;a href=&#34;http://www.w3.org/TR/2001/WD-css3-multicol-20010118/&#34; title=&#34;Enlace externo a &amp;quot;CSS3 module: Multi-column layout&amp;quot;&#34; target=&#34;_blank&#34;&gt;fue propuesto a la W3C en el 2001&lt;/a&gt; y ya estaba implementado en &lt;strong&gt;Webkit&lt;/strong&gt; desde sus inicios, en Firefox desde la versión 1.5 y se podía utilizar fácilmente desde 2006. Pero con el advenimiento de [CSS3][1] como un estándar cada vez más fuerte, y con una presión bastante notoria por parte de los desarrolladores para implementar sus beneficios en sus proyectos web se ha hecho cada vez más viable su uso. Además, existen &lt;em&gt;fallbacks&lt;/em&gt; que permiten que se pueda utilizar en navegadores más antiguos o que no tengan esta capacidad sin mayores problemas.&lt;/p&gt;
&lt;p&gt;Por suerte su implementación es bastante simple. Dado el siguiente &lt;strong&gt;HTML&lt;/strong&gt; con un bloque de texto:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;columna&#34;&amp;gt;
   &amp;lt;p&amp;gt;International Bitterness Units (IBU), Caramel malt, Pitching Bottom-fermenting Yeast. Double bock/dopplebock; Reboboam Mash Tart Lagering Grist Caramel malt Bittering Hops...&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para separarlo en 2 columnas basta con utilizar la propiedad &lt;strong&gt;column-count: 2;&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#columna {
   -webkit-column-count: 2;
   -moz-column-count: 2;
   column-count: 2;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver Ejemplo 1][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;La lista completa de propiedades:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;column-count:&lt;/dt&gt;
&lt;dd&gt;la cantidad de columnas.&lt;/dd&gt;
&lt;dt&gt;column-width:&lt;/dt&gt;
&lt;dd&gt;define el ancho de las columnas, caso no quieras que el browser calcule de acuerdo al modelo de caja.&lt;/dd&gt;
&lt;dt&gt;column-gap:&lt;/dt&gt;
&lt;dd&gt;el espacio entre cada columna, en la unidad de medida que estimes.&lt;/dd&gt;
&lt;dt&gt;column-rule:&lt;/dt&gt;
&lt;dd&gt;borde (separación) entre cada colina, por ejemplo una línea recta.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;[Ver Ejemplo 2][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Ahora, qué hacemos con los &lt;em&gt;browsers&lt;/em&gt; que no tienen la capacidad de interpretar esta úil propiedad? &lt;a href=&#34;http://caniuse.com/#search=column&#34; title=&#34;Enlace externo a &amp;quot;Compatibility tables for support of HTML5, CSS3, SVG and more in desktop and mobile browsers&amp;quot;&#34; target=&#34;_blank&#34;&gt;Según caniuse.com, ningún IE lo soporta en la actualidad, quizás IE10 lo haga&lt;/a&gt;. Afortunadamente &lt;a href=&#34;http://www.csscripting.com/wiki/index.php?title=CSS3_Multi_Column&#34; title=&#34;Enlace externo a &amp;quot;JavaScript implementation for CSS3 Multi Column&amp;quot;&#34; target=&#34;_blank&#34;&gt;&lt;strong&gt;JavaScript&lt;/strong&gt; viene al rescate con un pequeño script&lt;/a&gt; que incluiremos luego del estilo, el que agregará el soporte de &lt;strong&gt;column-count&lt;/strong&gt; y demases.&lt;/p&gt;
&lt;p&gt;[Ver Ejemplo 3][4]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Como ven, no hay razón para no comenzar a utilizar las columnas múltiples.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.csscripting.com/wiki/index.php?title=CSS3_Multi_Column&#34; title=&#34;Enlace externo a &amp;quot;JavaScript implementation for CSS3 Multi Column&amp;quot;&#34; target=&#34;_blank&#34;&gt;JavaScript implementation for CSS3 Multi Column&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://caniuse.com/#search=column&#34; title=&#34;Enlace externo a &amp;quot;Compatibility tables for support of HTML5, CSS3, SVG and more in desktop and mobile browsers&amp;quot;&#34; target=&#34;_blank&#34;&gt;Caniuse.com: Multi Column browser support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/css3-multicol/&#34; title=&#34;Enlace externo a &amp;quot;CSS Multi-column Layout Module&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSS Multi-column Layout Module W3C Candidate Recommendation 12 April 2011&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://csslab.cl/?s=css3&#34;&gt;http://csslab.cl/?s=css3&lt;/a&gt; &amp;ldquo;Enlace en CSSlab.cl a &amp;ldquo;Resultados de búsqueda para css3&amp;quot;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/multicolumnas/ejemplo1.html&#34;&gt;http://www.csslab.cl/ejemplos/multicolumnas/ejemplo1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Columnas Múltiples con CSS3 - Ejemplo 1&amp;quot;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/multicolumnas/ejemplo2.html&#34;&gt;http://www.csslab.cl/ejemplos/multicolumnas/ejemplo2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Columnas Múltiples con CSS3 - Ejemplo 2&amp;quot;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/multicolumnas/ejemplo3.html&#34;&gt;http://www.csslab.cl/ejemplos/multicolumnas/ejemplo3.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Columnas Múltiples con CSS3 - Ejemplo 3&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 41</title>
      <link>https://csslab.cl/2011/10/13/lo-vi-y-me-gusto-41/</link>
      <pubDate>Thu, 13 Oct 2011 15:07:43 +0000</pubDate>
      
      <guid>https://csslab.cl/2011/10/13/lo-vi-y-me-gusto-41/</guid>
      <description>#41 – 13 Octubre 2011</description>
      <content>&lt;p&gt;#41 – 13 Octubre 2011&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.acuariomazatlan.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/10/acuariomazatlan.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.ilovebt.com.br/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/10/ilovebt.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://catalinaamenabar.cl/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/10/catalinaamenabar.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.coronel.cl/#&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/10/coronel.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>jQuery Timelinr</title>
      <link>https://csslab.cl/2011/08/18/jquery-timelinr/</link>
      <pubDate>Thu, 18 Aug 2011 20:23:49 +0000</pubDate>
      
      <guid>https://csslab.cl/2011/08/18/jquery-timelinr/</guid>
      <description>&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/08/250-alto.png&#34; alt=&#34;&#34; title=&#34;250-alto&#34; width=&#34;155&#34; height=&#34;250&#34; class=&#34;alignright size-full wp-image-829&#34; /&gt;
&lt;p&gt;Dando vida al tiempo / Giving life to time&lt;/p&gt;</description>
      <content>&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/08/250-alto.png&#34; alt=&#34;&#34; title=&#34;250-alto&#34; width=&#34;155&#34; height=&#34;250&#34; class=&#34;alignright size-full wp-image-829&#34; /&gt;
&lt;p&gt;Dando vida al tiempo / Giving life to time&lt;/p&gt;
&lt;h5 id=&#34;selecciona-tu-idioma--select-your-language&#34;&gt;Selecciona tu idioma / Select your language:&lt;/h5&gt;
&lt;ul id=&#34;horizons_tab&#34; class=&#34;idTabs&#34;&gt;
  &lt;li&gt;
    &lt;a href=&#34;#english&#34; title=&#34;Read in English&#34;&gt;English&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&#34;#espanol&#34; title=&#34;Leer en Español&#34;&gt;Español&lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&#34;english&#34;&gt;
  &lt;h3&gt;
    EN
  &lt;/h3&gt;
  &lt;p&gt;
    This simple plugin helps you to give more life to the boring timelines. Supports horizontal and vertical layouts, and you can specify parameters for most attributes: speed, transparency, etc.
  &lt;/p&gt;
  &lt;p class=&#34;atencion&#34;&gt;
    Last stable version: 0.9.6
  &lt;/p&gt;
  &lt;h4&gt;
    Configuration:
  &lt;/h4&gt;
  &lt;ul&gt;
    &lt;li&gt;
      Include the &lt;strong&gt;jQuery&lt;/strong&gt; library and this plugin:
    &lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;script src=&#34;js/jquery-1.x.x.min.js&#34;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&#34;js/jquery.timelinr-0.9.x.js&#34;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;li&gt;
    Inicialize-it with the default parameters:
  &lt;/li&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(function(){
   $().timelinr();
});&lt;/code&gt;&lt;/pre&gt;
  &lt;li&gt;
    Or configure it as preferred:
  &lt;/li&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(function(){
   $().timelinr({&amp;lt;br /&gt;
      orientation: &#39;horizontal&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: horizontal | vertical, default to horizontal&amp;lt;/span&gt;&amp;lt;br /&gt;
      containerDiv: &#39;#timeline&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: any HTML tag or #id, default to #timeline&amp;lt;/span&gt;&amp;lt;br /&gt;
      datesDiv: &#39;#dates&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: any HTML tag or #id, default to #dates&amp;lt;/span&gt;&amp;lt;br /&gt;
      datesSelectedClass: &#39;selected&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: any class, default to selected&amp;lt;/span&gt;
      datesSpeed: &#39;normal&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: integer between 100 and 1000 (recommended) or &#39;slow&#39;, &#39;normal&#39; or &#39;fast&#39;; default to normal&amp;lt;/span&gt;
      issuesDiv : &#39;#issues&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: any HTML tag or #id, default to #issues&amp;lt;/span&gt;
      issuesSelectedClass: &#39;selected&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: any class, default to selected&amp;lt;/span&gt;
      issuesSpeed: &#39;fast&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: integer between 100 and 1000 (recommended) or &#39;slow&#39;, &#39;normal&#39; or &#39;fast&#39;; default to fast&amp;lt;/span&gt;
      issuesTransparency: 0.2,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: integer between 0 and 1 (recommended), default to 0.2&amp;lt;/span&gt;
      issuesTransparencySpeed: 500,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: integer between 100 and 1000 (recommended), default to 500 (normal)&amp;lt;/span&gt;
      prevButton: &#39;#prev&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: any HTML tag or #id, default to #prev&amp;lt;/span&gt;
      nextButton: &#39;#next&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: any HTML tag or #id, default to #next&amp;lt;/span&gt;&amp;lt;br /&gt;
      arrowKeys: &#39;false&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: true/false, default to false&amp;lt;/span&gt;
      startAt: 1,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: integer, default to 1 (first)&amp;lt;/span&gt;
      autoPlay: &#39;false&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: true | false, default to false&amp;lt;/span&gt;
      autoPlayDirection: &#39;forward&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: forward | backward, default to forward&amp;lt;/span&gt;
      autoPlayPause: 2000
      &amp;lt;span class=&#34;commentjs&#34;&gt;// value: integer (1000 = 1 seg), default to 2000 (2segs)&amp;lt;/span&gt;&amp;lt; });
   });&lt;/code&gt;&amp;lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    &lt;strong&gt;HTML&lt;/strong&gt; markup must be as follows:
  &lt;/p&gt;
  &lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;timeline&#34;&amp;gt;
   &amp;lt;ul id=&#34;dates&#34;&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;date1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;date2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
   &amp;lt;/ul&amp;gt;
   &amp;lt;ul id=&#34;issues&#34;&amp;gt;
      &amp;lt;li id=&#34;date1&#34;&amp;gt;
         &amp;lt;p&amp;gt;Lorem ipsum.&amp;lt;/p&amp;gt;
      &amp;lt;/li&amp;gt;
      &amp;lt;li id=&#34;date2&#34;&amp;gt;
         &amp;lt;p&amp;gt;Lorem ipsum.&amp;lt;/p&amp;gt;
      &amp;lt;/li&amp;gt;
   &amp;lt;/ul&amp;gt;
   &amp;lt;a href=&#34;#&#34; id=&#34;next&#34;&amp;gt;+&amp;lt;/a&amp;gt; &amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- optional --&amp;gt;&amp;lt;/span&gt;
   &amp;lt;a href=&#34;#&#34; id=&#34;prev&#34;&amp;gt;-&amp;lt;/a&amp;gt; &amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- optional --&amp;gt;&amp;lt;/span&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    &lt;em&gt;&lt;a href=&#34;http://www.sebastiancortes.info/&#34; target=&#34;_blank&#34;&gt;Icon designed by Sebastián Cortés&lt;/a&gt;&lt;/em&gt;
  &lt;/p&gt;
  &lt;h5&gt;
    Changelog:
  &lt;/h5&gt;
  &lt;ul&gt;
    &lt;li&gt;
      0.9.6: check if required elements exist on page before initializing timelinr
    &lt;/li&gt;
    &lt;li&gt;
      0.9.54: Bugfix: large timelines now gets centered.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.53: Bugfix: arrows hidden when jumping from first and last dates resolved.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.52: Problem with arrows nav and 2 or less issues now fixed.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.51: As requested, now prev/next buttons are hidden if the issue is in the first/last position. Also, jQuery updated to 1.7.2 version (latest) and HTML markup now is HTML5 doctype.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.5: IE8 bug smashed while dates are animated (vertical); CSS updated: filter added due to IE8 bad-support of PNG transparency (#issues img).
    &lt;/li&gt;
    &lt;li&gt;
      0.9.4: Added autoPlay, autoPlayPause and autoPlayDirection (disabled by default).
    &lt;/li&gt;
    &lt;li&gt;
      0.9.3: Added startAt: select where do you want the timeline to start.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.3: Fixed bug with animation while pressing the navigation buttons.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.2: Fixed Firefox bug with event.preventDefault();
    &lt;/li&gt;
    &lt;li&gt;
      0.9.1: Added keyboard navigation, see vertical demo.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.1: preventDefault(); added to arrows.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.1: Documentation improved.
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;espanol&#34;&gt;
  &lt;h3&gt;
    ES
  &lt;/h3&gt;
  &lt;p&gt;
    Este sencillo plugin ayuda a que le des m&amp;aacute;s vida y estilo a las aburridas l&amp;iacute;neas de tiempo. Soporta diagramaciones horizontales y verticales, y puedes parametrizar la mayor&amp;iacute;a de los atributos: velocidades, transparencias, etc.
  &lt;/p&gt;
  &lt;p class=&#34;atencion&#34;&gt;
    Última versión estable: 0.9.6
  &lt;/p&gt;
  &lt;h4&gt;
    Configuraci&amp;oacute;n:
  &lt;/h4&gt;
  &lt;ul&gt;
    &lt;li&gt;
      Incluye la librer&amp;iacute;a &lt;strong&gt;jQuery&lt;/strong&gt; y luego este plugin:
    &lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;script src=&#34;js/jquery-1.x.x.min.js&#34;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&#34;js/jquery.timelinr-0.9.x.js&#34;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;li&gt;
    Inicial&amp;iacute;zalo con los par&amp;aacute;metros por defecto:
  &lt;/li&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(function(){&amp;lt;br /&gt;
   $().timelinr();&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
  &lt;li&gt;
    O custom&amp;iacute;zalos:
  &lt;/li&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(function(){&amp;lt;br /&gt;
   $().timelinr({&amp;lt;br /&gt;
      orientation: &#39;horizontal&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valores: horizontal | vertical, por defecto horizontal&amp;lt;/span&gt;
      containerDiv: &#39;#timeline&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valores: cualquier etiqueta HTML &amp;oacute; #id, por defecto #timeline&amp;lt;/span&gt;
      datesDiv: &#39;#dates&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valores: cualquier etiqueta HTML &amp;oacute; #id, por defecto #dates&amp;lt;/span&gt;
      datesSelectedClass: &#39;selected&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valores: cualquier clase, por defecto selected&amp;lt;/span&gt;
      datesSpeed: &#39;normal&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valores: n&amp;uacute;mero entre 100 y 1000 (recomendado) ó &#39;slow&#39;, &#39;normal&#39;, &#39;fast&#39;, por defecto normal&amp;lt;/span&gt;
      issuesDiv : &#39;#issues&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valores: cualquier etiqueta HTML &amp;oacute; #id, por defecto #issues&amp;lt;/span&gt;
      issuesSelectedClass: &#39;selected&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valores: cualquier clase, por defecto selected&amp;lt;/span&gt;
      issuesSpeed: &#39;fast&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valores: n&amp;uacute;mero entre 100 y 1000 (recomendado)ó &#39;slow&#39;, &#39;normal&#39;, &#39;fast&#39;, por defecto fast&amp;lt;/span&gt;
      issuesTransparency: 0.2,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valores: n&amp;uacute;mero entre 0 y 1 (recomendado), por defecto 0.2&amp;lt;/span&gt;
      issuesTransparencySpeed: 500,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valores: n&amp;uacute;mero entre 100 y 1000 (recomendado), por defecto 500 (normal)&amp;lt;/span&gt;
      prevButton: &#39;#prev&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valores: cualquier etiqueta HTML &amp;oacute; #id, por defecto #prev&amp;lt;/span&gt;
      nextButton: &#39;#next&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valores: cualquier etiqueta HTML &amp;oacute; #id, por defecto #next&amp;lt;/span&gt;
      arrowKeys: &#39;false&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valores: true/false, por defecto false&amp;lt;/span&gt;
      startAt: 1,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valor: n&amp;uacute;mero entre 1 y el máximo de elementos, por defecto 1 (primero)&amp;lt;/span&gt;
      autoPlay: &#39;false&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valor: true | false, por defecto false&amp;lt;/span&gt;
      autoPlayDirection: &#39;forward&#39;,
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valor: forward | backward, por defecto forward&amp;lt;/span&gt;
      autoPlayPause: 2000
      &amp;lt;span class=&#34;commentjs&#34;&gt;// valor: n&amp;uacute;mero (1000 = 1 seg), por defecto 2000 (2segs)&amp;lt;/span&gt;
   })
});&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    El marcado &lt;strong&gt;HTML&lt;/strong&gt; debe ser de la siguiente forma:
  &lt;/p&gt;
  &lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;timeline&#34;&amp;gt;
   &amp;lt;ul id=&#34;dates&#34;&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;date1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;date2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
   &amp;lt;/ul&amp;gt;
   &amp;lt;ul id=&#34;issues&#34;&amp;gt;
      &amp;lt;li id=&#34;date1&#34;&amp;gt;
         &amp;lt;p&amp;gt;Lorem ipsum.&amp;lt;/p&amp;gt;
      &amp;lt;/li&amp;gt;
      &amp;lt;li id=&#34;date2&#34;&amp;gt;
         &amp;lt;p&amp;gt;Lorem ipsum.&amp;lt;/p&amp;gt;
      &amp;lt;/li&amp;gt;
   &amp;lt;/ul&amp;gt;
&amp;lt;a href=&#34;#&#34; id=&#34;next&#34;&amp;gt;+&amp;lt;/a&amp;gt; &amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- opcional --&amp;gt;&amp;lt;/span&gt;
&amp;lt;a href=&#34;#&#34; id=&#34;prev&#34;&amp;gt;-&amp;lt;/a&amp;gt; &amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- opcional --&amp;gt;&amp;lt;/span&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    &lt;em&gt;&lt;a href=&#34;http://www.sebastiancortes.info/&#34; target=&#34;_blank&#34;&gt;Ícono diseñado por Sebastián Cortés&lt;/a&gt;&lt;/em&gt;
  &lt;/p&gt;
  &lt;h5&gt;
    Cambios:
  &lt;/h5&gt;
  &lt;ul&gt;
    &lt;li&gt;
      0.9.6: verifica si elemento existe antes de inicializar timelinr
    &lt;/li&gt;
    &lt;li&gt;
      0.9.54: Ahora se centran lineas de tiempo con muchas fechas
    &lt;/li&gt;
    &lt;li&gt;
      0.9.53: Problema con salto entre primer y última fecha y desaparición de flechas de navegación solucionado.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.52: Problema con la navegaci&amp;oacute;n con flechas y 2 &amp;oacute; menos issues ahora solucionado.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.51: como solicitado, los botones prev/next se esconden si el issue está en la posición inicial/final. Además, jQuery fue actualizado a 1.7.2 (última) y el doctype del documento ahora es HTML5.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.5: bug de IE8 aplastado cuando las fechas eran animadas (vertical); CSS mejorado: filter agregado por el mal soporte de IE8 con los PNG transparentes (#issues img)
    &lt;/li&gt;
    &lt;li&gt;
      0.9.4: Agregados autoPlay, autoPlayPause y autoPlayDirection (deshabilitados por defecto).
    &lt;/li&gt;
    &lt;li&gt;
      0.9.3: Agregado startAt: selecciona en qué punto quieres que comience la línea de tiempo.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.3: Solucionado bug con animación mientras presionas los botones de navegación.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.2: Solucionado bug Firefox con event.preventDefault();
    &lt;/li&gt;
    &lt;li&gt;
      0.9.1: Agregado navegación por teclado, ver ejemplo vertical.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.1: preventDefault(); agregado a las flechas.
    &lt;/li&gt;
    &lt;li&gt;
      0.9.1: Documentación mejorada.
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/timelinr/latest/horizontal.html&#34;&gt;Demo Horizontal&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/timelinr/latest/vertical.html&#34;&gt;Demo Vertical&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/timelinr/latest/autoplay.html&#34;&gt;Demo Autoplay&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/juanbrujo/jQuery-Timelinr/archive/v0.9.7.zip&#34;&gt;Download/Bajar Plugin + Demos&lt;/a&gt;{.bajar}&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Copyright 2011, CSSLab.cl – Free under the &lt;a href=&#34;http://www.opensource.org/licenses/mit-license.php&#34; title=&#34;Enlace externo a &amp;quot;Licensing  The MIT License&amp;quot;&#34; target=&#34;_blank&#34;&gt;MIT license&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Ordenando la cabeza</title>
      <link>https://csslab.cl/2011/07/19/ordenando-la-cabeza/</link>
      <pubDate>Tue, 19 Jul 2011 17:33:27 +0000</pubDate>
      
      <guid>https://csslab.cl/2011/07/19/ordenando-la-cabeza/</guid>
      <description>&lt;p&gt;Muchas veces nos esforzamos en tener el código más limpio y pulcro posible, pero no nos fijamos en lo que sucede dentro del &lt;strong&gt;&lt;head&gt;&lt;/head&gt;&lt;/strong&gt;. Es una parte vital, donde se define el comportamiento de toda la página web. Pero primero, debemos entender cómo el &lt;em&gt;browser&lt;/em&gt; lee una página web.&lt;/p&gt;</description>
      <content>&lt;p&gt;Muchas veces nos esforzamos en tener el código más limpio y pulcro posible, pero no nos fijamos en lo que sucede dentro del &lt;strong&gt;&lt;head&gt;&lt;/head&gt;&lt;/strong&gt;. Es una parte vital, donde se define el comportamiento de toda la página web. Pero primero, debemos entender cómo el &lt;em&gt;browser&lt;/em&gt; lee una página web.&lt;/p&gt;
&lt;p&gt;Cuando un navegador comienza a parsear una página, comienza a leer desde el encabezado, claro. Si la respuesta del encabezado del &lt;strong&gt;content-type&lt;/strong&gt; especifica un atributo &lt;strong&gt;charset&lt;/strong&gt;, esos &lt;em&gt;bytes&lt;/em&gt; pueden ser interpretados inmediatamente como texto utilizando el &lt;em&gt;encoding&lt;/em&gt; determinado. Sin embargo, si una declaración &lt;strong&gt;charset&lt;/strong&gt; no está presente, el &lt;em&gt;browser&lt;/em&gt; comienza a escanear los &lt;em&gt;bytes&lt;/em&gt; de de respuesta del cuerpo, buscando por algún marcador &lt;em&gt;unicode&lt;/em&gt; ó algún elemento dentro del &lt;strong&gt;meta http-equiv&lt;/strong&gt; que especifique el &lt;strong&gt;charset&lt;/strong&gt;. Cuando lo encuentra el &lt;em&gt;parser&lt;/em&gt; vuelve a leer el documento para asegurarse que lo anterior sea leído correctamente. Ahora, si una declaración de &lt;strong&gt;charset&lt;/strong&gt; no está definido, el &lt;em&gt;browser&lt;/em&gt; está obligado a autodetectar el &lt;em&gt;encoding&lt;/em&gt; dependiendo del contenido, lo que puede provocar errores de caracteres o en la página misma.&lt;/p&gt;
&lt;p&gt;Luego, son leídos el título, &lt;em&gt;favicon&lt;/em&gt; y los estilos (&lt;strong&gt;&lt;link&gt;&lt;/strong&gt;) los que deben estar en concordancia con el &lt;strong&gt;charset&lt;/strong&gt; definido anteriormente.&lt;/p&gt;
&lt;p&gt;Finalmente, el orden ideal propuesto por la mayoría de los navegadores modernos es el siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;doctype&amp;gt;
&amp;lt;html&amp;gt;
      &amp;lt;head&amp;gt;
         &amp;lt;meta http-equiv content-type charset&amp;gt;
         &amp;lt;title&amp;gt;
         &amp;lt;link rel=&#34;alternate&#34; /&amp;gt;
         &amp;lt;link rel=&#34;shortcut icon&#34; /&amp;gt;
         &amp;lt;link rel=&#34;stylesheet&#34; type=&#34;text/css&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Parece obvio, pero no muchas veces se cumple.&lt;/p&gt;
&lt;p class=&#34;atencion&#34;&gt;
  &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_abre.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;&lt;br /&gt;No inclu&amp;iacute; &lt;strong&gt;&lt;script&gt;&lt;/script&gt;&lt;/strong&gt; intencionalmente ya que existen escuelas que dicen que es mejor incluirlos abajo del c&amp;oacute;digo de tu p&amp;aacute;gina, antes del &lt;strong&gt;&lt;/body&gt;&lt;/strong&gt;, lo que no valida en el c&amp;oacute;digo &lt;strong&gt;HTML&lt;/strong&gt; pero acelera la carga de los elementos del &lt;strong&gt;DOM&lt;/strong&gt; y deja para el final la carga de los &lt;em&gt;scripts&lt;/em&gt;. Mejor lo dejo a criterio de cada desarrollador.&lt;br /&gt; &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_cierra.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;
&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://blogs.msdn.com/b/ieinternals/archive/2011/07/18/optimal-html-head-ordering-to-avoid-parser-restarts-redownloads-and-improve-performance.aspx&#34; title=&#34;Enlace externo a &amp;quot;Best Practice: Get your HEAD in order&amp;quot;&#34; target=&#34;_blank&#34;&gt;Best Practice: Get your HEAD in order&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Animaciones CSS3 avanzadas</title>
      <link>https://csslab.cl/2011/06/21/animaciones-css3-avanzadas/</link>
      <pubDate>Tue, 21 Jun 2011 20:13:07 +0000</pubDate>
      
      <guid>https://csslab.cl/2011/06/21/animaciones-css3-avanzadas/</guid>
      <description>&lt;p&gt;He estado impaciente para darme la libertad de investigar y escribir algo más avanzado utilizando &lt;strong&gt;CSS3&lt;/strong&gt; y animaciones, ya que el soporte de ciertas propiedades están más extendidas y si las comenzamos a utilizar en nuestros proyectos podemos forzar un poco la adaptación de estos nuevos estándares. Mi idea no es utilizarlas aún al 100%, sino que entregando una alternativa para navegadores menos avanzados en estas propiedades (existen algunos &lt;em&gt;frameworks&lt;/em&gt; que lo están permitiendo, ver enlaces al final).&lt;/p&gt;
&lt;p&gt;En este artículo les mostraré un par de propiedades que pueden marcar la diferencia ente lo que pensabas conocer sobre &lt;strong&gt;CSS&lt;/strong&gt; y lo que se pretende sea la capacidad nativa de los &lt;em&gt;browsers&lt;/em&gt; de permitirnos interacciones mucho más ricas y lo mejor, y más rápidas.&lt;/p&gt;
&lt;p class=&#34;leyenda&#34;&gt;
  * He intentado sin buenos frutos hacer andar por lo menos un par de ejemplos en &lt;strong&gt;IE9&lt;/strong&gt; y no hay caso, seguiré investigando
&lt;/p&gt;</description>
      <content>&lt;p&gt;He estado impaciente para darme la libertad de investigar y escribir algo más avanzado utilizando &lt;strong&gt;CSS3&lt;/strong&gt; y animaciones, ya que el soporte de ciertas propiedades están más extendidas y si las comenzamos a utilizar en nuestros proyectos podemos forzar un poco la adaptación de estos nuevos estándares. Mi idea no es utilizarlas aún al 100%, sino que entregando una alternativa para navegadores menos avanzados en estas propiedades (existen algunos &lt;em&gt;frameworks&lt;/em&gt; que lo están permitiendo, ver enlaces al final).&lt;/p&gt;
&lt;p&gt;En este artículo les mostraré un par de propiedades que pueden marcar la diferencia ente lo que pensabas conocer sobre &lt;strong&gt;CSS&lt;/strong&gt; y lo que se pretende sea la capacidad nativa de los &lt;em&gt;browsers&lt;/em&gt; de permitirnos interacciones mucho más ricas y lo mejor, y más rápidas.&lt;/p&gt;
&lt;p class=&#34;leyenda&#34;&gt;
  * He intentado sin buenos frutos hacer andar por lo menos un par de ejemplos en &lt;strong&gt;IE9&lt;/strong&gt; y no hay caso, seguiré investigando
&lt;/p&gt;
&lt;h3 id=&#34;transiciones1-span4--mobilespan2span11span3span11span4span5span&#34;&gt;Transiciones&lt;img src=&#34;http://www.csslab.cl/ejemplos/browsers/safari_sm.png&#34; alt=&#34;&#34;&gt; &lt;span&gt;4+ &amp;amp; Mobile&lt;/span&gt;&lt;img src=&#34;http://www.csslab.cl/ejemplos/browsers/chrome_sm.png&#34; alt=&#34;&#34;&gt;&lt;span&gt;11+&lt;/span&gt;&lt;img src=&#34;http://www.csslab.cl/ejemplos/browsers/opera_sm.png&#34; alt=&#34;&#34;&gt;&lt;span&gt;11+&lt;/span&gt;&lt;img src=&#34;http://www.csslab.cl/ejemplos/browsers/ff_sm.png&#34; alt=&#34;&#34;&gt;&lt;span&gt;5+&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;La propiedad &lt;strong&gt;transition-duration&lt;/strong&gt; define el tiempo de duración total de una transición de un estado A a uno B, sea el que sea el estilo que estamos dando.&lt;/p&gt;
&lt;p&gt;Ya la propiedad &lt;strong&gt;transition-timing-function&lt;/strong&gt; define el rango el cual la transición ocurre, lo que puede incluir aceleraciones o desaceleraciones. Básicamente, describe cómo la animación ocurre durante el tiempo definido en &lt;strong&gt;transition-duration&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;En el siguiente ejemplo las 3 cajas tienen la misma transformación, pero usan diferentes valores para &lt;strong&gt;transition-timing-function&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/css3-avanzado/ejemplo1.html&#34; title=&#34;Enlace en CSSLab.cl a &amp;quot;Ejemplo 1&amp;quot;&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo 1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En el siguiente ejemplo, haremos intervalos de medio segundo (0.5s) en la ejecución de un estilo através de la propiedad &lt;strong&gt;transition-duration&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/css3-avanzado/ejemplo2.html&#34; title=&#34;Enlace en CSSLab.cl a &amp;quot;Ejemplo 2&amp;quot;&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo 2&lt;/a&gt;&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/06/css.jpg&#34; alt=&#34;&#34; title=&#34;css&#34; width=&#34;630&#34; height=&#34;180&#34; class=&#34;aligncenter size-full wp-image-768&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2011/06/css.jpg 630w, http://www.csslab.cl/wp-content/uploads/2011/06/css-300x85.jpg 300w, http://www.csslab.cl/wp-content/uploads/2011/06/css-220x62.jpg 220w&#34; sizes=&#34;(max-width: 630px) 100vw, 630px&#34; /&gt; 
&lt;h3 id=&#34;transformaciones-3d1-span4--mobilespan2span11span&#34;&gt;Transformaciones 3D&lt;img src=&#34;http://www.csslab.cl/ejemplos/browsers/safari_sm.png&#34; alt=&#34;&#34;&gt; &lt;span&gt;4+ &amp;amp; Mobile&lt;/span&gt;&lt;img src=&#34;http://www.csslab.cl/ejemplos/browsers/chrome_sm.png&#34; alt=&#34;&#34;&gt;&lt;span&gt;11+&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;Este tipo de propiedades aún tienen un soporte limitado (&lt;em&gt;browsers&lt;/em&gt; &lt;em&gt;Webkit&lt;/em&gt; principalmente, incluyendo móviles) pero se espera que pronto se amplíe (por eso me doy el tiempo de considerarlo en este artículo). El principio básico es el &lt;em&gt;keyframe&lt;/em&gt;, y si has usado &lt;strong&gt;Flash&lt;/strong&gt; u otra herramienta de animación (&lt;strong&gt;Live Motion&lt;/strong&gt;, &lt;strong&gt;After Effects&lt;/strong&gt;) comprenderás este concepto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_abre.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;  
Un _keyframe_ define el estilo que ser&amp;aacute; aplicado en ese momento dentro de un lapso de animaci&amp;oacute;n. El motor de animaci&amp;oacute;n del _browser_ interpolar&amp;aacute; los estilos definidos entre esos _keyframes_.  
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_cierra.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt; 
&lt;/blockquote&gt;
&lt;p&gt;Veamos un ejemplo: comenzamos por definir una rotación, dándole un nombre y un comportamiento:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@-webkit-keyframes girando {
  from { -webkit-transform: rotateY(0deg);    }
  to   { -webkit-transform: rotateY(-360deg); }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Acabamos de crear un comportamiento para un keyframe y lo llamamos &lt;strong&gt;girando&lt;/strong&gt;. La animación se moverá y rotará en relacion al contenedor que determinemos ahora:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#contenedor {
   margin: 30px auto;
   -webkit-perspective: 600px;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con &lt;strong&gt;-webkit-perspective&lt;/strong&gt; definimos el movimiento del elemento en &lt;strong&gt;3D&lt;/strong&gt; en el eje &lt;strong&gt;Z&lt;/strong&gt; (creando el efecto de profundidad), el que no puede ser definido antes con el simple &lt;strong&gt;CSS2&lt;/strong&gt; (ya que es sólo &lt;strong&gt;2D&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;Ahora integramos el keyframe con el contenedor, además de agregar el tiempo de duración de la animación:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#girando {
   -webkit-animation-name: girando;
   -webkit-animation-timing-function: linear;
   -webkit-animation-iteration-count: infinite;
   -webkit-animation-duration: 3s;
   -webkit-transform-style: preserve-3d;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/css3-avanzado/ejemplo3.html&#34; title=&#34;Enlace en CSSLab.cl a &amp;quot;Ejemplo 3&amp;quot;&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo 3&lt;/a&gt;&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo3.png&#34; alt=&#34;Ejemplo 3 CSS3 Avanzado en CSSLab.cl&#34; title=&#34;ejemplo3&#34; width=&#34;491&#34; height=&#34;257&#34; class=&#34;aligncenter size-full wp-image-773&#34; style=&#34;margin-left: 80px;&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo3.png 491w, http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo3-300x157.png 300w, http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo3-220x115.png 220w&#34; sizes=&#34;(max-width: 491px) 100vw, 491px&#34; /&gt; 
&lt;p&gt;Para girar un grupo de elementos que se posicionan dentro de otro, debemos posicionar estos elementos de manera absoluta y girar cada uno en grados según la cantidad de elementos que sean. La magia no sólo está en estas nuevas propiedades que entrega &lt;em&gt;Webkit&lt;/em&gt;, sino que además en las que &lt;strong&gt;CSS3&lt;/strong&gt; trae como &lt;strong&gt;[box-shadow][5]&lt;/strong&gt;, &lt;strong&gt;[rgba][6]&lt;/strong&gt; y &lt;strong&gt;[text-shadow][5]&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/css3-avanzado/ejemplo4.html&#34; title=&#34;Enlace en CSSLab.cl a &amp;quot;Ejemplo 4&amp;quot;&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo 4&lt;/a&gt;&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo4.png&#34; alt=&#34;&#34; title=&#34;ejemplo4&#34; width=&#34;584&#34; height=&#34;229&#34; class=&#34;aligncenter size-full wp-image-775&#34; style=&#34;margin-left: 30px;&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo4.png 584w, http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo4-300x117.png 300w, http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo4-220x86.png 220w&#34; sizes=&#34;(max-width: 584px) 100vw, 584px&#34; /&gt; 
&lt;p&gt;Interesante es lo que puedes lograr agregando la propiedad:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;-webkit-backface-visibility: hidden;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Donde se oculta la cara del elemento que está al contrario dado el efecto &lt;strong&gt;3D&lt;/strong&gt;; con esto podemos disminuir la carga del procesador del computador al renderizar esta parte del elemento &lt;strong&gt;HTML&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/css3-avanzado/ejemplo4-1.html&#34; title=&#34;Enlace en CSSLab.cl a &amp;quot;Ejemplo 4.1&amp;quot;&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo 4.1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cambiamos un poco el código para poder hacer rotar un cubo; verás que los únicos cambios han sido meramente estéticos y de rotación del elemento con &lt;strong&gt;translateZ(90px)&lt;/strong&gt;. Además, agregamos la animación por lapsus de tiempo, con la cual podremos hacer pausas y definir cuánto y qué cosas se moverán en tales instantes:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@-webkit-keyframes girando {
   from,20% 	{ -webkit-transform: rotateY(0deg);   }
   30%,40%  	{ -webkit-transform: rotateY(90deg);  }
   50%,60%  	{ -webkit-transform: rotateY(180deg); }
   70%,80% 	{ -webkit-transform: rotateY(270deg); }
   90%,to	{ -webkit-transform: rotateY(360deg); }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/css3-avanzado/ejemplo5.html&#34; title=&#34;Enlace en CSSLab.cl a &amp;quot;Ejemplo 5&amp;quot;&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo 5&lt;/a&gt;&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo5.png&#34; alt=&#34;&#34; title=&#34;ejemplo5&#34; width=&#34;400&#34; height=&#34;262&#34; class=&#34;aligncenter size-full wp-image-777&#34; style=&#34;margin-left: 120px;&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo5.png 400w, http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo5-300x196.png 300w, http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo5-220x144.png 220w&#34; sizes=&#34;(max-width: 400px) 100vw, 400px&#34; /&gt; 
&lt;p&gt;Y para el final, una integración del cubo rotundo anterior con vídeos através de &lt;strong&gt;HTML5&lt;/strong&gt;, en los que puedes ver tienen una gran performance ya que son propiedades nativas (&lt;em&gt;Chrome / Safari&lt;/em&gt;):&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/css3-avanzado/ejemplo6.html&#34; title=&#34;Enlace en CSSLab.cl a &amp;quot;Ejemplo 6&amp;quot;&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo 6&lt;/a&gt;&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo6.png&#34; alt=&#34;&#34; title=&#34;ejemplo6&#34; width=&#34;450&#34; height=&#34;312&#34; class=&#34;aligncenter size-full wp-image-780&#34; style=&#34;margin-left: 90px;&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo6.png 450w, http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo6-300x208.png 300w, http://www.csslab.cl/wp-content/uploads/2011/06/ejemplo6-220x152.png 220w&#34; sizes=&#34;(max-width: 450px) 100vw, 450px&#34; /&gt; 
&lt;p&gt;Siento que estamos presenciando un cambio en el paradigma donde la capa de presentación se está uniendo con la de interacción o lo que es mejor, una redefinición de desarrollo &lt;em&gt;front-end&lt;/em&gt;. Si no te has aventurado en el código fuente, es mejor apurarte ya que la máquina está a toda velocidad.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://52framework.com/&#34; title=&#34;Enlace externo a &amp;quot;52framework&amp;quot;&#34; target=&#34;_blank&#34;&gt;52framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.sproutcore.com/&#34; title=&#34;Enlace externo a &amp;quot;SproutCore&amp;quot;&#34; target=&#34;_blank&#34;&gt;SproutCore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://joapp.com/&#34; title=&#34;Enlace externo a &amp;quot;Jo&amp;quot;&#34; target=&#34;_blank&#34;&gt;Jo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://popcornjs.org/&#34; title=&#34;Enlace externo a &amp;quot;Popcorn.js&amp;quot;&#34; target=&#34;_blank&#34;&gt;Popcorn.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://gravityframework.com/&#34; title=&#34;Enlace externo a &amp;quot;Gravity&amp;quot;&#34; target=&#34;_blank&#34;&gt;Gravity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.limejs.com/&#34; title=&#34;Enlace externo a &amp;quot;LimeJS&amp;quot;&#34; target=&#34;_blank&#34;&gt;LimeJS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[5]: &lt;a href=&#34;http://www.csslab.cl/2010/03/09/usando-css3-ahora/&#34;&gt;http://www.csslab.cl/2010/03/09/usando-css3-ahora/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Usando CSS3 ahora&amp;rdquo;&amp;rdquo;
[6]: &lt;a href=&#34;http://www.csslab.cl/2009/02/26/tip-precoz-3-rgba/&#34;&gt;http://www.csslab.cl/2009/02/26/tip-precoz-3-rgba/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Tip Precoz 3: RGBa&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 40</title>
      <link>https://csslab.cl/2011/06/09/lo-vi-y-me-gusto-40/</link>
      <pubDate>Thu, 09 Jun 2011 14:16:07 +0000</pubDate>
      
      <guid>https://csslab.cl/2011/06/09/lo-vi-y-me-gusto-40/</guid>
      <description>#40 – 09 Junio 2011</description>
      <content>&lt;p&gt;#40 – 09 Junio 2011&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://somethingdesign.es/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/06/somethingdesign.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.buinzoo.cl/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/06/buinzoo.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>bottom que no se va al bottom</title>
      <link>https://csslab.cl/2011/05/24/bottom-que-no-se-va-al-bottom/</link>
      <pubDate>Tue, 24 May 2011 23:07:58 +0000</pubDate>
      
      <guid>https://csslab.cl/2011/05/24/bottom-que-no-se-va-al-bottom/</guid>
      <description>&lt;p&gt;Este es un &lt;strong&gt;fix&lt;/strong&gt; corto y preciso. En &lt;em&gt;browsers&lt;/em&gt; modernos (¡sí, tal como leíste esto no afecta &lt;strong&gt;IE6&lt;/strong&gt; ni &lt;strong&gt;IE7&lt;/strong&gt;!) la propiedad &lt;strong&gt;background-position&lt;/strong&gt; no funciona como uno espera.&lt;/p&gt;
&lt;p&gt;La condición dice:&lt;/p&gt;</description>
      <content>&lt;p&gt;Este es un &lt;strong&gt;fix&lt;/strong&gt; corto y preciso. En &lt;em&gt;browsers&lt;/em&gt; modernos (¡sí, tal como leíste esto no afecta &lt;strong&gt;IE6&lt;/strong&gt; ni &lt;strong&gt;IE7&lt;/strong&gt;!) la propiedad &lt;strong&gt;background-position&lt;/strong&gt; no funciona como uno espera.&lt;/p&gt;
&lt;p&gt;La condición dice:&lt;/p&gt;
&lt;p class=&#34;atencion&#34;&gt;
  &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_abre.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;&lt;br /&gt; Si quieres poner una imagen como fondo del &lt;strong&gt;&lt;body&gt;&lt;/strong&gt; y posicionarla abajo de la ventana del &lt;em&gt;browser&lt;/em&gt; (&lt;strong&gt;background-position: bottom&lt;/strong&gt;) y el contenido de tu sitio no llega hasta el fondo de la ventana, la imagen de fondo llegar&amp;aacute; s&amp;oacute;lo hasta donde llegue el contenido.&lt;br /&gt; &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_cierra.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;
&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 1][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Para solucionarlo, basta con definir:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;html {
   height: 100%;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 2][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Ahora, esta solución es útil cuando sabes que el contenido es y será menor al alto de la ventana; si tu contenido es dinámico es mejor que utilices &lt;strong&gt;min-height&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;html {
   min-height: 100%;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 3][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Gracias a [inyaka][4] por hacerlo notar.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/05/bottom.png&#34; alt=&#34;&#34; title=&#34;bottom&#34; width=&#34;650&#34; height=&#34;414&#34; class=&#34;aligncenter size-full wp-image-748&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2011/05/bottom.png 650w, http://www.csslab.cl/wp-content/uploads/2011/05/bottom-300x191.png 300w, http://www.csslab.cl/wp-content/uploads/2011/05/bottom-220x140.png 220w&#34; sizes=&#34;(max-width: 650px) 100vw, 650px&#34; /&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/background-position/ejemplo1.html&#34;&gt;http://www.csslab.cl/ejemplos/background-position/ejemplo1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 1&amp;quot;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/background-position/ejemplo2.html&#34;&gt;http://www.csslab.cl/ejemplos/background-position/ejemplo2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 2&amp;quot;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/background-position/ejemplo3.html&#34;&gt;http://www.csslab.cl/ejemplos/background-position/ejemplo3.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 3&amp;quot;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/2011/05/24/bottom-que-no-se-va-al-bottom/comment-page-1/#comment-40128&#34;&gt;http://www.csslab.cl/2011/05/24/bottom-que-no-se-va-al-bottom/comment-page-1/#comment-40128&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Manifesto al diseñador</title>
      <link>https://csslab.cl/2011/05/04/manifesto-al-disenador/</link>
      <pubDate>Wed, 04 May 2011 16:11:59 +0000</pubDate>
      
      <guid>https://csslab.cl/2011/05/04/manifesto-al-disenador/</guid>
      <description>&lt;p&gt;El diseño está en todos lados, y como diseñador suelo ser muy crítico cuando lo veo aplicado en web. Aunque ya no ejerzco mi profesión hace muchos años, sí puedo opinar y hacer valer mi experiencia cuando trabajo con un diseñador y cuando tengo que trabajar con un diseño ajeno. Por ello, me gustaría compartir lo que le exijo en su trabajo:&lt;/p&gt;</description>
      <content>&lt;p&gt;El diseño está en todos lados, y como diseñador suelo ser muy crítico cuando lo veo aplicado en web. Aunque ya no ejerzco mi profesión hace muchos años, sí puedo opinar y hacer valer mi experiencia cuando trabajo con un diseñador y cuando tengo que trabajar con un diseño ajeno. Por ello, me gustaría compartir lo que le exijo en su trabajo:&lt;/p&gt;
&lt;h3 id=&#34;interfaz&#34;&gt;Interfaz:&lt;/h3&gt;
&lt;p&gt;Diseñen pensando en el sustrato: dispositivo y sus capacidades/limitaciones, resolución de pantalla, tamaño del &lt;em&gt;browser&lt;/em&gt; (incluyan las barritas esas que se agregan como add-on de &lt;em&gt;Yahoo&lt;/em&gt;, &lt;em&gt;Google&lt;/em&gt;, &lt;em&gt;Facebook&lt;/em&gt;, &lt;em&gt;Hotmail&lt;/em&gt;, Favoritos, etc.) e incluso orientación (si es &lt;em&gt;[mobile][1]&lt;/em&gt;, involucra rotación de la pantalla). Hoy en día ya no consideramos la cantidad de colores, pero sí en el formato de la pantalla.&lt;/p&gt;
&lt;h3 id=&#34;accesibilidad&#34;&gt;Accesibilidad:&lt;/h3&gt;
&lt;p&gt;La [accesibilidad][2] no sólo se refiere a la discapacidad del usuario (ceguera, dislexia, daltonismo) sino que se incluye a su incapacidad tecnológica (computador antiguo/lento, &lt;em&gt;browser&lt;/em&gt; anticuado e incapaz de ser actualizado, etc). Para esto, el diseñador debe considerar el &lt;em&gt;fallback&lt;/em&gt; (o &lt;em&gt;[graceful degradation][3]&lt;/em&gt;) para que este usuario pueda realizar la tarea que está destinado en tu sitio web, pero claro no con la misma experiencia por la cual fue diseñada.&lt;/p&gt;
&lt;h3 id=&#34;funcionalidad&#34;&gt;Funcionalidad:&lt;/h3&gt;
&lt;p&gt;¿Va a ser en &lt;strong&gt;Flash&lt;/strong&gt; o en &lt;strong&gt;HTML&lt;/strong&gt;? ¿Utilizaremos &lt;strong&gt;Javascript&lt;/strong&gt; (no es necesario que sepas programar, pero sí cómo funciona y bajo qué límites)? ¿Estará bajo algún &lt;strong&gt;CMS&lt;/strong&gt; (para sacarle más provecho a sus funcionalidades)? Es bueno tener esto claro desde antes mismo de poner manos a la obra. Una buena conversa con el desarrollador ayuda mucho, y seguro aprenderás algo nuevo.&lt;/p&gt;
&lt;h3 id=&#34;experiencia&#34;&gt;Experiencia:&lt;/h3&gt;
&lt;p&gt;Al contrario del diseño impreso, en web el diseño no es plano sino que tiene profundidad. No me refiero al burdo &lt;strong&gt;3D&lt;/strong&gt;, sino que a la [interacción que existe de tu interfaz con el usuario][4]. Es vital considerar [la experiencia con la cual el usuario interactuará][4], y esto va muy ligado con la interfaz y funcionalidad. Es imperativo -y veo a diario una gran falta- tener claro el diseño de los elementos &lt;em&gt;clickeables&lt;/em&gt;: enlaces, botones, &lt;em&gt;mouseovers&lt;/em&gt; y si aparecen con &lt;strong&gt;fadeInOut&lt;/strong&gt; o con &lt;strong&gt;slideInOut&lt;/strong&gt;, etc.&lt;/p&gt;
&lt;h3 id=&#34;flujo&#34;&gt;Flujo:&lt;/h3&gt;
&lt;p&gt;Si trabajas con un arquitecto de información éste te deberá proveer de todo el flujo a ser diseñado y construído, pero sino debes tomarte un tiempo más de lo habitual para planificar antes el flujo completo que existirá en tu sitio y diseñarlo. Aquí incluyo el diseño de los &lt;em&gt;preloaders&lt;/em&gt;, de las validaciones de los campos de formularios, de los mensajes de error, de éxito, si hay envío de correos de confirmación se deben diseñar también etc; se deben considerar todas las pantallas existentes en la navegación.&lt;/p&gt;
&lt;h3 id=&#34;orden&#34;&gt;Orden:&lt;/h3&gt;
&lt;p&gt;Trabajar en equipo es trabajar en sincronía: así como en el atletismo, en web trabajamos en posta y ésta debe pasarse [de la manera más ordenada posible][5] para que todos podamos llegar a la meta a tiempo. Si vas a entregar un &lt;strong&gt;PSD/PNG&lt;/strong&gt; en capas, que éstas estén ordenadas con su nombre descriptivo y ojalá en carpetas. Si entregas 1 archivo con todo el proyecto, que esté en un peso considerable (acoplando/combinando capas que sepas que no se van a utilizar separadas), entregando la tipografía si ésta no es &lt;em&gt;web-safe&lt;/em&gt;, y ordenando las diferentes pantallas del proyecto en sus respectivas carpetas. Se agradece mucho, pero mucho esta consideración.&lt;/p&gt;
&lt;p&gt;Palabras finales: &lt;strong&gt;profesionalícense&lt;/strong&gt;. Vayan más allá de lo que hacen actualmente, y que creen que deben hacer. Siento que el mercado ve a los diseñadores como burdos ‘&lt;em&gt;dibujantes&lt;/em&gt;‘, pero en actitudes veo que son los mismos diseñadores quienes hacen esa imagen, no toman en serio y no son serios con su trabajo; por supuesto no generalizo pero hay una gran masa que actúa como lo lleva la corriente, y no son los generadores de esa energía. Puedes incluso llegar a pensar &lt;em&gt;&amp;ldquo;pero si no me pagan para eso&amp;rdquo;&lt;/em&gt;, pero lograrás un punto donde puedes negociar mejor tu valor en la empresa o por el trabajo realizado.&lt;/p&gt;
&lt;p&gt;Espero haya aportado mi grano de arena, para una mejor profesión.&lt;/p&gt;
&lt;link href=&#34;http://fonts.googleapis.com/css?family=UnifrakturMaguntia:regular&#34; rel=&#34;stylesheet&#34; type=&#34;text/css&#34; /&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/category/mobile/&#34;&gt;http://www.csslab.cl/category/mobile/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Artículos con categoría Mobile&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2009/06/10/mejor-accesibilidad/&#34;&gt;http://www.csslab.cl/2009/06/10/mejor-accesibilidad/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Mejor accesibilidad&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2009/09/10/como-superar-ie6-ie7-ie8-y-no-morir-en-el-intento/&#34;&gt;http://www.csslab.cl/2009/09/10/como-superar-ie6-ie7-ie8-y-no-morir-en-el-intento/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Cómo superar IE6-IE7-IE8 (y no morir en el intento)&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/2010/01/16/disenando-experiencias/&#34;&gt;http://www.csslab.cl/2010/01/16/disenando-experiencias/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Diseñando experiencias&amp;rdquo;&amp;rdquo;
[5]: &lt;a href=&#34;http://www.csslab.cl/2007/11/08/el-orden-ante-todo/&#34;&gt;http://www.csslab.cl/2007/11/08/el-orden-ante-todo/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;El orden ante todo&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 39</title>
      <link>https://csslab.cl/2011/03/30/lo-vi-y-me-gusto-39/</link>
      <pubDate>Wed, 30 Mar 2011 20:44:03 +0000</pubDate>
      
      <guid>https://csslab.cl/2011/03/30/lo-vi-y-me-gusto-39/</guid>
      <description>#39 – 30 Marzo 2011</description>
      <content>&lt;p&gt;#39 – 30 Marzo 2011&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.sebastianferrer.cl/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/03/sebastianferrer.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.patagoniaventura.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/03/patagoniaventura.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.lagotamango.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/03/lagotamango.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Displayfix: lo último en clearfix</title>
      <link>https://csslab.cl/2011/03/17/displayfix-lo-ultimo-en-clearfix/</link>
      <pubDate>Thu, 17 Mar 2011 15:11:53 +0000</pubDate>
      
      <guid>https://csslab.cl/2011/03/17/displayfix-lo-ultimo-en-clearfix/</guid>
      <description>Han pasado 5 años desde el primer artículo donde describí exhaustivamente la causa y solución más común de clearfix. Y me asombra que sigan apareciendo soluciones diferentes e innovadoras a este problema que es transversal a todos los browsers. En este artículo, muestro y demuestro el más simple (pero no versátil) de los que existen en el mercado.
Dado un contenedor que contiene uno o más elementos flotando en su interior, siempre y cuando puedas definir un ancho fijo:</description>
      <content>&lt;p&gt;Han pasado 5 años desde &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34; target=&#34;_blank&#34; title=&#34;Enlace en CSSLab a &amp;quot;Flotando en la incertidumbre&amp;quot;&#34;&gt;el primer artículo donde describí exhaustivamente la causa y solución más común de &lt;strong&gt;clearfix&lt;/strong&gt;&lt;/a&gt;. Y me asombra que sigan apareciendo soluciones diferentes e innovadoras a este problema que es transversal a todos los &lt;em&gt;browsers&lt;/em&gt;. En este artículo, muestro y demuestro el más simple (pero no versátil) de los que existen en el mercado.&lt;/p&gt;
&lt;p&gt;Dado un contenedor que contiene uno o más elementos flotando en su interior, &lt;strong&gt;siempre y cuando puedas definir un ancho fijo&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#container {
   width: 600px;
   display: inline-block;
}
   .floto {
      float: left;
   }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Este método se comporta bien cuando el ancho de los elementos interiores que están flotando es menor que el del padre; las cosas comienzan a complicarse cuando aumentan:&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 2][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Para contrarrestarlo, define también ancho fijo en los elementos flotantes:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#container {
   width: 600px;
   display: inline-block;
}
   .floto {
      width: 280px;
      float: left;
   }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 3][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Nada es perfecto… es un método más.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/displayfix/displayfix1.html&#34;&gt;http://www.csslab.cl/ejemplos/displayfix/displayfix1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 1: Displayfix&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/displayfix/displayfix2.html&#34;&gt;http://www.csslab.cl/ejemplos/displayfix/displayfix2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 2: Displayfix&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/displayfix/displayfix3.html&#34;&gt;http://www.csslab.cl/ejemplos/displayfix/displayfix3.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 3: Displayfix&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Animaciones y Transformaciones con CSS3</title>
      <link>https://csslab.cl/2011/01/31/animaciones-y-transformaciones-con-css3/</link>
      <pubDate>Mon, 31 Jan 2011 21:53:44 +0000</pubDate>
      
      <guid>https://csslab.cl/2011/01/31/animaciones-y-transformaciones-con-css3/</guid>
      <description>Se puede ver un aumento en el uso de CSS3 en sitios web de amplio uso, y actualmente es un diferencial a la hora de atraer y enganchar al usuario. Aunque sé que es pronto para sumergirse totalmente en estas aguas, no perdemos nada con jugar un poco con transiciones y animaciones en CSS3.
NOTA: A&amp;uacute;n es necesario el uso de browsers muy modernos, como Safari 5 y Chrome 10. Firefox 3.</description>
      <content>&lt;p&gt;Se puede ver un aumento en el uso de &lt;strong&gt;CSS3&lt;/strong&gt; en sitios web de amplio uso, y actualmente es un diferencial a la hora de atraer y enganchar al usuario. Aunque sé que es pronto para sumergirse totalmente en estas aguas, no perdemos nada con jugar un poco con transiciones y animaciones en &lt;strong&gt;CSS3&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&#34;atencion&#34;&gt;
  &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_abre.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;&lt;br /&gt;NOTA: A&amp;uacute;n es necesario el uso de &lt;em&gt;browsers&lt;/em&gt; muy modernos, como&lt;strong&gt; Safari 5&lt;/strong&gt; y &lt;strong&gt;Chrome 10&lt;/strong&gt;. &lt;strong&gt;Firefox 3.6&lt;/strong&gt; anda pero no ofrece todo el soporte que quisi&amp;eacute;ramos (a&amp;uacute;n).&lt;br /&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_cierra.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;
&lt;/p&gt;
&lt;h3 id=&#34;transiciones&#34;&gt;Transiciones&lt;/h3&gt;
&lt;p&gt;Su característica es cambiar una propiedad (o un grupo de ellas) en un período de tiempo determinado. Una ventaja por sobre &lt;strong&gt;Javascript&lt;/strong&gt; es su degradación, ya que si esta propiedad no es soportada por el browser, la animación simplemente no es mostrada.&lt;/p&gt;
&lt;p&gt;El siguiente código muestra el aumento del ancho de un &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; en un segundo cuando el &lt;em&gt;mouse&lt;/em&gt; se posiciona sobre él. Luego, cuando el mouse sale del &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; su ancho vuelve a la posición inicial en 2 segundos:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;.prueba1 {
   margin: 10px;
   width: 200px;
   height: 200px;
   background: #f00;
   border: 1px solid #666;
   transition: all 1s ease;
}
   .prueba1:hover{
      width: 400px;
      transition: all 2s ease;
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 1][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;A continuación, una animación compuesta: dado un estado inicial se define nuevo &lt;strong&gt;width&lt;/strong&gt;, &lt;strong&gt;height&lt;/strong&gt; y &lt;strong&gt;background-color&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;.prueba2 {
   margin: 10px;
   width: 200px;
   height: 200px;
   background-color: #f00;
   border: 1px solid #666;
   transition-property: width, height, background-color;
   transition-duration: 0.5s, 1s, 1s;
   transition-timing-function: ease, ease-out;
   transition-delay: 0s ,0.5s, 1.5s;
  }
   .prueba2:hover {
      width: 400px;
      height: 300px;
      background-color: #fc0;
      transition-property: width, height, background-color;
      transition-duration: 0.5s, 0.5s, 0.5s;
      transition-timing-function: linear, linear;
      transition-delay: 0s ,0.5s, 0.5s;
   }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 2][2]{.verejemplo}&lt;/p&gt;
&lt;h4 id=&#34;propiedades&#34;&gt;Propiedades:&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;transition-property:&lt;/dt&gt;
&lt;dd&gt;Determina la(s) propiedad(es) a ser animadas; puede ser cualquier propiedad CSS.&lt;/dd&gt;
&lt;dt&gt;transition-duration:&lt;/dt&gt;
&lt;dd&gt;Indica la duración de la animació del inicio al fin en segundos. Por defecto el valor es 0.&lt;/dd&gt;
&lt;dt&gt;transition-timing-function:&lt;/dt&gt;
&lt;dd&gt;Definen física de animación: ease (por defecto), linear, ease-in, ease-out y ease-in-out.&lt;/dd&gt;
&lt;dt&gt;transition-delay:&lt;/dt&gt;
&lt;dd&gt;Tiempo en que la animación debe pausarse antes de comenzar.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id=&#34;transformaciones&#34;&gt;Transformaciones:&lt;/h3&gt;
&lt;p&gt;Existen 4 tipos de valores para transformar elementos &lt;strong&gt;HTML&lt;/strong&gt; mediante &lt;strong&gt;CSS&lt;/strong&gt;3:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Skew:&lt;/dt&gt;
&lt;dd&gt;desplazamiento de los ejes horizontales.&lt;/dd&gt;
&lt;dt&gt;Scale:&lt;/dt&gt;
&lt;dd&gt;modificación de la escala del elemento.&lt;/dd&gt;
&lt;dt&gt;Rotate:&lt;/dt&gt;
&lt;dd&gt;cambio de rotación del mismo definido en grados.&lt;/dd&gt;
&lt;dt&gt;Translate:&lt;/dt&gt;
&lt;dd&gt;desplazamiento del elemento desde su posición original.&lt;/dd&gt;
&lt;/dl&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2011/01/css3transforms.png&#34; alt=&#34;&#34; title=&#34;CSSLab: transformaciones CSS3&#34; width=&#34;650&#34; height=&#34;200&#34; class=&#34;aligncenter size-full wp-image-702&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2011/01/css3transforms.png 650w, http://www.csslab.cl/wp-content/uploads/2011/01/css3transforms-300x92.png 300w, http://www.csslab.cl/wp-content/uploads/2011/01/css3transforms-220x67.png 220w&#34; sizes=&#34;(max-width: 650px) 100vw, 650px&#34; /&gt; 
&lt;p&gt;[Ver ejemplo 3][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Estas propiedades pueden ser utilizadas en la gran mayoría de los &lt;em&gt;browsers&lt;/em&gt; modernos, con sus debidos prefijos como pueden notar en el código fuente del ejemplo.&lt;/p&gt;
&lt;p&gt;Además, puedes comenzar a mezclar transformaciones con animaciones para lograr efectos como el siguiente (con &lt;em&gt;Safari/Chrome&lt;/em&gt;):&lt;/p&gt;
&lt;div id=&#34;divloco&#34;&gt;
  &lt;div class=&#34;hover&#34;&gt;
    Mouse over para que esto se vuelva loco.
  &lt;/div&gt;
&lt;/div&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#divloco div {
   height: 100px;
   width: 100px;
   border: 1px solid #f00;
   margin: 10px auto;
   background: #ccc;
   text-align: center;
   transition: all 2s ease-in-out;
}
   #divloco div:hover, #divloco div.hover_effect {
      transform: rotate(720deg) scale(2,2);
   }&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/css3-animations/&#34; title=&#34;Enlace externo a &amp;quot;CSS Animations Module Level 3&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSS Animations Module Level 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://webkit.org/blog/130/css-transforms/&#34; title=&#34;Enlace externo a &amp;quot;Surfin’ Safari: CSS Transforms&amp;quot;&#34; target=&#34;_blank&#34;&gt;Surfin’ Safari: CSS Transforms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://webkit.org/blog/138/css-animation/&#34; title=&#34;Enlace externo a &amp;quot;Surfin’ Safari: CSS Animation&amp;quot;&#34; target=&#34;_blank&#34;&gt;Surfin’ Safari: CSS Animation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://designshack.co.uk/articles/css/10-amazing-examples-of-innovative-css3-animation&#34; title=&#34;Enlace externo a &amp;quot;10 Amazing Examples of Innovative CSS3 Animation&amp;quot;&#34; target=&#34;_blank&#34;&gt;10 Amazing Examples of Innovative CSS3 Animation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/css3/prueba1.html&#34;&gt;http://www.csslab.cl/ejemplos/css3/prueba1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 1 transición CSS3&amp;quot;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/css3/prueba2.html&#34;&gt;http://www.csslab.cl/ejemplos/css3/prueba2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 2 transformación CSS3&amp;quot;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/css3/prueba3.html&#34;&gt;http://www.csslab.cl/ejemplos/css3/prueba3.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 3 transición-transformación CSS3&amp;quot;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Tip precoz 8: Deshabilitar click derecho con jQuery</title>
      <link>https://csslab.cl/2011/01/10/deshabilitar-click-derecho-con-jquery/</link>
      <pubDate>Mon, 10 Jan 2011 16:33:23 +0000</pubDate>
      
      <guid>https://csslab.cl/2011/01/10/deshabilitar-click-derecho-con-jquery/</guid>
      <description>&lt;p&gt;Puede que sea necesario, puede que algún cliente te lo pida y aunque argumentes de diferentes maneras no entienda que no es recomendable deshabilitarle opciones innatas al usuario limitándole la accesibilidad. Pero al final de cuentas, tenemos que vivir y accedemos a realizarle lo que necesita, con tal de terminar luego y entregar el proyecto y obtener finalmente el pago por el trabajo realizado.&lt;/p&gt;
&lt;p&gt;Para deshabilitar el &lt;strong&gt;click&lt;/strong&gt; derecho del &lt;em&gt;mouse&lt;/em&gt; del usuario basta la siguiente simple instrucción &lt;strong&gt;jQuery&lt;/strong&gt;:&lt;/p&gt;</description>
      <content>&lt;p&gt;Puede que sea necesario, puede que algún cliente te lo pida y aunque argumentes de diferentes maneras no entienda que no es recomendable deshabilitarle opciones innatas al usuario limitándole la accesibilidad. Pero al final de cuentas, tenemos que vivir y accedemos a realizarle lo que necesita, con tal de terminar luego y entregar el proyecto y obtener finalmente el pago por el trabajo realizado.&lt;/p&gt;
&lt;p&gt;Para deshabilitar el &lt;strong&gt;click&lt;/strong&gt; derecho del &lt;em&gt;mouse&lt;/em&gt; del usuario basta la siguiente simple instrucción &lt;strong&gt;jQuery&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(function(){
    $(document).bind(&#34;contextmenu&#34;,function(e){
        return false;
    });
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/deshabilitar_btnderecho.html&#34;&gt;http://www.csslab.cl/ejemplos/deshabilitar_btnderecho.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ver Ejemplo&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 38</title>
      <link>https://csslab.cl/2010/12/28/lo-vi-y-me-gusto-38/</link>
      <pubDate>Tue, 28 Dec 2010 17:02:41 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/12/28/lo-vi-y-me-gusto-38/</guid>
      <description>#38 &amp;#8211; 28 Diciembre 2010</description>
      <content>&lt;p class=&#34;catalizado&#34;&gt;
  #38 &amp;#8211; 28 Diciembre 2010&lt;a href=&#34;http://www.catalizado.com/?utm_source=CSSlab&amp;#038;utm_medium=categoria&amp;#038;utm_campaign=Csslab&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;http://www.csslab.cl/wp-content/themes/csslab_v51/images/btn_catalizado.gif&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.cappen.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/12/cappen.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.dazmoob.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/12/dasmoob.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.gt2p.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/12/gt2p.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.tekane.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/12/tekane.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Más y mejores tipografías con @font-face</title>
      <link>https://csslab.cl/2010/11/30/mas-y-mejores-tipografias-con-font-face/</link>
      <pubDate>Tue, 30 Nov 2010 19:04:51 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/11/30/mas-y-mejores-tipografias-con-font-face/</guid>
      <description>&lt;p&gt;Está bien, se están utilizando mucho hoy en día pero &lt;strong&gt;@font-face&lt;/strong&gt; no es una de las nuevas propiedades &lt;strong&gt;CSS3&lt;/strong&gt;; de hecho fue propuesta en &lt;strong&gt;CSS2&lt;/strong&gt; y ha sido implementada en &lt;strong&gt;IE&lt;/strong&gt; desde su versión 5, aunque lo hicieron en el formato de fuentes propietario (como no, si siempre &lt;em&gt;Microsoft&lt;/em&gt; lo hace) &lt;em&gt;Embedded OpenType&lt;/em&gt;. Como fueron los únicos en utilizarlo de esa manera, y desde &lt;strong&gt;Safari&lt;/strong&gt; 3.1 los fabricantes de &lt;em&gt;browsers&lt;/em&gt; han utilizado &lt;strong&gt;TrueType (.ttf)&lt;/strong&gt; y &lt;strong&gt;OpenType (.otf)&lt;/strong&gt;, &lt;strong&gt;IE&lt;/strong&gt; ha tenido que adaptarse desde su versión 7. La especificación de los formatos son:&lt;/p&gt;</description>
      <content>&lt;p&gt;Está bien, se están utilizando mucho hoy en día pero &lt;strong&gt;@font-face&lt;/strong&gt; no es una de las nuevas propiedades &lt;strong&gt;CSS3&lt;/strong&gt;; de hecho fue propuesta en &lt;strong&gt;CSS2&lt;/strong&gt; y ha sido implementada en &lt;strong&gt;IE&lt;/strong&gt; desde su versión 5, aunque lo hicieron en el formato de fuentes propietario (como no, si siempre &lt;em&gt;Microsoft&lt;/em&gt; lo hace) &lt;em&gt;Embedded OpenType&lt;/em&gt;. Como fueron los únicos en utilizarlo de esa manera, y desde &lt;strong&gt;Safari&lt;/strong&gt; 3.1 los fabricantes de &lt;em&gt;browsers&lt;/em&gt; han utilizado &lt;strong&gt;TrueType (.ttf)&lt;/strong&gt; y &lt;strong&gt;OpenType (.otf)&lt;/strong&gt;, &lt;strong&gt;IE&lt;/strong&gt; ha tenido que adaptarse desde su versión 7. La especificación de los formatos son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TTF&lt;/strong&gt; – Funciona en todos los &lt;em&gt;browsers&lt;/em&gt; excepto &lt;strong&gt;IE&lt;/strong&gt; y &lt;strong&gt;Mobile Safari (iPhone/iPad)&lt;/strong&gt;.
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;EOT&lt;/strong&gt; – Sólo &lt;strong&gt;IE&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WOFF&lt;/strong&gt; – Comprimido y candidato a estándar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SVG&lt;/strong&gt; – &lt;strong&gt;Mobile Safari (iPhone/iPad)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie8.gif&#34; alt=&#34;Internet Explorer 8&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Esto es simple: primero debes disponer de las fuentes que quieres utilizar, luego las puedes utilizar tal cual o transformarlas a los formatos necesarios. Esas fuentes las importas mediante &lt;strong&gt;CSS&lt;/strong&gt; y las utilizas como una propiedad &lt;strong&gt;font-family&lt;/strong&gt; donde quieras incluirlas. Quizás ya conocías [Cufón][1] o [SIFr][2], pero desde que uso &lt;strong&gt;@font-face&lt;/strong&gt; he notado que es bastante más rápido en la carga y es más versátil en su uso (ya que utiliza simple &lt;strong&gt;CSS&lt;/strong&gt; y no depende de llamados &lt;strong&gt;JS&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;Entonces, primero debes declarar la regla &lt;strong&gt;@font-face&lt;/strong&gt; en tu hoja de estilos para importar las tipografías (nótese la ruta donde las tienes en el servidor, si no estas seguro mejor utiliza algún path absoluto).&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@font-face {
   font-family: &#39;Delicious&#39;;
   src: url(&#39;Delicious-Roman.otf&#39;);
}
   @font-face {
      font-family: &#39;Delicious&#39;;
      font-weight: bold;
      src: url(&#39;Delicious-Bold.otf&#39;);
   }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si quieres estar seguro de que se verá en la gran mayoría de los &lt;em&gt;browsers&lt;/em&gt;, mejor impórtalas todas:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@font-face {
   font-family: &#39;Delicious&#39;;
   src: url(&#39;Delicious-Roman.eot&#39;);
   src: local(&#39;?&#39;), url(&#39;Delicious-Roman.woff&#39;) format(&#39;woff&#39;), url(&#39;Delicious-Roman.ttf&#39;) format(&#39;truetype&#39;), url(&#39;Delicious-Roman.svg#webfont57ztNrX6&#39;) format(&#39;svg&#39;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y luego las declaras por simple &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;h3 { font-family: Delicious, sans-serif; }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver demo][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Google actualmente está apoyando muchos desarrollos para Chrome y dispone de un &lt;a href=&#34;https://fonts.google.com/&#34; title=&#34;Enlace externo a &amp;quot;The Google Font Directory&amp;quot;&#34; target=&#34;_blank&#34;&gt;importante catálogo de fuentes&lt;/a&gt; para su fácil e inmediato uso (y directo desde sus servidores).&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;[Typography Basics – Some Fundamentals for Body Copy][4]&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://fonts.google.com/&#34; title=&#34;Enlace externo a &amp;quot;The Google Font Directory&amp;quot;&#34; target=&#34;_blank&#34;&gt;Google Font Directory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.fontsquirrel.com/fontface/generator&#34; title=&#34;Enlace externo a &amp;quot;@font-face Generator&amp;quot;&#34; target=&#34;_blank&#34;&gt;@font-face Generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://webfonts.info/wiki/index.php?title=Fonts_available_for_@font-face_embedding&#34; title=&#34;Enlace externo a &amp;quot;Fonts available for @font-face embedding&amp;quot;&#34; target=&#34;_blank&#34;&gt;Fonts available for @font-face embedding&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2006/02/24/usa-cualquier-con-css/&#34;&gt;http://www.csslab.cl/2006/02/24/usa-cualquier-con-css/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Usa cualquier Fuente con CSS&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2008/05/08/ms-tipografas-con-sifr/&#34;&gt;http://www.csslab.cl/2008/05/08/ms-tipografas-con-sifr/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Más tipografías con sIFR&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/fontface/index.html&#34;&gt;http://www.csslab.cl/ejemplos/fontface/index.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Demo 01 Font Face&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;https://blogging.com/typography-basics/&#34;&gt;https://blogging.com/typography-basics/&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Gradientes con CSS 3</title>
      <link>https://csslab.cl/2010/11/22/gradientes-con-css-3/</link>
      <pubDate>Mon, 22 Nov 2010 21:07:24 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/11/22/gradientes-con-css-3/</guid>
      <description>Muchas de las propiedades CSS3 han estado presentes en browsers Webkit como Safari y Chrome desde sus inicios; a medida que avancen han mejorado el soporte y no es diferente con el uso gradientes sólo con CSS. Desde la versión 3.6 se pueden utilizar con Firefox, y últimamente han tomado mucha fuerza en aplicativos web modernos.
¿Porqué utilizar gradientes en CSS en vez de imágenes?
 Es más flexible y mantenible Menos dependendias de programas y editores gráficos Menos consultas al servidor Es escalable  En este artículo abordaremos las maneras de escribir gradientes (lineales y radiales) para los principales navegadores modernos.</description>
      <content>&lt;p&gt;Muchas de las propiedades &lt;strong&gt;CSS3&lt;/strong&gt; han estado presentes en &lt;em&gt;browsers&lt;/em&gt; &lt;strong&gt;Webkit&lt;/strong&gt; como &lt;strong&gt;Safari&lt;/strong&gt; y &lt;strong&gt;Chrome&lt;/strong&gt; desde sus inicios; a medida que avancen han mejorado el soporte y no es diferente con el uso gradientes sólo con &lt;strong&gt;CSS&lt;/strong&gt;. Desde la versión 3.6 se pueden utilizar con &lt;strong&gt;Firefox&lt;/strong&gt;, y últimamente han tomado mucha fuerza en aplicativos web modernos.&lt;/p&gt;
&lt;p&gt;¿Porqué utilizar gradientes en &lt;strong&gt;CSS&lt;/strong&gt; en vez de imágenes?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Es más flexible y mantenible&lt;/li&gt;
&lt;li&gt;Menos dependendias de programas y editores gráficos&lt;/li&gt;
&lt;li&gt;Menos consultas al servidor&lt;/li&gt;
&lt;li&gt;Es escalable&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En este artículo abordaremos las maneras de escribir gradientes (lineales y radiales) para los principales navegadores modernos.&lt;/p&gt;
&lt;p&gt;Según los estándares &lt;strong&gt;W3C&lt;/strong&gt;, crear gradientes se compone de:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;linear-gradient( [&amp;lt;punto&amp;gt; || &amp;lt;angulo&amp;gt;,]? &amp;lt;stop&amp;gt;, &amp;lt;stop&amp;gt; [, &amp;lt;stop&amp;gt;]* )&amp;lt;br /&gt;
radial-gradient( [&amp;lt;posicion&amp;gt; || &amp;lt;angulo&amp;gt;,]? [&amp;lt;forma&amp;gt; || &amp;lt;tama&amp;ntilde;o&amp;gt;,]? &amp;lt;stop&amp;gt;, &amp;lt;stop&amp;gt;[, &amp;lt;stop&amp;gt;]* )&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para &lt;em&gt;browsers&lt;/em&gt; &lt;strong&gt;Mozilla&lt;/strong&gt;, se mantiene pero se agrega el prefijo &lt;strong&gt;-moz&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;-moz-linear-gradient( [&amp;lt;punto&amp;gt; || &amp;lt;angulo&amp;gt;,]? &amp;lt;stop&amp;gt;, &amp;lt;stop&amp;gt; [, &amp;lt;stop&amp;gt;]* )
-moz-radial-gradient( [&amp;lt;posicion&amp;gt; || &amp;lt;angulo&amp;gt;,]? [&amp;lt;forma&amp;gt; || &amp;lt;tama&amp;ntilde;o&amp;gt;,]? &amp;lt;stop&amp;gt;, &amp;lt;stop&amp;gt;[, &amp;lt;stop&amp;gt;]* )&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y para &lt;strong&gt;Webkit&lt;/strong&gt;, es bastante diferente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;-webkit-gradient(&amp;lt;tipo&amp;gt;, &amp;lt;punto&amp;gt; [, &amp;lt;radio&amp;gt;]?, &amp;lt;punto&amp;gt; [, &amp;lt;radio&amp;gt;]? [, &amp;lt;stop&amp;gt;]*)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una lástima que tengamos que reescribir para cada uno diferentes propiedades para lograr el mismo efecto. Mejor veamos los ejemplos:&lt;/p&gt;
&lt;h3 id=&#34;gradiente-lineal&#34;&gt;Gradiente Lineal&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;body{
  background-color:#ccc;
  background-image: -moz-linear-gradient(top, #333, #ccc);
  background-image: -webkit-gradient(linear, left top,left bottom, from(#333), to(#ccc));
  background-image: linear-gradient(top, #333, #ccc);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver Ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;h3 id=&#34;gradiente-radial&#34;&gt;Gradiente Radial&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;body{
  background-color:#ccc;
  background-image: -moz-radial-gradient(center 45deg,circle cover, #ccc, #333);
  background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%,800, from(#ccc), to(#333));
  background-image: radial-gradient(center 45deg,circle cover, #ccc, #333);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver Ejemplo][2]{.verejemplo}&lt;/p&gt;
&lt;h4 id=&#34;iquesty-con-internet-explorer&#34;&gt;¿Y con Internet Explorer?&lt;/h4&gt;
&lt;p&gt;Ni lo pienses, siquiera en &lt;strong&gt;IE9&lt;/strong&gt; están soportados. Podrías lograrlo en esta última versión através de &lt;strong&gt;SVG&lt;/strong&gt;, el cual es basado en vectores. &lt;strong&gt;SVG&lt;/strong&gt; es un lenguaje de marcado basado en &lt;strong&gt;XML&lt;/strong&gt; que descibre vectores, y el motor de &lt;strong&gt;HTML5&lt;/strong&gt; permite que &lt;strong&gt;SVG&lt;/strong&gt; sea incrustado directamente en &lt;strong&gt;HTML&lt;/strong&gt;. Definiendo el alto del documento &lt;strong&gt;SVG&lt;/strong&gt; al 100%, tendremos una imagen que se escala cualquiera sea el alto del elemento, tal como lo haría una caja con gradientes en &lt;strong&gt;CSS3&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;¿Muy complicado? También lo creo. Mejor prueba algún script como &lt;del datetime=&#34;2010-11-23T15:22:40+00:00&#34;&gt;&lt;a href=&#34;http://www.modernizr.com/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Modernizr&amp;quot;&#34;&gt;Modernizr&lt;/a&gt; ó&lt;/del&gt; &lt;a href=&#34;http://css3pie.com/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;CSS3 Pie&amp;quot;&#34;&gt;CSS3 Pie,&lt;/a&gt; los que hacen que &lt;strong&gt;IE&lt;/strong&gt; soporte &lt;strong&gt;CSS3&lt;/strong&gt; como deberían haberlo hecho con los estándares hace mucho tiempo ya.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/gradients/lineal.html&#34;&gt;http://www.csslab.cl/ejemplos/gradients/lineal.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo CSS3 Gradientes - Lineal&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/gradients/radial.html&#34;&gt;http://www.csslab.cl/ejemplos/gradients/radial.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo CSS3 Gradientes - Radial&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Otro más para matar IE6</title>
      <link>https://csslab.cl/2010/10/14/otro-mas-para-matar-ie6/</link>
      <pubDate>Thu, 14 Oct 2010 20:38:11 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/10/14/otro-mas-para-matar-ie6/</guid>
      <description>&lt;p&gt;No bastan los [hacks][1], los [comentarios condicionales][2], [reseters][3], [advertencias][4]… &lt;em&gt;Internet Explorer 6&lt;/em&gt; sigue dándonos muchos problemas. Pero les traigo una excelente solución ya que es tan invasiva, tan pero taaaaan invasiva que toma por completo control de &lt;strong&gt;IE6&lt;/strong&gt; y hace q se comporte como se debe.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/10/googleframe.png&#34; alt=&#34;Google Frame en CSSLab.cl&#34; width=&#34;200&#34; height=&#34;200&#34; class=&#34;alignright size-full wp-image-662&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2010/10/googleframe.png 200w, http://www.csslab.cl/wp-content/uploads/2010/10/googleframe-150x150.png 150w&#34; sizes=&#34;(max-width: 200px) 100vw, 200px&#34; /&gt; 
&lt;p&gt;&lt;a href=&#34;http://code.google.com/chrome/chromeframe/&#34; title=&#34;Enlace externo a &amp;quot;Google Chrome Frame&amp;quot;&#34; target=&#34;_blank&#34;&gt;Google Chrome Frame&lt;/a&gt; es un &lt;em&gt;plugin open source&lt;/em&gt; que trae la rapidez y versatilidad de &lt;strong&gt;Webkit&lt;/strong&gt; (el motor por detrás de &lt;strong&gt;Chrome&lt;/strong&gt; y &lt;strong&gt;Safari&lt;/strong&gt;) directo a &lt;strong&gt;IE6&lt;/strong&gt;. Con esto, podrás fácilmente utilizar todo lo que siempre quisiste sin preocuparte de este malogrado &lt;em&gt;browser&lt;/em&gt;, incluyendo &lt;strong&gt;CSS3&lt;/strong&gt;, &lt;strong&gt;HTML5&lt;/strong&gt; y &lt;strong&gt;Javascript&lt;/strong&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;No bastan los [hacks][1], los [comentarios condicionales][2], [reseters][3], [advertencias][4]… &lt;em&gt;Internet Explorer 6&lt;/em&gt; sigue dándonos muchos problemas. Pero les traigo una excelente solución ya que es tan invasiva, tan pero taaaaan invasiva que toma por completo control de &lt;strong&gt;IE6&lt;/strong&gt; y hace q se comporte como se debe.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/10/googleframe.png&#34; alt=&#34;Google Frame en CSSLab.cl&#34; width=&#34;200&#34; height=&#34;200&#34; class=&#34;alignright size-full wp-image-662&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2010/10/googleframe.png 200w, http://www.csslab.cl/wp-content/uploads/2010/10/googleframe-150x150.png 150w&#34; sizes=&#34;(max-width: 200px) 100vw, 200px&#34; /&gt; 
&lt;p&gt;&lt;a href=&#34;http://code.google.com/chrome/chromeframe/&#34; title=&#34;Enlace externo a &amp;quot;Google Chrome Frame&amp;quot;&#34; target=&#34;_blank&#34;&gt;Google Chrome Frame&lt;/a&gt; es un &lt;em&gt;plugin open source&lt;/em&gt; que trae la rapidez y versatilidad de &lt;strong&gt;Webkit&lt;/strong&gt; (el motor por detrás de &lt;strong&gt;Chrome&lt;/strong&gt; y &lt;strong&gt;Safari&lt;/strong&gt;) directo a &lt;strong&gt;IE6&lt;/strong&gt;. Con esto, podrás fácilmente utilizar todo lo que siempre quisiste sin preocuparte de este malogrado &lt;em&gt;browser&lt;/em&gt;, incluyendo &lt;strong&gt;CSS3&lt;/strong&gt;, &lt;strong&gt;HTML5&lt;/strong&gt; y &lt;strong&gt;Javascript&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Lo bueno es que utilizarlo es pan comido: basta con agregar una etiqueta dentro del &lt;strong&gt;&lt;head&gt;&lt;/head&gt;&lt;/strong&gt; en todas tus páginas que detecta si el usuario -que utiliza &lt;strong&gt;IE6&lt;/strong&gt;– tiene o no ya instalado &lt;strong&gt;Google Frame&lt;/strong&gt;: si no lo tiene, lo redirecciona a una página para su instalación; si el usuario ya lo tiene instalado, comienza automáticamente a instalarse:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;meta http-equiv=&#34;X-UA-Compatible&#34; content=&#34;chrome=1&#34;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Alternativamente, tambien puedes utilizar un &lt;strong&gt;script&lt;/strong&gt; que realiza la misma detección:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;!--[if IE]&amp;gt;
&amp;lt;script type=&#34;text/javascript&#34; src=&#34;http://ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js&#34;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script&amp;gt;
   CFInstall.check({
      destination: &#34;http://www.misitio.com&#34;
   });
&amp;lt;/script&amp;gt;
&amp;lt;![endif]--&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto incluye un &lt;strong&gt;&lt;iframe&gt;&lt;/strong&gt; en el sitio donde le indica al usuario las instrucciones para instalar &lt;strong&gt;Google Frame&lt;/strong&gt;. Una vez instalado, el usuario es redireccionado a lo que hayas declarado en &lt;em&gt;destination&lt;/em&gt;.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/10/Google-Wave-Chrome-Frame1.jpg&#34; alt=&#34;Google Frame en CSSLab.cl&#34; title=&#34;Google Frame en CSSLab.cl&#34; width=&#34;382&#34; height=&#34;294&#34; class=&#34;aligncenter size-full wp-image-664&#34; style=&#34;margin: 20px 100px;&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2010/10/Google-Wave-Chrome-Frame1.jpg 382w, http://www.csslab.cl/wp-content/uploads/2010/10/Google-Wave-Chrome-Frame1-300x230.jpg 300w, http://www.csslab.cl/wp-content/uploads/2010/10/Google-Wave-Chrome-Frame1-220x169.jpg 220w&#34; sizes=&#34;(max-width: 382px) 100vw, 382px&#34; /&gt; 
&lt;h3 id=&#34;iquesty-coacutemo-funciona&#34;&gt;¿Y cómo funciona?&lt;/h3&gt;
&lt;p&gt;La primera vez que lo instalé en un &lt;strong&gt;PC&lt;/strong&gt; con &lt;strong&gt;WinXP&lt;/strong&gt; e &lt;strong&gt;IE6&lt;/strong&gt;, realmente me sorprendió. Lo que hace es colocar un marco por sobre el &lt;strong&gt;browser&lt;/strong&gt; mismo, sin que se note que es algo ajeno al navegador. Este marco funciona con todos los botones que por defecto el usuario típico de &lt;strong&gt;IE6&lt;/strong&gt; está ya acostumbrado (y los que son algunas de las razones por las que no se actualizan nunca). Se ve como &lt;strong&gt;IE6&lt;/strong&gt;, pero su motor es &lt;strong&gt;Webkit&lt;/strong&gt;, lo que más nos interesa. Atrévanse a utilizarlo en sus proyectos, y ojalá puedan tener más tiempo y libertad para crear y menos para arreglar defectos.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://code.google.com/chrome/chromeframe/&#34; title=&#34;Enlace externo a &amp;quot;Google Chrome Frame&amp;quot;&#34; target=&#34;_blank&#34;&gt;Enable open web technologies in Internet Explorer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/category/hacks/&#34;&gt;http://www.csslab.cl/category/hacks/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab &amp;ldquo;Categoria: Hacks&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2006/07/28/se-viene-ie7-&amp;amp;iexcl;huid/&#34;&gt;http://www.csslab.cl/2006/07/28/se-viene-ie7-&amp;amp;iexcl;huid/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab &amp;ldquo;Se viene IE7, huid!&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2010/06/01/css-reseter-v2/&#34;&gt;http://www.csslab.cl/2010/06/01/css-reseter-v2/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab &amp;ldquo;CSS Reseter v2&amp;quot;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/2008/09/24/muerte-a-ie-nuevo-plugin/&#34;&gt;http://www.csslab.cl/2008/09/24/muerte-a-ie-nuevo-plugin/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab &amp;ldquo;KillIE jQuery plugin&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 37</title>
      <link>https://csslab.cl/2010/10/12/lo-vi-y-me-gusto-37/</link>
      <pubDate>Tue, 12 Oct 2010 13:19:53 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/10/12/lo-vi-y-me-gusto-37/</guid>
      <description>#37 – 12 Octubre 2010</description>
      <content>&lt;p&gt;#37 – 12 Octubre 2010&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://jrbenavente.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/10/javierabenavente.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yammy.cl/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/10/yammy.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.nbdesign.cl/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/10/nbdesign.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://pielypincel.com//&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/10/pielypincel.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>El olvidado rel</title>
      <link>https://csslab.cl/2010/09/02/el-olvidado-rel/</link>
      <pubDate>Thu, 02 Sep 2010 18:19:54 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/09/02/el-olvidado-rel/</guid>
      <description>&lt;p&gt;¿Por qué gastarme el tiempo de escribir un artículo sobre un atributo &lt;strong&gt;HTML&lt;/strong&gt; tan antiguo, y por qué ustedes gastarían el suyo en leerlo? Que buenas preguntas para comenzar a redactar un tema donde es necesario aclarar sus usos y recalcar sus funciones, principalmente cuando las escuelas actuales aún son incipientes en enseñar la teoría por detrás de los fundamentos de los &lt;em&gt;web standards&lt;/em&gt;. Comencemos con la parte aburrida:&lt;/p&gt;
&lt;p&gt;El atributo &lt;strong&gt;rel&lt;/strong&gt; describe la relación del presente documento al &lt;em&gt;link&lt;/em&gt; (&lt;strong&gt;href&lt;/strong&gt;) o &lt;em&gt;ancla&lt;/em&gt; (&lt;strong&gt;name&lt;/strong&gt;) especificado en el atributo &lt;strong&gt;href=&amp;quot;&amp;quot;&lt;/strong&gt;. El valor de este atributo puede ser más de uno y al igual que las clases, separados por espacio.&lt;/p&gt;</description>
      <content>&lt;p&gt;¿Por qué gastarme el tiempo de escribir un artículo sobre un atributo &lt;strong&gt;HTML&lt;/strong&gt; tan antiguo, y por qué ustedes gastarían el suyo en leerlo? Que buenas preguntas para comenzar a redactar un tema donde es necesario aclarar sus usos y recalcar sus funciones, principalmente cuando las escuelas actuales aún son incipientes en enseñar la teoría por detrás de los fundamentos de los &lt;em&gt;web standards&lt;/em&gt;. Comencemos con la parte aburrida:&lt;/p&gt;
&lt;p&gt;El atributo &lt;strong&gt;rel&lt;/strong&gt; describe la relación del presente documento al &lt;em&gt;link&lt;/em&gt; (&lt;strong&gt;href&lt;/strong&gt;) o &lt;em&gt;ancla&lt;/em&gt; (&lt;strong&gt;name&lt;/strong&gt;) especificado en el atributo &lt;strong&gt;href=&amp;quot;&amp;quot;&lt;/strong&gt;. El valor de este atributo puede ser más de uno y al igual que las clases, separados por espacio.&lt;/p&gt;
&lt;p style=&#34;padding: 100px 0; background:url(&#39;http://www.csslab.cl/wp-content/uploads/2010/09/reloj.png&#39;) left center no-repeat; text-align:center; font-style: italic;&#34;&gt;
  Tiempo de una pausa para un peque&amp;ntilde;o detalle.
&lt;/p&gt;
&lt;p&gt;Este atributo dentro de un &lt;strong&gt;link &lt;a&gt;&lt;/a&gt;&lt;/strong&gt; no es utilizado ni reconocido por ningún &lt;em&gt;browser&lt;/em&gt; actualmente (por eso seguramente ha sido menospreciado y olvidado por tanto tiempo).&lt;/p&gt;
&lt;p&gt;Entonces, ¿para qué seguir gastando nuestro tiempo? Pues &lt;strong&gt;rel=&amp;quot;&amp;quot;&lt;/strong&gt; sí es considerado por los buscadores para obtener más información sobre los enlaces, y es muy difundido mediante [microformatos][1].&lt;/p&gt;
&lt;p&gt;Los valores de este atributo para &lt;strong&gt;HTML 4.01&lt;/strong&gt; son (o eran, como quieras verlo):&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;alternate&lt;/dt&gt;
&lt;dd&gt;una versión alternativa del documento (por ej. una traducción, página para impresión, etc).&lt;/dd&gt;
&lt;dt&gt;stylesheet&lt;/dt&gt;
&lt;dd&gt;este es familiar; es una hoja de estilos linkeada externamente.&lt;/dd&gt;
&lt;dt&gt;start&lt;/dt&gt;
&lt;dd&gt;el primer documento de un conjunto de documentos. Este valor le indica a los buscadores que la página es considerada el punto de inicio de la colección.&lt;/dd&gt;
&lt;dt&gt;prev, next&lt;/dt&gt;
&lt;dd&gt;documento anterior y siguiente de una misma colección de documentos; podría utilizarse para pre-cargar los documentos siguientes.&lt;/dd&gt;
&lt;dt&gt;contents&lt;/dt&gt;
&lt;dd&gt;una tabla de contenidos para el conjunto de documentos.&lt;/dd&gt;
&lt;dt&gt;index&lt;/dt&gt;
&lt;dd&gt;una página que ofrece un índice para los documentos.&lt;/dd&gt;
&lt;dt&gt;glossary&lt;/dt&gt;
&lt;dd&gt;una página con un glosario de términos para el conjunto de documentos.&lt;/dd&gt;
&lt;dt&gt;copyright&lt;/dt&gt;
&lt;dd&gt;textos legales para todo el documento.&lt;/dd&gt;
&lt;dt&gt;chapter&lt;/dt&gt;
&lt;dd&gt;pagina que abre un capítulo.&lt;/dd&gt;
&lt;dt&gt;section&lt;/dt&gt;
&lt;dd&gt;pagina que abre una sección.&lt;/dd&gt;
&lt;dt&gt;subsection&lt;/dt&gt;
&lt;dd&gt;pagina que abre una sub-sección.&lt;/dd&gt;
&lt;dt&gt;appendix&lt;/dt&gt;
&lt;dd&gt;el apéndice.&lt;/dd&gt;
&lt;dt&gt;help&lt;/dt&gt;
&lt;dd&gt;una página de ayuda (más información, otras fuentes de información, instrucciones, etc).&lt;/dd&gt;
&lt;dt&gt;bookmark&lt;/dt&gt;
&lt;dd&gt;pagina con enlaces a contenido dentro del mismo conjunto de documentos.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Para &lt;strong&gt;HTML 5&lt;/strong&gt; y a través de los [microformatos][2] (prácticamente &lt;strong&gt;XFN&lt;/strong&gt;), se ha privilegiado la relación de enlaces a personas más que a documentos o partes de él. Los siguientes son los -hasta ahora- aprobados para &lt;strong&gt;HTML 5&lt;/strong&gt;:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;acquaintance&lt;/dt&gt;
&lt;dd&gt;la persona linkeada ofrece conocimiento anexo al documento actual.&lt;/dd&gt;
&lt;dt&gt;child&lt;/dt&gt;
&lt;dd&gt;la persona referenciada es hija de la persona autora del documento.&lt;/dd&gt;
&lt;dt&gt;co-resident&lt;/dt&gt;
&lt;dd&gt;la persona referenciada vive en la misma casa del autor.&lt;/dd&gt;
&lt;dt&gt;co-worker&lt;/dt&gt;
&lt;dd&gt;la persona referenciada trabaja con el autor.&lt;/dd&gt;
&lt;dt&gt;colleague&lt;/dt&gt;
&lt;dd&gt;la persona referenciada es colega del autor.&lt;/dd&gt;
&lt;dt&gt;contact&lt;/dt&gt;
&lt;dd&gt;el autor considera a la persona referenciada como un contacto.&lt;/dd&gt;
&lt;dt&gt;crush&lt;/dt&gt;
&lt;dd&gt;la persona referenciada atrae al autor.&lt;/dd&gt;
&lt;dt&gt;date&lt;/dt&gt;
&lt;dd&gt;el autor está saliendo con la persona referenciada.&lt;/dd&gt;
&lt;dt&gt;kin&lt;/dt&gt;
&lt;dd&gt;la persona referenciada es parte de la gran familia del autor.&lt;/dd&gt;
&lt;dt&gt;me&lt;/dt&gt;
&lt;dd&gt;la persona referenciada y el autor son la misma persona.&lt;/dd&gt;
&lt;dt&gt;met&lt;/dt&gt;
&lt;dd&gt;el autor conoce a la persona referenciada.&lt;/dd&gt;
&lt;dt&gt;muse&lt;/dt&gt;
&lt;dd&gt;la persona referenciada inspira al autor.&lt;/dd&gt;
&lt;dt&gt;neighbor&lt;/dt&gt;
&lt;dd&gt;la persona referenciada vive cerca o es vecino del autor.&lt;/dd&gt;
&lt;dt&gt;parent&lt;/dt&gt;
&lt;dd&gt;la persona referenciada es padre del autor.&lt;/dd&gt;
&lt;dt&gt;sibling&lt;/dt&gt;
&lt;dd&gt;la persona referenciada es hermano(a) del autor.&lt;/dd&gt;
&lt;dt&gt;spouse&lt;/dt&gt;
&lt;dd&gt;la persona referenciada es cónyugue del autor.&lt;/dd&gt;
&lt;dt&gt;sweetheart&lt;/dt&gt;
&lt;dd&gt;el autor considera al(a) referenciado(a) como su cariño.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;A partir de necesidades específicas de fabricantes de &lt;em&gt;browsers&lt;/em&gt; y de tecnologías, se han creado algunos valores que son específicos, como:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;nofollow&lt;/dt&gt;
&lt;dd&gt;es utilizado por Google para especificar que el spider de indexación no debe seguir ese link.&lt;/dd&gt;
&lt;dt&gt;shortcut icon&lt;/dt&gt;
&lt;dd&gt;reconocido por los browsers modernos para enlazar un archivo favicon.ico.&lt;/dd&gt;
&lt;dt&gt;apple-touch-icon&lt;/dt&gt;
&lt;dd&gt;utilizado por Apple para especificar un archivo ícono para un sitio web.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Pues como leen, este malhogrado atributo está resucitando y nos permite vincular objetos y documentos con una [semántica][3] nunca antes vista. Queda en nosotros utilizarla correctamente y sacarle provecho en nuestros proyectos.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4 id=&#34;linksp&#34;&gt;Links:&lt;/p&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/html401/types.html#type-links&#34; title=&#34;Enlace externo a &amp;quot;W3C Recommentation&amp;quot;&#34; target=&#34;_blank&#34;&gt;W3C Recommendation: Link Type&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://rdfa.info/wiki/@rel_attribute_discussion&#34; title=&#34;Enlace externo a &amp;quot;@rel attribute discussion&amp;quot;&#34; target=&#34;_blank&#34;&gt;rdfa.info: @rel attribute discussion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://gmpg.org/xfn/11&#34; title=&#34;Enlace externo a &amp;quot;XFN 1.1 relationships meta data profile&amp;quot;&#34; target=&#34;_blank&#34;&gt;XFN 1.1 relationships meta data profile&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2008/03/28/microformatos-2-contra-ataca/&#34;&gt;http://www.csslab.cl/2008/03/28/microformatos-2-contra-ataca/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Microformatos 2 contra-ataca&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2008/01/03/un-poco-sobre-microformatos/&#34;&gt;http://www.csslab.cl/2008/01/03/un-poco-sobre-microformatos/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Un poco sobre Microformatos&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/category/semantica/&#34;&gt;http://www.csslab.cl/category/semantica/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Categoría: Semántica&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 36</title>
      <link>https://csslab.cl/2010/08/05/lo-vi-y-me-gusto-36/</link>
      <pubDate>Thu, 05 Aug 2010 13:53:42 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/08/05/lo-vi-y-me-gusto-36/</guid>
      <description>#36 – 5 Agosto 2010</description>
      <content>&lt;p&gt;#36 – 5 Agosto 2010&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.agrega2.cl/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/08/agrega2.png&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://colapso.cl/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/08/colapso.png&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://gravityonmars.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/08/gravityonmars.png&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Háptica en iOS</title>
      <link>https://csslab.cl/2010/07/28/haptica-en-ios/</link>
      <pubDate>Wed, 28 Jul 2010 21:27:46 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/07/28/haptica-en-ios/</guid>
      <description>&lt;div class=&#34;haptica&#34;&gt;
  &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/ipad.png&#34; alt=&#34;CSSLab: iPad&#34; width=&#34;195&#34; height=&#34;240&#34; align=&#34;left&#34; /&gt;&lt;/p&gt; 
  &lt;p&gt;
    &lt;strong&gt;iPad&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt;&amp;#8230; otro nuevo dispositivo para cautivar a los &amp;aacute;vidos consumidores, pero que por lo menos trae interesantes nuevas tecnolog&amp;iacute;as. Aparte de que crean que es un &lt;strong&gt;iPhone&lt;/strong&gt; gigante, tiene varias innovaciones que permiten darle mucha rienda a la imaginaci&amp;oacute;n de los creadores de contenido espec&amp;iacute;fico para esta plataforma. Una de las que m&amp;aacute;s me han interesados, corresponde a los &lt;strong&gt;eventos gestuales&lt;/strong&gt;.
  &lt;/p&gt;
  &lt;p&gt;
    Este art&amp;iacute;culo abordar&amp;aacute; todos los eventos disponibles para &lt;strong&gt;iPad&lt;/strong&gt; y que ocurren cuando el usuario interact&amp;uacute;a con una p&amp;aacute;gina web en &lt;strong&gt;iOS&lt;/strong&gt;. Aunque puedes visualizar los ejemplos con &lt;strong&gt;Safari 5&lt;/strong&gt; para escritorio o el mismo &lt;strong&gt;iPhone&lt;/strong&gt;, la mejor interacci&amp;oacute;n la puedes lograr desde un &lt;strong&gt;iPad&lt;/strong&gt; mismo por la dimensi&amp;oacute;n y calidad de su superficie t&amp;aacute;ctil (o en su defecto con su simulador).
  &lt;/p&gt;
  &lt;p&gt;</description>
      <content>&lt;div class=&#34;haptica&#34;&gt;
  &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/ipad.png&#34; alt=&#34;CSSLab: iPad&#34; width=&#34;195&#34; height=&#34;240&#34; align=&#34;left&#34; /&gt;&lt;/p&gt; 
  &lt;p&gt;
    &lt;strong&gt;iPad&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt;&amp;#8230; otro nuevo dispositivo para cautivar a los &amp;aacute;vidos consumidores, pero que por lo menos trae interesantes nuevas tecnolog&amp;iacute;as. Aparte de que crean que es un &lt;strong&gt;iPhone&lt;/strong&gt; gigante, tiene varias innovaciones que permiten darle mucha rienda a la imaginaci&amp;oacute;n de los creadores de contenido espec&amp;iacute;fico para esta plataforma. Una de las que m&amp;aacute;s me han interesados, corresponde a los &lt;strong&gt;eventos gestuales&lt;/strong&gt;.
  &lt;/p&gt;
  &lt;p&gt;
    Este art&amp;iacute;culo abordar&amp;aacute; todos los eventos disponibles para &lt;strong&gt;iPad&lt;/strong&gt; y que ocurren cuando el usuario interact&amp;uacute;a con una p&amp;aacute;gina web en &lt;strong&gt;iOS&lt;/strong&gt;. Aunque puedes visualizar los ejemplos con &lt;strong&gt;Safari 5&lt;/strong&gt; para escritorio o el mismo &lt;strong&gt;iPhone&lt;/strong&gt;, la mejor interacci&amp;oacute;n la puedes lograr desde un &lt;strong&gt;iPad&lt;/strong&gt; mismo por la dimensi&amp;oacute;n y calidad de su superficie t&amp;aacute;ctil (o en su defecto con su simulador).
  &lt;/p&gt;
  &lt;p&gt;
&lt;/p&gt;
  &lt;h3&gt;
    Eventos Multitouch
  &lt;/h3&gt;
  &lt;p&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/multitouch.png&#34; alt=&#34;CSSLab - Eventos Multitouch&#34; width=&#34;200&#34; height=&#34;315&#34; align=&#34;right&#34; /&gt;
  &lt;/p&gt;
  &lt;p&gt;
    Puedes usar &lt;em&gt;classes&lt;/em&gt; de eventos &lt;em&gt;touch&lt;/em&gt; de tipo &lt;strong&gt;DOM&lt;/strong&gt; en &lt;em&gt;Javascript&lt;/em&gt; que ya est&amp;aacute;n disponibles en &lt;strong&gt;iOS&lt;/strong&gt;. Si quieres registrar estos eventos, el sistema env&amp;iacute;a objetos &lt;em&gt;TouchEvent&lt;/em&gt; a aquellos elementos &lt;strong&gt;DOM&lt;/strong&gt; mientras los dedos se mueven por sobre la superficie. Una secuencia &lt;em&gt;multitouch&lt;/em&gt; comienza cuando un dedo toca por primera vez la superficie. La secuencia termina cuando el &amp;uacute;ltimo de esos dedos se levanta de la misma superficie. &amp;Eacute;stos eventos son similares a los usuales eventos de &lt;em&gt;mouse&lt;/em&gt;, excepto que puedes tener toques simult&amp;aacute;neos en la superficie en diferentes lugares de la misma. Un objeto de evento &lt;em&gt;touch&lt;/em&gt; es utilizado para encapsular todos los toques que existen en un mismo momento en la pantalla. Cada dedo es representado por un objeto &lt;em&gt;touch&lt;/em&gt; y las t&amp;iacute;picas propiedades que encuentras en un evento de &lt;em&gt;mouse&lt;/em&gt; est&amp;aacute;n en un evento &lt;em&gt;touch&lt;/em&gt;, pero no el objeto mismo.
  &lt;/p&gt;
  &lt;p&gt;
    Cuatro son los principales eventos &lt;em&gt;touch&lt;/em&gt;:
  &lt;/p&gt;
  &lt;dl&gt;
    &lt;dt&gt;
      ontouchstart
    &lt;/dt&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;dd&amp;gt;
  ocurre cada vez que un dedo se posa sobre la pantalla.
&amp;lt;/dd&amp;gt;

&amp;lt;dt&amp;gt;
  ontouchmove
&amp;lt;/dt&amp;gt;

&amp;lt;dd&amp;gt;
  ocurre cuando un dedo que ya est&amp;amp;aacute; en la pantalla se mueve sobre ella.
&amp;lt;/dd&amp;gt;

&amp;lt;dt&amp;gt;
  ontouchend
&amp;lt;/dt&amp;gt;

&amp;lt;dd&amp;gt;
  ocurre cada vez que un dedo sale de la pantalla.
&amp;lt;/dd&amp;gt;

&amp;lt;dt&amp;gt;
  ontouchcancel
&amp;lt;/dt&amp;gt;

&amp;lt;dd&amp;gt;
  el sistema puede cancelar los eventos en ciertas ocasiones, como por ej. cuando recibes un &amp;lt;strong&amp;gt;SMS&amp;lt;/strong&amp;gt; mientras est&amp;amp;aacute;s arrastrando un elemento.
&amp;lt;/dd&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/dl&gt;
  &lt;p&gt;
    Para registrarlos con &lt;em&gt;Javascript&lt;/em&gt;:
  &lt;/p&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;element.addEventListener(&#34;touchstart&#34;, touchStart, false);
element.addEventListener(&#34;touchmove&#34;, touchMove, false);
element.addEventListener(&#34;touchend&#34;, touchEnd, false);
element.addEventListener(&#34;touchcancel&#34;, touchCancel, false);&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    Y si lo quieres implementar como una funci&amp;oacute;n:
  &lt;/p&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;function touchStart(event) {
   &amp;lt;span class=&#34;commentjs&#34;&gt;// tomemos las coordenadas del dedo cuando toca la pantalla&amp;lt;/span&gt;
   var x = event.touches[0].pageX;
   var y = event.touches[0].pageY;
   alert(&#39;X = &#39;+x+&#39;,Y = &#39;+y);
}&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    &lt;a href=&#34;http://www.csslab.cl/ejemplos/haptica/ejemplo1.html&#34; title=&#34;Enlace en CSSLab a &amp;quot;Ejemplo 1&amp;quot;&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo 1&lt;/a&gt;
  &lt;/p&gt;
  &lt;p&gt;
    Un simple evento: arrastra un elemento cuando mueves el dedo:
  &lt;/p&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;function touchMove(event) {
   event.preventDefault();
   var touch = event.touches[0];
   var node = touch.target;
   node.style.position = &#34;absolute&#34;;
   node.style.left = touch.pageX + &#34;px&#34;;
   node.style.top = touch.pageY + &#34;px&#34;;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    &lt;a href=&#34;http://www.csslab.cl/ejemplos/haptica/ejemplo2.html&#34; title=&#34;Enlace en CSSLab a &amp;quot;Ejemplo 2&amp;quot;&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo 2&lt;/a&gt;
  &lt;/p&gt;
  &lt;p class=&#34;atencion&#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_abre.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;&lt;br /&gt;Detalle: por defecto, si arrastras un dedo sobre la pantalla es probable que la p&amp;aacute;gina comience a moverse (peor si &amp;eacute;sta tiene scroll). Por suerte agregaron la funci&amp;oacute;n &lt;strong&gt;preventDefault()&lt;/strong&gt; que hace que la p&amp;aacute;gina se quede quieta si lo necesitamos.&lt;br /&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/atencion_cierra.png&#34; width=&#34;13&#34; height=&#34;23&#34; class=&#34;aligncenter&#34; /&gt;
  &lt;/p&gt;
  &lt;p&gt;
    Las listas de eventos agrupan estos objetos, y contiene informaci&amp;oacute;n para cada dedo que est&amp;aacute; tocando la pantalla. Adem&amp;aacute;s, contiene 2 otras listas: una que tiene informaci&amp;oacute;n para los dedos que se originan del mismo elemento y otro que contiene s&amp;oacute;lo informaci&amp;oacute;n para los dedos asociados al mismo evento. Estas listas est&amp;aacute;n disponibles para cada evento &lt;em&gt;touch&lt;/em&gt;, y son:
  &lt;/p&gt;
  &lt;dl&gt;
    &lt;dt&gt;
      touches
    &lt;/dt&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;dd&amp;gt;
  una lista para cada dedo que est&amp;amp;aacute; posado actualmente sobre la pantalla.
&amp;lt;/dd&amp;gt;

&amp;lt;dt&amp;gt;
  targetTouches
&amp;lt;/dt&amp;gt;

&amp;lt;dd&amp;gt;
  tal como &amp;lt;strong&amp;gt;touches&amp;lt;/strong&amp;gt;, pero filtra s&amp;amp;oacute;lo la informaci&amp;amp;oacute;n para los dedos que comienzan del mismo elemento.
&amp;lt;/dd&amp;gt;

&amp;lt;dt&amp;gt;
  changedTouches
&amp;lt;/dt&amp;gt;

&amp;lt;dd&amp;gt;
  lista la informaci&amp;amp;oacute;n para cada dedo involucrado en el mismo evento.
&amp;lt;/dd&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/dl&gt;
  &lt;p&gt;
    Las propiedades que contienen estas listas son:
  &lt;/p&gt;
  &lt;dl&gt;
    &lt;dt&gt;
      clientX
    &lt;/dt&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;dd&amp;gt;
  coordenada X del toque relativa al &amp;lt;em&amp;gt;viewport&amp;lt;/em&amp;gt; (pantalla visible).
&amp;lt;/dd&amp;gt;

&amp;lt;dt&amp;gt;
  clientY
&amp;lt;/dt&amp;gt;

&amp;lt;dd&amp;gt;
  coordenada Y del toque relativa al &amp;lt;em&amp;gt;viewport&amp;lt;/em&amp;gt;.
&amp;lt;/dd&amp;gt;

&amp;lt;dt&amp;gt;
  screenX
&amp;lt;/dt&amp;gt;

&amp;lt;dd&amp;gt;
  coordenada X relativa a la pantalla.
&amp;lt;/dd&amp;gt;

&amp;lt;dt&amp;gt;
  screenY
&amp;lt;/dt&amp;gt;

&amp;lt;dd&amp;gt;
  coordenada Y relativa a la pantalla.
&amp;lt;/dd&amp;gt;

&amp;lt;dt&amp;gt;
  pageX
&amp;lt;/dt&amp;gt;

&amp;lt;dd&amp;gt;
  coordenada X relativa a la p&amp;amp;aacute;gina completa (incluye &amp;lt;em&amp;gt;offset&amp;lt;/em&amp;gt; del &amp;lt;em&amp;gt;scroll&amp;lt;/em&amp;gt;).
&amp;lt;/dd&amp;gt;

&amp;lt;dt&amp;gt;
  pageY
&amp;lt;/dt&amp;gt;

&amp;lt;dd&amp;gt;
  coordenada Y relativa a la p&amp;amp;aacute;gina completa.
&amp;lt;/dd&amp;gt;

&amp;lt;dt&amp;gt;
  target
&amp;lt;/dt&amp;gt;

&amp;lt;dd&amp;gt;
  elemento donde el evento touch fue originado.
&amp;lt;/dd&amp;gt;

&amp;lt;dt&amp;gt;
  indentifier
&amp;lt;/dt&amp;gt;

&amp;lt;dd&amp;gt;
  n&amp;amp;uacute;mero identificados, &amp;amp;uacute;nico para cada evento &amp;lt;em&amp;gt;touch&amp;lt;/em&amp;gt;.
&amp;lt;/dd&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/dl&gt;
  &lt;p&gt;
    Para entender mejor, veamos el siguiente caso:
  &lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;
      &lt;p&gt;
        Cuando pongo un dedo en la pantalla, las 3 listas tendr&amp;aacute;n la misma informaci&amp;oacute;n en sus propiedades, pero &lt;strong&gt;changedTouches&lt;/strong&gt; fue el que origin&amp;oacute; el evento.
      &lt;/p&gt;
    &lt;/li&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;li&amp;gt;
  &amp;lt;p&amp;gt;
    Cuando pongo el segundo dedo, &amp;lt;strong&amp;gt;touches&amp;lt;/strong&amp;gt; tendr&amp;amp;aacute; 2 items (uno para cada dedo); &amp;lt;strong&amp;gt;targetTouches&amp;lt;/strong&amp;gt; tendr&amp;amp;aacute; 2 items s&amp;amp;oacute;lo si el segundo dedo es posado en el mismo elemento del primero; &amp;lt;strong&amp;gt;changedTouches&amp;lt;/strong&amp;gt; tendr&amp;amp;aacute; informaci&amp;amp;oacute;n relacionada al segundo dedo, porque fue lo que caus&amp;amp;oacute; el evento.
  &amp;lt;/p&amp;gt;
&amp;lt;/li&amp;gt;

&amp;lt;li&amp;gt;
  &amp;lt;p&amp;gt;
    Si pongo 2 dedos exactamente al mismo tiempo, tendr&amp;amp;eacute; 2 items en &amp;lt;strong&amp;gt;changedTouches&amp;lt;/strong&amp;gt;: uno para cada dedo.
  &amp;lt;/p&amp;gt;
&amp;lt;/li&amp;gt;

&amp;lt;li&amp;gt;
  &amp;lt;p&amp;gt;
    Si muevo mis dedos, la &amp;amp;uacute;nica lista que cambiar&amp;amp;aacute; es &amp;lt;strong&amp;gt;changedTouches&amp;lt;/strong&amp;gt; y va a tener informaci&amp;amp;oacute;n relacionada a cada dedo que se vaya moviendo (al menos uno).
  &amp;lt;/p&amp;gt;
&amp;lt;/li&amp;gt;

&amp;lt;li&amp;gt;
  &amp;lt;p&amp;gt;
    Cuando levanto un dedo, ser&amp;amp;aacute; eliminado de &amp;lt;strong&amp;gt;touches&amp;lt;/strong&amp;gt; y &amp;lt;strong&amp;gt;targetTouches&amp;lt;/strong&amp;gt; y aparecer&amp;amp;aacute; en &amp;lt;strong&amp;gt;changedTouches&amp;lt;/strong&amp;gt; ya que fue el que origin&amp;amp;oacute; el evento.
  &amp;lt;/p&amp;gt;
&amp;lt;/li&amp;gt;

&amp;lt;li&amp;gt;
  &amp;lt;p&amp;gt;
    Si quito el &amp;amp;uacute;ltimo dedo se vaciar&amp;amp;aacute;n &amp;lt;strong&amp;gt;touches&amp;lt;/strong&amp;gt; y &amp;lt;strong&amp;gt;targetTouches&amp;lt;/strong&amp;gt;, y &amp;lt;strong&amp;gt;changedTouches&amp;lt;/strong&amp;gt; tendr&amp;amp;aacute; la informaci&amp;amp;oacute;n para ese ultimo dedo.
  &amp;lt;/p&amp;gt;
&amp;lt;/li&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/ol&gt;
  &lt;div class=&#34;gesture&#34;&gt;
    &lt;h3&gt;
      Eventos Gestuales
    &lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;
  Eventos &amp;lt;em&amp;gt;multitouch&amp;lt;/em&amp;gt; pueden ser combinados para crear eventos de gestos. Los objetos &amp;lt;em&amp;gt;GestureEvent&amp;lt;/em&amp;gt; son enviados durante una secuencia &amp;lt;em&amp;gt;multitouch&amp;lt;/em&amp;gt; y contienen informaci&amp;amp;oacute;n de dimensiones y rotaciones.
&amp;lt;/p&amp;gt;

&amp;lt;p&amp;gt;
  Para registrarlos en &amp;lt;strong&amp;gt;HTML&amp;lt;/strong&amp;gt;:
&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div
   ongesturestart=&#34;gestureStart(event);&#34;
   ongesturechange=&#34;gestureChange(event);&#34;
   ongestureend=&#34;gestureEnd(event);&#34;
&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    Y mediante &lt;em&gt;Javascript&lt;/em&gt;:
  &lt;/p&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;element.addEventListener(&#34;gesturestart&#34;, gestureStart, false);
element.addEventListener(&#34;gesturechange&#34;, gestureChange, false);
element.addEventListener(&#34;gestureend&#34;, gestureEnd, false);&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    Comencemos con un ejemplo simple:
  &lt;/p&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;function gestureStart(event) {
   &amp;lt;span class=&#34;commentjs&#34;&gt;// tomamos el angulo y tama&amp;ntilde;o del elemento&amp;lt;/span&gt;
   var angle = event.rotation;
   var scale = event.scale;
   alert(&#39;angulo: &#39;+angle+&#39;, dimension: &#39;+scale);
}&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    &lt;a href=&#34;http://www.csslab.cl/ejemplos/haptica/ejemplo3.html&#34; title=&#34;Enlace en CSSLab a &amp;quot;Ejemplo 3&amp;quot;&#34; class=&#34;verejemplo&#34;&gt;Ver Ejemplo 3&lt;/a&gt;
  &lt;/p&gt;
  &lt;p&gt;
    Ahora escalamos y rotamos un elemento:
  &lt;/p&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;function gestureChange(event) {
   event.preventDefault();
   event.target.style.width = (200 * event.scale) + &#34;px&#34;;
   event.target.style.height = (200 * event.scale) + &#34;px&#34;;
   event.target.style.webkitTransform = &#39;rotate(&#39; + event.rotation + &#39;deg)&#39;;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    &lt;a href=&#34;http://www.csslab.cl/ejemplos/haptica/ejemplo4.html&#34; title=&#34;Enlace en CSSLab a &amp;quot;Ejemplo 4&amp;quot;&#34; class=&#34;verejemplo&#34;&gt;Ver Ejemplo 4&lt;/a&gt;
  &lt;/p&gt;
  &lt;p&gt;
    Creo que esto es un buen comienzo para que te interese esta plataforma, la que implementa un tipo de interacci&amp;oacute;n h&amp;aacute;ptica poco usual y con un gran potencial comercial.
  &lt;/p&gt;
  &lt;h4&gt;
    Links:
  &lt;/h4&gt;
  &lt;ul&gt;
    &lt;li&gt;
      &lt;a href=&#34;http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW1&#34; target=&#34;_blank&#34;&gt;Safari Reference Library: Handling Events&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;a href=&#34;http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariJSRef/index.html#//apple_ref/doc/uid/TP40001482&#34; target=&#34;_blank&#34;&gt;Safari Reference Library: Safari DOM Additions Reference&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;a href=&#34;http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/&#34;&gt;Sitepen: Touching and Gesturing on the iPhone&lt;/a&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;</content>
    </item>
    
    <item>
      <title>Tip Precoz 7: resize textarea</title>
      <link>https://csslab.cl/2010/07/19/tip-precoz-7-resize-textarea/</link>
      <pubDate>Mon, 19 Jul 2010 17:24:08 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/07/19/tip-precoz-7-resize-textarea/</guid>
      <description>&lt;p&gt;Si usas seguido &lt;strong&gt;Safari&lt;/strong&gt; ó &lt;strong&gt;Chrome&lt;/strong&gt;, habrás notado que estos &lt;em&gt;browsers&lt;/em&gt; permiten -por defecto- que el &lt;strong&gt;&lt;textarea&gt;&lt;/strong&gt; sea redimensionado por el usuario a través del arrastre en el rincón inferior-derecho. Esta es una propiedad de &lt;strong&gt;WebKit&lt;/strong&gt; de accesibilidad que puede perjudicar el &lt;em&gt;layout&lt;/em&gt; de nuestro lindo formulario.&lt;/p&gt;
&lt;p&gt;Para quitarlo, basta declarar en &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;</description>
      <content>&lt;p&gt;Si usas seguido &lt;strong&gt;Safari&lt;/strong&gt; ó &lt;strong&gt;Chrome&lt;/strong&gt;, habrás notado que estos &lt;em&gt;browsers&lt;/em&gt; permiten -por defecto- que el &lt;strong&gt;&lt;textarea&gt;&lt;/strong&gt; sea redimensionado por el usuario a través del arrastre en el rincón inferior-derecho. Esta es una propiedad de &lt;strong&gt;WebKit&lt;/strong&gt; de accesibilidad que puede perjudicar el &lt;em&gt;layout&lt;/em&gt; de nuestro lindo formulario.&lt;/p&gt;
&lt;p&gt;Para quitarlo, basta declarar en &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;textarea {
  resize: none;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo&lt;br&gt;
&lt;small&gt;(En Safari-Chrome)&lt;/small&gt;][1]{.verejemplo}&lt;/p&gt;
&lt;p style=&#34;text-align: center&#34;&gt;
  &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/textarea.png&#34; alt=&#34;&#34; title=&#34;CSSLab.cl: resize textarea&#34; width=&#34;350&#34; height=&#34;314&#34; class=&#34;aligncenter size-full wp-image-602&#34; srcset=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/textarea.png 350w, http://www.csslab.cl/wp-content/uploads/2010/07/textarea-300x269.png 300w, http://www.csslab.cl/wp-content/uploads/2010/07/textarea-220x197.png 220w&#34; sizes=&#34;(max-width: 350px) 100vw, 350px&#34; /&gt;
&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/textarea.html&#34;&gt;http://www.csslab.cl/ejemplos/textarea.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo Tip Precoz 7: resize textarea&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>¿Con o sin comillas?</title>
      <link>https://csslab.cl/2010/07/07/con-o-sin-comillas/</link>
      <pubDate>Wed, 07 Jul 2010 16:04:47 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/07/07/con-o-sin-comillas/</guid>
      <description>&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/comillas.png&#34; alt=&#34;CSSLab: ¿Con o sin comillas?&#34; title=&#34;comillas&#34; width=&#34;150&#34; height=&#34;95&#34; class=&#34;alignright size-full wp-image-596&#34; /&gt;
&lt;p&gt;Al declarar algunos valores en propiedades &lt;strong&gt;CSS&lt;/strong&gt; como &lt;strong&gt;background-image&lt;/strong&gt;, usualmente se permite poner o no el valor entre comillas dobles &lt;strong&gt;&amp;quot;&amp;quot;&lt;/strong&gt; ó simples &lt;strong&gt;»&lt;/strong&gt;. Si escribes el código a mano, no las utilizas. Si usas algún editor, quizas las agrega. Pero ¿se debe o no poner comillas?&lt;/p&gt;
&lt;p&gt;Esta pregunta que ha intrigado al hombre por años no tiene una respuesta definitiva. Por lo menos no la he encontrado de manos de la &lt;a href=&#34;http://www.w3.org/TR/CSS2/syndata.html&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;W3C&amp;quot;&#34;&gt;W3C&lt;/a&gt;, pero sí el uso de comillas en ciertas declaraciones tiene sentido:&lt;/p&gt;</description>
      <content>&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/07/comillas.png&#34; alt=&#34;CSSLab: ¿Con o sin comillas?&#34; title=&#34;comillas&#34; width=&#34;150&#34; height=&#34;95&#34; class=&#34;alignright size-full wp-image-596&#34; /&gt;
&lt;p&gt;Al declarar algunos valores en propiedades &lt;strong&gt;CSS&lt;/strong&gt; como &lt;strong&gt;background-image&lt;/strong&gt;, usualmente se permite poner o no el valor entre comillas dobles &lt;strong&gt;&amp;quot;&amp;quot;&lt;/strong&gt; ó simples &lt;strong&gt;»&lt;/strong&gt;. Si escribes el código a mano, no las utilizas. Si usas algún editor, quizas las agrega. Pero ¿se debe o no poner comillas?&lt;/p&gt;
&lt;p&gt;Esta pregunta que ha intrigado al hombre por años no tiene una respuesta definitiva. Por lo menos no la he encontrado de manos de la &lt;a href=&#34;http://www.w3.org/TR/CSS2/syndata.html&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;W3C&amp;quot;&#34;&gt;W3C&lt;/a&gt;, pero sí el uso de comillas en ciertas declaraciones tiene sentido:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;… single quotes (‘), and double quotes (&amp;quot;) must come in matching pairs …&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Primero, no dice que deben ser utilizadas. Segundo, dice que si las utilizas, deben estar en par (si abres con comilla simple cierra con simple, etc.). Pero:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Inside the quotes, characters are parsed as a string.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Esto es lo importante. Si utilizas las comillas simples o dobles, el valor se pasa como &lt;em&gt;string&lt;/em&gt;. Un ejemplo práctico y descuidado: si tienes una imagen con espacios en su nombre:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;background: url(&#39;back ground.png&#39;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si utilizas comillas en su declaración la imagen se mostrará:&lt;/p&gt;
&lt;p&gt;[Ver ejemplo con comillas][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Si no la utilizas, el &lt;em&gt;browser&lt;/em&gt; no encontrará la imagen:&lt;/p&gt;
&lt;p&gt;[Ver ejemplo sin comillas][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Este comportamiento es independiente del [doctype][3] que estés utilizando. Yo las uso.&lt;/p&gt;
&lt;h4 id=&#34;link&#34;&gt;Link:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;[W3C: Syntax and basic data types][4]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/comillas/concomillas.html&#34;&gt;http://www.csslab.cl/ejemplos/comillas/concomillas.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo con comillas&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/comillas/sincomillas.html&#34;&gt;http://www.csslab.cl/ejemplos/comillas/sincomillas.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo sin comillas&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2005/11/30/&amp;amp;iquest;strict-o-no-strict/&#34;&gt;http://www.csslab.cl/2005/11/30/&amp;amp;iquest;strict-o-no-strict/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;¿Strict o no Strict?&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.w3.org/TR/CSS2/syndata.html&#34;&gt;http://www.w3.org/TR/CSS2/syndata.html&lt;/a&gt; &amp;ldquo;Enlace externo a &amp;ldquo;W3C: Syntax and basic data types&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Podcast 04</title>
      <link>https://csslab.cl/2010/06/15/podcast-04/</link>
      <pubDate>Tue, 15 Jun 2010 15:24:04 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/06/15/podcast-04/</guid>
      <description>&lt;p&gt;Muchos temas me son más fáciles de expresar verbalmente que a través del teclado, principalmente cuando son de opinión. Y compartir la opinión, tanto mía como la de ustedes ha sido uno de los principales motivos por los cuales mantengo este sitio. Aparte de compartir conocimientos, crear un lugar -aunque sea virtual- para concentrar y comparar puntos de vista es un gran objetivo que se sigue manteniendo en &lt;strong&gt;CSSLab.cl&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;En esta ocasión, el &lt;strong&gt;podcast&lt;/strong&gt; es bastante preciso y corto, y los temas que convergen son:&lt;/p&gt;</description>
      <content>&lt;p&gt;Muchos temas me son más fáciles de expresar verbalmente que a través del teclado, principalmente cuando son de opinión. Y compartir la opinión, tanto mía como la de ustedes ha sido uno de los principales motivos por los cuales mantengo este sitio. Aparte de compartir conocimientos, crear un lugar -aunque sea virtual- para concentrar y comparar puntos de vista es un gran objetivo que se sigue manteniendo en &lt;strong&gt;CSSLab.cl&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;En esta ocasión, el &lt;strong&gt;podcast&lt;/strong&gt; es bastante preciso y corto, y los temas que convergen son:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Yo no valido.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTML5&lt;/strong&gt;, &lt;strong&gt;CSS3&lt;/strong&gt; y rediseño de este sitio.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;[Bajar Podcast 04 (12.6mb, .zip)][1]{.bajar}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/podcast/csslab_podcast4.zip&#34;&gt;http://www.csslab.cl/ejemplos/podcast/csslab_podcast4.zip&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Bajar Podcast 04&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Tip Precoz 6: Limpiar valores de input</title>
      <link>https://csslab.cl/2010/06/08/tip-precoz-6-limpiar-valores-de-input/</link>
      <pubDate>Tue, 08 Jun 2010 22:20:36 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/06/08/tip-precoz-6-limpiar-valores-de-input/</guid>
      <description>Esta pequeña función de jQuery me es muy útil cuando tengo un campo de texto (, , etc) y éste tiene un valor por defecto (por ejemplo, el Buscar que se ve en el header de este humilde sitio). Cuando hago foco en él para escribir, quiero que ese value desaparezca y el usuario pueda ingresar lo que quiera; caso contrario, si el usuario lo deja vacío o si es el mismo que el original (en este caso, Buscar) vuelve a restablecerse al definido por defecto.</description>
      <content>&lt;p&gt;Esta pequeña función de &lt;strong&gt;jQuery&lt;/strong&gt; me es muy útil cuando tengo un campo de texto (&lt;strong&gt;&lt;input&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;textarea&gt;&lt;/strong&gt;, etc) y éste tiene un valor por defecto (por ejemplo, el &lt;em&gt;Buscar&lt;/em&gt; que se ve en el &lt;em&gt;header&lt;/em&gt; de este humilde sitio). Cuando hago foco en él para escribir, quiero que ese &lt;strong&gt;value&lt;/strong&gt; desaparezca y el usuario pueda ingresar lo que quiera; caso contrario, si el usuario lo deja vacío o si es el mismo que el original (en este caso, &lt;em&gt;Buscar&lt;/em&gt;) vuelve a restablecerse al definido por defecto.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(&#39;input&#39;).each(function(){
   &amp;lt;span class=&#34;commentjs&#34;&gt;// tomamos el valor actual del input&amp;lt;/span&gt;
   var currentValue = $(this).val();
   &amp;lt;span class=&#34;commentjs&#34;&gt;// en el focus() comparamos si es el mismo por defecto, y si es asi lo vaciamos&amp;lt;/span&gt;
   $(this).focus(function(){
      if( $(this).val() == currentValue ) {
         $(this).val(&#39;&#39;);
      };
   });
   &amp;lt;span class=&#34;commentjs&#34;&gt;// en el blur, si el usuario dejo el value vacio, lo volvemos a restablecer&amp;lt;/span&gt;
   $(this).blur(function(){
      if( $(this).val() == &#39;&#39; ) {
         $(this).val(currentValue);
      };
   });
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/jquery_vacia_value/index.html&#34;&gt;http://www.csslab.cl/ejemplos/jquery_vacia_value/index.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ver ejemplo Tip Precoz 6: Limpiar valores de input&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 35</title>
      <link>https://csslab.cl/2010/06/04/lo-vi-y-me-gusto-35/</link>
      <pubDate>Fri, 04 Jun 2010 16:09:37 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/06/04/lo-vi-y-me-gusto-35/</guid>
      <description>#35 – 4 Junio 2010</description>
      <content>&lt;p&gt;#35 – 4 Junio 2010&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.conocono.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/06/conocono.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.lucasnikitczuk.com.ar/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/06/lucas.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.urbanchip.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/06/urbanchip.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>CSS Reseter v2</title>
      <link>https://csslab.cl/2010/06/01/css-reseter-v2/</link>
      <pubDate>Tue, 01 Jun 2010 21:45:53 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/06/01/css-reseter-v2/</guid>
      <description>Inaugurando el rediseño de este sitio, orientado completamente hacia los nuevos estándares que espero algún día pronto sea aprobado y (bien) aplicado por los fabricantes de browsers, he mejorado la versión de mi ya fiel [CSS Reseter][1] que tanto me ha ayudado en innumerables proyectos.
Para esta nueva versión, he agregado las nuevas etiquetas que conforman HTML 5 para elementos de tipo bloque (las que son inline no las necesitan) y aproveché de realizar las siguientes mejoras en lo existente:</description>
      <content>&lt;p&gt;Inaugurando el rediseño de este sitio, orientado completamente hacia los nuevos estándares que espero algún día pronto sea aprobado y (bien) aplicado por los fabricantes de &lt;em&gt;browsers&lt;/em&gt;, he mejorado la versión de mi ya fiel [CSS Reseter][1] que tanto me ha ayudado en innumerables proyectos.&lt;/p&gt;
&lt;p&gt;Para esta nueva versión, he agregado las nuevas etiquetas que conforman &lt;strong&gt;HTML 5&lt;/strong&gt; para elementos de tipo bloque (las que son &lt;em&gt;inline&lt;/em&gt; no las necesitan) y aproveché de realizar las siguientes mejoras en lo existente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Soporte para nuevas etiquetas &lt;strong&gt;HTML 5&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Mejor &lt;em&gt;reset&lt;/em&gt; para campos de formularios&lt;/li&gt;
&lt;li&gt;Mejoras para listas ordenadas (&lt;strong&gt;&lt;ol&gt;&lt;/strong&gt;) y tablas (&lt;strong&gt;&lt;table&gt;&lt;/strong&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ya está activo en este nuevo sitio, y espero sea aprovechado y de mucha ayuda en sus proyectos. La idea, como saben, es simplificar el codificado mediante el &lt;em&gt;reset&lt;/em&gt; de estilos que traen por defecto los navegadores web.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/juanbrujo/CSSLabs--CSS-Reseter-v2/archive/master.zip&#34; title=&#34;Enlace en CSSLab a &amp;quot;CSS Reseter V2&amp;quot;&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Bajar hoja de estilo (.zip)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/10/18/css-reseter/&#34;&gt;http://www.csslab.cl/2007/10/18/css-reseter/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;CSS Reseter&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>jQuery Tabs y registro en el historial</title>
      <link>https://csslab.cl/2010/05/10/jquery-tabs-y-registro-en-el-historial/</link>
      <pubDate>Mon, 10 May 2010 16:14:53 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/05/10/jquery-tabs-y-registro-en-el-historial/</guid>
      <description>&lt;p&gt;Es muy común el uso de navegación de tipo &lt;em&gt;tabs&lt;/em&gt; para contenidos dentro de una misma página y funcionan bastante bien; el usuario ya está acostumbrado a este tipo de elementos y los utiliza sin problemas, además que resulta liviano y relativamente fácil implementarlos.&lt;/p&gt;</description>
      <content>&lt;p&gt;Es muy común el uso de navegación de tipo &lt;em&gt;tabs&lt;/em&gt; para contenidos dentro de una misma página y funcionan bastante bien; el usuario ya está acostumbrado a este tipo de elementos y los utiliza sin problemas, además que resulta liviano y relativamente fácil implementarlos.&lt;/p&gt;
&lt;p&gt;Pero recientemente un cliente pidió que los &lt;em&gt;tabs&lt;/em&gt; se pudieran navegar con el historial del &lt;em&gt;browser&lt;/em&gt;, o sea que si vas seleccionado diferentes &lt;em&gt;tabs&lt;/em&gt; e incluso saliendo a otras páginas, puedas volver a ellas con el botón &lt;em&gt;‘Back’&lt;/em&gt; o &lt;em&gt;‘Volver’&lt;/em&gt; del navegador, y volver a pasar por ellos. Esto me resultó en un problema no menor que me costó solucionar, ya que los &lt;em&gt;tabs&lt;/em&gt; suelen reaccionar ante eventos del &lt;em&gt;click&lt;/em&gt; del &lt;em&gt;mouse&lt;/em&gt; (como por ejemplo para mostrar tal &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; al &lt;em&gt;clickear&lt;/em&gt; tal enlace &lt;strong&gt;&lt;a&gt;&lt;/strong&gt; y que a éste se le agregue una &lt;strong&gt;class=&amp;ldquo;selected&amp;rdquo;&lt;/strong&gt; que indique su estado de seleccionado). Y esto suelo no quedar registrado en el caché del &lt;em&gt;browser&lt;/em&gt; para que pueda ser navegado como se pidió. Pero bueno, pude solucionarlo y aquí lo comparto por si lo necesitan; implica 2 pasos diferentes los cuales deben funcionar en conjunto:&lt;/p&gt;
&lt;p&gt;Primero, crearemos una simple función en &lt;strong&gt;jQuery&lt;/strong&gt; para que funcionen los &lt;em&gt;tabs&lt;/em&gt;. Esta es una de las maneras más simples de crear este tipo de menúes. Para el &lt;strong&gt;HTML&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div class=&#34;tabs&#34;&amp;gt;&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- .tabs --&amp;gt;&amp;lt;/span&gt;
   &amp;lt;ul id=&#34;menu_tabs&#34;&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#item1&#34;&amp;gt;Item 1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      ...
   &amp;lt;/ul&amp;gt;
   &amp;lt;div id=&#34;item1&#34; class=&#34;caja&#34;&amp;gt;&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- #item1 --&amp;gt;&amp;lt;/span&gt;
      &amp;lt;h2&amp;gt;Item 1&amp;lt;/h2&amp;gt;
      &amp;lt;p&amp;gt;Donec gravida posuere arcu.&amp;lt;/p&amp;gt;
   &amp;lt;/div&amp;gt;&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- /#item1 --&amp;gt;&amp;lt;/span&gt;
   ...&amp;lt;br /&gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- /.tabs --&amp;gt;&amp;lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Le aplicamos la siguiente instrucción en &lt;strong&gt;jQuery&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(function(){
   &amp;lt;span class=&#34;commentjs&#34;&gt;// definimos variables para el contenedor y los&amp;lt;div&amp;gt;&#39;s de los tabs&amp;lt;/span&gt;
   var tabContainers = $(&#39;.tabs &amp;gt; div&#39;);
   &amp;lt;span class=&#34;commentjs&#34;&gt;// creamos el evento click para cada uno de los items del menu de tabs&amp;lt;/span&gt;
   $(&#39;div.tabs ul a&#39;).each(function() {
      $(this).click(function(){
         &amp;lt;span class=&#34;commentjs&#34;&gt;// guardamos el ancla (#item1 por ej.) en una variable del link clickeado&amp;lt;/span&gt;
         var hash = $(this).attr(&#39;href&#39;);
         &amp;lt;span class=&#34;commentjs&#34;&gt;// escondemos todos los tabs&amp;lt;/span&gt;
         tabContainers.hide();
         &amp;lt;span class=&#34;commentjs&#34;&gt;// mostramos el &amp;lt;div&amp;gt; que sea igual al ancla guardado&amp;lt;/span&gt;
         $(hash).show();
         &amp;lt;span class=&#34;commentjs&#34;&gt;// jugamos agregando y quitando classes del menu&amp;lt;/span&gt;
         $(&#39;div.tabs ul a&#39;).removeClass(&#39;selected&#39;);
         $(&#39;a[href=&#39;+hash+&#39;]&#39;).addClass(&#39;selected&#39;);
      });
   });
   &amp;lt;span class=&#34;commentjs&#34;&gt;// para comenzar, hacemos que el primer elemento sea el clickeado&amp;lt;/span&gt;
   $(&#39;div.tabs ul a:first&#39;).click();
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/tabs_history/tabs.html&#34; class=&#34;verejemplo&#34; title=&#34;Enlace en CSSLab &amp;quot;Demo 01: jQuery Tabs&amp;quot;&#34; target=&#34;_blank&#34;&gt;Ver demo tabs&lt;/a&gt;&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/05/btn_back.png&#34; alt=&#34;CSSLab: btn back&#34; width=&#34;154&#34; height=&#34;105&#34; align=&#34;right&#34; style=&#34;padding: 10px;&#34; /&gt; 
&lt;p&gt;Bien, con esto tienes tu menú de &lt;em&gt;tabs&lt;/em&gt; funcionando de manera básica pero práctica. Ahora como notarás, al ir por los &lt;em&gt;tabs&lt;/em&gt; y volver con el botón del navegador éstos no seguirán el mismo recorrido devuelta, aunque en la &lt;strong&gt;URL&lt;/strong&gt; sí se vea que van cambiando. Para que esto ocurra, debemos comparar no el &lt;strong&gt;hash&lt;/strong&gt; del enlace (&lt;strong&gt;&lt;a href=&#34;#item1&#34;&gt;&lt;/strong&gt; por ej.), sino comparar con la &lt;strong&gt;URL&lt;/strong&gt; que va cambiando. Además se debe incluir el &lt;em&gt;plugin&lt;/em&gt; &lt;a href=&#34;http://benalman.com/projects/jquery-bbq-plugin/&#34; title=&#34;Enlace externo a &amp;quot;jQuery BBQ&amp;quot;&#34; target=&#34;_blank&#34;&gt;jQuery BBQ&lt;/a&gt;, el que realiza el ingreso de la &lt;strong&gt;URL&lt;/strong&gt; con &lt;em&gt;tabs&lt;/em&gt; al caché del &lt;em&gt;browser&lt;/em&gt;. Con el mismo &lt;strong&gt;HTML&lt;/strong&gt;, miren la nueva función:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(function(){
   var tabContainers = $(&#39;.tabs &amp;gt; div&#39;);
   &amp;lt;span class=&#34;commentjs&#34;&gt;// creamos un nuevo evento y lo incluimos al browser&amp;lt;/span&gt;
   $(window).bind(&#39;hashchange&#39;, function () {
      &amp;lt;span class=&#34;commentjs&#34;&gt;// nuestra variable no la sacamos del &amp;lt;a&amp;gt; sino de la URL y dejamos el primero seleccionado&amp;lt;/span&gt;
      var hash = window.location.hash || &#39;#item1&#39;;
      &amp;lt;span class=&#34;commentjs&#34;&gt;// el resto es pr&amp;aacute;cticamente lo mismo&amp;lt;/span&gt;
      tabContainers.hide();
      $(hash).show();
      $(&#39;div.tabs ul a&#39;).removeClass(&#39;selected&#39;);
      $(&#39;a[href=&#39;+hash+&#39;]&#39;).addClass(&#39;selected&#39;);
   });
   &amp;lt;span class=&#34;commentjs&#34;&gt;// ejecutamos este nuevo evento &#39;hashchange&#39; mediante un trigger&amp;lt;/span&gt;
   $(window).trigger(&#39;hashchange&#39;);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/tabs_history/tabs_history.html&#34; class=&#34;verejemplo&#34; title=&#34;Enlace en CSSLab &amp;quot;Demo 02: jQuery Tabs + History&amp;quot;&#34; target=&#34;_blank&#34;&gt;Ver demo Tabs + History&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En este ejemplo, incluso podemos abrir mediante la &lt;strong&gt;URL&lt;/strong&gt; en el &lt;em&gt;tab&lt;/em&gt; que queramos, por ejemplo con el siguiente &lt;strong&gt;link&lt;/strong&gt; abriremos el demo en el &lt;em&gt;tab&lt;/em&gt; 3:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/tabs_history/tabs_history.html#item3&#34; class=&#34;verejemplo&#34; title=&#34;Enlace en CSSLab &amp;quot;Demo 03: jQuery Tabs + History en tab 3&amp;quot;&#34; target=&#34;_blank&#34;&gt;Ver demo Tabs + History en el tercer tab&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Tip Precoz 5: teclados de iPhone/iPad</title>
      <link>https://csslab.cl/2010/04/20/tip-precoz-5-teclados-de-iphoneipad/</link>
      <pubDate>Tue, 20 Apr 2010 19:49:08 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/04/20/tip-precoz-5-teclados-de-iphoneipad/</guid>
      <description>&lt;p&gt;Como muchos ya saben, &lt;em&gt;Webkit&lt;/em&gt; siempre ha sido pionero en implementar nuevas tecnologías y las últimas versiones de los lenguajes web existentes. Muchas etiquetas y atributos de &lt;strong&gt;HTML 5&lt;/strong&gt; por ejemplo, ya se pueden utilizar desde hace mucho tiempo en &lt;em&gt;browsers&lt;/em&gt; como &lt;strong&gt;Safari&lt;/strong&gt;, &lt;strong&gt;Konqueror&lt;/strong&gt; y &lt;strong&gt;Chrome&lt;/strong&gt;. Este pequeño tip mostrará un atributo de &lt;strong&gt;HTML 5&lt;/strong&gt; que implementado, ayudará a que la experiencia de usuario de &lt;strong&gt;Safari&lt;/strong&gt; para &lt;strong&gt;iPhone&lt;/strong&gt; y &lt;strong&gt;iPad&lt;/strong&gt; sea mejor.&lt;/p&gt;
&lt;p&gt;En un campo de formulario, cuando lo seleccionas en &lt;strong&gt;iPhone/iPad&lt;/strong&gt; para completarlo, automáticamente te muestra el teclado &lt;em&gt;touch&lt;/em&gt; del aparato. Aparte del teclado &lt;strong&gt;QUERTY&lt;/strong&gt; por defecto, existen 3 valores para &lt;strong&gt;type=&amp;quot;&amp;quot;&lt;/strong&gt; de &lt;strong&gt;&lt;input /&gt;&lt;/strong&gt; que muestran diferentes tipos de teclados: numéricos, url y de e-mail:&lt;/p&gt;</description>
      <content>&lt;p&gt;Como muchos ya saben, &lt;em&gt;Webkit&lt;/em&gt; siempre ha sido pionero en implementar nuevas tecnologías y las últimas versiones de los lenguajes web existentes. Muchas etiquetas y atributos de &lt;strong&gt;HTML 5&lt;/strong&gt; por ejemplo, ya se pueden utilizar desde hace mucho tiempo en &lt;em&gt;browsers&lt;/em&gt; como &lt;strong&gt;Safari&lt;/strong&gt;, &lt;strong&gt;Konqueror&lt;/strong&gt; y &lt;strong&gt;Chrome&lt;/strong&gt;. Este pequeño tip mostrará un atributo de &lt;strong&gt;HTML 5&lt;/strong&gt; que implementado, ayudará a que la experiencia de usuario de &lt;strong&gt;Safari&lt;/strong&gt; para &lt;strong&gt;iPhone&lt;/strong&gt; y &lt;strong&gt;iPad&lt;/strong&gt; sea mejor.&lt;/p&gt;
&lt;p&gt;En un campo de formulario, cuando lo seleccionas en &lt;strong&gt;iPhone/iPad&lt;/strong&gt; para completarlo, automáticamente te muestra el teclado &lt;em&gt;touch&lt;/em&gt; del aparato. Aparte del teclado &lt;strong&gt;QUERTY&lt;/strong&gt; por defecto, existen 3 valores para &lt;strong&gt;type=&amp;quot;&amp;quot;&lt;/strong&gt; de &lt;strong&gt;&lt;input /&gt;&lt;/strong&gt; que muestran diferentes tipos de teclados: numéricos, url y de e-mail:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;input type=&#34;text&#34; /&amp;gt; &amp;lt;span class=&#34;commenthtml&#34;&gt;(por defecto)&amp;lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/04/querty.png&#34; alt=&#34;CSSLab: teclados para iPhone/iPad&#34; width=&#34;340&#34; height=&#34;235&#34; /&gt; 
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;input type=&#34;url&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/04/url.png&#34; alt=&#34;CSSLab: teclados para iPhone/iPad&#34; width=&#34;340&#34; height=&#34;235&#34; /&gt; 
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;input type=&#34;number&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/04/number.png&#34; alt=&#34;CSSLab: teclados para iPhone/iPad&#34; width=&#34;340&#34; height=&#34;235&#34; /&gt; 
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;input type=&#34;email&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/04/email.png&#34; alt=&#34;CSSLab: teclados para iPhone/iPad&#34; width=&#34;340&#34; height=&#34;235&#34; /&gt; 
&lt;p&gt;Los &lt;em&gt;browsers&lt;/em&gt; que no soporten &lt;strong&gt;HTML5&lt;/strong&gt; lo obviarán y degradarán como si fuera un campo de tipo texto (&lt;strong&gt;type=&amp;ldquo;text&amp;rdquo;&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;Se nota como un detalle menor pero seguro tus usuarios lo notarán y te diferenciarás con este tipo de detalles.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Videocast 4: formulario</title>
      <link>https://csslab.cl/2010/04/08/videocast-4-formulario/</link>
      <pubDate>Thu, 08 Apr 2010 15:09:23 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/04/08/videocast-4-formulario/</guid>
      <description>&lt;p&gt;Tenía hace unos meses preparado un nuevo &lt;strong&gt;videocast&lt;/strong&gt; para ayudar a quienes están aprendiendo a maquetar en &lt;strong&gt;HTML+CSS&lt;/strong&gt; a realizarlo con campos de formularios. Lejos es lo más complicado que me ha tocado perfeccionar, pero se trata principalmente de practicar y de realizar la mayor cantidad de variaciones posibles para lograr un buen manejo de las etiquetas y conocer cómo se comportan en los diferentes &lt;em&gt;browsers&lt;/em&gt;. A modo de ejemplo, la siguiente imagen grafica un mismo archivo HTML con diferentes tipos de &lt;input /&gt; con diferentes estilos en diferentes &lt;em&gt;browsers&lt;/em&gt;:&lt;/p&gt;</description>
      <content>&lt;p&gt;Tenía hace unos meses preparado un nuevo &lt;strong&gt;videocast&lt;/strong&gt; para ayudar a quienes están aprendiendo a maquetar en &lt;strong&gt;HTML+CSS&lt;/strong&gt; a realizarlo con campos de formularios. Lejos es lo más complicado que me ha tocado perfeccionar, pero se trata principalmente de practicar y de realizar la mayor cantidad de variaciones posibles para lograr un buen manejo de las etiquetas y conocer cómo se comportan en los diferentes &lt;em&gt;browsers&lt;/em&gt;. A modo de ejemplo, la siguiente imagen grafica un mismo archivo HTML con diferentes tipos de &lt;input /&gt; con diferentes estilos en diferentes &lt;em&gt;browsers&lt;/em&gt;:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/04/input_browsers.png&#34; alt=&#34;Diferencias de input entre browsers - CSSLab.cl&#34; width=&#34;620&#34; height=&#34;1090&#34; /&gt; 
&lt;p&gt;En esta ocasión el &lt;em&gt;layout&lt;/em&gt; es bastante simple, uno típico que encontrarás en cualquier sistema de comentarios para &lt;em&gt;blogs&lt;/em&gt;. Pero es un buen puntapié para que veas de qué se trata esto. Además, contiene las etiquetas fundamentales y más utilizadas para capturar datos de usuarios.&lt;/p&gt;
&lt;div class=&#34;video-container&#34;&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/videocast/5/form_videocast5.zip&#34;&gt;Descargar el material utilizado&lt;/a&gt;{.verejemplo}&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Usando CSS3 ahora</title>
      <link>https://csslab.cl/2010/03/09/usando-css3-ahora/</link>
      <pubDate>Tue, 09 Mar 2010 16:40:50 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/03/09/usando-css3-ahora/</guid>
      <description>&lt;p&gt;No hay duda de que &lt;strong&gt;CSS3&lt;/strong&gt; llegó para quedarse: es moderno, elegante y finalmente entrega control total a los estilos. Cada vez lo utilizo más, y me encanta tener que pensar menos en solucionar problemas y esforzarme más en dar el formato que realmente quiero.&lt;/p&gt;</description>
      <content>&lt;p&gt;No hay duda de que &lt;strong&gt;CSS3&lt;/strong&gt; llegó para quedarse: es moderno, elegante y finalmente entrega control total a los estilos. Cada vez lo utilizo más, y me encanta tener que pensar menos en solucionar problemas y esforzarme más en dar el formato que realmente quiero.&lt;/p&gt;
&lt;p&gt;Paralelamente, se siente cada vez más fuerte el fervor por dejar de lado ese infame &lt;strong&gt;IE6&lt;/strong&gt;, el último remanente de la [guerra de los browsers][1]. Ese que nos mantiene en la edad media, y no nos deja pasar finalmente a la ilustración… y disfrutar a plenitud de &lt;strong&gt;CSS3&lt;/strong&gt; (Sí, lo sé. Además están &lt;strong&gt;IE7&lt;/strong&gt; e &lt;strong&gt;IE8&lt;/strong&gt;, pero algo es algo).&lt;/p&gt;
&lt;p&gt;Actualmente existen algunas propiedades que puedes ya utilizar en los &lt;em&gt;browsers&lt;/em&gt; modernos, lo que hará que tu diseño se distinga del resto. A continuación, las más atractivas:&lt;/p&gt;
&lt;h3 id=&#34;bordes-redondos&#34;&gt;Bordes redondos&lt;/h3&gt;
&lt;p&gt;Ya no más cortar en &lt;em&gt;Photoshop&lt;/em&gt; esos bordes y tratar de hacerlos calzar; ahora puedes crearlos directamente con &lt;strong&gt;CSS3&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;border-radius: 10px;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, para que &lt;em&gt;Firefox&lt;/em&gt; y &lt;em&gt;Safari/Chrome&lt;/em&gt; lo reconozcan, debes ayudarlos agregando lo siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;-moz-border-radius: 10px; &amp;lt;span class=&#34;commentcss&#34;&gt;/* para Firefox */&amp;lt;/span&gt;&amp;lt;br /&gt;
-webkit-border-radius: 10px;  &amp;lt;span class=&#34;commentcss&#34;&gt;/* Para Safari/Chrome */&amp;lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&#34;margin: 10px; background: #c00; color: #fff; padding: 10px; border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px;&#34;&gt;
  Caja aplicada con &lt;strong&gt;border-radius&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;Soportado por &lt;em&gt;Safari/Chrome&lt;/em&gt; y &lt;em&gt;Firefox 3.1+&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;textos-con-sombra&#34;&gt;Textos con sombra&lt;/h3&gt;
&lt;p&gt;Con &lt;strong&gt;text-shadow&lt;/strong&gt; puedes darle sombras a tus tipografías, haciendo tus títulos más atractivos:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;text-shadow: 2px 2px 5px #000;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&#34;margin: 10px; background: #c00; color: #fff; padding: 10px; text-shadow: 2px 2px 5px #000;&#34;&gt;
  Caja aplicada con &lt;strong&gt;text-shadow&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;Soportado por &lt;em&gt;Firefox 3.5+&lt;/em&gt;, &lt;em&gt;Safari/Chrome&lt;/em&gt; y &lt;em&gt;Opera 9.5+&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;cajas-con-sombras&#34;&gt;Cajas con sombras&lt;/h3&gt;
&lt;p&gt;¡Genial! Además, puedes darle sombras a cualquier elemento &lt;strong&gt;HTML&lt;/strong&gt; en bloque… ¡incluso si ya lo definiste con bordes redondos!&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;box-shadow: #666 0 0 10px;&amp;lt;br /&gt;
-webkit-box-shadow: #666 0 0 10px; &amp;lt;span class=&#34;commentcss&#34;&gt;/* para Firefox */&amp;lt;/span&gt;&amp;lt;br /&gt;
-moz-box-shadow: #666 0 0 10px; &amp;lt;span class=&#34;commentcss&#34;&gt;/* Para Safari/Chrome */&amp;lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&#34;margin: 10px; background: #c00; color: #fff; padding: 10px; border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; box-shadow: #666 0 0 10px; -webkit-box-shadow: #666 0 0 10px; -moz-box-shadow: #666 0 0 10px;&#34;&gt;
  Caja aplicada con &lt;strong&gt;border-radius&lt;/strong&gt; y &lt;strong&gt;box-shadow&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;Soportado por &lt;em&gt;Safari/Chrome&lt;/em&gt; y &lt;em&gt;Firefox 3.5+&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;transparencias&#34;&gt;Transparencias&lt;/h3&gt;
&lt;p&gt;Las puedes definir de 2 maneras: como color utilizando [&lt;strong&gt;RGBa&lt;/strong&gt;][2] o como opacidad del elemento completo, mediante &lt;strong&gt;opacity&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;background: rgba(0,0,0,0.5);&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&#34;margin: 10px; background: rgba(0,0,0,0.5); color: #fff; padding: 10px;&#34;&gt;
  Caja aplicada con &lt;strong&gt;background RGBa&lt;/strong&gt; al 0.5
&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;opacity: 0.5;&amp;lt;br /&gt;
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); &amp;lt;span class=&#34;commentcss&#34;&gt;/* para IE8 */&amp;lt;/span&gt;&amp;lt;br /&gt;
filter: alpha(opacity=50); &amp;lt;span class=&#34;commentcss&#34;&gt;/* para IE6-7 *&amp;lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&#34;margin: 10px; background: #ccc; color: #fff; padding: 10px; opacity: 0.5; -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); filter: alpha(opacity=60); &#34;&gt;
  Caja aplicada con &lt;strong&gt;opacity&lt;/strong&gt; al 0.5
&lt;/p&gt;
&lt;p&gt;Soportado por &lt;em&gt;Safari/Chrome&lt;/em&gt;, &lt;em&gt;Firefox 3.5+&lt;/em&gt;, &lt;em&gt;Opera&lt;/em&gt; e &lt;em&gt;IE7+&lt;/em&gt; (parcialmente).&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://tools.css3.info/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;CSS3.info&amp;quot;&#34;&gt;CSS3.info&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://tools.css3.info/selectors-test/test.html&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;CSS 3 Selectors Test&amp;quot;&#34;&gt;CSS 3 Selectors Test&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.westciv.com/iphonetests/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;CSS 3 Property Tests&amp;quot;&#34;&gt;CSS 3 Property Tests&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2008/05/05/un-poco-de-historia-browser-wars/&#34;&gt;http://www.csslab.cl/2008/05/05/un-poco-de-historia-browser-wars/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Un poco de historia: Browser Wars&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2009/02/26/tip-precoz-3-rgba/&#34;&gt;http://www.csslab.cl/2009/02/26/tip-precoz-3-rgba/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Tip Precoz 3: RGBa&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 34</title>
      <link>https://csslab.cl/2010/03/02/lo-vi-y-me-gusto-34/</link>
      <pubDate>Tue, 02 Mar 2010 14:52:08 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/03/02/lo-vi-y-me-gusto-34/</guid>
      <description>#34 – 2 Marzo 2010</description>
      <content>&lt;p&gt;#34 – 2 Marzo 2010&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.veterinariarivas.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/03/carolinarivas.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.markercss.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2010/03/markercss.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Tips para desarrollos móviles</title>
      <link>https://csslab.cl/2010/02/03/tips-para-desarrollos-moviles/</link>
      <pubDate>Wed, 03 Feb 2010 16:20:37 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/02/03/tips-para-desarrollos-moviles/</guid>
      <description>&lt;p&gt;A pasos agigantados avanza el mercado de telefonía móvil, y cada vez son más las empresas que piden proyectos web específicos para que se usen desde teléfonos celulares, o que sus sitios se vean correctamente en ellos. El problema es que, si para escritorio peleamos con una sopa de 6 &lt;em&gt;browsers&lt;/em&gt; más comunes –&lt;strong&gt;Firefox&lt;/strong&gt;, &lt;strong&gt;Opera&lt;/strong&gt;, &lt;strong&gt;IE6&lt;/strong&gt;, &lt;strong&gt;IE7&lt;/strong&gt;, &lt;strong&gt;IE8&lt;/strong&gt; y &lt;strong&gt;Safari-Chrome&lt;/strong&gt;– para móviles es exponencialmente mayor: tenemos &lt;em&gt;browsers&lt;/em&gt; diferentes por marca de teléfono y por modelo de las mismas marcas… ¡una locura!&lt;/p&gt;
&lt;p&gt;Poner en práctica este tema me ha costado mucho tiempo de documentarme, de pruebas y errores. Si te vas a aventurar en este medio, creo importante que tengas claro algunos puntos y otros que se los transparentes al cliente, todo para evitar posteriores decepciones:&lt;/p&gt;</description>
      <content>&lt;p&gt;A pasos agigantados avanza el mercado de telefonía móvil, y cada vez son más las empresas que piden proyectos web específicos para que se usen desde teléfonos celulares, o que sus sitios se vean correctamente en ellos. El problema es que, si para escritorio peleamos con una sopa de 6 &lt;em&gt;browsers&lt;/em&gt; más comunes –&lt;strong&gt;Firefox&lt;/strong&gt;, &lt;strong&gt;Opera&lt;/strong&gt;, &lt;strong&gt;IE6&lt;/strong&gt;, &lt;strong&gt;IE7&lt;/strong&gt;, &lt;strong&gt;IE8&lt;/strong&gt; y &lt;strong&gt;Safari-Chrome&lt;/strong&gt;– para móviles es exponencialmente mayor: tenemos &lt;em&gt;browsers&lt;/em&gt; diferentes por marca de teléfono y por modelo de las mismas marcas… ¡una locura!&lt;/p&gt;
&lt;p&gt;Poner en práctica este tema me ha costado mucho tiempo de documentarme, de pruebas y errores. Si te vas a aventurar en este medio, creo importante que tengas claro algunos puntos y otros que se los transparentes al cliente, todo para evitar posteriores decepciones:&lt;/p&gt;
&lt;h3 id=&#34;estudia-cada-dispositivo-sus-fortalezas-y-limitaciones&#34;&gt;Estudia cada dispositivo, sus fortalezas y limitaciones&lt;/h3&gt;
&lt;p&gt;Desde que salió el &lt;strong&gt;iPhone&lt;/strong&gt;, se abrió una nueva manera de tratar sitios web para móviles. Se pensaba que con el marcado &lt;strong&gt;WML&lt;/strong&gt; y estilos básicos bastaban, pero &lt;strong&gt;Apple&lt;/strong&gt; demostró que se puede hacer mucho más y mejor en tan poco espacio. &lt;strong&gt;Google&lt;/strong&gt; ofrece mucho con su navegador basado en &lt;strong&gt;Webkit&lt;/strong&gt;, &lt;strong&gt;Opera&lt;/strong&gt; soporta &lt;strong&gt;XHTML&lt;/strong&gt; en su &lt;strong&gt;Opera Mini&lt;/strong&gt;. Es importante que sepas cómo y qué te ofrece cada dispositivo, y eso se lo traspasas a tu cliente.&lt;/p&gt;
&lt;h3 id=&#34;trata-de-hacer-versiones-para-iphone-smartphones-y-los-que-sobran&#34;&gt;Trata de hacer versiones para iPhone, smartphones y los que sobran&lt;/h3&gt;
&lt;p&gt;Básicamente &lt;strong&gt;iPhone&lt;/strong&gt; es el que tiene mayores diferencias en la manera de tratar el código fuente, así que es mejor hacer una versión del sitio sólo para este dispositivo. Agrupa los &lt;em&gt;smartphones&lt;/em&gt; (&lt;strong&gt;Blackberry&lt;/strong&gt;, &lt;strong&gt;Nokia&lt;/strong&gt;) y crea una versión con buen &lt;strong&gt;HTML&lt;/strong&gt; y estilos sobrios; cuida que el &lt;strong&gt;HTML&lt;/strong&gt; sea sencillo para el resto de los &lt;em&gt;browsers&lt;/em&gt; más limitados (&lt;strong&gt;Palm&lt;/strong&gt;, &lt;strong&gt;Windows Mobile&lt;/strong&gt;). &lt;a href=&#34;http://detectmobilebrowsers.mobi/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Detect Mobile Browsers&amp;quot;&#34;&gt;Para detectarlos, te recomiendo un sencillo pero útil script en &lt;strong&gt;PHP&lt;/strong&gt; que hace el trabajo por tí&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;ten-cuidado-con-blackberry-y-nokia&#34;&gt;Ten cuidado con Blackberry (y Nokia)&lt;/h3&gt;
&lt;p&gt;He tenido grandes decepciones con las versiones del &lt;em&gt;browser&lt;/em&gt; de &lt;strong&gt;Blackberry&lt;/strong&gt; y &lt;strong&gt;Nokia&lt;/strong&gt;: suelen comportarse diferente entre modelos inmediatos, y esas diferencias son sustanciales. Lamentablemente, te recomiendo que uses &lt;strong&gt;HTML&lt;/strong&gt; 4 y &lt;strong&gt;CSS1&lt;/strong&gt; para asegurarte con todos los modelos de estas marcas.&lt;/p&gt;
&lt;h3 id=&#34;deja-el-comportamiento-para-el-servidor&#34;&gt;Deja el comportamiento para el servidor&lt;/h3&gt;
&lt;p&gt;Si debes validar campos de formularios, déjaselo al servidor y no al &lt;em&gt;browser&lt;/em&gt;. Al contrario de &lt;strong&gt;iPhone&lt;/strong&gt;, muchos teléfonos traen &lt;strong&gt;Javascript&lt;/strong&gt; deshabilitados por defecto. No esperes que el usuario los haya habilitado manualmente; si puedes, evítalo.&lt;/p&gt;
&lt;h3 id=&#34;no-confies-en-los-simuladores&#34;&gt;No confies en los simuladores&lt;/h3&gt;
&lt;p&gt;Una lástima, pero te recomiendo que le agregues a tu lista de amigos, el modelo y versión de teléfono celular que tiene cada uno para que te ayuden a probar tus desarrollos. Sólo así tendrás certeza del correcto funcionamiento que esperan tú y tu cliente.&lt;/p&gt;
&lt;h3 id=&#34;ten-mucha-pero-mucha-paciencia&#34;&gt;Ten mucha, pero mucha paciencia&lt;/h3&gt;
&lt;p&gt;Si crees que por ser sitios menores te será fácil, te decepcionarás: son muchas más las variables que debes tener presente, y probablemente el esfuerzo será mayor. Planifica muy bien con tu cliente lo que él espera ver e interactuar mediante un móvil, aterrízalo con las limitaciones que encuentres y lleguen a un acuerdo razonable para ambos.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.opera.com/mini/developer/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Opera Mini - Developer&amp;quot;&#34;&gt;Opera Mini – Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://developer.android.com/sdk/index.html&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Android SDK&amp;quot;&#34;&gt;Android SDK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://developer.apple.com/safari/library/referencelibrary/GettingStarted/GS_iPhoneWebApp/index.html#//apple_ref/doc/uid/TP40008134&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;#038;quotiPhone Web Apps Reference Library;&amp;quot;&#34;&gt;iPhone Web Apps Reference Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://docs.blackberry.com/en/developers/subcategories/?userType=21&amp;category=BlackBerry%20Browser&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Blackberry Browser Manuals and Guides&amp;quot;&#34;&gt;Blackberry Browser Manuals and Guides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[Nokia Mobile Simulator (requiere registro)][1]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;small&gt;&lt;em&gt;* fotografía meramente ilustrativa.&lt;/em&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.forum.nokia.com/info/sw.nokia.com/id/db2c69a2-4066-46ff-81c4-caac8872a7c5/NMB40_install.zip.html&#34;&gt;http://www.forum.nokia.com/info/sw.nokia.com/id/db2c69a2-4066-46ff-81c4-caac8872a7c5/NMB40_install.zip.html&lt;/a&gt; &amp;ldquo;Enlace externo a &amp;ldquo;Nokia Mobile Simulator&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Diseñando experiencias</title>
      <link>https://csslab.cl/2010/01/16/disenando-experiencias/</link>
      <pubDate>Sun, 17 Jan 2010 00:24:34 +0000</pubDate>
      
      <guid>https://csslab.cl/2010/01/16/disenando-experiencias/</guid>
      <description>Hace mucho que dejé de trabajar como diseñador gráfico para primero dedicarme al desarrollo front-end, y más recientemente a la arquitectura de información y principalmente al manejo de proyectos digitales. Pero aún así, me encanta diseñar y siempre lo hago para mis proyectos personales, los cuales soy mi propio crítico y jefe. Ante ello, soy muy crítico y tengo mi propia opinión sobre el diseño orientado a la web, lo cual creo que es un factor muy importante en un proyecto y que se merece un gran protagonismo pero que lamentablemente ha sido muy mermado.</description>
      <content>&lt;p&gt;Hace mucho que dejé de trabajar como diseñador gráfico para primero dedicarme al desarrollo &lt;strong&gt;front-end&lt;/strong&gt;, y más recientemente a la arquitectura de información y principalmente al manejo de proyectos digitales. Pero aún así, me encanta diseñar y siempre lo hago para mis proyectos personales, los cuales soy mi propio crítico y jefe. Ante ello, soy muy crítico y tengo mi propia opinión sobre el diseño orientado a la web, lo cual creo que es un factor muy importante en un proyecto y que se merece un gran protagonismo pero que lamentablemente ha sido muy mermado.&lt;/p&gt;
&lt;p&gt;El diseño web no debe ser tratado como el diseño gráfico; es una disciplina tan específica que debe ser separada definitivamente como una rama independiente. Implica conocimientos de áreas propias que son disciplinas en sí. Por nombrar algunas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Diseño gráfico&lt;/li&gt;
&lt;li&gt;Psicología&lt;/li&gt;
&lt;li&gt;Sociología&lt;/li&gt;
&lt;li&gt;Marketing&lt;/li&gt;
&lt;li&gt;Historia&lt;/li&gt;
&lt;li&gt;Comunicación Social&lt;/li&gt;
&lt;li&gt;Arquitectura de información&lt;/li&gt;
&lt;li&gt;Usabilidad&lt;/li&gt;
&lt;li&gt;Programación&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;He visto muchos diseños que merecen más ser impresos que aplicados en una pantalla; comenzando por que van a pesar bastante y pasando por formas imposibles de ser realizadas mediante codigo &lt;strong&gt;HTML&lt;/strong&gt; y &lt;strong&gt;CSS&lt;/strong&gt;. En mi humilde opinión, un diseñador web para ser efectivo en su trabajo debe considerar por lo menos alguno de los siguiente puntos:&lt;/p&gt;
&lt;h4 id=&#34;tareas&#34;&gt;Tareas&lt;/h4&gt;
&lt;p&gt;Siempre recuerda: el ser humano basa su comportamiento en tareas y objetivos, y por lo tanto el lograr realizarlas. Un sitio web no es sólo una vitrina, también es una vía para lograr un potencial cliente. Nadie llega a un sitio por azar; el usuario eligió llegar a él a través de un &lt;em&gt;click&lt;/em&gt; en un enlace, una búsqueda orgánica o por vía directa. Por lo tanto, se debe tratar de encantarlo y extender su estadía en él, y el diseño es el medio más directo para ello.&lt;/p&gt;
&lt;h4 id=&#34;usuario&#34;&gt;Usuario&lt;/h4&gt;
&lt;p&gt;Estudiar al usuario no es fácil y se necesita tiempo y estudio para lograr algo fidedigno. Lamentablemente, sabemos que para un proyecto web se trabaja muy rápido y con deadlines muy ajustados. Ante ello, estudios y conocimientos previos son imprecindibles.&lt;/p&gt;
&lt;h4 id=&#34;soporte&#34;&gt;Soporte&lt;/h4&gt;
&lt;p&gt;Siento que es muy importante conocer (pero no necesariamente dominar) cuál será el soporte final del sitio, antes de siquiera comenzar el diseño. ¿Estará alimentado por un &lt;strong&gt;CMS&lt;/strong&gt;? ¿Qué posibilidades me ofrece? ¿Podré usar &lt;strong&gt;Flash&lt;/strong&gt; parcialmente? ¿Qué versión? Con algunas pocas respuestas se podrá exigir más a la herramienta y no esperar tanto al aprendizaje del usuario.&lt;/p&gt;
&lt;h4 id=&#34;performance&#34;&gt;Performance&lt;/h4&gt;
&lt;p&gt;No existen usuarios expertos, y todos estamos constantemente aprendiendo a través de constantes innovaciones de gente muy creativa. Pero es importante considerar que el tiempo que el usuario gasta en un sitio web es tan valioso como nuestro tiempo como profesionales creándolo, por lo tanto se debe diseñar estructuras que sean además de fácil de entender, rápido de recorrer, de cargar y de encontrar lo que se busca.&lt;/p&gt;
&lt;h3 id=&#34;disentildeo-centrado-en-el-usuario&#34;&gt;Diseño Centrado en el Usuario&lt;/h3&gt;
&lt;p&gt;En el mundo para el cual trabajamos existe un concepto muy conocido pero poco aplicado, por lo que he observado navegando. El &lt;strong&gt;Diseño Centrado en el Usuario&lt;/strong&gt; es una filosofía y un proceso con el cual se busca mediante el diseño necesidades, deseos y limitaciones de una interfaz que satisfacen al usuario final del sitio web. Esto puede ser considerado como un proceso múltiple, donde no sólo se requiere que el diseñador resuelva la estética (como comúnmente sucede), sino cómo los usuarios interpretan una interfaz y su comportamiento utilizándola. Con esto, se hace imperativo una etapa de pruebas con usuarios reales (sin miedo a redefiniciones) y una etapa inicial de análisis tanto de &lt;em&gt;target&lt;/em&gt; como de arquitectura de información.&lt;/p&gt;
&lt;p&gt;Pienso que debemos diseñar experiencias, no productos. Si haces un producto bonito, puede que quien lo utiliza le agrade la estética y lo tenga en un lugar destacado. Pero si el usuario tiene una experiencia diferente, satisfactoria navegando, es muy probable que vuelva y que lo recomiende a otros usuarios, todos potenciales clientes.&lt;/p&gt;
&lt;p&gt;Y ¿qué implica este &lt;strong&gt;diseño de experiencias&lt;/strong&gt;?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pensar global: desde que el usuario carga el sitio, hasta que lo deja. Cada paso, cada elemento debe ser cuidadosamente pensado y aplicado.&lt;/li&gt;
&lt;li&gt;Considerar tanto la presentación del contenido para todos (accesibilidad), como la facilidad del uso de cada elemento del sitio (usabilidad).&lt;/li&gt;
&lt;li&gt;Desarrollar hacia el usuario, desde lo complejo del proceso a la simplicidad de la tarea.&lt;/li&gt;
&lt;li&gt;Diseñar mensajes, ayudas, errores y guías de navegación que apoyen y orienten al usuario, y que lo haga sentirse bien y no fracasado por no haber logrado algo.&lt;/li&gt;
&lt;li&gt;El contenido es el rey, por lo tanto debe ser tratado como tal y el diseño es el soporte para el mensaje que se quiera entregar al usuario a través del sitio web. Pero el diseñador debe ser hábil: puedes persuadir al usuario tanto con buenos textos como con buen diseño.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Como ven, esto es sólo un esbozo de lo que pienso debería ser un diseñador web integral, que cumpla con efectividad su tarea comunicadora y persuasiva y que finalmente pueda ser valorado como tal. Este tema queda abierto a sus comentarios, los que pueden nutrir y complementar este tema.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 33</title>
      <link>https://csslab.cl/2009/12/17/lo-vi-y-me-gusto-33/</link>
      <pubDate>Thu, 17 Dec 2009 20:01:56 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/12/17/lo-vi-y-me-gusto-33/</guid>
      <description>#33 – 17 Diciembre 2009</description>
      <content>&lt;p&gt;#33 – 17 Diciembre 2009&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.expresaweb.com.ar/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/12/expresa.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.eneaa.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/12/eneaa.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.centroharmonia.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/12/centreharmonia.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Decisiones</title>
      <link>https://csslab.cl/2009/11/23/decisiones/</link>
      <pubDate>Mon, 23 Nov 2009 15:53:54 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/11/23/decisiones/</guid>
      <description>&lt;p&gt;En el transcurso de la vida profesional debes tomar muchas decisiones; algunas son tan mecánicas que ni las notas, mientras que otras pueden hacer que redefinas tu propia vida. Quiero compartir un pequeño caso que me tocó ver junto a otro colega, los argumentos que tuvimos y la decisión que enfrentamos. Lo encuentro interesante, ya que involucra accesibilidad, usabilidad, diseño, experiencia de usuario y desarrollo web, cada una disciplinas en sí pero que creo importante que tengan presencia y dominio en un profesional.&lt;/p&gt;</description>
      <content>&lt;p&gt;En el transcurso de la vida profesional debes tomar muchas decisiones; algunas son tan mecánicas que ni las notas, mientras que otras pueden hacer que redefinas tu propia vida. Quiero compartir un pequeño caso que me tocó ver junto a otro colega, los argumentos que tuvimos y la decisión que enfrentamos. Lo encuentro interesante, ya que involucra accesibilidad, usabilidad, diseño, experiencia de usuario y desarrollo web, cada una disciplinas en sí pero que creo importante que tengan presencia y dominio en un profesional.&lt;/p&gt;
&lt;p&gt;Este es uno de tantos artículos de este sitio que son inspirados a partir de vivencias, experiencias y conversaciones con otras personas que comparten el mismo oficio.&lt;/p&gt;
&lt;h3 id=&#34;el-comienzo&#34;&gt;El comienzo&lt;/h3&gt;
&lt;p&gt;Típico proyecto web, se hizo la etapa de &lt;strong&gt;AI&lt;/strong&gt;, &lt;em&gt;wireframming&lt;/em&gt;, diseño de propuestas, se aprobó un estilo gráfico, se hicieron mejoras en el diseño y se comenzó a maquetar las páginas. Lo siguiente es una variación (más simple) del &lt;em&gt;wireframe&lt;/em&gt; de la &lt;em&gt;home&lt;/em&gt; (por motivos de privacidad, omito el nombre del proyecto/cliente y detalles):&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2009/11/wf1.png&#34; alt=&#34;Wireframe 1 en CSSLab.cl&#34;&gt;&lt;/p&gt;
&lt;p&gt;Hasta aquí todo medianamente normal, pero al hacer funcionar la parte de Noticias, nos topamos con un pequeño gran detalle: en el &lt;em&gt;wireframe&lt;/em&gt; y en el boceto se muestra que hay &lt;em&gt;tabs&lt;/em&gt; por tipo de noticias, y además hay resumen de 3 noticias (según tipo) con fotografias a desplegarse, según pases el mouse sobre cada texto:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2009/11/wf2.png&#34; alt=&#34;Wireframe 2 en CSSLab.cl&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;el-anaacutelisis&#34;&gt;El análisis&lt;/h3&gt;
&lt;p&gt;¿Dónde veo un problema? Veámoslo según cada disciplina&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Usabilidad&lt;/strong&gt;: técnicamente, intervienen 2 &lt;em&gt;tabs&lt;/em&gt;: por noticias, que al desplazar el &lt;em&gt;cursor&lt;/em&gt; sobre cada resumen se reemplaza por su imagen respectiva; y por tipo de noticia, que son 3 &lt;em&gt;tabs&lt;/em&gt;. Este doble &lt;em&gt;tab&lt;/em&gt; puede crear confusión al usuario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Experiencia de usuario&lt;/strong&gt;: En total, son 9 imágenes cargadas: 3 tipos de noticias, 3 noticias por tipo; cada imagen, por el tamaño, es probable que pese cada una &lt;strong&gt;20kb&lt;/strong&gt;, lo que en total se debe cargar &lt;strong&gt;180kb&lt;/strong&gt;. Quizás no es mucho peso, pero hay que tomar en cuenta que además se cargan los &lt;em&gt;banners&lt;/em&gt;, que son bastante grandes y pueden llegar a ser pesados…&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accesibilidad&lt;/strong&gt;: Para conexiones lentas, no debemos pedirle tanto al usuario si es poco probable que vaya a necesitar de esas 9 imágenes. Para conexiones desde celulares, sería un abuso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desarrollo&lt;/strong&gt;: para aminorar esa carga, podríamos cargar las noticias en los &lt;em&gt;tabs&lt;/em&gt; según el usuario vaya haciendo &lt;em&gt;click&lt;/em&gt; en ellas mediante &lt;strong&gt;AJAX&lt;/strong&gt;; pero esto involucra un desarrollo extra que no estaba estimado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sinceramente, podríamos haber continuado con la construcción del sitio y ya. Pero es importante tomar en cuenta estos detalles, que al fin y al cabo hacen que un proyecto marque la diferencia.&lt;/p&gt;
&lt;h3 id=&#34;la-solucioacuten&#34;&gt;La solución&lt;/h3&gt;
&lt;p&gt;Aún se está trabajando en ello, pero se intervendrá el diseño y probablemente se quitarán las imágenes asociadas por cada noticia, y se dejará sólo 1 imagen principal por tipo de noticia, lo que reduce la carga a sólo 3 imágenes:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2009/11/wf3.png&#34; alt=&#34;Wireframe 3 en CSSLab.cl&#34;&gt;&lt;/p&gt;
&lt;p&gt;Como ven, no impacta mayormente en el diseño final, pero sí será necesario cambiarlo y transparentarle esta modificación al cliente, siempre argumentando que es para mejor.&lt;/p&gt;
&lt;p&gt;Esto es todo, como aún el proyecto está en proceso no hay desenlace (favorable o no), aún así me encantaría leer sus opiniones.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 32</title>
      <link>https://csslab.cl/2009/11/02/lo-vi-y-me-gusto-32/</link>
      <pubDate>Mon, 02 Nov 2009 13:31:21 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/11/02/lo-vi-y-me-gusto-32/</guid>
      <description>#32 – 02 Noviembre 2009</description>
      <content>&lt;p&gt;#32 – 02 Noviembre 2009&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.asesoriagrafica.cl&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/11/asesoriagrafica.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.ril.es/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/11/ril.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://marianaonate.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/11/marianaonate.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.ontherocks.cl/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/11/ontherocks.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Por una metodología</title>
      <link>https://csslab.cl/2009/10/21/por-una-metodologia/</link>
      <pubDate>Wed, 21 Oct 2009 13:59:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/10/21/por-una-metodologia/</guid>
      <description>&lt;p&gt;Suele ser bastante complicado trabajar para la web, tomando en cuenta el ritmo en que están evolucionando las tecnologías y lo exigente que se pone el mercado ante la vorágine de Internet. Es en momentos como éstos que se necesita poner orden en el gallinero, pausar un momento y sentarse a reflexionar en cuáles serán los pasos a tomar para enfrentar un proyecto web. Estimar tiempos, quizás transparentárselo al cliente a través de una &lt;em&gt;Gantt&lt;/em&gt; y apoyarte con una metodología clara, robusta y que te apoye al momento de esa tan ansiada entrega final sería el ideal en estas instancias.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Scrum&lt;/strong&gt;&lt;/em&gt; es una metodología ágil de manejo de proyectos digitales (generalmente &lt;em&gt;software&lt;/em&gt;). Puede ser tomado como un proceso, lo que hace más interesante aún esta metodología. Algunos incluso se atreven a mencionarlo como capaz de ser utilizado en el desarrollo de cualquier producto; pero lo que más interesa es la capacidad de entregar un producto con un conjunto de funcionalidades específicas a cada iteración.&lt;/p&gt;
&lt;p&gt;Algunas de sus características son:&lt;/p&gt;</description>
      <content>&lt;p&gt;Suele ser bastante complicado trabajar para la web, tomando en cuenta el ritmo en que están evolucionando las tecnologías y lo exigente que se pone el mercado ante la vorágine de Internet. Es en momentos como éstos que se necesita poner orden en el gallinero, pausar un momento y sentarse a reflexionar en cuáles serán los pasos a tomar para enfrentar un proyecto web. Estimar tiempos, quizás transparentárselo al cliente a través de una &lt;em&gt;Gantt&lt;/em&gt; y apoyarte con una metodología clara, robusta y que te apoye al momento de esa tan ansiada entrega final sería el ideal en estas instancias.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Scrum&lt;/strong&gt;&lt;/em&gt; es una metodología ágil de manejo de proyectos digitales (generalmente &lt;em&gt;software&lt;/em&gt;). Puede ser tomado como un proceso, lo que hace más interesante aún esta metodología. Algunos incluso se atreven a mencionarlo como capaz de ser utilizado en el desarrollo de cualquier producto; pero lo que más interesa es la capacidad de entregar un producto con un conjunto de funcionalidades específicas a cada iteración.&lt;/p&gt;
&lt;p&gt;Algunas de sus características son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Es ágil ya que funciona con cortas iteraciones de tareas pre-definidas.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Scrum&lt;/em&gt; no controla tiempos, sino que tareas de desarrollo.&lt;/li&gt;
&lt;li&gt;Envuelve prácticas ya existentes, por lo que su implementación no confiere un cambio radical en la manera de trabajar.&lt;/li&gt;
&lt;li&gt;Es basado en el trabajo en equipo.&lt;/li&gt;
&lt;li&gt;Al ser ágil, se incrementan en cada iteración funcionalidades y se adapta rapidamente a los cambios que éstos pueden sufrir.&lt;/li&gt;
&lt;li&gt;Aumenta la cooperación entre los integrantes del equipo y su comunicación.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Scrum&lt;/em&gt; es una manera de detectar causas de conflictos y errores en la entrega de productos.&lt;/li&gt;
&lt;li&gt;Maximiza la productividad.&lt;/li&gt;
&lt;li&gt;Es escalable desde simples proyectos hasta organizaciones enteras.&lt;/li&gt;
&lt;li&gt;Puede ser implementado al inicio del proyecto, a la mitad o cuando esté con problemas y retrasos en su entrega.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Scrum&lt;/em&gt; es un set de prácticas y reglas interrelacionadas que optimizan el desarrollo, reduce la sobrecarga organizacional y sincroniza los requerimientos con prototipos iterativos. Basado en teorías de control de procesos modernas, &lt;em&gt;Scrum&lt;/em&gt; permite que un desarrollo sea mejor abordado teniendo en cuenta los recursos disponibles y tiempos predefinidos.&lt;/p&gt;
&lt;p&gt;Parece milagroso, pero no es la solución a nuestros problemas. Por mi experiencia, necesitas que se junten algunos factores para que puedas implementar &lt;em&gt;Scrum&lt;/em&gt; en un proyecto con éxito:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/10/no_scrum.png&#34; alt=&#34;CSSLab: lo que NO es Scrum&#34; width=&#34;235&#34; height=&#34;150&#34; class=&#34;alignright size-full wp-image-490&#34; align=&#34;right&#34; /&gt; 
&lt;ul&gt;
&lt;li&gt;Un pequeño tiempo (hasta 2 dias) de implementación y/o adaptación.&lt;/li&gt;
&lt;li&gt;Un equipo ordenado y acostumbrado a cambios a mitad de un proceso.&lt;/li&gt;
&lt;li&gt;Un jefe de proyecto que sepa lo que está haciendo.&lt;/li&gt;
&lt;li&gt;Un cliente que acepte la propuesta de que es un cambio que será para mejor.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;bueno-y-iquestcoacutemo-se-utiliza&#34;&gt;Bueno, y ¿cómo se utiliza?&lt;/h3&gt;
&lt;p&gt;La clave del éxito de &lt;em&gt;Scrum&lt;/em&gt; está en el uso de medidas que maximizen la flexibilidad y riesgo mientras mantienes el control. La mayoría de los proyectos tratan de evitar riesgos, aunque ésta sea una parte inherente del desarrollo web y de &lt;em&gt;software&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Manten tus amigos cerca, y tus enemigos más cerca aún&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Las variables de un desarrollo son: &lt;strong&gt;riesgo&lt;/strong&gt;, &lt;strong&gt;funcionalidad&lt;/strong&gt;, &lt;strong&gt;costo&lt;/strong&gt;, &lt;strong&gt;tiempo&lt;/strong&gt; y &lt;strong&gt;calidad&lt;/strong&gt;, las que pueden ser estimadas al inicio mismo del proyecto. Cada variable comenzará a cambiar en el momento en que el proyecto comience, y pueden ser aumentadas o disminuidas de acuerdo al avance del desarrollo (aumenta funcionalidad por mayor tiempo y costo, por ejemplo).&lt;/p&gt;
&lt;p&gt;El uso de &lt;strong&gt;controles&lt;/strong&gt; es la espina dorsal de &lt;em&gt;Scrum&lt;/em&gt;, y sirve para establecer, mantener y monitorear parámetros claves. Estos controles se tornan críticos cuando te encuentras con incertidumbres, comportamiento impredecible y el amargo caos (sabemos que siempre existen…). Los controles utilizados en &lt;em&gt;Scrum&lt;/em&gt; son:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Backlog (cartera)&lt;/dt&gt;
&lt;dd&gt;Una identificación de todos los requerimientos que deben cumplirse al final del desarrollo.&lt;/dd&gt;
&lt;dt&gt;Objetos / Componentes&lt;/dt&gt;
&lt;dd&gt;Contenedor de reutilizables&lt;/dd&gt;
&lt;dt&gt;Paquetes&lt;/dt&gt;
&lt;dd&gt;Grupo de objetos dentro del cual se desarrollará un ítem del &lt;em&gt;backlog&lt;/em&gt;.&lt;/dd&gt;
&lt;dt&gt;Problemas&lt;/dt&gt;
&lt;dd&gt;Que deben ser resueltos por un miembro del equipo al implementar un ítem del &lt;em&gt;backlog&lt;/em&gt;.&lt;/dd&gt;
&lt;dt&gt;Temas&lt;/dt&gt;
&lt;dd&gt;Que deben ser resueltos antes que un ítem del &lt;em&gt;backlog&lt;/em&gt; sea asignado a un paquete.&lt;/dd&gt;
&lt;dt&gt;Soluciones&lt;/dt&gt;
&lt;dd&gt;A un tema ó problema.&lt;/dd&gt;
&lt;dt&gt;Cambios&lt;/dt&gt;
&lt;dd&gt;De actividades que son realizadas para solucionar un problema.&lt;/dd&gt;
&lt;dt&gt;Riesgos&lt;/dt&gt;
&lt;dd&gt;Asociados a un problema, tema ó ítem del &lt;em&gt;backlog&lt;/em&gt;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Estos controles son medidos y contínuamente mantenidos. Los mayores controles son &lt;em&gt;backlog&lt;/em&gt; y riesgos; mientras &lt;em&gt;backlog&lt;/em&gt; comenzará siendo grande, aumentará más aún cuando culmine la etapa de planificación pero disminuirá considerablemente mientras el proyecto avance y se vayan quemando cada uno de sus requerimientos. Riesgos por su parte irá en aumento a medida que se sumen temas y problemas, pero debe disminuir cuando se acerque la entrega del proyecto.&lt;/p&gt;
&lt;h3 id=&#34;la-clave-los-sprint&#34;&gt;La clave: los Sprint&lt;/h3&gt;
&lt;p&gt;Un &lt;strong&gt;sprint&lt;/strong&gt; es un conjunto de actividades de desarrollo en un tiempo pre-definido que conducen en un ejecutable demostrable. El intervalo entre cada sprint está basado en la complejidad del producto, evaluación de los riesgos y el grado de control deseado. Dentro del desarrollo del proyecto existirán varios &lt;em&gt;sprint&lt;/em&gt;; inicialmente sus duraciones serán largas (hasta 6 semanas) pero deben acortarse a medida que avanzan (1 semana). Al final de cada &lt;em&gt;sprint&lt;/em&gt;, el &lt;strong&gt;Scrum Master&lt;/strong&gt; (quien maneja y aplica la metodología) puede cambiar &lt;em&gt;backlog&lt;/em&gt; y riesgo en respuesta a eventos externos al proyecto (nuevas tecnologías, competitividades, fallos en herramientas, etc.) lo que se traduce en productos cada vez más acabados y cuya funcionalidad se va incrementando en cada &lt;em&gt;sprint&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;En un equipo de trabajo pueden haber muchos &lt;em&gt;sprints&lt;/em&gt; trabajando en diferentes funcionalidades de un mismo producto; se recomiendan equipos de &lt;em&gt;sprint&lt;/em&gt; que incluyan: desarrolladores, especialista en &lt;strong&gt;QA&lt;/strong&gt; y un encargado de la documentación. Cada equipo debe trabajar en sus paquetes asignados para resolver los problemas al implementar &lt;em&gt;backlogs&lt;/em&gt;. La idea es que al final de cada &lt;em&gt;sprint&lt;/em&gt; el equipo entregue un código ejecutable y demostrable.&lt;/p&gt;
&lt;p&gt;Se recomienda crear una reunión diaria (&lt;strong&gt;Scrum Meeting&lt;/strong&gt;) donde se discuten los avances, problemas y posibles soluciones por parte de cada miembro del equipo; así todos estarán al tanto de lo que cada uno está haciendo y pueden aportar con soluciones. Esta reunión no debe durar más de 15 minutos y ojalá se haga al inicio de la jornada laboral.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/10/csslab_scrum.png&#34; alt=&#34;CSSLab: Scrum&#34; width=&#34;550&#34; height=&#34;300&#34; /&gt; 
&lt;h3 id=&#34;finalmente-el-cierre&#34;&gt;Finalmente, el cierre&lt;/h3&gt;
&lt;p&gt;Cuando todos los factores determinados en el backlog están terminados y los problemas fueron completados, el encargado puede determinar que el proyecto está cerrado. Lo interesante en &lt;em&gt;Scrum&lt;/em&gt; es que se asume que un producto nunca está completo y que constantemente se puede mejorar en cuanto a funcionalidades. A partir que aquí, se permite generar un nuevo ciclo y recomenzar &lt;em&gt;Scrum&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;y-iquestcoacutemo-lo-aplico&#34;&gt;Y ¿Cómo lo aplico?&lt;/h3&gt;
&lt;p&gt;Primero, debes documentarte bastante y entender bien lo que involucra implementar una nueva metodología de trabajo dentro de un equipo ya consolidado. Recuerda que manejar personas suele ser complicado y debes tener un proyecto algo liviano para hacer un primer intento. En una empresa de desarrollo de &lt;em&gt;software&lt;/em&gt; o de &lt;strong&gt;TI&lt;/strong&gt; no debería ser complicado, pero implementarlo en una agencia multimedia puede llegar a ser doloroso y con una alta tasa de fracaso, debido al ritmo vertiginoso con que se trabaja y la poca posibilidad de manejar proyectos individuales por vez (si entra un nuevo cliente, se debe tomarlo con la misma gente que ya está trabajando en otros proyectos con &lt;em&gt;sprints&lt;/em&gt; ya definidos). En ese caso, el &lt;em&gt;Scrum Master&lt;/em&gt; debe saber manejar muy bien multiples proyectos simultaneamente y tratar en lo posible de mantener el orden con el cliente.&lt;/p&gt;
&lt;p&gt;No deja de ser un buen desafío, es cosa de atreverse.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>¿Ansioso por HTML 5?</title>
      <link>https://csslab.cl/2009/09/29/%C2%BFansioso-por-html-5/</link>
      <pubDate>Tue, 29 Sep 2009 21:32:46 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/09/29/%C2%BFansioso-por-html-5/</guid>
      <description>&lt;p&gt;Con la aparente decisión de que el nuevo estándar a ser adoptado por la comunidad desarrolladora web será &lt;strong&gt;HTML 5&lt;/strong&gt;, existen ansias de disfrutar luego todas su bondades, aunque siento aún lejano su total uso dado lo lento que suele ser por parte de los usuarios la actualización de sus navegadores a uno más moderno y que soporte estas nuevas especificaciones, que ya han ido apareciendo. Pero eso no quita que desde ya comencemos a jugar un poco con él.&lt;/p&gt;
&lt;p&gt;Ya he comentado sobre las [características de este nuevo estándar][1], y en este momento nos concentraremos en una maqueta funcional utilizando las nuevas etiquetas y sus nuevas posibilidades. Es interesante saber que podemos utilizar elementos de &lt;strong&gt;HTML 5&lt;/strong&gt; en estos momentos aunque la mayoría de los &lt;em&gt;browsers&lt;/em&gt; aún no lo soporten; esto se debe a que &lt;strong&gt;CSS&lt;/strong&gt; puede dar estilo a cualquier etiqueta, aunque ésta prácticamente no exista (aún). Por ejemplo, si me da la gana puedo inventar una etiqueta propia y darle estilos:&lt;/p&gt;</description>
      <content>&lt;p&gt;Con la aparente decisión de que el nuevo estándar a ser adoptado por la comunidad desarrolladora web será &lt;strong&gt;HTML 5&lt;/strong&gt;, existen ansias de disfrutar luego todas su bondades, aunque siento aún lejano su total uso dado lo lento que suele ser por parte de los usuarios la actualización de sus navegadores a uno más moderno y que soporte estas nuevas especificaciones, que ya han ido apareciendo. Pero eso no quita que desde ya comencemos a jugar un poco con él.&lt;/p&gt;
&lt;p&gt;Ya he comentado sobre las [características de este nuevo estándar][1], y en este momento nos concentraremos en una maqueta funcional utilizando las nuevas etiquetas y sus nuevas posibilidades. Es interesante saber que podemos utilizar elementos de &lt;strong&gt;HTML 5&lt;/strong&gt; en estos momentos aunque la mayoría de los &lt;em&gt;browsers&lt;/em&gt; aún no lo soporten; esto se debe a que &lt;strong&gt;CSS&lt;/strong&gt; puede dar estilo a cualquier etiqueta, aunque ésta prácticamente no exista (aún). Por ejemplo, si me da la gana puedo inventar una etiqueta propia y darle estilos:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;jorge&amp;gt;&amp;lt;/jorge&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;jorge {&amp;lt;br /&gt;
  display: block;&amp;lt;br /&gt;
  width: 300px;&amp;lt;br /&gt;
  height: 100px;&amp;lt;br /&gt;
  border: 1px solid #666&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aunque semánticamente no va a tener valor alguno para los buscadores (y menos para los usuarios). Pero en este artículo comencemos a armar una estructura completamente en &lt;strong&gt;HTML 5&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;header&amp;gt;&amp;lt;br /&gt;
  &amp;lt;p&amp;gt;Header&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;lt;/header&amp;gt;&amp;lt;br /&gt;
&amp;lt;nav&amp;gt;&amp;lt;br /&gt;
  &amp;lt;p&amp;gt;Menu&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;lt;/nav&amp;gt;&amp;lt;br /&gt;
&amp;lt;section&amp;gt;&amp;lt;br /&gt;
  &amp;lt;p&amp;gt;Section&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
    &amp;lt;article&amp;gt;Article&amp;lt;/article&amp;gt;&amp;lt;br /&gt;
    &amp;lt;article&amp;gt;Article&amp;lt;/article&amp;gt;&amp;lt;br /&gt;
&amp;lt;/section&amp;gt;&amp;lt;br /&gt;
&amp;lt;footer&amp;gt;&amp;lt;br /&gt;
  &amp;lt;p&amp;gt;Footer&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;lt;/footer&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/09/html5.png&#34; alt=&#34;CSSLab.cl - HTML 5 Markup&#34; width=&#34;600&#34; height=&#34;365&#34; /&gt; 
&lt;p&gt;Por defecto &lt;strong&gt;CSS&lt;/strong&gt; asume que un elemento es &lt;strong&gt;inline&lt;/strong&gt;. Para elementos definidos en &lt;strong&gt;HTML 4&lt;/strong&gt; como &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; ó &lt;strong&gt;&lt;fieldset&gt;&lt;/strong&gt;, los estilos predeterminados por el &lt;em&gt;browser&lt;/em&gt; para estas etiquetas los sobreponen y los hacen &lt;strong&gt;bloques&lt;/strong&gt;, pero por esta vez lo haremos manualmente para las nuevas etiquetas &lt;strong&gt;HTML 5&lt;/strong&gt; que vayamos a utilizar:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;header, nav, section, article, footer {&amp;lt;br /&gt;
  display: block;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Luego podremos definir los estilos para crear la estructura que nos convenga:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;header {&amp;lt;br /&gt;
  width: 90%;&amp;lt;br /&gt;
  overflow: hidden;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
nav {&amp;lt;br /&gt;
  width:20%;&amp;lt;br /&gt;
  float: left;&amp;lt;br /&gt;
  margin-right: 1%;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
section {&amp;lt;br /&gt;
  width:67%;&amp;lt;br /&gt;
  float: left;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
article {&amp;lt;br /&gt;
  background: #999;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
footer {&amp;lt;br /&gt;
  width:90%;&amp;lt;br /&gt;
  overflow: hidden;&amp;lt;br /&gt;
  clear:both;&amp;lt;br /&gt;
} &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 1][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Los &lt;em&gt;browsers&lt;/em&gt; modernos no tendrán problemas hasta ahora; sin embargo los hechos en &lt;em&gt;Redmond&lt;/em&gt; se rehusarán a mostrar los estilos &lt;strong&gt;CSS&lt;/strong&gt; hasta que tengamos que enseñarles a comportarse como se debe. Por suerte con una pequeña ayuda de &lt;strong&gt;Javascript&lt;/strong&gt; crearemos estos elementos para que &lt;strong&gt;IE&lt;/strong&gt; sepa qué hacer con ellos y los estilos ya definidos:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;document.createElement(&#34;header&#34;); &amp;lt;br /&gt;
document.createElement(&#34;nav&#34;); &amp;lt;br /&gt;
document.createElement(&#34;section&#34;); 
document.createElement(&#34;article&#34;); 
document.createElement(&#34;footer&#34;); &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 2 (En IE)][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Ahora un ejemplo utilizando la nueva etiqueta &lt;strong&gt;&lt;video /&gt;&lt;/strong&gt;, la que (por estos momentos) utiliza el codec &lt;strong&gt;Ogg Theora&lt;/strong&gt; para comprimir los videos (necesitarás &lt;em&gt;Quicktime&lt;/em&gt; ó similar para poder exportarla en este formato). Con un poco de &lt;strong&gt;JS&lt;/strong&gt; podremos manejar los botones de comando y la línea de tiempo de las películas sin mayores complicaciones, como en el siguiente ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;function Play(str) {&amp;lt;br /&gt;
  var video = document.getElementById(str)&amp;lt;br /&gt;
  video.play();&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 3 (en Safari 4, Opera 10+, Firefox 3.5+, Chrome 2+)][4]{.verejemplo}&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://articles.sitepoint.com/article/html-5-snapshot-2009/1&#34; title=&#34;Enlace externo a &amp;quot;articles.sitepoint.com&amp;quot;&#34; target=&#34;_blank&#34;&gt;Yes, You Can Use HTML 5 Today!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://dev.opera.com/articles/view/a-call-for-video-on-the-web-opera-vid/&#34; title=&#34;Enlace externo a &amp;quot;Opera Developer Comunity&amp;quot;&#34; target=&#34;_blank&#34;&gt;A call for video on the web&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/08/21/lo-que-se-viene-html-5/&#34;&gt;http://www.csslab.cl/2007/08/21/lo-que-se-viene-html-5/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Lo que se viene: HTML 5&amp;quot;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/html5/html5_1.html&#34;&gt;http://www.csslab.cl/ejemplos/html5/html5_1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 1 - HTML 5&amp;quot;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/html5/html5_2.html&#34;&gt;http://www.csslab.cl/ejemplos/html5/html5_2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 2 - HTML 5&amp;quot;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/html5/html5_3.html&#34;&gt;http://www.csslab.cl/ejemplos/html5/html5_3.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 3 - HTML 5&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Cómo superar IE6-IE7-IE8 (y no morir en el intento)</title>
      <link>https://csslab.cl/2009/09/10/como-superar-ie6-ie7-ie8-y-no-morir-en-el-intento/</link>
      <pubDate>Thu, 10 Sep 2009 21:39:04 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/09/10/como-superar-ie6-ie7-ie8-y-no-morir-en-el-intento/</guid>
      <description>&lt;p&gt;Este 2009 ha sido un año lleno de transiciones: llega &lt;strong&gt;IE8&lt;/strong&gt; pero aún persiste el fantasma de &lt;strong&gt;IE6&lt;/strong&gt;; finalmente se ve un futuro más nítido con &lt;strong&gt;HTML5&lt;/strong&gt; y &lt;strong&gt;CSS3&lt;/strong&gt;, pero persisten las limitaciones del soporte por parte de los fabricantes de &lt;em&gt;browsers&lt;/em&gt;. Precisamente en ese purgatorio en que nos encontramos actualmente es cuando debemos ser más hábiles sobre qué, cómo y cuando utilizamos las herramientas que más nos acomoden. Personalmente y &lt;a href=&#34;http://www.csslab.cl/2009/06/24/mi-lucha-contra-ie6/&#34; title=&#34;Enlace en CSSLab a &#34;&gt;como he comentado anteriormente&lt;/a&gt;, he comenzado a utilizar propiedades &lt;strong&gt;CSS3&lt;/strong&gt; que me hacen utilizar menos tiempo y recursos en lograr los mismos efectos que antes me limitaba; me refiero a &lt;strong&gt;text-shadow&lt;/strong&gt;, &lt;strong&gt;border-radius&lt;/strong&gt;, [&lt;strong&gt;opacity&lt;/strong&gt;][2] y &lt;strong&gt;[rgba()][3]&lt;/strong&gt; entre otros. Si utilizas un &lt;em&gt;browser&lt;/em&gt; moderno, los podrás apreciar sin problemas; caso contrario, de igual manera se desplegará la información pero la experiencia no será la misma – lo que se denomina como &lt;em&gt;graceful degradation&lt;/em&gt; ó, a falta de una traducción literal, &lt;em&gt;degradación elegante&lt;/em&gt;-. Tengo la fortuna de trabajar con clientes y colegas que comparten esta forma de trabajar, siempre mirando hacia adelante y no frenándose debido a limitaciones ajenas a nuestro poder.&lt;/p&gt;
&lt;p&gt;Desarrollar pensando en 3 versiones de &lt;em&gt;browser&lt;/em&gt; de una misma empresa, cada uno menos peor que el otro, es un problema grave. En este artículo, quiero compartir mi experiencia sobre cómo lograr los menos problemas posibles, creando un &lt;em&gt;layout&lt;/em&gt; que se vea de manera similar en la mayoría de los navegadores disponibles en el mercado. Básicamente enunciaré algunos consejos prácticos que por mi experiencia ayudan en esta ardua tarea:&lt;/p&gt;</description>
      <content>&lt;p&gt;Este 2009 ha sido un año lleno de transiciones: llega &lt;strong&gt;IE8&lt;/strong&gt; pero aún persiste el fantasma de &lt;strong&gt;IE6&lt;/strong&gt;; finalmente se ve un futuro más nítido con &lt;strong&gt;HTML5&lt;/strong&gt; y &lt;strong&gt;CSS3&lt;/strong&gt;, pero persisten las limitaciones del soporte por parte de los fabricantes de &lt;em&gt;browsers&lt;/em&gt;. Precisamente en ese purgatorio en que nos encontramos actualmente es cuando debemos ser más hábiles sobre qué, cómo y cuando utilizamos las herramientas que más nos acomoden. Personalmente y &lt;a href=&#34;http://www.csslab.cl/2009/06/24/mi-lucha-contra-ie6/&#34; title=&#34;Enlace en CSSLab a &#34;&gt;como he comentado anteriormente&lt;/a&gt;, he comenzado a utilizar propiedades &lt;strong&gt;CSS3&lt;/strong&gt; que me hacen utilizar menos tiempo y recursos en lograr los mismos efectos que antes me limitaba; me refiero a &lt;strong&gt;text-shadow&lt;/strong&gt;, &lt;strong&gt;border-radius&lt;/strong&gt;, [&lt;strong&gt;opacity&lt;/strong&gt;][2] y &lt;strong&gt;[rgba()][3]&lt;/strong&gt; entre otros. Si utilizas un &lt;em&gt;browser&lt;/em&gt; moderno, los podrás apreciar sin problemas; caso contrario, de igual manera se desplegará la información pero la experiencia no será la misma – lo que se denomina como &lt;em&gt;graceful degradation&lt;/em&gt; ó, a falta de una traducción literal, &lt;em&gt;degradación elegante&lt;/em&gt;-. Tengo la fortuna de trabajar con clientes y colegas que comparten esta forma de trabajar, siempre mirando hacia adelante y no frenándose debido a limitaciones ajenas a nuestro poder.&lt;/p&gt;
&lt;p&gt;Desarrollar pensando en 3 versiones de &lt;em&gt;browser&lt;/em&gt; de una misma empresa, cada uno menos peor que el otro, es un problema grave. En este artículo, quiero compartir mi experiencia sobre cómo lograr los menos problemas posibles, creando un &lt;em&gt;layout&lt;/em&gt; que se vea de manera similar en la mayoría de los navegadores disponibles en el mercado. Básicamente enunciaré algunos consejos prácticos que por mi experiencia ayudan en esta ardua tarea:&lt;/p&gt;
&lt;h3 id=&#34;usar-un-buen-reseter-css&#34;&gt;Usar un buen reseter CSS.&lt;/h3&gt;
&lt;p&gt;No pretendo [difundir el mío][4], pero sinceramente no me ha dado problemas de ningún tipo y me acompaña siempre en mis grandes proyectos. Con él, me permito reescribir los estilos que defina como prioritarios, sin perder tiempo en arreglar los defectos de &lt;strong&gt;IE6&lt;/strong&gt;. Un impresindible en grandes proyectos.&lt;/p&gt;
&lt;h3 id=&#34;entender-coacutemo-funciona-ie6&#34;&gt;Entender cómo funciona IE6.&lt;/h3&gt;
&lt;p&gt;No basta con cabecearse cuando encuentras un descalce en tu &lt;em&gt;layout&lt;/em&gt; que piensas funciona perfecto en todos los navegadores, hasta que lo pruebas en &lt;strong&gt;IE6&lt;/strong&gt;. Deberías conocer -y prevenir- que &lt;strong&gt;IE6&lt;/strong&gt; tiene problemas [posicionando relative/absolute/fixed][5], con el [modelo de caja][6], [doble margen a elementos flotados][7], utilizando z-index, soportando [canal alpha para archivos PNG][8], con porcentaje como unidad de medida, con [overflow][9], con pseudo-classes, con [min-height][10], max-height, min-width, max-width… etc, etc, etc. Con eso en mente, puedes evitar muchos problemas desde el comienzo.&lt;/p&gt;
&lt;h3 id=&#34;tener-mucho-cuidado-con-ie7&#34;&gt;Tener mucho cuidado con IE7.&lt;/h3&gt;
&lt;p&gt;Microsoft lo presentó como una necesaria actualización a &lt;strong&gt;IE6&lt;/strong&gt;, pero fue un gran &lt;strong&gt;FAIL&lt;/strong&gt;. Arregló algunos &lt;em&gt;bugs&lt;/em&gt;, pero sacó a luz otros nuevos; realmente me intriga qué sucede con el departamento de informática de esa compañía, cómo logran caer en los mismos errores una y otra vez. El principal problema de &lt;strong&gt;IE7&lt;/strong&gt; es el uso de &lt;strong&gt;position: relative/absolute&lt;/strong&gt; aunque me he deparado con [algunos errores menores][11] por ahí.&lt;/p&gt;
&lt;h3 id=&#34;usar-meta-tag-para-ie8&#34;&gt;Usar meta-tag para IE8.&lt;/h3&gt;
&lt;p&gt;Siento que &lt;em&gt;Microsoft&lt;/em&gt; se apresuró mucho en lanzar &lt;strong&gt;IE8&lt;/strong&gt;, probablemente presionada por las contínuas mejoras de sus compeditores &lt;strong&gt;Opera&lt;/strong&gt;, &lt;strong&gt;Safari&lt;/strong&gt; y &lt;strong&gt;Mozilla&lt;/strong&gt;. A raíz de esto, he visto como de una actualización a la siguiente el comportamiento de este &lt;em&gt;browser&lt;/em&gt; respecto al renderizado de &lt;strong&gt;HTML&lt;/strong&gt; y &lt;strong&gt;CSS&lt;/strong&gt; es muy diferente, muy pero my diferente; a tal nivel de que un cliente reclame que su nuevo y flamante sitio no se vea bien en este navegador, y antes que yo pudiera investigar qué estaba sucediendo el cliente me comenta:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bah, ahora se ve bien… actualice IE8 anoche y se arregló.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mi solución hasta ahora es una alternativa que viene de la misma casa de &lt;em&gt;Redmont&lt;/em&gt;: una etiqueta &lt;strong&gt;&lt;meta&gt;&lt;/strong&gt; que hace que &lt;strong&gt;IE8&lt;/strong&gt; &lt;em&gt;se comporte&lt;/em&gt; como si fuera &lt;strong&gt;IE7&lt;/strong&gt;; así de simple. Hace lo mismo que el &lt;em&gt;Compatibility Button&lt;/em&gt;, pero lo ejecuta desde el comienzo de la carga del documento:&lt;/p&gt;
&lt;pre class=&#34;codehtml&#34;&gt;&amp;lt;meta http-equiv=&#34;X-UA-Compatible&#34; content=&#34;IE=EmulateIE7&#34;/&amp;gt;&lt;/pre&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/09/ie8_compatibility.png&#34; width=&#34;600&#34; height=&#34;175&#34; /&gt; 
&lt;h3 id=&#34;probar-probar-probar8230&#34;&gt;Probar, probar, probar…&lt;/h3&gt;
&lt;p&gt;Aunque seas un &lt;em&gt;master&lt;/em&gt; de las hojas de estilo y del &lt;strong&gt;HTML&lt;/strong&gt;, no deberías dejar para el final probar en los principales &lt;em&gt;browser,&lt;/em&gt; y menos aún confiarte del &lt;em&gt;preview&lt;/em&gt; de &lt;em&gt;Dreameaver&lt;/em&gt; (grave error); debes probar casi que a cada nueva definición de propiedad. El costo de volver atrás es muy alto como para arriesgarte, no pierdas tu tiempo por confiarte demasiado. Probando en &lt;strong&gt;Safari&lt;/strong&gt; y &lt;strong&gt;Firefox&lt;/strong&gt; primero, luego en &lt;strong&gt;IE7&lt;/strong&gt; e &lt;strong&gt;IE6&lt;/strong&gt; para los detalles menores… pero nunca, &lt;strong&gt;nunca maquetar para IE&lt;/strong&gt;: lo más seguro es que tendrás que deshacer más de lo que ya hayas hecho.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://blogs.msdn.com/ie/archive/2008/08/27/introducing-compatibility-view.aspx&#34; title=&#34;Enlace externo a &amp;quot;Introducing Compatibility View&amp;quot;&#34; target=&#34;_blank&#34;&gt;Introducing Compatibility View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.positioniseverything.net/explorer.html&#34; title=&#34;Enlace externo a &amp;quot;Explorer Exposed!&amp;quot;&#34; target=&#34;_blank&#34;&gt;Explorer Exposed!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mi lucha (contra IE6)&amp;quot;&amp;quot;
[2]: &lt;a href=&#34;http://www.csslab.cl/2007/01/24/transparencias-a-prueba-de-browsers-2/&#34;&gt;http://www.csslab.cl/2007/01/24/transparencias-a-prueba-de-browsers-2/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Transparencias a prueba de browsers&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2009/02/26/tip-precoz-3-rgba/&#34;&gt;http://www.csslab.cl/2009/02/26/tip-precoz-3-rgba/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Tip Precoz 3: RGBa&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/2007/10/18/css-reseter/&#34;&gt;http://www.csslab.cl/2007/10/18/css-reseter/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;CSS Reseter&amp;rdquo;&amp;rdquo;
[5]: &lt;a href=&#34;http://www.csslab.cl/2007/05/11/absolutamente-si/&#34;&gt;http://www.csslab.cl/2007/05/11/absolutamente-si/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Absolutamente sí&amp;rdquo;&amp;rdquo;
[6]: &lt;a href=&#34;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&#34;&gt;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Como Caja: el Modelo&amp;rdquo;&amp;rdquo;
[7]: &lt;a href=&#34;http://www.csslab.cl/2007/12/17/margen-duplicado-para-ie6/&#34;&gt;http://www.csslab.cl/2007/12/17/margen-duplicado-para-ie6/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Margen duplicado para IE6&amp;quot;&amp;rdquo;
[8]: &lt;a href=&#34;http://www.csslab.cl/2006/08/14/pngs-transparentes-en-ie6/&#34;&gt;http://www.csslab.cl/2006/08/14/pngs-transparentes-en-ie6/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;PNG&amp;rsquo;s transparentes en IE6&amp;quot;&amp;rdquo;
[9]: &lt;a href=&#34;http://www.csslab.cl/2008/07/07/overflow-en-ie6/&#34;&gt;http://www.csslab.cl/2008/07/07/overflow-en-ie6/&lt;/a&gt;
[10]: &lt;a href=&#34;http://www.csslab.cl/2007/10/05/alto-minimos-para-ie6-y-el-resto-claro/&#34;&gt;http://www.csslab.cl/2007/10/05/alto-minimos-para-ie6-y-el-resto-claro/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Alto mínimos para IE6 (y el resto, claro)&amp;rdquo;&amp;rdquo;
[11]: &lt;a href=&#34;http://www.csslab.cl/2006/07/28/se-viene-ie7-&amp;amp;iexcl;huid/&#34;&gt;http://www.csslab.cl/2006/07/28/se-viene-ie7-&amp;amp;iexcl;huid/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Se viene IE7&amp;hellip;&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 31</title>
      <link>https://csslab.cl/2009/08/28/lo-vi-y-me-gusto-31/</link>
      <pubDate>Fri, 28 Aug 2009 13:51:06 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/08/28/lo-vi-y-me-gusto-31/</guid>
      <description>#31 – 28 Agosto 2009
Todos revisados y publicados a través de [tus propias recomendaciones][1].




[1]: http://www.csslab.cl/envia-tu-sitio/ &amp;ldquo;&amp;ldquo;Envía tu Sitio&amp;rdquo; en CSSLab&amp;rdquo;</description>
      <content>&lt;p&gt;#31 – 28 Agosto 2009&lt;/p&gt;
&lt;p&gt;Todos revisados y publicados a través de [tus propias recomendaciones][1].&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://youwebland.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/08/youwebland.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.abrandlincoln.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/08/abrandlincoln.gif&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.dgfrancisco.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/08/dgfrancisco.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.bang83.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/08/bang83.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/envia-tu-sitio/&#34;&gt;http://www.csslab.cl/envia-tu-sitio/&lt;/a&gt; &amp;ldquo;&amp;ldquo;Envía tu Sitio&amp;rdquo; en CSSLab&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>K.I.S.S.</title>
      <link>https://csslab.cl/2009/08/17/kiss/</link>
      <pubDate>Mon, 17 Aug 2009 21:29:40 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/08/17/kiss/</guid>
      <description>&lt;p&gt;Se puede definir a la &lt;strong&gt;simplicidad&lt;/strong&gt; como ‘&lt;em&gt;la ausencia de elementos innecesarios&lt;/em&gt;‘, ó &lt;em&gt;‘la esencia misma del elemento&lt;/em&gt;‘ lo que es complicado de leer y más difícil aún de lograr. Simplicidad no es aburrimiento, no es vacío, no es tener mucho espacio blanco; siquiera es un estilo de arte (no confundir con minimalismo, que también es un término mal manipulado). Simplicidad es una perspectiva de diseño y de información, un acercamiento que a menudo crea productos más usables y atractivos.&lt;/p&gt;
&lt;p&gt;Es casi imposible crear una interfaz que encaje con todos los usuarios; pero aún así, es importante entregarles una variedad de opciones que les permita ejecutarlas mismas tareas de diferentes maneras, y de la que más le acomode. Después de todo, nuestra misión es no hacerle perder su tiempo con nuestros errores.&lt;/p&gt;
&lt;p&gt;Y ¿cómo se comporta un usuario? No tengo una respuesta a esto; son muchas las variantes. Cada usuario es particular e impredecible en su comportamiento frente a un monitor, pero sí existen similitudes en lo que esperan cuando se les presenta una interfaz web:&lt;/p&gt;</description>
      <content>&lt;p&gt;Se puede definir a la &lt;strong&gt;simplicidad&lt;/strong&gt; como ‘&lt;em&gt;la ausencia de elementos innecesarios&lt;/em&gt;‘, ó &lt;em&gt;‘la esencia misma del elemento&lt;/em&gt;‘ lo que es complicado de leer y más difícil aún de lograr. Simplicidad no es aburrimiento, no es vacío, no es tener mucho espacio blanco; siquiera es un estilo de arte (no confundir con minimalismo, que también es un término mal manipulado). Simplicidad es una perspectiva de diseño y de información, un acercamiento que a menudo crea productos más usables y atractivos.&lt;/p&gt;
&lt;p&gt;Es casi imposible crear una interfaz que encaje con todos los usuarios; pero aún así, es importante entregarles una variedad de opciones que les permita ejecutarlas mismas tareas de diferentes maneras, y de la que más le acomode. Después de todo, nuestra misión es no hacerle perder su tiempo con nuestros errores.&lt;/p&gt;
&lt;p&gt;Y ¿cómo se comporta un usuario? No tengo una respuesta a esto; son muchas las variantes. Cada usuario es particular e impredecible en su comportamiento frente a un monitor, pero sí existen similitudes en lo que esperan cuando se les presenta una interfaz web:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Quiere estar entretenido&lt;/strong&gt;: el usuario navega por internet buscando algo interesante para sí mismo: información, juegos, pornografía, etc. Para entretenerlo, necesitas captar la atención y dirigirla hacia el objetivo de tu proyecto web. Cuando se dicta una charla, se considera que el mensaje está compuesto por un 60% de lenguaje corporal, 10% el contenido y 30% el tono de la voz. Extrapolando esto a un proyecto web, podríamos llegar a consolidarlo en un &lt;strong&gt;60% de diseño, 10% de contenido y 30% del estilo&lt;/strong&gt; en que ese contenido está redactado. ¿Conclusión? Puedes entretener al usuario con sólo presentarle lo que busca con un lenguaje acorde, mínimo.
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Quiere descubrir cosas&lt;/strong&gt;: no necesariamente debes pensar que tus usuarios son estúpidos y que debes darle todo fácil; a ellos les gusta sentirse inteligentes y curiosear entre enlaces y conocer sus consecuencias; por algo las ventanas modales y los [efectos que nos ofrecen las librerías &lt;em&gt;Javascript&lt;/em&gt;][1] se han hecho tan populares.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No tiene tiempo de aprender cosas muy complicadas&lt;/strong&gt;: bueno, tienes que hacer un balance entre no entregarles todo muy fácil, pero tampoco demasiado complicadas; siempre deberías guiar al usuario si le presentas nuevas interfaces o si tratas de innovar en alguna existente. Evita formularios complejos y con muchos pasos ya que la paciencia del usuario tiene límite.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;![CSSLab.cl: simplicidad][2]&lt;/p&gt;
&lt;p&gt;Finalmentes ¿cómo obtener simplicidad? Claramente, no es un trabajo fácil. Sin embargo, existen ejercicios para llegar a ello:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enfócate en &lt;strong&gt;conocer tus usuarios&lt;/strong&gt;, la audiencia que esperas lograr con tu sitio web, construir para ellos y reducir elementos innecesarios teniéndolos en cuenta.&lt;/li&gt;
&lt;li&gt;Creando diseños, interfaces e interacciones que logren &lt;strong&gt;seducir a tus usuarios en un nivel sensorial&lt;/strong&gt; (estimulando sus emociones de alguna manera), obtendrás visitantes satisfechos y seguro volverán por más.&lt;/li&gt;
&lt;li&gt;Consistencia, consistencia, consistencia. ¿Mencioné consistencia? &lt;strong&gt;¡Consistencia!&lt;/strong&gt; Agrupa elementos visualmente, haz que el comportamiento sea similar a lo que el usuario espera. Por ejemplo, si defines que el estilo de tus enlaces serán subrrayados (&lt;strong&gt;text-decoration: underline&lt;/strong&gt;), haz que todos los enlaces sean iguales, y no hagas que algunos no tengan subrrayados o en itálica; sólo lograrás confundir a tus usuarios.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Existe una paradoja que define muy bien lo dificil de dominar esta disciplina:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Es más simple crear una interfaz compleja porque es más complejo simplificarla.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;La simplicidad toma tiempo, pero tiene su valor en los resultados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;K.I.S.S.&lt;/strong&gt; es el acrónimo para &lt;em&gt;Keep It Simple, Stupid&lt;/em&gt;, una manera cortés de decir &lt;em&gt;Manténlo Simple, Estúpido&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2006/06/23/javascript-toolkit-y-demases/&#34;&gt;http://www.csslab.cl/2006/06/23/javascript-toolkit-y-demases/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;JavaScript, Toolkit y demases&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2009/08/simplicidad1.png&#34;&gt;http://www.csslab.cl/wp-content/uploads/2009/08/simplicidad1.png&lt;/a&gt; &amp;ldquo;CSSLab.cl: simplicidad&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>jQuery browserSizr</title>
      <link>https://csslab.cl/2009/07/22/jquery-browsersizr/</link>
      <pubDate>Wed, 22 Jul 2009 15:16:50 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/07/22/jquery-browsersizr/</guid>
      <description>&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2009/07/logo_browsersizr.png&#34; align=&#34;right&#34; alt=&#34;jQuery browserSizr&#34; /&gt;
&lt;p&gt;Your flexible fixed layout / Tu estructura fija, flexible&lt;/p&gt;</description>
      <content>&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2009/07/logo_browsersizr.png&#34; align=&#34;right&#34; alt=&#34;jQuery browserSizr&#34; /&gt;
&lt;p&gt;Your flexible fixed layout / Tu estructura fija, flexible&lt;/p&gt;
&lt;h5 id=&#34;selecciona-tu-idioma--select-your-language&#34;&gt;Selecciona tu idioma / Select your language:&lt;/h5&gt;
&lt;ul id=&#34;horizons_tab&#34; class=&#34;idTabs&#34;&gt;
  &lt;li&gt;
    &lt;a href=&#34;#english&#34; title=&#34;Read in English&#34;&gt;English&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&#34;#espanol&#34; title=&#34;Leer en Espa&amp;ntilde;ol&#34;&gt;Espa&amp;ntilde;ol&lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&#34;english&#34;&gt;
  &lt;!-- #espanol --&gt;&lt;/p&gt; 
  &lt;h3&gt;
    EN
  &lt;/h3&gt;
  &lt;p&gt;
    Coding liquid layouts for your website can become a major problem due to many factors to be taken into when the user resizes the browser: images that doesn&amp;#8217;t fit the width, &lt;a href=&#34;http://www.csslab.cl/2007/09/10/textos_muy_largos_que_quiebran_nuestro_layout/&#34; title=&#34;Link in CSSLab to &amp;quot;textos_muy_largos_que_quiebran_nuestro_layout&amp;quot;&#34;&gt;texts wrapping as not expected&lt;/a&gt;, columns breaking&amp;#8230; not to mention that working with percentages in &lt;strong&gt;CSS&lt;/strong&gt; is problematic among different browsers. With a fixed layout this should not happen, because you have more control over the structure itself and the &lt;a href=&#34;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&#34; title=&#34;Link in CSSLab to &amp;quot;Como Caja: el modelo&amp;quot;&#34;&gt;box model&lt;/a&gt; behaves as you expect if you use &lt;a href=&#34;http://www.csslab.cl/2007/10/18/css-reseter/&#34; title=&#34;Link in CSSLab to &amp;quot;CSS Reseter&amp;quot;&#34;&gt;a good &lt;strong&gt;CSS&lt;/strong&gt; reseter&lt;/a&gt;.
  &lt;/p&gt;
  &lt;p&gt;
    With &lt;strong&gt;jQuery browserSizr&lt;/strong&gt; you&amp;#8217;ll have more control over &lt;strong&gt;CSS&lt;/strong&gt; styles when there is a significant change in browser size. It has 4 of the most common screens width:
  &lt;/p&gt;
  &lt;p&gt;
    &lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2009/07/browsersizr_peso.png&#34; alt=&#34;browserSizr: 4kb&#34; align=&#34;right&#34; /&gt;
  &lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;
      &lt;strong&gt;smartphones&lt;/strong&gt; (&lt;strong&gt;310px&lt;/strong&gt; or less)
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;less than 1024px&lt;/strong&gt; (from &lt;strong&gt;311px&lt;/strong&gt; to &lt;strong&gt;1023px&lt;/strong&gt;)
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;greater than 1024px&lt;/strong&gt; (from &lt;strong&gt;1024px&lt;/strong&gt; to &lt;strong&gt;1279px&lt;/strong&gt; &amp;#8211; including &lt;strong&gt;1024px&lt;/strong&gt;)
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;greater than 1280px&lt;/strong&gt; (from &lt;strong&gt;1280px&lt;/strong&gt; and higher &amp;#8211; including &lt;strong&gt;1280px&lt;/strong&gt;)
    &lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;
    Specifically, &lt;strong&gt;browserSizr&lt;/strong&gt; detects the current width of your browser or it&amp;#8217;s resize and injects a specific &lt;strong&gt;class&lt;/strong&gt; when it is in the range you&amp;#8217;ve activated. Through &lt;strong&gt;CSS&lt;/strong&gt; and a bit of &lt;a href=&#34;http://www.csslab.cl/2008/01/09/siendo-especfico/&#34; title=&#34;Link in CSSlab to &amp;quot;Siendo Espec&amp;iacute;fico&amp;quot;&#34;&gt;specificity&lt;/a&gt;, you can define what happens when the browser is in each resolution:
  &lt;/p&gt;
  &lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#container {
   width: 960px; &amp;lt;span class=&#34;commentcss&#34;&gt;/* normal width */&amp;lt;/span&gt;
   font-size: 14px;
}
   #container.lower1024 {
      width: 740px; &amp;lt;span class=&#34;commentcss&#34;&gt;/* width for less than 1024px */&amp;lt;/span&gt;
      font-size: 12px; &amp;lt;span class=&#34;commentcss&#34;&gt;/* smaller font-size */&amp;lt;/span&gt;
   }
   #container.over1280 {
      width: 1200px; &amp;lt;span class=&#34;commentcss&#34;&gt;/* width for over 1280px */&amp;lt;/span&gt;
      font-size: 16px; &amp;lt;span class=&#34;commentcss&#34;&gt;/* bigger font-size */&amp;lt;/span&gt;
   }&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    &lt;a href=&#34;http://www.csslab.cl/ejemplos/browserSizr/&#34; class=&#34;verejemplo&#34;&gt;See example&lt;/a&gt;
  &lt;/p&gt;
  &lt;h4&gt;
    Configuration:
  &lt;/h4&gt;
  &lt;ul&gt;
    &lt;li&gt;
      Include the &lt;strong&gt;jQuery&lt;/strong&gt; library and this humble plugin:
    &lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;script src=&#34;jquery.js&#34; type=&#34;text/javascript&#34;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&#34;jquery.browserSizr.js&#34; type=&#34;text/javascript&#34;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
    &lt;li&gt;
      Inicialize-it with the default parameters:
    &lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(function(){
   $().browserSizr();
});&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
    &lt;li&gt;
      Or configure it as preferred
    &lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$().browserSizr({
   containerDiv: &#39;#container&#39;,
   &amp;lt;span class=&#34;commentjs&#34;&gt;//containerDiv - value: any HTML tag or #id, default to #container&amp;lt;/span&gt;
   debug: &#39;off&#39;,
   &amp;lt;span class=&#34;commentjs&#34;&gt;//debug-  value: on | off, default to &#39;off&#39;&amp;lt;/span&gt;
   smartphones: &#39;off&#39;,
   &amp;lt;span class=&#34;commentjs&#34;&gt;//smartphones - value: on | off, default to &#39;off&#39;&amp;lt;/span&gt;
   lower1024: &#39;on&#39;,
   &amp;lt;span class=&#34;commentjs&#34;&gt;//lower1024 - value: on | off, default to &#39;on&#39;&amp;lt;/span&gt;
   over1024: &#39;on&#39;,
   &amp;lt;span class=&#34;commentjs&#34;&gt;//over1024 - value: on | off, default to &#39;on&#39;&amp;lt;/span&gt;
   over1280: &#39;off&#39;
   &amp;lt;span class=&#34;commentjs&#34;&gt;//over1280 - value: on | off, default to &#39;off&#39;&amp;lt;/span&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;espanol&#34;&gt;
  &lt;!-- #espanol --&gt;&lt;/p&gt; 
  &lt;h3&gt;
    ES
  &lt;/h3&gt;
  &lt;p&gt;
    Crear estructuras l&amp;iacute;quidas para tu sitio web puede llegar a ser un gran problema debido a los muchos factores que se deben tomar en cuenta cuando el usuario escala el &lt;em&gt;browser&lt;/em&gt;: im&amp;aacute;genes que se pueden pasar del ancho, &lt;a href=&#34;http://www.csslab.cl/2007/09/10/textos_muy_largos_que_quiebran_nuestro_layout/&#34; title=&#34;Enlace en CSSLab a &amp;quot;textos_muy_largos_que_quiebran_nuestro_layout&amp;quot;&#34;&gt;textos que no se cortar&amp;aacute;n como esperabas&lt;/a&gt;, columnas que pueden llegar a quebrarse&amp;#8230; sin hablar de que trabajar con porcentajes es problem&amp;aacute;tico entre los diferentes navegadores. Con un &lt;em&gt;layout&lt;/em&gt; fijo esto no deber&amp;iacute;a ocurrir ya que tienes m&amp;aacute;s control sobra la estructura misma y &lt;a href=&#34;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&#34; title=&#34;Enlace en CSSLab a &amp;quot;Como Caja: el modelo&amp;quot;&#34;&gt;el modelo de caja&lt;/a&gt; se comporta como esperas si haces uso de un &lt;a href=&#34;http://www.csslab.cl/2007/10/18/css-reseter/&#34; title=&#34;Enlace en CSSLab a &amp;quot;CSS Reseter&amp;quot;&#34;&gt;buen reseter de estilos &lt;strong&gt;CSS&lt;/strong&gt;&lt;/a&gt;.
  &lt;/p&gt;
  &lt;p&gt;
    Con &lt;strong&gt;jQuery browserSizr&lt;/strong&gt; podr&amp;aacute;s tener m&amp;aacute;s control sobre los estilos &lt;strong&gt;CSS&lt;/strong&gt; cuando existe una variaci&amp;oacute;n significativa la dimensi&amp;oacute;n del &lt;em&gt;browser&lt;/em&gt;: en cu&amp;aacute;ntos pixeles quedar&amp;iacute;a el tama&amp;ntilde;o de la tipograf&amp;iacute;a del men&amp;uacute; a &lt;strong&gt;1280x1024px&lt;/strong&gt;, o que las im&amp;aacute;genes queden a &lt;strong&gt;80%&lt;/strong&gt; de su tama&amp;ntilde;o en resoluciones de &lt;strong&gt;800x600px&lt;/strong&gt; por ejemplo. Tienes los 4 anchos de pantallas m&amp;aacute;s comunes:
  &lt;/p&gt;
  &lt;p&gt;
    &lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2009/07/browsersizr_peso.png&#34; alt=&#34;browserSizr: 4kb&#34; align=&#34;right&#34; /&gt;
  &lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;
      &lt;strong&gt;smartphones&lt;/strong&gt; (&lt;strong&gt;310px&lt;/strong&gt; o menos)
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;menor que 1024px&lt;/strong&gt; (de &lt;strong&gt;311px&lt;/strong&gt; a &lt;strong&gt;1023px&lt;/strong&gt;)
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;mayor que 1024px&lt;/strong&gt; (de &lt;strong&gt;1024px&lt;/strong&gt; a &lt;strong&gt;1279px&lt;/strong&gt; &amp;#8211; incluye &lt;strong&gt;1024px&lt;/strong&gt;)
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;mayor que 1280px&lt;/strong&gt; (de &lt;strong&gt;1280px&lt;/strong&gt; o m&amp;aacute;s &amp;#8211; incluye &lt;strong&gt;1280px&lt;/strong&gt;)
    &lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;
    En espec&amp;iacute;fico, &lt;strong&gt;browserSizr&lt;/strong&gt; detecta el actual ancho del navegador &amp;oacute; su redimensionado e inyecta una &lt;strong&gt;class&lt;/strong&gt; espec&amp;iacute;fica cuando se encuentra en el rango que hayas activado. A trav&amp;eacute;s de &lt;strong&gt;CSS&lt;/strong&gt; y un poco de &lt;a href=&#34;http://www.csslab.cl/2008/01/09/siendo-especfico/&#34; title=&#34;Enlace en CSSLab a &amp;quot;Siendo Espec&amp;iacute;fico&amp;quot;&#34;&gt;especificidad&lt;/a&gt;, puedes definir qu&amp;eacute; quieres que ocurra cuando el &lt;em&gt;browser&lt;/em&gt; se encuentre en cada resoluci&amp;oacute;n:
  &lt;/p&gt;
  &lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#container {
   width: 960px; &amp;lt;span class=&#34;commentcss&#34;&gt;/* ancho normal del sitio web */&amp;lt;/span&gt;
   font-size: 14px;
}
   #container.lower1024 {
      width: 740px; &amp;lt;span class=&#34;commentcss&#34;&gt;/* ancho para resoluciones menores que 1024px */&amp;lt;/span&gt;
      font-size: 12px; &amp;lt;span class=&#34;commentcss&#34;&gt;/* menor tama&amp;ntilde;o de fuente */&amp;lt;/span&gt;
   }
   #container.over1280 {
      width: 1200px; &amp;lt;span class=&#34;commentcss&#34;&gt;/* ancho para resoluciones mayores que 1280px */&amp;lt;/span&gt;
      font-size: 16px; &amp;lt;span class=&#34;commentcss&#34;&gt;/* mayor tama&amp;ntilde;o de fuente */&amp;lt;/span&gt;
   }&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    &lt;a href=&#34;http://www.csslab.cl/ejemplos/browserSizr/&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo&lt;/a&gt;
  &lt;/p&gt;
  &lt;h4&gt;
    Configuraci&amp;oacute;n:
  &lt;/h4&gt;
  &lt;ul&gt;
    &lt;li&gt;
      Incluye la librer&amp;iacute;a &lt;strong&gt;jQuery&lt;/strong&gt; y luego, este humilde &lt;em&gt;plugin&lt;/em&gt;:
    &lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;script src=&#34;jquery.js&#34; type=&#34;text/javascript&#34;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&#34;jquery.browserSizr.js&#34; type=&#34;text/javascript&#34;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
    &lt;li&gt;
      Inicial&amp;iacute;zalo con los par&amp;aacute;metros por defecto:
    &lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(function(){
   $().browserSizr();
});&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
    &lt;li&gt;
      O config&amp;uacute;ralo como m&amp;aacute;s prefieras:
    &lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$().browserSizr({
   containerDiv: &#39;#container&#39;,
   &amp;lt;span class=&#34;commentjs&#34;&gt;//containerDiv - id o etiqueta donde se inyectar&amp;aacute; la class&amp;lt;/span&gt;
   debug: &#39;off&#39;,
   &amp;lt;span class=&#34;commentjs&#34;&gt;//debug - ventana debug on | off, por defecto off&amp;lt;/span&gt;
   smartphones: &#39;off&#39;,
   &amp;lt;span class=&#34;commentjs&#34;&gt; //smartphones - valores: on | off, por defecto &#39;off&#39;&amp;lt;/span&gt;
   lower1024: &#39;on&#39;,
   &amp;lt;span class=&#34;commentjs&#34;&gt; // valores: on | off, por defecto &#39;on&#39;&amp;lt;/span&gt;
   over1024: &#39;on&#39;,
   &amp;lt;span class=&#34;commentjs&#34;&gt; //over1024 - valores: on | off, por defecto &#39;on&#39;&amp;lt;/span&gt;
   over1280: &#39;off&#39;
   &amp;lt;span class=&#34;commentjs&#34;&gt; //over1280 - valores: on | off, por defecto &#39;off&#39;&amp;lt;/span&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;[Bajar/Download plugin (.zip 1kb)][1]{.bajar}&lt;/p&gt;
&lt;p&gt;[Bajar/Download plugin+demos (.zip 22kb)][2]{.bajar}&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;em&gt;browserSizr&lt;/em&gt; logo by &lt;a href=&#34;http://www.toledopasarin.cl&#34; title=&#34;External link to &amp;quot;Juan Toledo Portfolio&amp;quot;&#34; target=&#34;_blank&#34;&gt;toledopasarin&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Little extension as &lt;strong&gt;Jorge Sousa&lt;/strong&gt; required, now it detects just the height of the &lt;em&gt;browser&lt;/em&gt; window within 2 values: less than 600px and over 600px.&lt;/p&gt;
&lt;p&gt;Pequeña extensión como solicitada por &lt;strong&gt;Jorge Sousa&lt;/strong&gt;, donde ahora detecta sólo el alto de la ventana dentro de 2 rangos: menor que 600px y mayor a 600px.&lt;/p&gt;
&lt;p&gt;[Ver Ejemplo Alto Ventana][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[Bajar/Download plugin + demo (.zip 24kb)][4]{.bajar}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/downloads/jQuery+browserSizr&#34;&gt;http://www.csslab.cl/downloads/jQuery+browserSizr&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Bajar/Download browserSizr Plugin&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2009/07/browsersizr-08.zip&#34;&gt;http://www.csslab.cl/wp-content/uploads/2009/07/browsersizr-08.zip&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Bajar/Download browserSizr Plugin+demos&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/browserSizr/browsersizr-081/&#34;&gt;http://www.csslab.cl/ejemplos/browserSizr/browsersizr-081/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ver ejemplo browserSizr Height&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/downloads/jQuery+BrowserSizr+Extended&#34;&gt;http://www.csslab.cl/downloads/jQuery+BrowserSizr+Extended&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Bajar/Download browserSizr Extended Height&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Mi lucha (contra IE6)</title>
      <link>https://csslab.cl/2009/06/24/mi-lucha-contra-ie6/</link>
      <pubDate>Wed, 24 Jun 2009 20:44:57 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/06/24/mi-lucha-contra-ie6/</guid>
      <description>&lt;p&gt;Me he asombrado como, en los últimos 2 años, ha avanzado la conciencia colectiva en que es necesario progresar hacia una mejor web, y no quedarse estancados por culpa de un &lt;em&gt;browser&lt;/em&gt;. &lt;strong&gt;Internet Explorer 6&lt;/strong&gt; ha sido realmente una limitación en todos los ámbitos: limita la creatividad tanto del diseñador, como del desarrollador de sitios web. ha sido frustrante escuchar (y decir) frases como:&lt;/p&gt;</description>
      <content>&lt;p&gt;Me he asombrado como, en los últimos 2 años, ha avanzado la conciencia colectiva en que es necesario progresar hacia una mejor web, y no quedarse estancados por culpa de un &lt;em&gt;browser&lt;/em&gt;. &lt;strong&gt;Internet Explorer 6&lt;/strong&gt; ha sido realmente una limitación en todos los ámbitos: limita la creatividad tanto del diseñador, como del desarrollador de sitios web. ha sido frustrante escuchar (y decir) frases como:&lt;/p&gt;
&lt;blockquote style=&#34;text-align: center;&#34;&gt;
  &lt;p&gt;
    &lt;em&gt;&amp;iexcl;Ah, pero no es soportado por IE6!&lt;/em&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;em&gt;Mmm s&amp;uacute;per bueno, pero IE6 no lo permite&amp;#8230;&lt;/em&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;em&gt;Mejor eso no, no se va a ver en IE6&amp;#8230;&lt;/em&gt;
  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Paralelo a esa conciencia de la que les mencionaba, han surgido corrientes más duras que mantienen proyectos que pretenden enterrar &lt;strong&gt;IE6&lt;/strong&gt; de la faz del mundo, y hasta le han dado fechas a su obituario. Mediante &lt;em&gt;banners&lt;/em&gt; ó &lt;em&gt;scripts&lt;/em&gt; (me incluyo con [killIE][1]), se pretende hacer notar al usuario de &lt;strong&gt;IE6&lt;/strong&gt; que hay mejores opciones; porque precisamente esa es la principal razón de porqué &lt;strong&gt;IE6&lt;/strong&gt; aún es un &lt;em&gt;browser&lt;/em&gt; a considerar: la gran mayoría de sus usuarios no saben que existen otros, ya que fue el navegador por defecto que venía instalado en sus &lt;strong&gt;PC’s&lt;/strong&gt;. Esa ignorancia nos ha afectado, y es nuestro deber hacerles ver que existen otras opciones mucho mejores, que pueden afectar su experiencia de navegación.&lt;/p&gt;
&lt;p&gt;![Mi lucha contra IE6 - CSSLab.cl][2]&lt;/p&gt;
&lt;p&gt;Personalmente he tomado una desición y postura hace un poco más de 1 año respecto a este tema: Les explico a los clientes las razones, les doy los argumentos necesarios, pruebas, estudios, estadísticas a la fecha para justificar que &lt;big&gt;&lt;strong&gt;ya no ofrezco soporte para Internet Explorer 6&lt;/strong&gt;&lt;/big&gt;.&lt;/p&gt;
&lt;p&gt;¿Locura, no? Pues me explico.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ya no me limito para crear nuevas experiencias a través del diseño. Por ejemplo, utilizo &lt;strong&gt;PNG’s&lt;/strong&gt; transparentes, aunque agrego un [PNGfix][3] por deferencia sólo para usuarios de ese &lt;em&gt;browser&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;No me limito con las &lt;em&gt;pseudo-class&lt;/em&gt; y [selectores avanzados][4]. los estilos degradarán bien, pero no como se verá en mejores &lt;em&gt;browsers&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Como he adquirido a través del tiempo la experiencia y la virtud de maquetar sitios &lt;em&gt;cross-browser&lt;/em&gt; casi sin diferencias, no utilizo [&lt;em&gt;hacks&lt;/em&gt;][5] ni [comentarios condicionales][6].&lt;/li&gt;
&lt;li&gt;Utilizo [librerías JS][7] para efectos varios, pero no puedo hacer que se comporte igual como se ve en &lt;em&gt;Firefox&lt;/em&gt; ó &lt;em&gt;Safari&lt;/em&gt;; &lt;strong&gt;IE6&lt;/strong&gt; simplemente no puede con algunos efectos y animaciones.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Como pueden haber entendido, el sitio se verá bien tanto en &lt;strong&gt;IE6&lt;/strong&gt; como en los &lt;em&gt;browsers&lt;/em&gt; modernos (no hay esfuerzo extra en eso), pero no tan bien y no como quisiera; ése es el soporte que ya no ofrezco y esa es mi lucha por educar al cliente y al usuario de ello.&lt;/p&gt;
&lt;p&gt;Espero cada uno pueda dar lo suyo para que podamos evolucionar a mejores tecnologías, donde con menos esfuerzos en solucionar problemas podamos poner más energía en entregar satisfacciones. ¡[HTML5][8] se viene, le tengo fe!&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.stopie6.org/&#34; title=&#34;Enlace externo a &amp;quot;Stop IE6 Campaign&amp;quot;&#34; target=&#34;_blank&#34;&gt;Stop IE6 Campaign&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.die6.co.uk/&#34; title=&#34;Enlace externo a &amp;quot;DiE6&amp;quot;&#34; target=&#34;_blank&#34;&gt;DiE6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.bringdownie6.com/&#34; title=&#34;Enlace externo a &amp;quot;Bring Down IE 6&amp;quot;&#34; target=&#34;_blank&#34;&gt;Bring Down IE 6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.end6.org/&#34; title=&#34;Enlace externo a &amp;quot;End 6!&amp;quot;&#34; target=&#34;_blank&#34;&gt;End 6!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2008/09/24/muerte-a-ie-nuevo-plugin/&#34;&gt;http://www.csslab.cl/2008/09/24/muerte-a-ie-nuevo-plugin/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Muerte a IE: nuevo plugin&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2009/06/downie.png&#34;&gt;http://www.csslab.cl/wp-content/uploads/2009/06/downie.png&lt;/a&gt;
[3]: &lt;a href=&#34;http://www.csslab.cl/2008/08/18/definitivo-pngs-transparentes-en-ie6/&#34;&gt;http://www.csslab.cl/2008/08/18/definitivo-pngs-transparentes-en-ie6/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Definitivo: PNG’s transparentes en IE6&amp;quot;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/2007/06/05/selectores-avanzados-de-atributos/&#34;&gt;http://www.csslab.cl/2007/06/05/selectores-avanzados-de-atributos/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Selectores avanzados de atributos&amp;rdquo;&amp;rdquo;
[5]: &lt;a href=&#34;http://www.csslab.cl/category/hacks/&#34;&gt;http://www.csslab.cl/category/hacks/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Categoría: Hacks&amp;rdquo;&amp;rdquo;
[6]: &lt;a href=&#34;http://www.csslab.cl/2007/08/10/conditional-comments-el-widget/&#34;&gt;http://www.csslab.cl/2007/08/10/conditional-comments-el-widget/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Conditional Comments: el widget&amp;rdquo;&amp;rdquo;
[7]: &lt;a href=&#34;http://www.csslab.cl/2006/06/23/javascript-toolkit-y-demases/&#34;&gt;http://www.csslab.cl/2006/06/23/javascript-toolkit-y-demases/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;JavaScript, Toolkit y demases&amp;rdquo;&amp;rdquo;
[8]: &lt;a href=&#34;http://www.csslab.cl/2007/08/21/lo-que-se-viene-html-5/&#34;&gt;http://www.csslab.cl/2007/08/21/lo-que-se-viene-html-5/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Lo que se viene: HTML 5&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Mejor accesibilidad</title>
      <link>https://csslab.cl/2009/06/10/mejor-accesibilidad/</link>
      <pubDate>Wed, 10 Jun 2009 14:14:33 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/06/10/mejor-accesibilidad/</guid>
      <description>&lt;p&gt;Ponerse en el lugar del usuario; es un principio básico que deberíamos adquirir si queremos que nuestro proyecto web tenga éxito no sólo para nuestros bolsillos, sino que perdure y tenga pregnancia en la [experiencia del usuario][1].&lt;/p&gt;
&lt;p&gt;&lt;em&gt;¿Qué marcaría una diferencia?&lt;/em&gt; El diseño, obviamente es lo primero que encanta; contenido bien estructurado y ordenado, pensado hacia una mejor buscabilidad y encontrabilidad; funcionalidades útiles y no sólo efectistas, también. Pero insisto, &lt;em&gt;¿cómo lo llevamos aún más allá?&lt;/em&gt;&lt;/p&gt;</description>
      <content>&lt;p&gt;Ponerse en el lugar del usuario; es un principio básico que deberíamos adquirir si queremos que nuestro proyecto web tenga éxito no sólo para nuestros bolsillos, sino que perdure y tenga pregnancia en la [experiencia del usuario][1].&lt;/p&gt;
&lt;p&gt;&lt;em&gt;¿Qué marcaría una diferencia?&lt;/em&gt; El diseño, obviamente es lo primero que encanta; contenido bien estructurado y ordenado, pensado hacia una mejor buscabilidad y encontrabilidad; funcionalidades útiles y no sólo efectistas, también. Pero insisto, &lt;em&gt;¿cómo lo llevamos aún más allá?&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La &lt;strong&gt;accesibilidad&lt;/strong&gt; es la capacidad de acceso a la web y sus contenidos por todos los usuarios, independiente de la discapacidad física, intelectual o técnica que tengan.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si escribimos nuestro &lt;strong&gt;HTML&lt;/strong&gt; con una semántica correcta y con el diseño separado en su propia hoja de estilos, ya estamos aportando a una mejor acccesibilidad permitiendo a los ciegos &lt;em&gt;leer&lt;/em&gt; el contenido a través de un lector de pantalla, además de independizar el dispositivo sobre el cual será vista la web (teléfonos celulares, &lt;em&gt;laptops&lt;/em&gt;, computadores de escritorio, etc.). Si tenemos el tamaño de los textos de una dimensión considerable y ojalá en una unidad relativa que sea independiente de la resolución del usuario, estaremos garantizando mejor accesibilidad a usuarios con problemas visuales. Ahora, si le damos la posibilidad al usuario de escojer el tamaño te fuente que más le acomode, mejor aún.&lt;/p&gt;
&lt;p&gt;Estas normas mínimas de accesibilidad pueden aumentarse con muy poco esfuerzo, y ahora me gustaría presentar uno que no es muy utilizado pero no por eso menos importante: el atributo &lt;strong&gt;accesskey&lt;/strong&gt;. Con él, permitimos que el usuario navegue por enlaces sólo con el uso de teclas especificadas en el desarrollo del sitio. Su implementación es bastante rápida:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;a href=&#34;index.html&#34; accesskey=&#34;i&#34;&amp;gt;Inicio&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt; 
&lt;p&gt;Así, permitimos que se pueda ir a la página de inicio no sólo haciendo &lt;em&gt;click&lt;/em&gt; en el enlace, sino que utilizando la combinación &lt;kbd&gt;control+i&lt;/kbd&gt; del teclado. Lamentablemente esta combinación es arbitraria por plataforma:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chrome&lt;/strong&gt;: Alt+Accesskey&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firefox&lt;/strong&gt;: Alt+Shift+Accesskey (Win) Ctrl+Accesskey (Mac)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IE&lt;/strong&gt;: Alt+Accesskey&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Opera&lt;/strong&gt;: Shift+Esc+Accesskey&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safari&lt;/strong&gt;: Ctrl+Accesskey&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Además, deberías indicarle a tus usuarios la tecla correspondiente al &lt;strong&gt;accesskey&lt;/strong&gt;, y los [selectores avanzados de atributo][2] son una gran ayuda:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;a:after {&amp;lt;br /&gt;
  content: &#34; [&#34; attr(accesskey) &#34;] &#34;;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2008/11/20/nuestro-verdadero-cliente/&#34;&gt;http://www.csslab.cl/2008/11/20/nuestro-verdadero-cliente/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Nuestro verdadero cliente&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2007/06/05/selectores-avanzados-de-atributos/&#34;&gt;http://www.csslab.cl/2007/06/05/selectores-avanzados-de-atributos/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Selectores avanzados de atributos&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/accesskey&#34;&gt;http://www.csslab.cl/ejemplos/accesskey&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo Accesskey&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 30</title>
      <link>https://csslab.cl/2009/06/01/lo-vi-y-me-gusto-30/</link>
      <pubDate>Mon, 01 Jun 2009 14:53:31 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/06/01/lo-vi-y-me-gusto-30/</guid>
      <description>#30 – 01 Junio 2009</description>
      <content>&lt;p&gt;#30 – 01 Junio 2009&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://estebanmunoz.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/06/estebanmunoz.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://socialsnack.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/06/socialsnack.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.turamera.cl/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/06/turamera.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>jQuery Blox</title>
      <link>https://csslab.cl/2009/05/25/jquery-blox/</link>
      <pubDate>Mon, 25 May 2009 22:14:15 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/05/25/jquery-blox/</guid>
      <description>&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2009/05/imago.png&#34; align=&#34;right&#34; alt=&#34;jQuery Blox in CSSLab.cl&#34; /&gt;
&lt;p&gt;Una nueva manera de mostrar más información / A new way to show more info&lt;/p&gt;
&lt;h5 id=&#34;selecciona-tu-idioma--select-your-language&#34;&gt;Selecciona tu idioma / Select your language:&lt;/h5&gt;
&lt;ul id=&#34;horizons_tab&#34; class=&#34;idTabs&#34;&gt;
  &lt;li&gt;
    &lt;a href=&#34;#espanol&#34; title=&#34;Leer en Espa&amp;ntilde;ol&#34; class=&#34;&#34;&gt;Espa&amp;ntilde;ol&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&#34;#english&#34; title=&#34;Read in English&#34; class=&#34;&#34;&gt; English &lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;</description>
      <content>&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2009/05/imago.png&#34; align=&#34;right&#34; alt=&#34;jQuery Blox in CSSLab.cl&#34; /&gt;
&lt;p&gt;Una nueva manera de mostrar más información / A new way to show more info&lt;/p&gt;
&lt;h5 id=&#34;selecciona-tu-idioma--select-your-language&#34;&gt;Selecciona tu idioma / Select your language:&lt;/h5&gt;
&lt;ul id=&#34;horizons_tab&#34; class=&#34;idTabs&#34;&gt;
  &lt;li&gt;
    &lt;a href=&#34;#espanol&#34; title=&#34;Leer en Espa&amp;ntilde;ol&#34; class=&#34;&#34;&gt;Espa&amp;ntilde;ol&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&#34;#english&#34; title=&#34;Read in English&#34; class=&#34;&#34;&gt; English &lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&#34;espanol&#34;&gt;
  &lt;!-- #espanol --&gt;&lt;/p&gt; 
  &lt;h3&gt;
    ES
  &lt;/h3&gt;
  &lt;p&gt;
    Con &lt;strong&gt;jQuery Blox&lt;/strong&gt; puedes desplegar informaci&amp;oacute;n de una manera diferente, y con una f&amp;aacute;cil y r&amp;aacute;pida configuraci&amp;oacute;n. Basta con que armes tu &lt;strong&gt;HTML&lt;/strong&gt; siguiendo un simple patr&amp;oacute;n de bloques, y definirle al &lt;em&gt;plugin&lt;/em&gt; los nombres de los elementos que est&amp;aacute;s construyendo (o mantener los pre-configurados); &lt;strong&gt;Blox&lt;/strong&gt; se encarga de crear una mayor interacci&amp;oacute;n de tu informaci&amp;oacute;n hacia el usuario.
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href=&#34;http://www.csslab.cl/ejemplos/blox/blox_demo1.html&#34; class=&#34;verejemplo&#34; title=&#34;Enlace en CSSLab a &amp;quot;Demo 1&amp;quot;&#34;&gt;Ver Demo 1&lt;/a&gt;
  &lt;/p&gt;
  &lt;p&gt;
    Blox ofrece 3 estados:
  &lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;
      &lt;strong&gt;Normal&lt;/strong&gt;: cuando el usuario no interviene con la caja &lt;strong&gt;HTML&lt;/strong&gt; que contiene los bloques.
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;Hover&lt;/strong&gt;: cuando el &lt;em&gt;mouse&lt;/em&gt; est&amp;aacute; sobre alguna de las cajas, por defecto &lt;strong&gt;Blox&lt;/strong&gt; hace las otras semi-transparentes.
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;Click&lt;/strong&gt;: cuando se hace &lt;em&gt;click&lt;/em&gt; a alguna caja, &amp;eacute;sta se ampl&amp;iacute;a anim&amp;aacute;ndose hasta cubrir el total de la caja contenedora por sobre las dem&amp;aacute;s y muestra la informaci&amp;oacute;n anexa a esa caja.
    &lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/05/box1.png&#34; alt=&#34;jQuery Blox: 3 states of interaction&#34; width=&#34;380&#34; height=&#34;445&#34; /&gt;
  &lt;/p&gt;
  &lt;p&gt;
    El uso de &lt;strong&gt;Blox&lt;/strong&gt; no deber&amp;iacute;a limitar la creatividad de quien la vaya a usar, pero es necesario conocer y mantener ciertas reglas para su correcto y total funcionamiento, principalmente de estructura &lt;strong&gt;HTML&lt;/strong&gt; y de estilos &lt;strong&gt;CSS&lt;/strong&gt;:
  &lt;/p&gt;
  &lt;h4&gt;
    Estructura HTML
  &lt;/h4&gt;
  &lt;p&gt;
    Primero necesitas una caja que contenga las dem&amp;aacute;s cajas; por defecto &lt;strong&gt;Blox&lt;/strong&gt; la define con el &lt;em&gt;id&lt;/em&gt; &lt;strong&gt;blox&lt;/strong&gt;. Esta caja contenedora &lt;strong&gt;#blox&lt;/strong&gt; es la que soportar&amp;aacute; a las dem&amp;aacute;s cajas, las que &lt;strong&gt;Blox&lt;/strong&gt; denomina por defecto con una &lt;em&gt;class&lt;/em&gt; &lt;strong&gt;blox_content&lt;/strong&gt;. Esta caja &lt;strong&gt;.blox_content&lt;/strong&gt; es la que tiene 2 importantes funciones: soporta al contenido que estar&amp;aacute; oculto en el primer estado, y a una tercera caja llamada &lt;strong&gt;.blox_box&lt;/strong&gt; que es la gatillante de toda la interacci&amp;oacute;n de &lt;strong&gt;Blox&lt;/strong&gt;.
  &lt;/p&gt;
  &lt;p&gt;
    El &lt;strong&gt;HTML&lt;/strong&gt; b&amp;aacute;sicamente debe ser como la siguiente estructura:
  &lt;/p&gt;
  &lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;div id=&#34;blox&#34;&amp;gt; &amp;lt;span class=&#34;commenthtml&#34;&gt;/* un contenedor */&amp;lt;/span&gt;&amp;lt;br /&gt;
   &amp;lt;div class=&#34;blox_content&#34; id=&#34;box_1&#34;&amp;gt; &amp;lt;span class=&#34;commenthtml&#34;&gt;/* varias cajas de contenido */&amp;lt;/span&gt;&amp;lt;br /&gt;
       &amp;lt;div class=&#34;blox_box&#34;&amp;gt; &amp;lt;span class=&#34;commenthtml&#34;&gt;/* caja que soporta el click */&amp;lt;/span&gt;&amp;lt;br /&gt;
          Box 1&amp;lt;br /&gt;
       &amp;lt;/div&amp;gt;&amp;lt;br /&gt;
       Contenido desplegado cuando Box 1 es clickeado.&amp;lt;a href=&#34;#&#34; class=&#34;blox_close&#34;&amp;gt;Cerrar Bloque&amp;lt;/a&amp;gt; &amp;lt;span class=&#34;commenthtml&#34;&gt;/* contenido oculto pero que se muestra al click en la caja anterior */&amp;lt;/span&gt;&amp;lt;br /&gt;
   &amp;lt;/div&amp;gt;&amp;lt;br /&gt;
   &amp;lt;span class=&#34;commenthtml&#34;&gt;/* otras cajas con el mismo patron */&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;h4&gt;
    Estilo CSS
  &lt;/h4&gt;
  &lt;p&gt;
    La magia est&amp;aacute; en el uso de posici&amp;oacute;n absoluta para que las cajas se muevan con libertad y fluidez. Para que las cajas se comporten as&amp;iacute;, deben tener un estilo espec&amp;iacute;fico. La que contiene a todas las cajas,&lt;strong&gt; #blox&lt;/strong&gt;, debe tener un alto fijo, un ancho fijo y posici&amp;oacute;n relativa ya que ser&amp;aacute; quien soporte a las cajas menores &lt;strong&gt;.blox_content&lt;/strong&gt;, las que tienen posici&amp;oacute;n absoluta, alto fijo y ancho fijo. Cada una de las cajas &lt;strong&gt;.blox_content&lt;/strong&gt;, deber&amp;iacute;an tener ubicaciones diferentes mediante &lt;strong&gt;id&lt;/strong&gt; &amp;uacute;nico, respecto a &lt;strong&gt;#blox&lt;/strong&gt; utilizando las propiedades &lt;strong&gt;left&lt;/strong&gt; y &lt;strong&gt;top&lt;/strong&gt;.
  &lt;/p&gt;
  &lt;p&gt;
    La tercera caja &lt;strong&gt;.blox_box&lt;/strong&gt; tambi&amp;eacute;n deber&amp;iacute;a tener un ancho y alto fijo, seguramente el mismo que su caja padre &lt;strong&gt;.blox_content&lt;/strong&gt;, y para el resto de los elementos tienes libertad total de hacer lo que quieras con su estilo.
  &lt;/p&gt;
  &lt;p&gt;
    Finalmente, el &lt;strong&gt;CSS&lt;/strong&gt; b&amp;aacute;sico es el siguiente:
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;#blox {&amp;lt;br /&gt;
   width: 400px;&amp;lt;br /&gt;
   height: 400px; &amp;lt;br /&gt;
   position: relative;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
   .blox_content {&amp;lt;br /&gt;
      width: 200px;&amp;lt;br /&gt;
      height: 400px; &amp;lt;br /&gt;
      position: absolute;&amp;lt;br /&gt;
   }&amp;lt;br /&gt;
      #box_1 {&amp;lt;br /&gt;
         top: 0; &amp;lt;br /&gt;
         left: 0;&amp;lt;br /&gt;
      }&amp;lt;br /&gt;
      #box_2 {&amp;lt;br /&gt;
         top: 0; &amp;lt;br /&gt;
         left: 200px;&amp;lt;br /&gt;
      }&amp;lt;br /&gt;
      &amp;lt;span class=&#34;commentcss&#34;&gt;/* asi con cada una de las otras cajas */&amp;lt;/span&gt;&amp;lt;br /&gt;
   .blox_box {&amp;lt;br /&gt;
      width: 200px; &amp;lt;br /&gt;
      height: 400px; &amp;lt;br /&gt;
   }&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/05/box2.png&#34; alt=&#34;jQuery Blox: box structure&#34; width=&#34;420&#34; height=&#34;335&#34; /&gt;
  &lt;/p&gt;
  &lt;h4&gt;
    Configuraci&amp;oacute;n
  &lt;/h4&gt;
  &lt;p&gt;
    Por defecto &lt;strong&gt;Blox&lt;/strong&gt; viene pre-configurado de f&amp;aacute;brica, y su programaci&amp;oacute;n permite que alteres los siguientes par&amp;aacute;metros:
  &lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;
      &lt;strong&gt;container&lt;/strong&gt;: &lt;em&gt;id&lt;/em&gt; de la caja contenedora, por defecto &lt;strong&gt;#blox&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;content&lt;/strong&gt;: &lt;em&gt;class&lt;/em&gt; de las cajas con contenido, por defecto &lt;strong&gt;.blox_content&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;box&lt;/strong&gt;: &lt;em&gt;class&lt;/em&gt; de la caja que inicia la secuencia para mostrar el contenido, por defecto &lt;strong&gt;.blox_box&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;close&lt;/strong&gt;: &lt;em&gt;class&lt;/em&gt; del link o bot&amp;oacute;n que cierra caja caja desplegada, por defecto &lt;strong&gt;.blox_close&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;transparency&lt;/strong&gt;: &lt;em&gt;[yes/no]&lt;/em&gt;&amp;iquest;requieres transparencia? por defecto &lt;strong&gt;yes&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;fadein&lt;/strong&gt;: nivel de transparencia (de 0 a1) de las cajas al &lt;em&gt;mouseover&lt;/em&gt;, por defecto &lt;strong&gt;0.2&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;fadeout&lt;/strong&gt;: nivel de transparencia (de 0 a1) de las cajas al &lt;em&gt;mouseout&lt;/em&gt;, por defecto &lt;strong&gt;1&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;animation&lt;/strong&gt;: &lt;em&gt;[yes/no]&lt;/em&gt;&amp;iquest;requieres animaci&amp;oacute;n? por defecto &lt;strong&gt;yes&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;timein&lt;/strong&gt;: tiempo en &lt;em&gt;ms&lt;/em&gt; en que cada caja se demora en abrir, por defecto &lt;strong&gt;100&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;timeout&lt;/strong&gt;: tiempo en &lt;em&gt;ms&lt;/em&gt; en que cada caja se demora en cerrar, por defecto &lt;strong&gt;200&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;direction&lt;/strong&gt;: &lt;em&gt;[lefty/righty]&lt;/em&gt; hacia donde se abrir&amp;aacute; cada caja, por defecto a la izquierda &lt;strong&gt;lefty&lt;/strong&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;
    Para utilizarlo con estos valores por defecto, s&amp;oacute;lo debes seguir 2 pasos b&amp;aacute;sicos:
  &lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;
      Agregar tu librer&amp;iacute;a de &lt;strong&gt;jQuery&lt;/strong&gt; favorita y este humilde &lt;em&gt;plugin&lt;/em&gt;: &lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;script src=&#34;jquery-1.3.1.min.js&#34; type=&#34;text/javascript&#34;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br /&gt;
&amp;lt;script src=&#34;jqueryblox-v0.9.js&#34; type=&#34;text/javascript&#34;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/li&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;li&amp;gt;
  Activarlo: &amp;lt;pre class=&amp;quot;language-markup&amp;quot;&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;amp;gt;&amp;amp;lt;br /&amp;gt;
$(function(){&amp;amp;lt;br /&amp;gt;
    $().blox();&amp;amp;lt;br /&amp;gt;
});&amp;amp;lt;br /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;&lt;/p&gt;
  &lt;/ol&gt;
  &lt;p&gt;
    Si quieres configurarlo seg&amp;uacute;n tus necesidades, basta ir modificando los par&amp;aacute;metros como te sean necesarios:
  &lt;/p&gt;
  &lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;script type=&#34;text/javascript&#34;&amp;gt;&amp;lt;br /&gt;
     $(function(){&amp;lt;br /&gt;
         $().blox({&amp;lt;br /&gt;
             container: &#39;#contenedor_blox&#39;,&amp;lt;br /&gt;
             close: &#39;.boton_cierra&#39;,&amp;lt;br /&gt;
             direction: &#39;righty&#39;,&amp;lt;br /&gt;
             fadein: 0.6&amp;lt;br /&gt;
         });&amp;lt;br /&gt;
     });&amp;lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    &lt;a href=&#34;http://www.csslab.cl/ejemplos/blox/blox_demo2.html&#34; class=&#34;verejemplo&#34; title=&#34;Enlace en CSSLab a &amp;quot;Demo 2&amp;quot;&#34;&gt;Ver Demo 2&lt;/a&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href=&#34;http://www.csslab.cl/ejemplos/blox/blox_demo3.html&#34; class=&#34;verejemplo&#34; title=&#34;Enlace en CSSLab a &amp;quot;Demo 3&amp;quot;&#34;&gt;Ver Demo 3&lt;/a&gt;
  &lt;/p&gt;
&lt;/div&gt;
&lt;!-- /#espanol --&gt;
&lt;div id=&#34;english&#34;&gt;
  &lt;!-- #english --&gt;&lt;/p&gt; 
  &lt;h3&gt;
    EN
  &lt;/h3&gt;
  &lt;p&gt;
    With &lt;strong&gt;jQuery Blox&lt;/strong&gt; you can display information on a whole new way with a quick and easy setup. Just write yout &lt;strong&gt;HTML&lt;/strong&gt; in a simple block pattern, and tell the plugin your element names (or maintain the pre-configured ones); &lt;strong&gt;Blox&lt;/strong&gt; will display your information with a new interaction for your user.
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href=&#34;http://www.csslab.cl/ejemplos/blox/blox_demo1.html&#34; class=&#34;verejemplo&#34; title=&#34;Link in CSSLab to &amp;quot;Demo 1&amp;quot;&#34;&gt;See Demo 1&lt;/a&gt;
  &lt;/p&gt;
  &lt;p&gt;
    Blox offers 3 states:
  &lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;
      &lt;strong&gt;Normal&lt;/strong&gt;: when the user does not interfere with the box containing the &lt;strong&gt;HTML&lt;/strong&gt; blocks.
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;Hover&lt;/strong&gt;: when the mouse is over one of the boxes, by default &lt;strong&gt;Blox&lt;/strong&gt; makes the others semi-transparent.
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;Click&lt;/strong&gt;: when you click on any box, it will animate its expansion to cover the total of the container above all other blocks, to show the information attached to that block.
    &lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/05/box1.png&#34; alt=&#34;jQuery Blox: 3 states of interaction&#34; width=&#34;380&#34; height=&#34;445&#34; /&gt;
  &lt;/p&gt;
  &lt;p&gt;
    Using &lt;strong&gt;Blox&lt;/strong&gt; should not limit the creativity of who will use it, but it needs to maintain certain rules for their correct and full operation, mainly &lt;strong&gt;HTML&lt;/strong&gt; strucuture and &lt;strong&gt;CSS&lt;/strong&gt; styles:
  &lt;/p&gt;
  &lt;h4&gt;
    HTML Structure
  &lt;/h4&gt;
  &lt;p&gt;
    First you&amp;#8217;ll need a box containing all other boxes, by default &lt;strong&gt;Blox&lt;/strong&gt; calls it with the &lt;em&gt;id&lt;/em&gt; &lt;strong&gt;blox&lt;/strong&gt;. This container &lt;strong&gt;#blox&lt;/strong&gt; will support all the blocks which &lt;strong&gt;Blox&lt;/strong&gt; names with the &lt;em&gt;class&lt;/em&gt; &lt;strong&gt;box_content&lt;/strong&gt;. This block &lt;strong&gt;.box_content&lt;/strong&gt; have 2 major functions: support the content hidden in the first state, and contains a third block called with the &lt;em&gt;class&lt;/em&gt; &lt;strong&gt;.blox_box&lt;/strong&gt; which is the one that fires the &lt;strong&gt;Blox&lt;/strong&gt; interaction, expanding and moving the boxes to display the hidden information.
  &lt;/p&gt;
  &lt;p&gt;
    The &lt;strong&gt;HTML&lt;/strong&gt; should be basically as follows:
  &lt;/p&gt;
  &lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;div id=&#34;blox&#34;&amp;gt; &amp;lt;span class=&#34;commenthtml&#34;&gt;/* a container */&amp;lt;/span&gt;&amp;lt;br /&gt;
   &amp;lt;div class=&#34;blox_content&#34; id=&#34;box_1&#34;&amp;gt; &amp;lt;span class=&#34;commenthtml&#34;&gt;/* many content blocks */&amp;lt;/span&gt;&amp;lt;br /&gt;
      &amp;lt;div class=&#34;blox_box&#34;&amp;gt; &amp;lt;span class=&#34;commenthtml&#34;&gt;/* box that fires the interaction */&amp;lt;/span&gt;&amp;lt;br /&gt;
         Box 1&amp;lt;br /&gt;
      &amp;lt;/div&amp;gt;&amp;lt;br /&gt;
      Content displayed when Box 1 is clicked, above Box 2.&amp;lt;a href=&#34;#&#34; class=&#34;blox_close&#34;&amp;gt;Close Box&amp;lt;/a&amp;gt; &amp;lt;span class=&#34;commenthtml&#34;&gt;/* hidden content displayed at .blox_box click */&amp;lt;/span&gt;&amp;lt;br /&gt;
   &amp;lt;/div&amp;gt;&amp;lt;br /&gt;
   &amp;lt;span class=&#34;commenthtml&#34;&gt;/* other boxes with the same pattern */&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;h4&gt;
    CSS Style
  &lt;/h4&gt;
  &lt;p&gt;
    The magic is in the use of absolutely positioned blocks to move them freely and smoothly For the blocks to behave like we want, they must have a specific style. The box that contains all other blocks &lt;strong&gt;#blox&lt;/strong&gt; must have fixed &lt;em&gt;height&lt;/em&gt; and &lt;em&gt;width&lt;/em&gt; and &lt;em&gt;relative position&lt;/em&gt; to support the smaller boxes named .&lt;strong&gt;blox_content&lt;/strong&gt; which must have fixed &lt;em&gt;height&lt;/em&gt; and &lt;em&gt;width&lt;/em&gt; as well but &lt;em&gt;absolute positioned&lt;/em&gt;. Each one of this boxes &lt;strong&gt;.blox_content&lt;/strong&gt; should have different placements, givven through an unique &lt;em&gt;#id&lt;/em&gt; using the properties &lt;em&gt;left&lt;/em&gt; and &lt;em&gt;top&lt;/em&gt;.
  &lt;/p&gt;
  &lt;p&gt;
    The third box &lt;strong&gt;.blox_box&lt;/strong&gt; should also have a fixed &lt;em&gt;width&lt;/em&gt; and &lt;em&gt;height&lt;/em&gt;, probably the same as its parent &lt;strong&gt;.blox_content&lt;/strong&gt;. For the rest of the elements you have total freedom to do whatever you want with their style.
  &lt;/p&gt;
  &lt;p&gt;
    Finally, the basic &lt;strong&gt;CSS&lt;/strong&gt; is as follows:
  &lt;/p&gt;
  &lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;#blox {&amp;lt;br /&gt;
   width: 400px;&amp;lt;br /&gt;
   height: 400px; &amp;lt;br /&gt;
   position: relative;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
   .blox_content {&amp;lt;br /&gt;
      width: 200px;&amp;lt;br /&gt;
      height: 400px; &amp;lt;br /&gt;
      position: absolute;&amp;lt;br /&gt;
    }&amp;lt;br /&gt;
       #box_1 {&amp;lt;br /&gt;
          top: 0; &amp;lt;br /&gt;
          left: 0;&amp;lt;br /&gt;
       }&amp;lt;br /&gt;
       #box_2 {&amp;lt;br /&gt;
          top: 0; &amp;lt;br /&gt;
          left: 200px;&amp;lt;br /&gt;
       }&amp;lt;br /&gt;
      &amp;lt;span class=&#34;commentcss&#34;&gt;/* like this for each of other boxes */&amp;lt;/span&gt;&amp;lt;br /&gt;
      .blox_box {&amp;lt;br /&gt;
         width: 200px; &amp;lt;br /&gt;
         height: 400px; &amp;lt;br /&gt;
      }&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/05/box2.png&#34; alt=&#34;jQuery Blox: box structure&#34; width=&#34;420&#34; height=&#34;335&#34; /&gt;
  &lt;/p&gt;
  &lt;h4&gt;
    Configuration
  &lt;/h4&gt;
  &lt;p&gt;
    By default, &lt;strong&gt;Blox&lt;/strong&gt; comes preconfigured from the factory, and its programming allows you to alter the following parameters:
  &lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;
      &lt;strong&gt;container&lt;/strong&gt;: container box &lt;em&gt;id&lt;/em&gt;, default to &lt;strong&gt;#blox&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;content&lt;/strong&gt;: &lt;em&gt;class&lt;/em&gt; of each content box, default to &lt;strong&gt;.blox_content&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;box&lt;/strong&gt;: &lt;em&gt;class&lt;/em&gt; of the box that fires the content display, default to &lt;strong&gt;.blox_box&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;close&lt;/strong&gt;: &lt;em&gt;class&lt;/em&gt; for the link (button) that closes the content box, default to &lt;strong&gt;.blox_close&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;transparency&lt;/strong&gt;: &lt;em&gt;[yes/no]&lt;/em&gt; do you want transparency on hover? default to &lt;strong&gt;yes&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;fadein&lt;/strong&gt;: transparency level (from 0 to 1) when you mouseover a box, default to &lt;strong&gt;0.2&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;fadeout&lt;/strong&gt;: transparency level (from 0 to 1) when you mouseout a box, default to &lt;strong&gt;1&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;animation&lt;/strong&gt;: &lt;em&gt;[yes/no] &lt;/em&gt;do you want the boxes to animate? default to &lt;strong&gt;yes&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;timein&lt;/strong&gt;: time in &lt;em&gt;ms&lt;/em&gt; that each box takes to display the content, default to &lt;strong&gt;100&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;timeout&lt;/strong&gt;: time in &lt;em&gt;ms&lt;/em&gt; that each box takes to hide the content, default to &lt;strong&gt;200&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;strong&gt;direction&lt;/strong&gt;: &lt;em&gt;[lefty/righty]&lt;/em&gt; which direction each box is opened, default to left &lt;strong&gt;lefty&lt;/strong&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;
    To use it with the default values, just follow this 2 simple steps:
  &lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;
      Add your favorite &lt;strong&gt;jQuery&lt;/strong&gt; library and this humble plugin: &lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;script src=&#34;jquery-1.3.1.min.js&#34; type=&#34;text/javascript&#34;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br /&gt;
&amp;lt;script src=&#34;jqueryblox-v0.9.js&#34; type=&#34;text/javascript&#34;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;/li&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;li&amp;gt;
  Activate it: &amp;lt;pre class=&amp;quot;language-markup&amp;quot;&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;amp;gt;&amp;amp;lt;br /&amp;gt;
$(function(){&amp;amp;lt;br /&amp;gt;
    $().blox();&amp;amp;lt;br /&amp;gt;
});&amp;amp;lt;br /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;&lt;/p&gt;
  &lt;/ol&gt;
  &lt;p&gt;
    If you want to customize it to suit your needs, just change the necessary parameters:
  &lt;/p&gt;
  &lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt; &amp;lt;script type=&#34;text/javascript&#34;&amp;gt;&amp;lt;br /&gt;
     $(function(){&amp;lt;br /&gt;
         $().blox({&amp;lt;br /&gt;
             container: &#39;#my_boxes,&amp;lt;br /&gt;
             close: &#39;.closeboxes,&amp;lt;br /&gt;
             direction: &#39;righty&#39;,&amp;lt;br /&gt;
             fadein: 0.6&amp;lt;br /&gt;
         });&amp;lt;br /&gt;
     });&amp;lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    &lt;a href=&#34;http://www.csslab.cl/ejemplos/blox/blox_demo2.html&#34; class=&#34;verejemplo&#34; title=&#34;Link in CSSLab to &amp;quot;Demo 2&amp;quot;&#34;&gt;See Demo 2&lt;/a&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href=&#34;http://www.csslab.cl/ejemplos/blox/blox_demo3.html&#34; class=&#34;verejemplo&#34; title=&#34;Link in CSSLab to &amp;quot;Demo 3&amp;quot;&#34;&gt;See Demo 3&lt;/a&gt;
  &lt;/p&gt;
&lt;/div&gt;
&lt;!-- /#english --&gt;
&lt;h4 id=&#34;baja-el-plugin--get-the-plugin&#34;&gt;Baja el plugin / Get the plugin&lt;/h4&gt;
&lt;p&gt;[Bajar/Download plugin (.zip 1kb)][1]{.bajar}&lt;/p&gt;
&lt;p&gt;[Bajar/Download plugin+demos (.zip 220kb)][2]{.bajar}&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Blox logo by &lt;a href=&#34;http://www.youfeelme.biz/&#34; title=&#34;External link to &amp;quot;Sebastian Cortes Portfolio&amp;quot;&#34; target=&#34;_blank&#34;&gt;youfeelme.biz&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/downloads/jQuery+Blox&#34;&gt;http://www.csslab.cl/downloads/jQuery+Blox&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Bajar/Download plugin&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/blox/jQueryBlox.0.9+demos.zip&#34;&gt;http://www.csslab.cl/ejemplos/blox/jQueryBlox.0.9+demos.zip&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Bajar/Download plugin+demos&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Entendiendo vertical-align</title>
      <link>https://csslab.cl/2009/05/18/entendiendo-vertical-align/</link>
      <pubDate>Mon, 18 May 2009 16:09:45 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/05/18/entendiendo-vertical-align/</guid>
      <description>Como muchos deben ya saber, es un tremendo lío alinear verticalmente un elemento HTML mediante CSS estándar; de hecho una de las razones de que aún personas siguen utilizando tablas para estructurar sitios: precisamente porque las celdas hacen este alineado horizontal y vertical tan fácil, mediante los atributos align=&amp;quot;&amp;quot; y valign=&amp;quot;&amp;quot;. Pero utilizando web standards es otra cosa, una dimensión aún perturbante y siendo franco, algo complicada de entender y llevar a la práctica.</description>
      <content>&lt;p&gt;Como muchos deben ya saber, es un tremendo lío alinear verticalmente un elemento &lt;strong&gt;HTML&lt;/strong&gt; mediante &lt;strong&gt;CSS&lt;/strong&gt; estándar; de hecho una de las razones de que aún personas siguen utilizando tablas para estructurar sitios: precisamente porque las celdas hacen este alineado horizontal y vertical tan fácil, mediante los atributos &lt;strong&gt;align=&amp;quot;&amp;quot;&lt;/strong&gt; y &lt;strong&gt;valign=&amp;quot;&amp;quot;&lt;/strong&gt;. Pero utilizando &lt;em&gt;web standards&lt;/em&gt; es otra cosa, una dimensión aún perturbante y siendo franco, algo complicada de entender y llevar a la práctica.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt; tiene una &lt;em&gt;‘obscura’&lt;/em&gt; propiedad llamada &lt;strong&gt;vertical-align&lt;/strong&gt;. Lo obscuro se debe a que es confuso su entendimiento, y por ende su uso. Para ayudar a aclarar eso, este artículo lo atacará por dos ámbitos más que necesarios: alineado de elementos de formulario y de imágenes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vertical-align&lt;/strong&gt; tiene uso principalmente en etiquetas que son por esencia de tipo &lt;em&gt;inline&lt;/em&gt;. Si tratas de utilizar esta propiedad en un &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; por ejemplo, o en un &lt;strong&gt;&lt;p&gt;&lt;/strong&gt; quizás es por eso que te hayas frustrado ya que estos elementos son de tipo &lt;em&gt;block&lt;/em&gt;. Cuando &lt;strong&gt;vertical-align&lt;/strong&gt; es definido para elementos &lt;em&gt;inline&lt;/em&gt;, se comporta como el antiguo y obsoleto atributo &lt;strong&gt;valign=&amp;quot;&amp;quot;&lt;/strong&gt;. Tomando este principio, su uso en imágenes junto a texto se ven resultados concretos:&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 1][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Los valores de &lt;strong&gt;vertical-align&lt;/strong&gt; son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;baseline&lt;/strong&gt;: valor por defecto, el elemento es ubicado en la base del elemento padre.&lt;br&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/05/baseline.png&#34; width=&#34;172&#34; height=&#34;69&#34; alt=&#34;vertical-align: baseline&#34; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;sub&lt;/strong&gt;: alinea el elemento como si fuera subescrito (&lt;strong&gt;&lt;sub&gt;&lt;/strong&gt;).&lt;br&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/05/sub.png&#34; width=&#34;172&#34; height=&#34;69&#34; alt=&#34;vertical-align: sub&#34; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;super&lt;/strong&gt;: alinea el elemento como si fuera sobrescrito (&lt;strong&gt;&lt;sup&gt;&lt;/strong&gt;).&lt;br&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/05/super.png&#34; width=&#34;172&#34; height=&#34;82&#34; alt=&#34;vertical-align: super&#34; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;top&lt;/strong&gt;: la parte superior del elemento es alineado con la parte superior del elemento en la misma línea.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;text-top&lt;/strong&gt;: la parte superior del elemento es alineada con la parte superior del padre de los elementos de texto.&lt;br&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/05/texttop.png&#34; width=&#34;172&#34; height=&#34;69&#34; alt=&#34;vertical-align: text-top&#34; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;middle&lt;/strong&gt;: el más interesante; el elemento es ubicado en la mitad del elemento padre.&lt;br&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/05/middle.png&#34; width=&#34;172&#34; height=&#34;69&#34; alt=&#34;vertical-align: middle&#34; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bottom&lt;/strong&gt;: también interesante; la parte inferior del elemento es alineado con la parte más baja de la línea.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;text-bottom:&lt;/strong&gt; la parte inferior del elemento es alineada con la parte inferior del padre de los elementos de texto.&lt;br&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/05/textbottom.png&#34; width=&#34;172&#34; height=&#34;69&#34; alt=&#34;vertical-align: text-bottom&#34; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;%&lt;/strong&gt;: alínea el elemento en valores porcentuales de la propiedad line-height (se permiten valores negativos).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Otro importante uso de esta propiedad es con etiquetas de formulario, principalmente cuando queremos alinear los nombres de los campos (generalmente envueltos en &lt;strong&gt;&lt;label&gt;&lt;/label&gt;&lt;/strong&gt;) a los campos de formulario. En el siguiente ejemplo muestro sus usos con campo de tipo texto:&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 2][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Como décadas pasadas, esta propiedad también puede ser utilizada en reemplazo del atributo para celdas de tablas, bajo los mismos valores. Como las celdas por defecto tienen &lt;strong&gt;vertical-align: middle&lt;/strong&gt; definidos, puedes utilizar los otros valores para lograr lo que necesites.&lt;/p&gt;
&lt;p&gt;¿Milagrosa? Bueno, suena bien hasta ahora pero está lejos de ser la solución definitiva, ya que &lt;strong&gt;IE6&lt;/strong&gt; e &lt;strong&gt;IE7&lt;/strong&gt; soporta esta propiedad a su manera, como siempre.&lt;/p&gt;
&lt;p&gt;![vertical-align entre browsers][3]&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.ibloomstudios.com/articles/vertical-align_misuse/&#34; title=&#34;Enlace externo a &amp;quot;Vertical-Align Misuse @ iBloomStudios&amp;quot;&#34; target=&#34;_blank&#34;&gt;Vertical-Align Misuse @ iBloomStudios&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3schools.com/Css/pr_pos_vertical-align.asp&#34; title=&#34;Enlace externo a &amp;quot;CSS vertical-align Property @ W3Schools&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSS vertical-align Property @ W3Schools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.webdevout.net/browser-support-css&#34; title=&#34;Enlace externo a &amp;quot;Web Browser CSS Support Table @ WebDevout&amp;quot;&#34; target=&#34;_blank&#34;&gt;Web Browser CSS Support Table @ WebDevout&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/verticalalign/img.html&#34;&gt;http://www.csslab.cl/ejemplos/verticalalign/img.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ver ejemplo 1&amp;quot;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/verticalalign/form.html&#34;&gt;http://www.csslab.cl/ejemplos/verticalalign/form.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ver ejemplo 2&amp;quot;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2009/05/verticalalign-browsers.png&#34;&gt;http://www.csslab.cl/wp-content/uploads/2009/05/verticalalign-browsers.png&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Psicología Cognitiva</title>
      <link>https://csslab.cl/2009/04/22/psicologia-cognitiva/</link>
      <pubDate>Wed, 22 Apr 2009 19:49:58 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/04/22/psicologia-cognitiva/</guid>
      <description>Entender nuestros actuales usuarios -y los potenciales que pretendemos tener- es básico para una buena planificación de un proyecto web. Ir más alla, conocer cómo se comporta la mente de una persona ante el diseño y funcionamiento del sitio web es importante para el éxito de ese proyecto. La psicología cognitiva hace precisamente eso: estudia los diversos procesos cognitivos como la resolución de problemas, el razonamiento, la percepción y toma de desiciones, entre otras cosas.</description>
      <content>&lt;p&gt;Entender nuestros actuales usuarios -y los potenciales que pretendemos tener- es básico para una buena planificación de un proyecto web. Ir más alla, conocer cómo se comporta la mente de una persona ante el diseño y funcionamiento del sitio web es importante para el éxito de ese proyecto. La psicología cognitiva hace precisamente eso: estudia los diversos procesos cognitivos como la resolución de problemas, el razonamiento, la percepción y toma de desiciones, entre otras cosas. Su aplicación al mundo digital data de los inicios del desarrollo informático moderno (1970 hacia adelante), donde se aplicaba en el &lt;a href=&#34;http://www.parc.com/&#34; title=&#34;Enlace externo a &amp;quot;Xerox Palo Alto Research Center&amp;quot;&#34; target=&#34;_blank&#34;&gt;PARC de Xerox&lt;/a&gt; en tratar de entender el impacto de las personas el uso de una interfaz nueva, como lo era en la época el desarrollo de la primera GUI (Interfaz Gráfica de Usuario).&lt;/p&gt;
&lt;p&gt;OK, es importante, pero: ¿Porqué es tan importante?- se preguntarán. Porque nuestro oficio está estrechamente relacionado con la interacción humano-computador (HCI), y de esa interacción surgen varios dilemas con los cuales no estamos acostumbrados por naturaleza. Piensen que estamos interactuando con una máquina, y esa máquina responde a nuestros estímulos (mover un &lt;em&gt;mouse&lt;/em&gt; por ejemplo gatilla que el cursor se mueve por la pantalla). Pero esa máquina nos entrega una respuesta &lt;em&gt;‘inteligente’&lt;/em&gt; a nuestro estímulo, lo que puede interpretarse como una reacción natural, pero no lo es ya que fue programada por alguien similar a nosotros para ello. Esa reacción fue adquirida por nosotros a través del tiempo, y la actual generación joven tiene a Internet y a estas interfaces ya propias, y no conocen otro mundo sin ellas.&lt;/p&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2009/04/hci.png&#34; alt=&#34;Diagrama de Interacción Humano-Computador&#34; style=&#34;float: right; padding: 0 0 10px 10px;&#34; /&gt; 
&lt;p&gt;Actualmente la psicología cognitiva es utilizada para entender y predecir el comportamiento de los usuarios ante un rediseño o una innovación. En un sitio web donde su rediseño puede afectar a miles de usuarios, esta rama de la psicología es fundamental. Aunque las desiciones y conclusiones que se tomen de aquí no son absolutas -nunca lo son cuando se estudia al ser humano; somo seres impredecibles- sí es posible amortiguar errores y que éste no sea catastrófico o hacer perder millones en inversión. Recuerdo el caso de &lt;strong&gt;Yahoo!&lt;/strong&gt; cuando rediseñó su actual web, algo que aún le repercute y del cual &lt;strong&gt;Google&lt;/strong&gt; está muy agradecido, y el más reciente rediseño de &lt;strong&gt;Facebook&lt;/strong&gt; queriendo acercarse más al modelo de &lt;strong&gt;Twitter&lt;/strong&gt;, causando un rechazo importante de sus usuarios expresado en su misma plataforma.&lt;/p&gt;
&lt;p&gt;Pero no basta con saber cómo piensa el usuario que se enfrenta a una interfaz; también debes conocer a fondo las herramientas disponibles para sacar el máximo provecho a la información y a la interacción del usuario con ella. No es lo mismo una galería de fotos normal que una que utiliza alguna caja modal para mostrar la imagen en mayor calidad, pero ¿realmente la necesitas? ¿y la accesibilidad? ¿qué sucede si el usuario tiene &lt;em&gt;javascript&lt;/em&gt; deshabilitado? Estas son preguntas mínimas que deberías hacerte si quieres poner al usuario frente a tu cliente.&lt;/p&gt;
&lt;p&gt;… continuará&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Horror #4</title>
      <link>https://csslab.cl/2009/04/06/horror-4/</link>
      <pubDate>Mon, 06 Apr 2009 22:58:27 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/04/06/horror-4/</guid>
      <description>&lt;p class=&#34;codehtml&#34;&gt;
  &lt;title&gt;T&amp;iacute;tulo del Sitio &amp;#8211; &lt;strong&gt;&lt;DIV&gt;&lt;/strong&gt;Subsecci&amp;oacute;n&lt;strong&gt;&lt;/DIV&gt;&lt;/strong&gt;&lt;/title&gt;
&lt;/p&gt;</description>
      <content>&lt;p class=&#34;codehtml&#34;&gt;
  &lt;title&gt;T&amp;iacute;tulo del Sitio &amp;#8211; &lt;strong&gt;&lt;DIV&gt;&lt;/strong&gt;Subsecci&amp;oacute;n&lt;strong&gt;&lt;/DIV&gt;&lt;/strong&gt;&lt;/title&gt;
&lt;/p&gt;
&lt;p&gt;Esta es una joya… nunca, pero NUNCA había visto un &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; dentro de la etiqueta &lt;strong&gt;&lt;title&gt;&lt;/strong&gt;… ¡Al parecer pretendían implementar los estándares desde el comienzo del código HTML! Quedé anonadado…&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Enlaces vacíos y semánticos</title>
      <link>https://csslab.cl/2009/04/06/enlaces-vacios-y-semanticos/</link>
      <pubDate>Mon, 06 Apr 2009 14:40:54 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/04/06/enlaces-vacios-y-semanticos/</guid>
      <description>&lt;p&gt;Si desayunas &lt;em&gt;[jQuery][1]&lt;/em&gt;, almuerzas &lt;em&gt;[Mootools][2]&lt;/em&gt; y cenas &lt;em&gt;Spry&lt;/em&gt; entonces seguro te gusta manipular eventos utilizando elementos del &lt;strong&gt;[DOM][3]&lt;/strong&gt; ya generados. Deben saber que la etiqueta correcta para &lt;em&gt;click&lt;/em&gt; (y &lt;em&gt;doubleclick&lt;/em&gt;) es &lt;strong&gt;&lt;a&gt;&lt;/strong&gt; y solamente &lt;strong&gt;&lt;a&gt;&lt;/strong&gt;; todas las demás tienen otros muchos usos pero la única que semánticamente está habilitada para desencadenar una acción mediante un &lt;em&gt;click&lt;/em&gt; es… ¡&lt;strong&gt;&lt;a&gt;&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Bien eso era lo primero que quería dejar claro; he visto demasiados &lt;strong&gt;&lt;li&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;h1&gt;&lt;/strong&gt;, incluso &lt;strong&gt;&lt;p&gt;&lt;/strong&gt; clickeables. Ahora, a lo que va este artículo es cómo la semántica se está dejando atrás por la comodidad de escribir eventos mediante &lt;strong&gt;JS&lt;/strong&gt;. &lt;a href=&#34;http://twitter.com/csslab/status/1397191676&#34; title=&#34;Enlace externo a &amp;quot;Twit de CSSLab&amp;quot;&#34; target=&#34;_blank&#34;&gt;Me culpo también por caer en lo mismo&lt;/a&gt;, pero me interesa ahora mostrarles la mejor solución que he encontrado al respecto.&lt;/p&gt;</description>
      <content>&lt;p&gt;Si desayunas &lt;em&gt;[jQuery][1]&lt;/em&gt;, almuerzas &lt;em&gt;[Mootools][2]&lt;/em&gt; y cenas &lt;em&gt;Spry&lt;/em&gt; entonces seguro te gusta manipular eventos utilizando elementos del &lt;strong&gt;[DOM][3]&lt;/strong&gt; ya generados. Deben saber que la etiqueta correcta para &lt;em&gt;click&lt;/em&gt; (y &lt;em&gt;doubleclick&lt;/em&gt;) es &lt;strong&gt;&lt;a&gt;&lt;/strong&gt; y solamente &lt;strong&gt;&lt;a&gt;&lt;/strong&gt;; todas las demás tienen otros muchos usos pero la única que semánticamente está habilitada para desencadenar una acción mediante un &lt;em&gt;click&lt;/em&gt; es… ¡&lt;strong&gt;&lt;a&gt;&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Bien eso era lo primero que quería dejar claro; he visto demasiados &lt;strong&gt;&lt;li&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;h1&gt;&lt;/strong&gt;, incluso &lt;strong&gt;&lt;p&gt;&lt;/strong&gt; clickeables. Ahora, a lo que va este artículo es cómo la semántica se está dejando atrás por la comodidad de escribir eventos mediante &lt;strong&gt;JS&lt;/strong&gt;. &lt;a href=&#34;http://twitter.com/csslab/status/1397191676&#34; title=&#34;Enlace externo a &amp;quot;Twit de CSSLab&amp;quot;&#34; target=&#34;_blank&#34;&gt;Me culpo también por caer en lo mismo&lt;/a&gt;, pero me interesa ahora mostrarles la mejor solución que he encontrado al respecto.&lt;/p&gt;
&lt;p&gt;Pongámonos en un caso de ejemplo. Supongamos que se agrega una función para ejecutar un &lt;em&gt;[slideToggle][4]&lt;/em&gt; a un enlace; por lo que he visto generalmente esto se hace de 2 maneras:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;a href=&#34;&amp;lt;strong&gt;#&amp;lt;/strong&gt;&#34; id=&#34;ejecuta_toggle&#34;&amp;gt;Ejecutar slideToggle&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cumples con tener un &lt;strong&gt;href&lt;/strong&gt; funcional (no vacío) pero puede hacer que al hacer &lt;em&gt;click&lt;/em&gt; la página haga &lt;em&gt;scroll&lt;/em&gt; hasta el inicio dado que tienes un ancla vacío en el &lt;strong&gt;href&lt;/strong&gt; y quizás tengas que dar un &lt;strong&gt;return false&lt;/strong&gt; al final de la función del &lt;strong&gt;slideToggle&lt;/strong&gt;, ó&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;a href=&#34;&amp;lt;strong&gt;javascript:void(0)&amp;lt;/strong&gt;&#34; id=&#34;ejecuta_toggle&#34;&amp;gt;Ejecutar slideToggle&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Que hace que el &lt;em&gt;browser&lt;/em&gt; no ejecute el enlace y no se salga de la misma página.&lt;/p&gt;
&lt;p&gt;Enfin, son 2 métodos similares y que cumplen con el objetivo primario de ejecutar algun comportamiento mediante &lt;strong&gt;Javascript&lt;/strong&gt; a través de un &lt;strong&gt;hyperlink&lt;/strong&gt;. Pero nuevamente mi pregunta: ¿Qué sucede con la semántica? ¿Cómo le digo al buscador, indexador, robot que ese &lt;strong&gt;&lt;a&gt;&lt;/strong&gt; no es un enlace realmente? ¿Que lo estoy disfrazando para cumplir con mis objetivos?&lt;/p&gt;
&lt;p&gt;Complicada pregunta y simple respuesta. Con esta inquitud espero que puedan ir más allá en sus desarrollos; recuerden que un simple &lt;strong&gt;click&lt;/strong&gt; puede desencadenar muchos más eventos que los que tienen planificado para él, eventos que benefician a sus usuarios mediante indexaciones más precisas.&lt;/p&gt;
&lt;h4 id=&#34;la-solucioacuten&#34;&gt;La solución&lt;/h4&gt;
&lt;p&gt;Entreguen una ancla semántica al &lt;strong&gt;hyperlink&lt;/strong&gt;, pero una ancla sobre sí mismo. Ejemplifico con lo mismo que he estado utilizando:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;a href=&#34;&amp;lt;strong&gt;#ejecuta_toggle&amp;lt;/strong&gt;&#34; name=&#34;&amp;lt;strong&gt;ejecuta_toggle&amp;lt;/strong&gt;&#34; id=&#34;ejecuta_toggle&#34;&amp;gt;Ejecutar slideToggle&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con este método conservan la semántica indicando a través del atributo &lt;strong&gt;name&lt;/strong&gt; qué hará ese mismo enlace y al mismo tiempo evitan el movimiento de &lt;em&gt;scroll&lt;/em&gt; de la página.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/tag/jquery/&#34;&gt;http://www.csslab.cl/tag/jquery/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;tags: jQuery&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/tag/mootools/&#34;&gt;http://www.csslab.cl/tag/mootools/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;tags: Mootools&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2008/04/07/iniciandose-en-el-dom/&#34;&gt;http://www.csslab.cl/2008/04/07/iniciandose-en-el-dom/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Iniciándose en el DOM&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/2007/09/25/convirtiendo-listas-en-arboles/&#34;&gt;http://www.csslab.cl/2007/09/25/convirtiendo-listas-en-arboles/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Convirtiendo Listas en Árboles&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Esa maldita Web 2.0</title>
      <link>https://csslab.cl/2009/03/16/esa-maldita-web-20/</link>
      <pubDate>Mon, 16 Mar 2009 23:26:59 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/03/16/esa-maldita-web-20/</guid>
      <description>&lt;p&gt;Está en todas partes. Se lee hasta en el diario y se escucha en las noticias. Pero nadie sabe realmente de que se trata, sólo saben que se vende bien. Sí, hablo de la &lt;strong&gt;Web 2.0&lt;/strong&gt; que en el hemisferio norte va en decaída, pero como siempre aquí lejos en el sur la está reventando.&lt;/p&gt;
&lt;p&gt;Hace mucho que debería haber escrito algo sobre este tema, pero esta espera ha sido mejor ya que he podido profundizar mi opinión al respecto. La última vez que recuerdo que un término &lt;em&gt;inventado&lt;/em&gt; se haya tergiversado tanto y aún así puesto tan de moda fue comenzando el milenio, con &lt;strong&gt;[AJAX][1]&lt;/strong&gt; que aún vende como pan caliente. Pero ahora me he llegado a asustar del mal entendido que abunda en el sector, y cómo gente relacionada con el marketing venden productos y aplicaciones como &lt;em&gt;2.0&lt;/em&gt; y que no tienen nada que ver con el concepto original del mismo. Mucha de la culpa la tenemos nosotros quienes nunca definimos bien su significado ó los alcances del concepto.&lt;/p&gt;</description>
      <content>&lt;p&gt;Está en todas partes. Se lee hasta en el diario y se escucha en las noticias. Pero nadie sabe realmente de que se trata, sólo saben que se vende bien. Sí, hablo de la &lt;strong&gt;Web 2.0&lt;/strong&gt; que en el hemisferio norte va en decaída, pero como siempre aquí lejos en el sur la está reventando.&lt;/p&gt;
&lt;p&gt;Hace mucho que debería haber escrito algo sobre este tema, pero esta espera ha sido mejor ya que he podido profundizar mi opinión al respecto. La última vez que recuerdo que un término &lt;em&gt;inventado&lt;/em&gt; se haya tergiversado tanto y aún así puesto tan de moda fue comenzando el milenio, con &lt;strong&gt;[AJAX][1]&lt;/strong&gt; que aún vende como pan caliente. Pero ahora me he llegado a asustar del mal entendido que abunda en el sector, y cómo gente relacionada con el marketing venden productos y aplicaciones como &lt;em&gt;2.0&lt;/em&gt; y que no tienen nada que ver con el concepto original del mismo. Mucha de la culpa la tenemos nosotros quienes nunca definimos bien su significado ó los alcances del concepto.&lt;/p&gt;
&lt;p&gt;Primero, me gustaría listar algunas ideas de lo que &lt;strong&gt;NO&lt;/strong&gt; es la &lt;strong&gt;Web 2.0&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Web 2.0 NO&lt;/strong&gt; es &lt;strong&gt;AJAX&lt;/strong&gt;, &lt;strong&gt;jQuery&lt;/strong&gt;, &lt;strong&gt;Mootools&lt;/strong&gt;, &lt;strong&gt;script.aculo.us&lt;/strong&gt; ó &lt;strong&gt;Dojo&lt;/strong&gt;; estos elementos soportan una nueva manera de mostrar el contenido de la Web, no la hacen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web 2.0 NO&lt;/strong&gt; es &lt;strong&gt;RSS&lt;/strong&gt;, pero sí cómo ésta ayuda a la llegada de la información más rápida y limpia al usuario que la pide&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web 2.0 NO&lt;/strong&gt; se trata de tecnología&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web 2.0 NO&lt;/strong&gt; se trata de programación&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web 2.0 NO&lt;/strong&gt; son elementos gradientes, que parezcan &lt;em&gt;plástico&lt;/em&gt; o con reflejos; por lo tanto &lt;strong&gt;NO&lt;/strong&gt; se trata de diseño&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web 2.0 NO&lt;/strong&gt; es &lt;em&gt;Orkut&lt;/em&gt;, &lt;em&gt;Facebook&lt;/em&gt;, &lt;em&gt;MySpace&lt;/em&gt;, &lt;em&gt;MSN&lt;/em&gt; y demases. Medios sociales han existido desde las &lt;em&gt;BBS&lt;/em&gt; donde se compartían archivos; &lt;em&gt;ICQ&lt;/em&gt;, &lt;em&gt;IRC&lt;/em&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este término fue acuñado por &lt;strong&gt;Tim O’Reilly&lt;/strong&gt; y su equipo sólo para denonimar al conjunto de charlas (&lt;a href=&#34;http://www.web2con.com/&#34; title=&#34;Enlace externo a &amp;quot;Web 2.0 Summit&amp;quot;&#34; target=&#34;_blank&#34;&gt;Web 2.0 Conference&lt;/a&gt;) que estaban dando a inicios del 2004; por lo tanto se ha concluído que es un término meramente comercial para fundar la web, para ayudar a que la internet fuera nuevamente rentable luego del burbujazo de las .com del 2001. Pero quiero ir más allá de eso. Me gustaría mostrar y explicar el fundamento real de la era anterior, la denominada &lt;strong&gt;Web 1.0&lt;/strong&gt; y la en superación, &lt;strong&gt;Web 2.0&lt;/strong&gt; para una pronta &lt;strong&gt;Web 3.0.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;es-todo-sobre-informacioacuten&#34;&gt;Es todo sobre información&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Compartir información, aumentar el conocimiento a través del colectivismo, agregar valor singular mediante acciones comunitarias. Eso resume lo que significa realmente &lt;strong&gt;Web 2.0&lt;/strong&gt;. Se trata de aumentar el conocimiento, el valor real de la información a través de lo que cada uno de nosotros, usuarios, podemos aportar.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Es el trabajo que se ha hecho con &lt;strong&gt;Wikipedia&lt;/strong&gt;, la controvertida enciclopedia más completa y actualizada en la historia de la humanidad. Es lo que cada uno de los usuarios aportan para aumentar esta información, mediante la experticia de cada uno de ellos.&lt;/p&gt;
&lt;p&gt;Es lo que se hace con &lt;strong&gt;del.icio.us&lt;/strong&gt;, donde cada uno aporta lo que le interesa mediante &lt;em&gt;links&lt;/em&gt; y se comparte a través de las etiquetas (&lt;em&gt;tags&lt;/em&gt;)que se agregan a cada una de ellas. Ya no tienes tus &lt;em&gt;bookmarks&lt;/em&gt; para tí sólo en tu &lt;em&gt;browser&lt;/em&gt;; ahora los compartes para aumentar el conocimiento colectivo a través de tus intereses.&lt;/p&gt;
&lt;p&gt;Son los comentarios de los &lt;em&gt;weblogs&lt;/em&gt;, donde se construyen contenidos mucho más interesantes a partir de las opiniones de los lectores (muchas veces me entretengo más leyendo los comentarios que los propios artículos).&lt;/p&gt;
&lt;p&gt;Es dejar que la web la construya el usuario, y no el editor frívolo detrás de una pantalla y que mediante el teclado ingresa texto que es inequívoco e irrestricto, lo que sería una definición simplificada de &lt;strong&gt;Web 1.0&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Ya por el otro lado, tenemos la hipotética &lt;strong&gt;Web 3.0&lt;/strong&gt;, ó &lt;strong&gt;Web Semántica&lt;/strong&gt;, donde la información es procesada mediante metadatos por máquinas (&lt;em&gt;webservices&lt;/em&gt;) que entienden y satisfacen los requerimientos de los usuarios y de otras máquinas que usan contenido web; deriva de la visión romántica de &lt;strong&gt;Tim Berners-Lee&lt;/strong&gt; de una web universal de intercambio de información, datos y conocimiento. Pero nuevamente, son ideales que poco a poco van tomando forma.&lt;/p&gt;
&lt;p&gt;Por supuesto que el tema da para mucho más, pero con esto dejo zanjado las ideas que se están malinterpretando en el medio. Finalmente cada uno es quien los maneja como quiere, pero cada uno también es responsable de lo que crea. Y todos sabemos lo que sucede cuándo se especula mucho sin argumentos que lo fundamenten… los cimientos terminan por ceder.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://radar.oreilly.com/archives/2005/08/not-20.html&#34; title=&#34;Enlace externo a &amp;quot;Not 2.0?&amp;quot;&#34; target=&#34;_blank&#34;&gt;Not 2.0?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html&#34; title=&#34;Enlace externo a &amp;quot;What Is Web 2.0&amp;quot;&#34; target=&#34;_blank&#34;&gt;What Is Web 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Semantic_Web&#34; title=&#34;Enlace externo a &amp;quot;Semantic Web&amp;quot;&#34; target=&#34;_blank&#34;&gt;Semantic Web&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/category/ajax/&#34;&gt;http://www.csslab.cl/category/ajax/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Articulos para categoria AJAX&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Tip Precoz 4: input type=»search»</title>
      <link>https://csslab.cl/2009/03/06/tip-precoz-4-input-typesearch/</link>
      <pubDate>Fri, 06 Mar 2009 22:59:46 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/03/06/tip-precoz-4-input-typesearch/</guid>
      <description>Este tip es bastante específico para usuarios del browser Safari; desde su versión 2, Apple incorporó un ‘envoltorio’ que reemplaza los  que tengan como atributo type=&amp;ldquo;search&amp;rdquo;, cambiando el campo de  normal que conocemos, cuadrado con una sombra interior, por el elegante que tiene Apple dentro de su interfaz Mac OSX. Funciona en Safari tanto para Mac como para Windows; en otros browsers degrada graciosamente con el input normal que esperamos:</description>
      <content>&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/03/input.gif&#34; alt=&#34;input type=&amp;quot;search&amp;quot;&#34; width=&#34;174&#34; height=&#34;40&#34; align=&#34;right&#34; style=&#34;padding: 5px;&#34; /&gt;
&lt;p&gt;Este tip es bastante específico para usuarios del &lt;em&gt;browser&lt;/em&gt; &lt;strong&gt;Safari&lt;/strong&gt;; desde su versión 2, &lt;strong&gt;Apple&lt;/strong&gt; incorporó un &lt;em&gt;‘envoltorio’&lt;/em&gt; que reemplaza los &lt;strong&gt;&lt;input /&gt;&lt;/strong&gt; que tengan como atributo &lt;strong&gt;type=&amp;ldquo;search&amp;rdquo;&lt;/strong&gt;, cambiando el campo de &lt;strong&gt;&lt;input /&gt;&lt;/strong&gt; normal que conocemos, cuadrado con una sombra interior, por el elegante que tiene &lt;strong&gt;Apple&lt;/strong&gt; dentro de su interfaz &lt;strong&gt;Mac OSX&lt;/strong&gt;. Funciona en &lt;strong&gt;Safari&lt;/strong&gt; tanto para &lt;strong&gt;Mac&lt;/strong&gt; como para &lt;strong&gt;Windows&lt;/strong&gt;; en otros &lt;em&gt;browsers&lt;/em&gt; degrada graciosamente con el input normal que esperamos:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;input type=&#34;search&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Como este nuevo valor es arbitrario no valida por la &lt;strong&gt;W3C&lt;/strong&gt;, pero no deja de ser interesante.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/input_search.html&#34;&gt;http://www.csslab.cl/ejemplos/input_search.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;input type=search&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Tip Precoz 3: RGBa</title>
      <link>https://csslab.cl/2009/02/26/tip-precoz-3-rgba/</link>
      <pubDate>Thu, 26 Feb 2009 18:34:07 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/02/26/tip-precoz-3-rgba/</guid>
      <description>&lt;p&gt;Como debes saber, existe más de una manera de declarar colores en &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nombres&lt;/strong&gt; (&lt;em&gt;websafe&lt;/em&gt;): por 17 colores en inglés : &lt;em&gt;aqua&lt;/em&gt;, &lt;em&gt;black&lt;/em&gt;, &lt;em&gt;blue&lt;/em&gt;, &lt;em&gt;fuchsia&lt;/em&gt;, &lt;em&gt;gray&lt;/em&gt;, &lt;em&gt;green&lt;/em&gt;, &lt;em&gt;lime&lt;/em&gt;, &lt;em&gt;maroon&lt;/em&gt;, &lt;em&gt;navy&lt;/em&gt;, &lt;em&gt;olive&lt;/em&gt;, &lt;em&gt;orange&lt;/em&gt;, &lt;em&gt;purple&lt;/em&gt;, &lt;em&gt;red&lt;/em&gt;, &lt;em&gt;silver&lt;/em&gt;, &lt;em&gt;teal&lt;/em&gt;, &lt;em&gt;white&lt;/em&gt; y &lt;em&gt;yellow&lt;/em&gt; (actualmente los &lt;em&gt;browsers&lt;/em&gt; modernos soportan muchos más).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sistema&lt;/strong&gt; (no lo recomiendo): por colores del sistema operativo que esté utilizando el usuario del sitio: &lt;em&gt;ActiveBorder&lt;/em&gt;, &lt;em&gt;AppWorkspace&lt;/em&gt;, &lt;em&gt;Background&lt;/em&gt;, &lt;em&gt;ButtonFace&lt;/em&gt;, &lt;em&gt;ButtonHighlight&lt;/em&gt;, &lt;em&gt;ButtonShadow&lt;/em&gt;, &lt;em&gt;ButtonText&lt;/em&gt;, &lt;em&gt;HighlightText&lt;/em&gt;, &lt;em&gt;InactiveBorder&lt;/em&gt;, &lt;em&gt;InfoBackground&lt;/em&gt;, &lt;em&gt;InfoText&lt;/em&gt;, &lt;em&gt;Menu&lt;/em&gt;, &lt;em&gt;MenuText&lt;/em&gt;, &lt;em&gt;Scrollbar&lt;/em&gt;, &lt;em&gt;Window&lt;/em&gt;, &lt;em&gt;WindowFrame&lt;/em&gt; y &lt;em&gt;WindowText&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RGB Hexadecimal&lt;/strong&gt;: quizás el más utilizado, en el cual cada color se mezcla según 16 símbolos (de 0 a 9 y de la A a la F); por ejemplo el rojo es: &lt;strong&gt;#FF0000&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RGB Decimal&lt;/strong&gt;: se indica qué cantidad de &lt;strong&gt;R&lt;/strong&gt;ojo, &lt;strong&gt;V&lt;/strong&gt;erde y &lt;strong&gt;A&lt;/strong&gt;zul se debe mezclar en una escala de 0 a 256 tonos cada uno; en este caso el rojo seria &lt;strong&gt;rgb(255,0,0)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RGB Porcentual&lt;/strong&gt; (poco preciso): otra forma de expresar colores en &lt;strong&gt;RGB&lt;/strong&gt; pero en forma porcentual; rojo es &lt;strong&gt;rgb(100%,0%,0%)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pero con &lt;strong&gt;CSS3&lt;/strong&gt; existe una nueva e interesante manera:&lt;/p&gt;</description>
      <content>&lt;p&gt;Como debes saber, existe más de una manera de declarar colores en &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nombres&lt;/strong&gt; (&lt;em&gt;websafe&lt;/em&gt;): por 17 colores en inglés : &lt;em&gt;aqua&lt;/em&gt;, &lt;em&gt;black&lt;/em&gt;, &lt;em&gt;blue&lt;/em&gt;, &lt;em&gt;fuchsia&lt;/em&gt;, &lt;em&gt;gray&lt;/em&gt;, &lt;em&gt;green&lt;/em&gt;, &lt;em&gt;lime&lt;/em&gt;, &lt;em&gt;maroon&lt;/em&gt;, &lt;em&gt;navy&lt;/em&gt;, &lt;em&gt;olive&lt;/em&gt;, &lt;em&gt;orange&lt;/em&gt;, &lt;em&gt;purple&lt;/em&gt;, &lt;em&gt;red&lt;/em&gt;, &lt;em&gt;silver&lt;/em&gt;, &lt;em&gt;teal&lt;/em&gt;, &lt;em&gt;white&lt;/em&gt; y &lt;em&gt;yellow&lt;/em&gt; (actualmente los &lt;em&gt;browsers&lt;/em&gt; modernos soportan muchos más).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sistema&lt;/strong&gt; (no lo recomiendo): por colores del sistema operativo que esté utilizando el usuario del sitio: &lt;em&gt;ActiveBorder&lt;/em&gt;, &lt;em&gt;AppWorkspace&lt;/em&gt;, &lt;em&gt;Background&lt;/em&gt;, &lt;em&gt;ButtonFace&lt;/em&gt;, &lt;em&gt;ButtonHighlight&lt;/em&gt;, &lt;em&gt;ButtonShadow&lt;/em&gt;, &lt;em&gt;ButtonText&lt;/em&gt;, &lt;em&gt;HighlightText&lt;/em&gt;, &lt;em&gt;InactiveBorder&lt;/em&gt;, &lt;em&gt;InfoBackground&lt;/em&gt;, &lt;em&gt;InfoText&lt;/em&gt;, &lt;em&gt;Menu&lt;/em&gt;, &lt;em&gt;MenuText&lt;/em&gt;, &lt;em&gt;Scrollbar&lt;/em&gt;, &lt;em&gt;Window&lt;/em&gt;, &lt;em&gt;WindowFrame&lt;/em&gt; y &lt;em&gt;WindowText&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RGB Hexadecimal&lt;/strong&gt;: quizás el más utilizado, en el cual cada color se mezcla según 16 símbolos (de 0 a 9 y de la A a la F); por ejemplo el rojo es: &lt;strong&gt;#FF0000&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RGB Decimal&lt;/strong&gt;: se indica qué cantidad de &lt;strong&gt;R&lt;/strong&gt;ojo, &lt;strong&gt;V&lt;/strong&gt;erde y &lt;strong&gt;A&lt;/strong&gt;zul se debe mezclar en una escala de 0 a 256 tonos cada uno; en este caso el rojo seria &lt;strong&gt;rgb(255,0,0)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RGB Porcentual&lt;/strong&gt; (poco preciso): otra forma de expresar colores en &lt;strong&gt;RGB&lt;/strong&gt; pero en forma porcentual; rojo es &lt;strong&gt;rgb(100%,0%,0%)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pero con &lt;strong&gt;CSS3&lt;/strong&gt; existe una nueva e interesante manera:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RGBa&lt;/strong&gt;: al igual que en la forma &lt;strong&gt;RGB Decimal&lt;/strong&gt; anterior, se agrega un valor al final: el canal &lt;strong&gt;alpha&lt;/strong&gt; de opacidad, en escala de 0 a 1. Lo interesante de este método es que al contrario de &lt;strong&gt;opacity{}&lt;/strong&gt;, la transparencia la verás sólo al color y no a todo el elemento, por lo tanto esta propiedad no se hereda. Su modo de uso es de la siguiente manera:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;selector {&amp;lt;br /&gt;
   background: rgba(255,0,0,0.3);&amp;lt;br /&gt;
   color: rgba(200,120,60,0.6);&amp;lt;br /&gt;
   border: 3px solid rgba(10,250,70,0.5);&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En el siguiente ejemplo verás la diferencia con una opacidad aplicada mediante &lt;strong&gt;RGBa&lt;/strong&gt; y mediante &lt;strong&gt;opacity{}&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Por supuesto al ser una propiedad &lt;strong&gt;CSS3&lt;/strong&gt;, en estos momentos sólo es soportada por &lt;strong&gt;Safari 3+&lt;/strong&gt; y &lt;strong&gt;Firefox 3&lt;/strong&gt;, pero ya comencé a agregar funcionalidades a los sitios en que sólo son vistos si navegas con estos &lt;em&gt;browsers&lt;/em&gt;; si usas &lt;strong&gt;IE&lt;/strong&gt; no tienes tan buena experiencia visitándolos y es mi manera de convencer al usuario de que se actualice.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/rgba/rgba.html&#34;&gt;http://www.csslab.cl/ejemplos/rgba/rgba.html&lt;/a&gt; &amp;ldquo;Enlace a ejemplo &amp;ldquo;Tip Precoz 3: RBGa&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 29</title>
      <link>https://csslab.cl/2009/02/25/lo-vi-y-me-gusto-29/</link>
      <pubDate>Wed, 25 Feb 2009 14:48:51 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/02/25/lo-vi-y-me-gusto-29/</guid>
      <description>#29 – 25 Febrero 2009</description>
      <content>&lt;p&gt;#29 – 25 Febrero 2009&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.little-catwalk.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/02/little-catwalk.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.xiiivii.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/02/xiiivii.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Mis bookmarklets</title>
      <link>https://csslab.cl/2009/02/20/mis-bookmarklets/</link>
      <pubDate>Fri, 20 Feb 2009 16:12:40 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/02/20/mis-bookmarklets/</guid>
      <description>&lt;p&gt;Los &lt;em&gt;bookmarklets&lt;/em&gt; son pequeñas aplicaciones &lt;strong&gt;Javascript&lt;/strong&gt; contenidas dentro de una &lt;strong&gt;URL&lt;/strong&gt; en una página web, de la siguiente forma:&lt;/p&gt;
&lt;pre class=&#34;codehtml&#34;&gt;&amp;lt;a href=&#34;javascript:function(laQueSea){};&#34;&amp;gt;Bookmarklet La Que Sea&amp;lt;/a&amp;gt;&lt;/pre&gt;
&lt;p&gt;La idea es que sean ejecutada mediante el &lt;strong&gt;click&lt;/strong&gt; del enlace, y lo que usualmente se usa es guardarlos mediante &lt;em&gt;bookmarks&lt;/em&gt; en tu &lt;em&gt;browser&lt;/em&gt;; así puedes tenerlos a mano siempre que los necesites.&lt;/p&gt;
&lt;p&gt;Como están escritas en &lt;strong&gt;Javascript&lt;/strong&gt;, puedes hacer modificaciones a cualquier elemento de &lt;strong&gt;DOM&lt;/strong&gt; dentro de la página: cambiar tamaño de fuentes, colores, extraer datos de la página (&lt;em&gt;links&lt;/em&gt;, imágenes, texto), enviar datos para validación o traducción entre muchas otras cosas.&lt;/p&gt;</description>
      <content>&lt;p&gt;Los &lt;em&gt;bookmarklets&lt;/em&gt; son pequeñas aplicaciones &lt;strong&gt;Javascript&lt;/strong&gt; contenidas dentro de una &lt;strong&gt;URL&lt;/strong&gt; en una página web, de la siguiente forma:&lt;/p&gt;
&lt;pre class=&#34;codehtml&#34;&gt;&amp;lt;a href=&#34;javascript:function(laQueSea){};&#34;&amp;gt;Bookmarklet La Que Sea&amp;lt;/a&amp;gt;&lt;/pre&gt;
&lt;p&gt;La idea es que sean ejecutada mediante el &lt;strong&gt;click&lt;/strong&gt; del enlace, y lo que usualmente se usa es guardarlos mediante &lt;em&gt;bookmarks&lt;/em&gt; en tu &lt;em&gt;browser&lt;/em&gt;; así puedes tenerlos a mano siempre que los necesites.&lt;/p&gt;
&lt;p&gt;Como están escritas en &lt;strong&gt;Javascript&lt;/strong&gt;, puedes hacer modificaciones a cualquier elemento de &lt;strong&gt;DOM&lt;/strong&gt; dentro de la página: cambiar tamaño de fuentes, colores, extraer datos de la página (&lt;em&gt;links&lt;/em&gt;, imágenes, texto), enviar datos para validación o traducción entre muchas otras cosas.&lt;/p&gt;
&lt;p&gt;Personalmente me son bastante útiles al momento de desarrollas mis proyectos web; tengo algunos de frecuente uso y quisiera compartirlos por si ayudan a más de alguno en los excelentes trabajos que seguro hacen. Para utilizarlos, lo mejor es hacer &lt;strong&gt;click&lt;/strong&gt; en el enlace y arrastrarlo a tu barra de &lt;em&gt;Bookmarks&lt;/em&gt; como se ejemplifica en la siguiente imagen:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/02/pasos.gif&#34; alt=&#34;Uso de Bookmarklets&#34; width=&#34;597&#34; height=&#34;554&#34; /&gt; 
&lt;h4 class=&#34;bookmarklet&#34; id=&#34;xray1-smallclick-y-arrastrasmall&#34;&gt;[XRay][1] &lt;small&gt;click y arrastra&lt;/small&gt;&lt;/h4&gt;
&lt;p&gt;Permite visualizar las propiedades &lt;strong&gt;DOM&lt;/strong&gt; del elemento al seleccionarlos: selector, &lt;strong&gt;ID&lt;/strong&gt;, &lt;strong&gt;CLASS&lt;/strong&gt;, herencia y estilos &lt;strong&gt;CSS&lt;/strong&gt; asociados.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/02/xray.jpg&#34; alt=&#34;XRay bookmarklet&#34; width=&#34;572&#34; height=&#34;295&#34; /&gt; 
&lt;h4 class=&#34;bookmarklet&#34; id=&#34;design2-smallclick-y-arrastrasmall&#34;&gt;[Design][2] &lt;small&gt;click y arrastra&lt;/small&gt;&lt;/h4&gt;
&lt;p&gt;Permite visualizar la grilla utilizada en la construcción de la página, medidas y alineamiento entre otras cualidades.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/02/design.gif&#34; alt=&#34;Design bookmarklet&#34; width=&#34;344&#34; height=&#34;207&#34; /&gt; 
&lt;h4 class=&#34;bookmarklet&#34; id=&#34;8002156003-10242157684-128021510245-160021512006-smallclick-y-arrastra-cada-unosmall&#34;&gt;[800×600][3] [1024×768][4] [1280×1024][5] [1600×1200][6] &lt;small&gt;click y arrastra cada uno&lt;/small&gt;&lt;/h4&gt;
&lt;p&gt;Modifica el tamaño de la ventana de tu &lt;em&gt;browser&lt;/em&gt; a alguna de esas medidas estándar.&lt;/p&gt;
&lt;h4 class=&#34;bookmarklet&#34; id=&#34;mri7-smallclick-y-arrastrasmall&#34;&gt;[MRI][7] &lt;small&gt;click y arrastra&lt;/small&gt;&lt;/h4&gt;
&lt;p&gt;Muestra y enmarca cualquier selector que queramos ver de una página web.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/02/mri.jpg&#34; alt=&#34;MRI bookmarklet&#34; width=&#34;439&#34; height=&#34;300&#34; /&gt; 
&lt;h4 class=&#34;bookmarklet&#34; id=&#34;wtframework8-smallclick-y-arrastrasmall&#34;&gt;[WTFramework][8] &lt;small&gt;click y arrastra&lt;/small&gt;&lt;/h4&gt;
&lt;p&gt;Muestra qué &lt;em&gt;framework&lt;/em&gt; de &lt;strong&gt;Javascript&lt;/strong&gt; se está utilizando en el sitio.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2009/02/wtframework.gif&#34; alt=&#34;bookmarkletWTFramework bookmarklet&#34; width=&#34;138&#34; height=&#34;64&#34; /&gt; 
&lt;h4 class=&#34;bookmarklet&#34; id=&#34;microformats9-smallclick-y-arrastrasmall&#34;&gt;[Microformats][9] &lt;small&gt;click y arrastra&lt;/small&gt;&lt;/h4&gt;
&lt;p&gt;Muestra cuáles &lt;strong&gt;microformatos&lt;/strong&gt; están siendo utilizados en determinada página.&lt;/p&gt;
&lt;p&gt;Y por último, mi favorito:&lt;/p&gt;
&lt;h4 class=&#34;bookmarklet&#34; id=&#34;recss10-smallclick-y-arrastrasmall&#34;&gt;[ReCSS][10] &lt;small&gt;click y arrastra&lt;/small&gt;&lt;/h4&gt;
&lt;p&gt;Recarga sólo las hojas de estilos llamadas desde la página, sin tener que volver a cargar todo el &lt;strong&gt;HTML&lt;/strong&gt; para visualizar cambios.&lt;/p&gt;
&lt;p&gt;[1]: javascript:function%20loadScript(scriptURL)%20{%20var%20scriptElem%20=%20document.createElement(&amp;lsquo;SCRIPT&amp;rsquo;);%20scriptElem.setAttribute(&amp;rsquo;language&amp;rsquo;,%20&amp;rsquo;JavaScript&amp;rsquo;);%20scriptElem.setAttribute(&amp;lsquo;src&amp;rsquo;,%20scriptURL);%20document.body.appendChild(scriptElem);}loadScript(&amp;lsquo;&lt;a href=&#34;http://westciv.com/xray/thexray.js&#39;);&#34;&gt;http://westciv.com/xray/thexray.js&#39;);&lt;/a&gt; &amp;ldquo;Enlace a &amp;ldquo;XRay bookmarklet&amp;rdquo;&amp;rdquo;
[2]: javascript:function%20fnStartDesign(sUrl)%20{var%20nScript%20=%20document.createElement(&amp;lsquo;script&amp;rsquo;);nScript.setAttribute(&amp;rsquo;language&amp;rsquo;,&amp;lsquo;JavaScript&amp;rsquo;);nScript.setAttribute(&amp;lsquo;src&amp;rsquo;,sUrl);document.body.appendChild(nScript);}fnStartDesign(&amp;lsquo;&lt;a href=&#34;http://www.sprymedia.co.uk/design/design/media/js/design-loader.js&#39;);&#34;&gt;http://www.sprymedia.co.uk/design/design/media/js/design-loader.js&#39;);&lt;/a&gt; &amp;ldquo;Enlace a &amp;ldquo;Design bookmarklet&amp;rdquo;&amp;rdquo;
[3]: javascript:void(window.resizeTo(800,600))
[4]: javascript:void(window.resizeTo(1024,768))
[5]: javascript:void(window.resizeTo(1280,1024))
[6]: javascript:void(window.resizeTo(1600,1200))
[7]: javascript:function%20loadScript(scriptURL)%20%7B%20var%20scriptElem%20=%20document.createElement(&amp;lsquo;SCRIPT&amp;rsquo;);%20scriptElem.setAttribute(&amp;rsquo;language&amp;rsquo;,%20&amp;rsquo;JavaScript&amp;rsquo;);%20scriptElem.setAttribute(&amp;lsquo;src&amp;rsquo;,%20scriptURL);%20document.body.appendChild(scriptElem);%7DloadScript(&amp;lsquo;&lt;a href=&#34;http://westciv.com/mri/theMRI.js&#39;);&#34;&gt;http://westciv.com/mri/theMRI.js&#39;);&lt;/a&gt; &amp;ldquo;Enlace a &amp;ldquo;MRI bookmarklet&amp;rdquo;&amp;rdquo;
[8]: javascript:(function(){el=document.getElementById(%22__wtframework%22);if(el){document.body.removeChild(el);return%20}var%20c=document.createElement(%22a%22);c.id=%22__wtframework%22;c.style.opacity=%220.7%22;c.style.filter=%22alpha(opacity=70)%22;c.style.position=%22fixed%22;c.style.zIndex=%229000%22;c.style.top=%2215px%22;c.style.right=%2220px%22;c.style.background=%22#000%22;c.style.styleFloat=%22right%22;c.style.padding=%227px%2010px%22;c.style.color=%22%23fff%22;c.style.border=%22solid%202px%20%23fff%22;c.style.textDecoration=%22none%22;c.style.textAlign=%22left%22;c.style.font=%2212px%20Lucida%20Grande,Helvetica,Tahoma%22;c.style.MozBorderRadius=%225px%22;c.style.WebkitBorderRadius=%225px%22;c.style.WebkitBoxShadow=%220px%200px%2020px%20%23000%22;c.style.MozBoxShadow=%220px%200px%2020px%20%23000%22;c.href=%22javascript:void(0)%22;document.body.appendChild(c);c.onclick=function(){document.body.removeChild(c)};var%20fm=%22Bummer&amp;hellip;%20Try%20checking%20the%20source%20code%22;try{fm=(MooTools?%22MooTools%20(%22+MooTools.version+%22)%22:false)}catch(d){}try{fm=(YAHOO?%22YUI%20(%22+YAHOO.util.Dom.VERSION+%22)%22:false)}catch(d){}try{fm=%22Prototype%20(%22+Prototype.Version+%22)%22}catch(d){}try{fm+=%22%3Cbr/%3E%20Script.aculo.us%20(%22+Scriptaculous.Version+%22)%22}catch(d){}try{fm=(jQuery?%22jQuery%20(%22+jQuery.fn.jquery+%22)%22:false)}catch(d){}try{fm=(dojo?%22Dojo%20Toolkit%20(%22+dojo.version+%22)%22:false)}catch(d){}try{fm=(MochiKit?%22MochiKit%20(%22+MochiKit.MochiKit.VERSION+%22)%22:false)}catch(d){}try{fm=(base2?%22Base2%20(%22+base2.version+%22)%22:false)}catch(d){}c.innerHTML=unescape(fm.toString())})(); &amp;ldquo;Enlace a &amp;ldquo;WTFramework bookmarklet&amp;rdquo;&amp;rdquo;
[9]: javascript:(function(){function%20l(u,i,t,b){var%20d=document;if(!d.getElementById(i)){var%20s=d.createElement(&amp;lsquo;script&amp;rsquo;);s.src=u;s.id=i;d.body.appendChild(s)}s=setInterval(function(){u=0;try{u=t.call()}catch(i){}if(u){clearInterval(s);b.call()}},200)}l(&amp;lsquo;&lt;a href=&#34;http://leftlogic.com/js/microformats.js&#39;,&#39;MF_loader&#39;,function()%7Breturn!!(typeof%20MicroformatsBookmarklet==&#39;function&#39;)%7D,%20function()%7BMicroformatsBookmarklet()%7D)%7D)();&#34;&gt;http://leftlogic.com/js/microformats.js&#39;,&#39;MF_loader&#39;,function(){return!!(typeof%20MicroformatsBookmarklet==&#39;function&#39;)},%20function(){MicroformatsBookmarklet()})})();&lt;/a&gt; &amp;ldquo;Enlace a &amp;ldquo;Microformats bookmarklet&amp;rdquo;&amp;rdquo;
[10]: javascript:void(function(){var%20i,a,s;a=document.getElementsByTagName(&amp;rsquo;link&amp;rsquo;);for(i=0;i%3Ca.length;i++){s=a[i];if(s.rel.toLowerCase().indexOf(&amp;lsquo;stylesheet&amp;rsquo;)%3E=0&amp;amp;&amp;amp;s.href)%20{var%20h=s.href.replace(/(&amp;amp;|%5C?)forceReload=\d+/,&amp;rsquo;&amp;rsquo;);s.href=h+(h.indexOf(&amp;rsquo;?&amp;rsquo;)%3E=0?&amp;rsquo;&amp;amp;&amp;rsquo;:&amp;rsquo;?&amp;rsquo;)+&amp;lsquo;forceReload=&amp;rsquo;+(new%20Date().valueOf())}}})(); &amp;ldquo;Enlace a &amp;ldquo;ReCSS bookmarklet&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Las 10 leyes de Jorge para el diseño y desarrollo web</title>
      <link>https://csslab.cl/2009/02/12/las-10-leyes-de-jorge-para-el-diseno-y-desarrollo-web/</link>
      <pubDate>Thu, 12 Feb 2009 21:54:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/02/12/las-10-leyes-de-jorge-para-el-diseno-y-desarrollo-web/</guid>
      <description>No desarrolles para la mayor&amp;iacute;a; no siempre tienen la raz&amp;oacute;n y usualmente no saben lo que quieren.  &amp;lt;p&amp;gt; Aunque 60% de los usuarios utilicen&amp;lt;strong&amp;gt; Internet Explorer 6&amp;lt;/strong&amp;gt;, eso no indica que debemos desarrollar aplicaciones que funcionen s&amp;amp;oacute;lo en &amp;lt;strong&amp;gt;IE6&amp;lt;/strong&amp;gt;; si todos saltan a un pozo &amp;amp;iquest;t&amp;amp;uacute; te lanzar&amp;amp;iacute;as tambi&amp;amp;eacute;n? &amp;lt;/p&amp;gt;     Usa siempre un reseter CSS.  &amp;lt;p&amp;gt; Si tienes de 1 a 5 p&amp;amp;aacute;ginas simples y con formularios simples, basta con el reseter universal: &amp;lt;/p&amp;gt; &amp;lt;pre&amp;gt;&amp;lt;code class=&amp;quot;language-css&amp;quot;&amp;gt;* {&amp;amp;lt;br /&amp;gt; margin: 0;&amp;amp;lt;br /&amp;gt; padding: 0;&amp;amp;lt;br /&amp;gt;  }</description>
      <content>&lt;ol id=&#34;las10leyes&#34;&gt;
  &lt;li&gt;
    &lt;h5&gt;
      No desarrolles para la mayor&amp;iacute;a; no siempre tienen la raz&amp;oacute;n y usualmente no saben lo que quieren.
    &lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;
  Aunque 60% de los usuarios utilicen&amp;lt;strong&amp;gt; Internet Explorer 6&amp;lt;/strong&amp;gt;, eso no indica que debemos desarrollar aplicaciones que funcionen s&amp;amp;oacute;lo en &amp;lt;strong&amp;gt;IE6&amp;lt;/strong&amp;gt;; si todos saltan a un pozo &amp;amp;iquest;t&amp;amp;uacute; te lanzar&amp;amp;iacute;as tambi&amp;amp;eacute;n?
&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;h5&gt;
      Usa siempre un reseter CSS.
    &lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;
  Si tienes de 1 a 5 p&amp;amp;aacute;ginas simples y con formularios simples, basta con el reseter universal:
&amp;lt;/p&amp;gt;

&amp;lt;pre&amp;gt;&amp;lt;code class=&amp;quot;language-css&amp;quot;&amp;gt;* {&amp;amp;lt;br /&amp;gt;
margin: 0;&amp;amp;lt;br /&amp;gt;
padding: 0;&amp;amp;lt;br /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;
  Pero si tu proyecto es mayor, utiliza uno &amp;lt;a href=&amp;quot;http://www.csslab.cl/2007/10/18/css-reseter/&amp;quot; title=&amp;quot;Enlace en CSSLab a &amp;amp;quot;CSS Reseter&amp;amp;quot;&amp;quot;&amp;gt;m&amp;amp;aacute;s completo&amp;lt;/a&amp;gt;.
&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2009/02/tatoo.jpg&#34; alt=&#34;Menos es m&amp;aacute;s tatuado en mi frente&#34; align=&#34;right&#34; /&gt;&lt;/p&gt; &lt;h5&gt;
      Mant&amp;eacute;n siempre la simplicidad en todo &amp;aacute;mbito; tanto del dise&amp;ntilde;o como del c&amp;oacute;digo fuente.
    &lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;
  Tat&amp;amp;uacute;atelo: &amp;lt;strong&amp;gt;Menos es m&amp;amp;aacute;s&amp;lt;/strong&amp;gt; y aprovecha de medicarte contra la &amp;lt;em&amp;gt;divitis&amp;lt;/em&amp;gt; y la &amp;lt;em&amp;gt;classitis&amp;lt;/em&amp;gt;, y toda clase de abuso reiterativo innecesario en el codigo fuente. Estudia bien las &amp;lt;a href=&amp;quot;http://www.csslab.cl/2007/12/06/la-descendencia-del-css/&amp;quot; title=&amp;quot;Enlace en CSSLab a &amp;amp;quot;La descendencia del CSS&amp;amp;quot;&amp;quot;&amp;gt;herencias de estilos&amp;lt;/a&amp;gt;, la &amp;lt;a href=&amp;quot;http://www.csslab.cl/2008/01/09/siendo-especfico/&amp;quot; title=&amp;quot;Enlace en CSSLab a &amp;amp;quot;Siendo espec&amp;amp;iacute;fico&amp;amp;quot;&amp;quot;&amp;gt;especificidad&amp;lt;/a&amp;gt; y &amp;lt;a href=&amp;quot;http://www.csslab.cl/2008/09/10/maniatico-del-codigo/&amp;quot; title=&amp;quot;Enlace en CSSLab a &amp;amp;quot;Mani&amp;amp;aacute;tico del código&amp;amp;quot;&amp;quot;&amp;gt;c&amp;amp;oacute;mo ordenar tu c&amp;amp;oacute;digo fuente&amp;lt;/a&amp;gt;.
&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;h5&gt;
      Dise&amp;ntilde;a siempre pensando en el usuario y que &amp;eacute;ste tenga la mejor experiencia posible dentro de tu proyecto web.
    &lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;
  &amp;lt;cite&amp;gt;&amp;quot;Me gusta dise&amp;amp;ntilde;ar experiencias, provocar emociones y quiz&amp;amp;aacute;s cambiar comportamientos al momento de utilizar la web; que &amp;amp;eacute;sta no sea una herramienta, sino una verdadera experiencia (como surfear para un surfista, esquiar para un esquiador, cocinar para un chef&amp;amp;hellip;)&amp;quot;&amp;lt;/cite&amp;gt;&amp;amp;#8211; &amp;lt;a href=&amp;quot;http://www.csslab.cl/2008/11/20/nuestro-verdadero-cliente/&amp;quot; title=&amp;quot;Enlace en CSSLab a &amp;amp;quot;Nuestro verdadero cliente&amp;amp;quot;&amp;quot;&amp;gt;yo mismo&amp;lt;/a&amp;gt;.
&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;h5&gt;
      Siempre separa el contenido y estructura (HTML) del estilo gr&amp;aacute;fico (CSS) y el funcionamiento (Javascript); cada uno en su propio documento.
    &lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;
  Trata de linkear los estilos desde una hoja externa:
&amp;lt;/p&amp;gt;

&amp;lt;pre&amp;gt;&amp;lt;code class=&amp;quot;language-markup&amp;quot;&amp;gt;&amp;amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;style.css&amp;quot; type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot; /&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt; 

&amp;lt;p&amp;gt;
  y los JS:
&amp;lt;/p&amp;gt;

&amp;lt;pre&amp;gt;&amp;lt;code class=&amp;quot;language-markup&amp;quot;&amp;gt;&amp;amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;utils.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;h5&gt;
      Nunca, pero nunca uses una etiqueta vac&amp;iacute;a s&amp;oacute;lo porque no puedes resolverlo de otra manera.
    &lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;
  Si te encuentras entrampado y no hay caso de solucionar tal o cual problema, t&amp;amp;oacute;mate unos minutos de descanso, sal al aire libre por un momento y luego vuelve con la cabeza m&amp;amp;aacute;s fr&amp;amp;iacute;a. Tambi&amp;amp;eacute;n es buen recurso compartirlo con otras personas aver qu&amp;amp;eacute; otros puntos de vista tienen sobre la misma situaci&amp;amp;oacute;n pero &amp;amp;iexcl;no m&amp;amp;aacute;s &amp;lt;strong&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/strong&amp;gt;!
&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;h5&gt;
      No te asustes en hacer un sitio pesado, con im&amp;aacute;genes &lt;em&gt;PNG &lt;/em&gt; en alta calidad y con un elegante &lt;em&gt;preloader&lt;/em&gt; que indique cu&amp;aacute;nto falta para la precarga, pero &amp;iexcl;HAZ QUE VALGA LA PENA!
    &lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;
  Actualmente la velocidad promedio de las conexiones permiten bastantes m&amp;amp;aacute;s lujos que antes. No te reprimas de usar &amp;lt;strong&amp;gt;PNG&amp;amp;#8217;s transparentes&amp;lt;/strong&amp;gt; de m&amp;amp;aacute;s de &amp;lt;strong&amp;gt;100kb&amp;lt;/strong&amp;gt;, pero con tal de que tengan un &amp;lt;a href=&amp;quot;http://www.csslab.cl/2008/05/29/parallax-en-uso-real/&amp;quot; title=&amp;quot;Enlace en CSSLab a &amp;amp;quot;Parallax en uso real&amp;amp;quot;&amp;quot;&amp;gt;real uso pr&amp;amp;aacute;ctico y est&amp;amp;eacute;tico&amp;lt;/a&amp;gt;.
&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;h5&gt;
      Esfu&amp;eacute;rzate para que tu dise&amp;ntilde;o y desarrollo cumpla por lo menos con niveles b&amp;aacute;sicos de usabilidad, accesibilidad y degradabilidad.
    &lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;blockquote&amp;gt;
  &amp;lt;p&amp;gt;
    &amp;lt;strong&amp;gt;Accesibilidad&amp;lt;/strong&amp;gt;: Facilidad con la que algo puede ser usado, visitado o accedido por todos los usuarios. La accesibilidad web indica la capacidad de acceso a la web y sus contenidos por todas las personas, independiente de las limitaciones propias del usuario (discapacidad).
  &amp;lt;/p&amp;gt;
&amp;lt;/blockquote&amp;gt;

&amp;lt;blockquote&amp;gt;
  &amp;lt;p&amp;gt;
    &amp;lt;strong&amp;gt;Usabilidad&amp;lt;/strong&amp;gt;: en palabras de &amp;lt;em&amp;gt;Jakob Nielsen&amp;lt;/em&amp;gt;: &amp;quot;atributo de calidad que mide lo f&amp;amp;aacute;cil de usar una interfaz web&amp;quot;.
  &amp;lt;/p&amp;gt;
&amp;lt;/blockquote&amp;gt;

&amp;lt;blockquote&amp;gt;
  &amp;lt;p&amp;gt;
    &amp;lt;strong&amp;gt;Degradabilidad&amp;lt;/strong&amp;gt;: principio en el cual un desarrollo realizado en determinado tiempo y para determinado medio se comporte de manera similar en ambientes paralelos o menos actualizados, vale decir: tu sitio hermoso y bien construido debiera comportarse similar si un browser no soporta estilos CSS ni Javascript o en un celular, por ejemplo. No se ver&amp;amp;aacute; igual, pero debiera comportarse similar.
  &amp;lt;/p&amp;gt;
&amp;lt;/blockquote&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;h5&gt;
      F&amp;iacute;jate y cuida de los detalles; lo que unos ven como peque&amp;ntilde;eces, para otros son sutilezas que te diferenciar&amp;aacute;n del resto.
    &lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;
  &amp;amp;#8211; qued&amp;amp;oacute; bastante claro creo-
&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;h5&gt;
      Todas las reglas est&amp;aacute;n para ser rotas, menos las 9 anteriores.
    &lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;
  El an&amp;amp;aacute;lisis heur&amp;amp;iacute;stico de &amp;lt;em&amp;gt;Nielsen&amp;lt;/em&amp;gt;, la regla de primera lectura en pantalla, la lectura en &amp;amp;#8216;&amp;lt;em&amp;gt;Z&amp;lt;/em&amp;gt;&amp;amp;#8216;, que el logo debe ir SIEMPRE en el rinc&amp;amp;oacute;n superior derecho del dise&amp;amp;ntilde;o&amp;amp;#8230; &amp;lt;strong&amp;gt;&amp;amp;iexcl;Patra&amp;amp;ntilde;as!&amp;lt;/strong&amp;gt; Debes tener la capacidad de innovar y poder mantener la cautividad y atenci&amp;amp;oacute;n del usuario principalmente mediante el dise&amp;amp;ntilde;o. Si crees que el men&amp;amp;uacute; principal debiera ir a la derecha de la pantalla, dis&amp;amp;eacute;&amp;amp;ntilde;alo para que la atenci&amp;amp;oacute;n del usuario se dirija a ese lado y justif&amp;amp;iacute;calo. Si sigui&amp;amp;eacute;ramos esas reglas siempre, nunca habr&amp;amp;iacute;an innovaciones tales como &amp;lt;a href=&amp;quot;http://www.csslab.cl/category/ajax/&amp;quot; title=&amp;quot;Enlace en CSSLab a &amp;amp;quot;Categor&amp;amp;iacute;a: AJAX&amp;amp;quot;&amp;quot;&amp;gt;AJAX&amp;lt;/a&amp;gt;, &amp;lt;a href=&amp;quot;http://www.csslab.cl/2008/01/30/ventana-modal-solo-con-css/&amp;quot; title=&amp;quot;Enlace en CSSLab a &amp;amp;quot;Ventana modal sólo con CSS&amp;amp;quot;&amp;quot;&amp;gt;ventanas modales&amp;lt;/a&amp;gt;, validaciones de formularios por blur entre otros. &amp;amp;iexcl;Atr&amp;amp;eacute;vanse!
&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ol&gt;</content>
    </item>
    
    <item>
      <title>Videocast 3: creando un plugin para jQuery</title>
      <link>https://csslab.cl/2009/01/28/videocast-3-creando-un-plugin-para-jquery/</link>
      <pubDate>Wed, 28 Jan 2009 19:30:05 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/01/28/videocast-3-creando-un-plugin-para-jquery/</guid>
      <description>&lt;p&gt;Ayer se me acerca un colega de trabajo con algunas preguntas relativas a un proyecto de cómo encontrar una solución a una funcionalidad utilizando &lt;strong&gt;jQuery&lt;/strong&gt;. Papel y lápiz en mano, me puse a explicarle cómo imaginaba que sería, pero después pensé en cómo hacerlo mejor aún, con menos líneas de código y en los posible extensible, vale decir, que su mantención o posterior actualización implique poca o nula modificación.&lt;/p&gt;
&lt;p&gt;Luego del trabajo salí a trotar y &lt;strong&gt;¡ZAZ!&lt;/strong&gt; La solución viene a mi cabeza. De vuelta la puse en práctica y decidí grabarla en un &lt;strong&gt;videocast&lt;/strong&gt;, pero además de esa sencilla solución creí pertinente mostrar cómo a partir de una simple funcionalidad (o compleja, dependiendo de lo que hagan) pueden transformarla en un &lt;em&gt;plugin&lt;/em&gt; configurable a partir de opciones, para &lt;strong&gt;jQuery&lt;/strong&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;Ayer se me acerca un colega de trabajo con algunas preguntas relativas a un proyecto de cómo encontrar una solución a una funcionalidad utilizando &lt;strong&gt;jQuery&lt;/strong&gt;. Papel y lápiz en mano, me puse a explicarle cómo imaginaba que sería, pero después pensé en cómo hacerlo mejor aún, con menos líneas de código y en los posible extensible, vale decir, que su mantención o posterior actualización implique poca o nula modificación.&lt;/p&gt;
&lt;p&gt;Luego del trabajo salí a trotar y &lt;strong&gt;¡ZAZ!&lt;/strong&gt; La solución viene a mi cabeza. De vuelta la puse en práctica y decidí grabarla en un &lt;strong&gt;videocast&lt;/strong&gt;, pero además de esa sencilla solución creí pertinente mostrar cómo a partir de una simple funcionalidad (o compleja, dependiendo de lo que hagan) pueden transformarla en un &lt;em&gt;plugin&lt;/em&gt; configurable a partir de opciones, para &lt;strong&gt;jQuery&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Cuando creé [mi primer plugin][1] tuve bastante dificultad al no encontrar una documentación detallada, y espero con este aporte visual poner al alcance de quienes necesiten material didáctico para sus proyectos web. Hago el llamado también a que puedan compartir sus desarrollos libremente; sólo así podremos mejorar la calidad de los sitios web que vemos día a día. Como lo he hecho [en otras][2] [ocasiones][3], pongo a disposición este mismo sitio para hacer un &lt;em&gt;review&lt;/em&gt; y difundirlos.&lt;/p&gt;
&lt;div class=&#34;video-container&#34;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;[CSSLab.cl: plugin para jQuery 1 – básico][4]&lt;/li&gt;
&lt;li&gt;[CSSLab.cl: plugin para jQuery 2 – &lt;em&gt;plugin&lt;/em&gt;][5]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;http://www.youfeelme.biz&#34; title=&#34;Enlace externo a &amp;quot;youfeelme.biz&amp;quot;&#34; target=&#34;_blank&#34;&gt;Sebastián&lt;/a&gt;, espero haber solucionado tu problema, y feliz cumpleaños.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/12/03/conos-para-mejor-usabilidad/&#34;&gt;http://www.csslab.cl/2007/12/03/conos-para-mejor-usabilidad/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Iconos para mejor usabilidad&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2008/01/28/review-1-origo-css/&#34;&gt;http://www.csslab.cl/2008/01/28/review-1-origo-css/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Review 1: Origo CSS&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2008/08/28/review-5-divit/&#34;&gt;http://www.csslab.cl/2008/08/28/review-5-divit/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Review 5: DIVIT&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://csslab.cl/ejemplos/plugin_jquery/paises_basico.html&#34;&gt;http://csslab.cl/ejemplos/plugin_jquery/paises_basico.html&lt;/a&gt; &amp;ldquo;Enlace para &amp;ldquo;Ejemplo 1&amp;quot;&amp;rdquo;
[5]: &lt;a href=&#34;http://csslab.cl/ejemplos/plugin_jquery/paises_plugin.html&#34;&gt;http://csslab.cl/ejemplos/plugin_jquery/paises_plugin.html&lt;/a&gt; &amp;ldquo;Enlace para &amp;ldquo;Ejemplo 1&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>jQuery sin conflictos</title>
      <link>https://csslab.cl/2009/01/26/jquery-sin-conflictos/</link>
      <pubDate>Mon, 26 Jan 2009 21:02:47 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/01/26/jquery-sin-conflictos/</guid>
      <description>&lt;p&gt;Existen muchos beneficios al usar alguna de las librerías de &lt;strong&gt;javascript&lt;/strong&gt; disponibles hoy en día (cómo han proliferado.. increíble). Facilitan escribir código y uno se concentra en mejores funcionalidades que en tratar de reinterpretar código. Y qúe decir de los efectos que cada vez vienen mejores… una delicia de utilizarlos.&lt;/p&gt;
&lt;p&gt;Cuando uno comienza un proyecto, se suele elegir el mejor lenguaje para su desarrollo y una de las desiciones es elegir el &lt;em&gt;framework JS&lt;/em&gt; con que se trabajará, y casarse con éste. Ahora vengo a conocer que ésta desición no tiene que ser tan drástica, ya que &lt;strong&gt;jQuery&lt;/strong&gt; incluye una funcionalidad que permite que se utilice junto con otras librerías, evitando el conflicto de interpretación entre diferentes formas de escribir &lt;strong&gt;javascript&lt;/strong&gt; que conforma cada &lt;em&gt;framework&lt;/em&gt;; en esta ocasión mostraré los diferentes usos de &lt;strong&gt;noConflict()&lt;/strong&gt;;&lt;/p&gt;</description>
      <content>&lt;p&gt;Existen muchos beneficios al usar alguna de las librerías de &lt;strong&gt;javascript&lt;/strong&gt; disponibles hoy en día (cómo han proliferado.. increíble). Facilitan escribir código y uno se concentra en mejores funcionalidades que en tratar de reinterpretar código. Y qúe decir de los efectos que cada vez vienen mejores… una delicia de utilizarlos.&lt;/p&gt;
&lt;p&gt;Cuando uno comienza un proyecto, se suele elegir el mejor lenguaje para su desarrollo y una de las desiciones es elegir el &lt;em&gt;framework JS&lt;/em&gt; con que se trabajará, y casarse con éste. Ahora vengo a conocer que ésta desición no tiene que ser tan drástica, ya que &lt;strong&gt;jQuery&lt;/strong&gt; incluye una funcionalidad que permite que se utilice junto con otras librerías, evitando el conflicto de interpretación entre diferentes formas de escribir &lt;strong&gt;javascript&lt;/strong&gt; que conforma cada &lt;em&gt;framework&lt;/em&gt;; en esta ocasión mostraré los diferentes usos de &lt;strong&gt;noConflict()&lt;/strong&gt;;&lt;/p&gt;
&lt;p&gt;Supongamos que tenemos un simple efecto de &lt;strong&gt;mostrar/esconder&lt;/strong&gt; el contenido al activar un &lt;strong&gt;link&lt;/strong&gt;, lo que se llama &lt;strong&gt;SlideToggle&lt;/strong&gt;. El &lt;strong&gt;HTML&lt;/strong&gt; sería el siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;a href=&#34;#&#34; class=&#34;boton&#34;&amp;gt;Muestra/Esconde&amp;lt;/a&amp;gt;&amp;lt;br /&gt;
&amp;lt;div class=&#34;caja&#34;&amp;gt;&amp;lt;br /&gt;
     &amp;lt;p&amp;gt;Vivamus auctor leo vel dui...&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt; 
&lt;p&gt;En &lt;strong&gt;Mootools&lt;/strong&gt; el código para hacerlo funcionar se compone de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;window.addEvent(&#39;domready&#39;, function() {&amp;lt;br /&gt;
     new Fx.Slide(&#39;mooMuestra&#39;).hide()&amp;lt;br /&gt;
     $(&#39;mooEsconde&#39;).addEvent(&#39;click&#39;, function(e){&amp;lt;br /&gt;
          e.stop();&amp;lt;br /&gt;
          new Fx.Slide(&#39;mooMuestra&#39;).toggle();&amp;lt;br /&gt;
     });&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo con Mootools][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Ya con &lt;strong&gt;jQuery&lt;/strong&gt;, lo mismo se realiza de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$().ready(function(){&amp;lt;br /&gt;
     $(&#39;#jMuestra&#39;).hide();&amp;lt;br /&gt;
     $(&#39;#jEsconde&#39;).click(function(){&amp;lt;br /&gt;
          $(&#39;#jMuestra&#39;).slideToggle();&amp;lt;br /&gt;
     });&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo con jQuery][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Ahora combinaremos ambos métodos en un mismo archivo, el cual estará linkeando las librerías de &lt;strong&gt;Mootools 1.2.0&lt;/strong&gt; y &lt;strong&gt;jQuery 1.3.1&lt;/strong&gt;, y se realizará &lt;strong&gt;SlideToggle&lt;/strong&gt; cada una con su método. Para eso, se cambiará la manera con el cual &lt;strong&gt;jQuery&lt;/strong&gt; llama a sus selectores (que es una de las principales razones de conflicto; el uso resumido con &lt;strong&gt;$&lt;/strong&gt;). Primero, se linkea el &lt;em&gt;framework&lt;/em&gt; de &lt;strong&gt;jQuery&lt;/strong&gt; y luego el de &lt;strong&gt;Mootools&lt;/strong&gt;. Se escriben los eventos con los cuales se realizan los &lt;strong&gt;SlideToggle&lt;/strong&gt;, pero con un leve cambio en &lt;strong&gt;jQuery&lt;/strong&gt;. En vez de utilizar:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(&#39;selector&#39;).slideToggle();&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;se cambiará a:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;jQuery.noConflict();&amp;lt;br /&gt;
jQuery(&#39;selector&#39;).slideToggle();&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto se repetirá con cada selector en que antes utilizábamos &lt;strong&gt;$&lt;/strong&gt;. Finalmente reciclando el mismo código mostrado anteriormente, quedaría:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;jQuery.noConflict();&amp;lt;br /&gt;
jQuery().ready(function(){&amp;lt;br /&gt;
     jQuery(&#39;#jMuestra&#39;).hide();&amp;lt;br /&gt;
     jQuery(&#39;#jEsconde&#39;).click(function(){&amp;lt;br /&gt;
          jQuery(&#39;#jMuestra&#39;).slideToggle();&amp;lt;br /&gt;
     });&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo integrando jQuery+Mootools][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Otra manera es creando una variable con una nueva manera de escribir &lt;strong&gt;$&lt;/strong&gt;, por ejemplo, &lt;strong&gt;$jQ&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;var $jQ = jQuery.noConflict();&amp;lt;br /&gt;
$jQ().ready(function(){&amp;lt;br /&gt;
     $jQ(&#39;#jMuestra&#39;).hide();&amp;lt;br /&gt;
     $jQ(&#39;#jEsconde&#39;).click(function(){&amp;lt;br /&gt;
          $jQ(&#39;#jMuestra&#39;).slideToggle();&amp;lt;br /&gt;
     });&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 2 integrando jQuery+Mootools][4]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/noConflict/mootools.html&#34;&gt;http://www.csslab.cl/ejemplos/noConflict/mootools.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ver ejemplo con Mootools&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/noConflict/jquery.html&#34;&gt;http://www.csslab.cl/ejemplos/noConflict/jquery.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ver ejemplo con jQuery&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/noConflict/ambos.html&#34;&gt;http://www.csslab.cl/ejemplos/noConflict/ambos.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ver ejemplo integrando jQuery+Mootools&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/noConflict/ambos2.html&#34;&gt;http://www.csslab.cl/ejemplos/noConflict/ambos2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ver ejemplo 2 integrando jQuery+Mootools&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Review 6: En la cabeza de Steve Jobs</title>
      <link>https://csslab.cl/2009/01/16/review-6-en-la-cabeza-de-steve-jobs/</link>
      <pubDate>Fri, 16 Jan 2009 19:15:39 +0000</pubDate>
      
      <guid>https://csslab.cl/2009/01/16/review-6-en-la-cabeza-de-steve-jobs/</guid>
      <description>Durante mis vacaciones me propuse leer este libro que me trajo Papá Noel para Navidad. Al comienzo me entusiasmó el tema ya que como pueden haber notado soy un usuario de Macintosh desde hace muchos años ya, y no me cambiaría de plataforma ni que me pagaran. He leído algo sobre la forma de pensar y de trabajar del actual CEO de Apple, pero en esta ocasión el autor Leander Kahney (blogger de Cult of Mac de Wired) describe muchas anécdotas que envuelven la creación de Apple (y por consiguiente de los computadores personales a finales de los ’70), la contínua búsqueda de la innovación y de la simplicidad de todos sus productos, la cuasi-quiebra de la compañía y de cómo Steve Jobs volvió a Apple tímidamente y con su mentalidad arrolladora logró posicionarla como una de las más importantes en el área tecnológica y de consumo.</description>
      <content>&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2009/01/inside_steves_brain.jpg&#34;  align=&#34;right&#34; style=&#34;padding: 10px;&#34; /&gt;
&lt;p&gt;Durante mis vacaciones me propuse leer este libro que me trajo Papá Noel para Navidad. Al comienzo me entusiasmó el tema ya que como pueden haber notado soy un usuario de &lt;em&gt;Macintosh&lt;/em&gt; desde hace muchos años ya, y no me cambiaría de plataforma ni que me pagaran. He leído algo sobre la forma de pensar y de trabajar del actual &lt;em&gt;CEO&lt;/em&gt; de &lt;em&gt;Apple&lt;/em&gt;, pero en esta ocasión el autor &lt;strong&gt;Leander Kahney&lt;/strong&gt; (&lt;em&gt;blogger&lt;/em&gt; de &lt;em&gt;Cult of Mac&lt;/em&gt; de &lt;em&gt;Wired&lt;/em&gt;) describe muchas anécdotas que envuelven la creación de &lt;em&gt;Apple&lt;/em&gt; (y por consiguiente de los computadores personales a finales de los ’70), la contínua búsqueda de la innovación y de la simplicidad de todos sus productos, la cuasi-quiebra de la compañía y de cómo &lt;em&gt;Steve Jobs&lt;/em&gt; volvió a &lt;em&gt;Apple&lt;/em&gt; tímidamente y con su mentalidad arrolladora logró posicionarla como una de las más importantes en el área tecnológica y de consumo.&lt;/p&gt;
&lt;p&gt;La lectura se pone entretenida luego de comienzo cuando uno trata de entender cómo una persona que ha sido tildada de ególatra, sociópata, genio de los negocios, amante del video, budista zen, pescadariano (vegetariano que come pescados), perfeccionista y visionario ha logrado transformar cuatro grandes indústrias: la de los &lt;em&gt;PC&lt;/em&gt; (con el &lt;em&gt;Macintosh&lt;/em&gt;), de la música (con el &lt;em&gt;iPod&lt;/em&gt; y luego con la &lt;em&gt;iTunes Store&lt;/em&gt;), la de los dispositivos móviles (con la &lt;em&gt;Newton&lt;/em&gt; y luego con el &lt;em&gt;iPhone&lt;/em&gt;) y la de la animación digital (con &lt;em&gt;Pixar&lt;/em&gt;). El autor constantemente cuestiona la personalidad de &lt;em&gt;Jobs&lt;/em&gt;, su carácter y sus manías más íntimas, muchas de las cuales rozan la obsesión. Exigente y narcisista, está siempre buscando detalles que pueden ser mejorados en todos sus productos, sean éstos de &lt;em&gt;hardware&lt;/em&gt; o de &lt;em&gt;software&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Interesante es leer cómo &lt;em&gt;Apple&lt;/em&gt; logra tanto hermetismo en torno a sus productos, hasta segundos antes de su lanzamiento; cómo se ha propiciado en la empresa un ambiente tal que impulsa a sus empleados a entregar más de lo que se les requiere, todo por mantenerla como una de las más innovadoras del mundo.&lt;/p&gt;
&lt;p&gt;Muchas son las lecciones que uno puede tomar de este libro; algunos extractos:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Una de las partes más importantes del proceso de diseño de Apple es la simplificación. La simplicidad de los productos de la compañía viene de remover opciones al consumidor. Para Jobs, menos es siempre más.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Jobs es el grupo de foco de Apple. Una de sus mayores ventajas es que él no es ingeniero. Jobs no tiene entrenamiento formal en ingeniería ó programación. No tiene un MBA. En verdad, no está titulado en nada, ya que dejó la universidad. Jobs no piensa como ingeniero, sino como un consumidor lo que lo hace el usuario perfecto para pruebas de los productos de Apple.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Cuando comienzas a mirar a un problema y crees que es simple, no comprendes cuán complejo realmente es.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Siempre que Steve veía algo nuevo que le daba curiosidad, él la compraba, la desmontaba y trataba de entender cómo funciona.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Con entrevistas a personas cercanas a &lt;em&gt;Steve&lt;/em&gt;, &lt;em&gt;Leander Kahney&lt;/em&gt; no logra sostener muchas de sus fuentes sin antecedentes bibliográficos; aún así es importante entender el proceso por el cual se ha cimentado los fundamentos por los cuales estamos trabajando actualmente. Conocer cómo funciona la mente creativa e innovadora de uno de los hombres más influyentes de nuestra era es un buen argumento para leer &lt;strong&gt;En la cabeza de Steve Jobs.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;PD: Mi copia está en portugués pero lo encontré además en inglés y en castellano.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>option disabled en IE6&#43;</title>
      <link>https://csslab.cl/2008/12/31/option-disabled-en-ie6/</link>
      <pubDate>Wed, 31 Dec 2008 14:09:05 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/12/31/option-disabled-en-ie6/</guid>
      <description>&lt;p&gt;Nuevamente vengo con un error de nuestro querido amigo &lt;strong&gt;IE6&lt;/strong&gt; que también es compartido por &lt;strong&gt;IE7&lt;/strong&gt; y el &lt;em&gt;beta1&lt;/em&gt; de &lt;strong&gt;IE8&lt;/strong&gt; (estos de &lt;strong&gt;Micro$oft&lt;/strong&gt; no aprenden nunca…). Gracias a &lt;a href=&#34;http://www.csslab.cl/2008/12/22/aportando-a-la-inspiracion/#comment-24003&#34;&gt;Rodrigo&lt;/a&gt;, me hizo notar que estos &lt;em&gt;browsers&lt;/em&gt; no interpretan correctamente a &lt;strong&gt;&lt;option&gt;&lt;/strong&gt; de un &lt;strong&gt;&lt;select&gt;&lt;/strong&gt; que contenga el atributo &lt;strong&gt;disabled=&amp;ldquo;disabled&amp;rdquo;&lt;/strong&gt;. Todos los otros navegadores buenos lo hacen perfectamente, pero lamentablemente la gran mayoría de usuarios no saben que lo que usan para navegar apesta (y no tienen culpa tampoco) y lamentablemente tenemos que encontrar soluciones a este y muchos otros problemas del desarrollo web.&lt;/p&gt;
&lt;p&gt;Me puse a indagar por la web y encontré varias discusiones sobre qué solución es mejor que otra, y ninguna fue conclusiva. No hay solución aparente que funcione de igual manera para todos los &lt;em&gt;browsers&lt;/em&gt; y que sea utilizada, por ejemplo, con comentarios condicionales. Básicamente me encontré con 2: una que involucra &lt;strong&gt;HTML&lt;/strong&gt; pero la mejor manera de implementarlo es mediante &lt;strong&gt;Javascript&lt;/strong&gt; y la segunda sencillamente con &lt;strong&gt;Javascript&lt;/strong&gt;. Explicaré ambas a continuación, pero antes el &lt;strong&gt;HTML&lt;/strong&gt; común que sería del tipo:&lt;/p&gt;</description>
      <content>&lt;p&gt;Nuevamente vengo con un error de nuestro querido amigo &lt;strong&gt;IE6&lt;/strong&gt; que también es compartido por &lt;strong&gt;IE7&lt;/strong&gt; y el &lt;em&gt;beta1&lt;/em&gt; de &lt;strong&gt;IE8&lt;/strong&gt; (estos de &lt;strong&gt;Micro$oft&lt;/strong&gt; no aprenden nunca…). Gracias a &lt;a href=&#34;http://www.csslab.cl/2008/12/22/aportando-a-la-inspiracion/#comment-24003&#34;&gt;Rodrigo&lt;/a&gt;, me hizo notar que estos &lt;em&gt;browsers&lt;/em&gt; no interpretan correctamente a &lt;strong&gt;&lt;option&gt;&lt;/strong&gt; de un &lt;strong&gt;&lt;select&gt;&lt;/strong&gt; que contenga el atributo &lt;strong&gt;disabled=&amp;ldquo;disabled&amp;rdquo;&lt;/strong&gt;. Todos los otros navegadores buenos lo hacen perfectamente, pero lamentablemente la gran mayoría de usuarios no saben que lo que usan para navegar apesta (y no tienen culpa tampoco) y lamentablemente tenemos que encontrar soluciones a este y muchos otros problemas del desarrollo web.&lt;/p&gt;
&lt;p&gt;Me puse a indagar por la web y encontré varias discusiones sobre qué solución es mejor que otra, y ninguna fue conclusiva. No hay solución aparente que funcione de igual manera para todos los &lt;em&gt;browsers&lt;/em&gt; y que sea utilizada, por ejemplo, con comentarios condicionales. Básicamente me encontré con 2: una que involucra &lt;strong&gt;HTML&lt;/strong&gt; pero la mejor manera de implementarlo es mediante &lt;strong&gt;Javascript&lt;/strong&gt; y la segunda sencillamente con &lt;strong&gt;Javascript&lt;/strong&gt;. Explicaré ambas a continuación, pero antes el &lt;strong&gt;HTML&lt;/strong&gt; común que sería del tipo:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;select&amp;gt;&amp;lt;br /&gt;
     &amp;lt;option&amp;gt;Primero&amp;lt;/option&amp;gt;&amp;lt;br /&gt;
     &amp;lt;option disabled=&#34;disabled&#34;&amp;gt;Segundo&amp;lt;/option&amp;gt;&amp;lt;br /&gt;
     &amp;lt;option&amp;gt;Tercero&amp;lt;/option&amp;gt;&amp;lt;br /&gt;
&amp;lt;/select&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo (en IE notarán)][2]{.verejemplo}&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/12/disable_entre_browsers.png&#34; alt=&#34;&lt;option disabled=&amp;quot;disabled&amp;quot;&gt; entre browsers&#34; width=&#34;620&#34; height=&#34;207&#34; /&gt; 
&lt;h3 id=&#34;solucioacuten-1&#34;&gt;Solución 1&lt;/h3&gt;
&lt;p&gt;Para que IE interprete la opción &lt;strong&gt;&lt;option disabled=&#34;disabled&#34;&gt;Segundo&lt;/option&gt;&lt;/strong&gt; como deshabilitado, debes cambiar la etiqueta &lt;strong&gt;&lt;option&gt;&lt;/strong&gt; por &lt;strong&gt;&lt;optgroup&gt;&lt;/strong&gt;; el problema es que &lt;strong&gt;&lt;optgroup&gt;&lt;/strong&gt; se compone ligeramente diferente de &lt;strong&gt;&lt;option&gt;&lt;/strong&gt; por lo que el &lt;strong&gt;HTML&lt;/strong&gt; quedaría así:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;select&amp;gt;&amp;lt;br /&gt;
     &amp;lt;option&amp;gt;Primero&amp;lt;/option&amp;gt;&amp;lt;br /&gt;
     &amp;lt;optgroup label=&#34;Segundo&#34;&amp;gt;Segundo&amp;lt;/optgroup&amp;gt;&amp;lt;br /&gt;
     &amp;lt;option&amp;gt;Tercero&amp;lt;/option&amp;gt;&amp;lt;br /&gt;
&amp;lt;/select&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta solución funciona perfecto en todos los &lt;em&gt;browsers&lt;/em&gt;, por lo que puede ser hecho automáticamente mediante &lt;strong&gt;jQuery&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;$(&#39;option:disabled&#39;).each(function(){&amp;lt;br /&gt;
     var texto = $(this).text();&amp;lt;br /&gt;
     $(this).replaceWith(&#34;&amp;lt;optgroup label=&#39;&#34;+texto+&#34;&#39;&amp;gt;&#34;+texto+&#34;&amp;lt;/optgroup&amp;gt;&#34;)&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/12/optgroup_ie6.png&#34; alt=&#34;optgroup funcionando en IE6&#34; width=&#34;111&#34; height=&#34;126&#34; align=&#34;right&#34; /&gt; 
&lt;p&gt;Como el problema es sólo de IE, prefiero encerraro en un &lt;strong&gt;if()&lt;/strong&gt; que detecte el &lt;em&gt;browser&lt;/em&gt; como podrán apreciar en el ejemplo. Además, notarán que &lt;strong&gt;&lt;optgroup&gt;&lt;/strong&gt; tiene una leve diferencia de estilo que &lt;strong&gt;&lt;option disabled=&#34;disabled&#34;&gt;&lt;/strong&gt; pero que se puede subsanar fácilmente mediante &lt;strong&gt;CSS&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;[Ver solución 1 (en IE notarán)][3]{.verejemplo}&lt;/p&gt;
&lt;h3 id=&#34;solucioacuten-2&#34;&gt;Solución 2&lt;/h3&gt;
&lt;p&gt;Esta solución no es una solución en sí sino un parche para el problema: ya que &lt;strong&gt;IE&lt;/strong&gt; no considera el atributo &lt;strong&gt;disabled&lt;/strong&gt;, entonces cada vez que el &lt;strong&gt;&lt;option disabled=&#34;disabled&#34;&gt;&lt;/strong&gt; sea seleccionado por el usuario (tomando en cuenta que todos los otros &lt;em&gt;browsers&lt;/em&gt; no dejarán que sea seleccionado) la selección será automáticamente trasladada al primer &lt;strong&gt;&lt;option&gt;&lt;/strong&gt; del &lt;strong&gt;&lt;select&gt;&lt;/strong&gt;, vale decir del ejemplo &lt;strong&gt;HTML&lt;/strong&gt; si hago click a &lt;strong&gt;&lt;optgroup label=&#34;Segundo&#34;&gt;Segundo&lt;/optgroup&gt;&lt;/strong&gt;, automáticamente seré redireccionado a &lt;strong&gt;&lt;option&gt;Primero&lt;/option&gt;&lt;/strong&gt;. El &lt;strong&gt;JS&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;$(&#39;option:disabled&#39;).css(&#39;color&#39;,&#39;gray&#39;); &amp;lt;br /&gt;
$(&#39;select&#39;).change(function(){&amp;lt;br /&gt;
     checkDisabledOptions(this);&amp;lt;br /&gt;
});&amp;lt;br /&gt;
function checkDisabledOptions(el){&amp;lt;br /&gt;
     if(el.options[el.options.selectedIndex].disabled){&amp;lt;br /&gt;
          el.selectedIndex = 0;&amp;lt;br /&gt;
     }&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta solución es una mezcla entre &lt;strong&gt;jQuery&lt;/strong&gt; y &lt;strong&gt;Javascript&lt;/strong&gt; puro, &lt;a href=&#34;http://web.archive.org/web/20060311014852/http://blogs.katapultmedia.com/jb2/2006/02/ie_bites_option_disabled_doesnt_work.html&#34; title=&#34;Enlace externo a &amp;quot;IE Bites: option disabled doesn&#39;t work&amp;quot;&#34; target=&#34;_blank&#34;&gt;tomada de la mejor implementación&lt;/a&gt; encontrada de entre 20 otras vistas; es la más simple y con menos líneas de código. Además, para esta solución es bueno siempre en el primero item del &lt;strong&gt;&lt;select&gt;&lt;/strong&gt; la opción &lt;strong&gt;&lt;option&gt;Seleccione&lt;/option&gt;&lt;/strong&gt; o cualquiera que sea que no tenga un value válido (&lt;strong&gt;value=&amp;quot;&amp;quot;&lt;/strong&gt;), así aportamos a la accesibilidad y podremos validar ese ítem de formulario.&lt;/p&gt;
&lt;p&gt;[Ver solución 2 (en IE notarán)][4]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Espero &lt;strong&gt;Rodrigo&lt;/strong&gt; te haya servido, y gracias por hacer me ver este tema; me entretuve bastante resolviéndolo.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.gtalbot.org/BrowserBugsSection/MSIE7Bugs/OptionDisabledSupport.html&#34; title=&#34;Enlace externo a &amp;quot;Support for &lt;option disabled&gt; is inexistent in Internet Explorer 6, 7 and 8 beta 1&amp;quot;&#34; target=&#34;_blank&#34;&gt;Support for &lt;option disabled&gt; is inexistent in Internet Explorer 6, 7 and 8 beta 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://web.archive.org/web/20060311014852/http://blogs.katapultmedia.com/jb2/2006/02/ie_bites_option_disabled_doesnt_work.html&#34; title=&#34;Enlace externo a &amp;quot;IE Bites: option disabled doesn&#39;t work&amp;quot;&#34; target=&#34;_blank&#34;&gt;IE Bites: option disabled doesn’t work&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/option_disabled/drama.html&#34;&gt;http://www.csslab.cl/ejemplos/option_disabled/drama.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;HTML ejemplo con &lt;option disabed=&#34;disabled&#34;&gt;&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/option_disabled/option-jQuery_1.html&#34;&gt;http://www.csslab.cl/ejemplos/option_disabled/option-jQuery_1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Solución 1 a &lt;option disabled=&#34;disabled&#34;&gt;&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/option_disabled/option-jQuery_2.html&#34;&gt;http://www.csslab.cl/ejemplos/option_disabled/option-jQuery_2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Solución 2 a &lt;option disabled=&#34;disabled&#34;&gt;&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Floatfix: un nuevo clearfix</title>
      <link>https://csslab.cl/2008/12/01/floatfix-un-nuevo-clearfix/</link>
      <pubDate>Mon, 01 Dec 2008 21:05:26 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/12/01/floatfix-un-nuevo-clearfix/</guid>
      <description>&lt;p&gt;Ya es lunes, llego a revisar mis 600 &lt;strong&gt;RSS&lt;/strong&gt;‘s que me esperan acumulados por el fin de semana y me quedo con un artículo que me llama la atención. Lo leo, lo analizo, lo pongo en práctica y &lt;em&gt;¡Zaz!&lt;/em&gt; Un nuevo paradigma se forma.&lt;/p&gt;
&lt;p&gt;Por todos es conocido y utilizado [Clearfix][1]; luego les comenté sobre [Clearfix Ultimate][2] (bautizado por mí) y que me ha sido de gran utilidad desde entonces. Esta vez, les traigo uno nuevo: &lt;strong&gt;Floatfix&lt;/strong&gt; (nuevamente bautizado así por mí). Con este método, superas el colapso del contenedor a causa de elementos bloque flotantes dentro de él utilizando la propiedad &lt;strong&gt;CSS&lt;/strong&gt;… ¡&lt;strong&gt;float&lt;/strong&gt;!&lt;/p&gt;</description>
      <content>&lt;p&gt;Ya es lunes, llego a revisar mis 600 &lt;strong&gt;RSS&lt;/strong&gt;‘s que me esperan acumulados por el fin de semana y me quedo con un artículo que me llama la atención. Lo leo, lo analizo, lo pongo en práctica y &lt;em&gt;¡Zaz!&lt;/em&gt; Un nuevo paradigma se forma.&lt;/p&gt;
&lt;p&gt;Por todos es conocido y utilizado [Clearfix][1]; luego les comenté sobre [Clearfix Ultimate][2] (bautizado por mí) y que me ha sido de gran utilidad desde entonces. Esta vez, les traigo uno nuevo: &lt;strong&gt;Floatfix&lt;/strong&gt; (nuevamente bautizado así por mí). Con este método, superas el colapso del contenedor a causa de elementos bloque flotantes dentro de él utilizando la propiedad &lt;strong&gt;CSS&lt;/strong&gt;… ¡&lt;strong&gt;float&lt;/strong&gt;!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;¿Float para arreglar otros floats?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Así es, si tu elemento caja que contiene otros elementos que están flotando colapsa, pues simplemente flótalo y todo volverá a la normalidad.&lt;/p&gt;
&lt;p&gt;Volveré a explicar el asunto. Miren en el siguiente ejemplo como &lt;strong&gt;#container&lt;/strong&gt; contiene (valga la redundancia) a 2 elementos que están flotando. Bueno, basta con que sea 1 y ya &lt;strong&gt;#container&lt;/strong&gt; estaría colapsando (no los envuelve).&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 1][3]{.verejemplo}&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;
&lt;/div&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#container {&amp;lt;br /&gt;
     margin: 40px;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
.flout {&amp;lt;br /&gt;
     float: left;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Bueno, si utilizan &lt;strong&gt;.clearfix&lt;/strong&gt; todo volvería a la normalidad; si tienen ancho fijo en el &lt;strong&gt;#container&lt;/strong&gt; y agregan &lt;strong&gt;overflow: hidden&lt;/strong&gt; también todo estaría normal, pero en vez de eso, sólo floten el &lt;strong&gt;#container&lt;/strong&gt; a cualquier lado: &lt;strong&gt;left&lt;/strong&gt; o &lt;strong&gt;right&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 2][4]{.verejemplo}&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#container {&amp;lt;br /&gt;
     margin: 40px;&amp;lt;br /&gt;
     float: left;
}&amp;lt;br /&gt;
.flout {&amp;lt;br /&gt;
     float: left;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Así de simple y de contradictorio. Funciona en todos mis &lt;em&gt;browsers&lt;/em&gt; de pruebas y claro tiene sus pros y contras. Pero depende de cada uno manejar la mejor solución a sus problemas. Este es sólo uno más.&lt;/p&gt;
&lt;h4 id=&#34;link&#34;&gt;Link:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://orderedlist.com/articles/clearing-floats-the-fne-method&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Clearing Floats: The FnE Method&amp;quot;&#34;&gt;Clearing Floats: The FnE Method&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34;&gt;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Flotando en la incertidumbre&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2008/06/09/clearfix-ultimate/&#34;&gt;http://www.csslab.cl/2008/06/09/clearfix-ultimate/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Clearfix Ultimate&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/floatfix/float1.html&#34;&gt;http://www.csslab.cl/ejemplos/floatfix/float1.html&lt;/a&gt; &amp;ldquo;CSSLab.cl: ejemplo 1 de &amp;ldquo;Floatfix&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/floatfix/float2.html&#34;&gt;http://www.csslab.cl/ejemplos/floatfix/float2.html&lt;/a&gt; &amp;ldquo;CSSLab.cl: ejemplo final de &amp;ldquo;Floatfix&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Nuestro verdadero cliente</title>
      <link>https://csslab.cl/2008/11/20/nuestro-verdadero-cliente/</link>
      <pubDate>Thu, 20 Nov 2008 21:01:18 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/11/20/nuestro-verdadero-cliente/</guid>
      <description>&lt;p&gt;Tengo la certeza de que si le pregunto a profesionales que trabajan con y para la web &lt;em&gt;¿Quién es tu cliente?&lt;/em&gt;, el 99.9% de ellos me responderia: &amp;ldquo;&lt;em&gt;La Empresa XXX, Fulano de tal dueño de XYZ&lt;/em&gt;&amp;rdquo; y cosas por el estilo. Pero espero que exista ese 0.1% que responda lo mismo que yo respondería: &amp;ldquo;&lt;strong&gt;&lt;em&gt;el usuario&lt;/em&gt;&lt;/strong&gt;&amp;rdquo;. Piensen esto un poco: Ese sitio web que están haciendo: ¿Es para que su cliente lo vea? ¿O para que los usuarios entren y puedan disfrutar de lo que ahí se ofrece y ojalá aumentar sus ventas o lista de potenciales clientes?&lt;/p&gt;</description>
      <content>&lt;p&gt;Tengo la certeza de que si le pregunto a profesionales que trabajan con y para la web &lt;em&gt;¿Quién es tu cliente?&lt;/em&gt;, el 99.9% de ellos me responderia: &amp;ldquo;&lt;em&gt;La Empresa XXX, Fulano de tal dueño de XYZ&lt;/em&gt;&amp;rdquo; y cosas por el estilo. Pero espero que exista ese 0.1% que responda lo mismo que yo respondería: &amp;ldquo;&lt;strong&gt;&lt;em&gt;el usuario&lt;/em&gt;&lt;/strong&gt;&amp;rdquo;. Piensen esto un poco: Ese sitio web que están haciendo: ¿Es para que su cliente lo vea? ¿O para que los usuarios entren y puedan disfrutar de lo que ahí se ofrece y ojalá aumentar sus ventas o lista de potenciales clientes?&lt;/p&gt;
&lt;p&gt;Mi principal preocupación al momento de gestar y planificar un proyecto web, es cómo éste afectará al usuario. Así logro definir qué elementos tendrá, qué tecnología y lenguajes aplicaré, etc. No me refiero a hacer un estudio de qué tipo de usuarios navegarán, o una estadística de qué plataformas y resoluciones de pantalla utilizan; me refiero a sentarme como usuario e imaginarme cómo sería su experiencia a través de esa web. Ponerme en su lugar y darme cuenta si realmente vale la pena utilizar alguna [ventana modal][1], o validación de formularios con &lt;strong&gt;:focus&lt;/strong&gt;, [menú con tabs][2], [2 ó 3 columnas][3], etc. Todo eso influye en cómo se ordenará y finalmente entregará la información a quien la desee.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/11/user.jpg&#34; alt=&#34;It&amp;#039;s the user, stupid!&#34; title=&#34;It&amp;#039;s the user, stupid!&#34; width=&#34;144&#34; height=&#34;172&#34; align=&#34;left&#34; style=&#34;float:left;margin:10px 10px 10px 0;&#34; /&gt; 
&lt;blockquote&gt;
&lt;p&gt;Se define como &lt;strong&gt;experiencia de usuario&lt;/strong&gt; (&lt;strong&gt;UX&lt;/strong&gt;) a la experiencia que ha tenido una persona como resultado de su interacción con un producto ó servicio en particular, su entrega y relacionados de acuerdo a su diseño. En este campo convergen oficios como el diseño, los negocios y la psicología.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Muchas veces me han preguntado: &amp;ldquo;&lt;em&gt;Jorge, ¿Qué haces? ¿En qué trabajas?&lt;/em&gt;&amp;rdquo;. Bueno, mi respuesta -y la de más de algunos que recorren &lt;strong&gt;CSSLab&lt;/strong&gt;, creo- es &amp;ldquo;&lt;em&gt;Soy diseñador gráfico pero frustrado; ya no diseño, sino que desarrollo&lt;/em&gt;&amp;rdquo;. Pensando, tampoco desarrollo mucho; más que nada defino y construyo elementos de interacción directa con el usuario, lo que se suele denominar en la era digital &amp;ldquo;&lt;em&gt;Desarrollo Front-End&lt;/em&gt;&amp;rdquo;. Así, me denomino un &amp;ldquo;&lt;strong&gt;Diseñador de Interacción&lt;/strong&gt;, lo que en muchos países es un oficio muy común pero aún no es conocido y reconocido por estas latitudes que buscamos innovar. Me gusta diseñar experiencias, provocar emociones y quizás cambiar comportamientos al momento de utilizar la web; que ésta no sea una herramienta, sino una verdadera experiencia (como surfear para un surfista, esquiar para un esquiador, cocinar para un chef… entienden a lo que voy). Así, con todo ese tema primero definido, pongo manos al &lt;strong&gt;Photoshop&lt;/strong&gt; y a diseñar, pero siempre teniendo claro los objetivos finales de cada elemento con los que el usuario interactuará.&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;Diseño UX&lt;/strong&gt; &lt;em&gt;(de Experiencia de Usuario)&lt;/em&gt; incluye sub-oficios, los que se desprenden del sistema particular de interacción que se proveerá. Algunos de estos son:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/11/experiencia_caja.png&#34; alt=&#34;experiencia de usuario, UX&#34; title=&#34;experiencia de usuario, UX&#34; width=&#34;250&#34; height=&#34;250&#34; align=&#34;right&#34; /&gt; 
&lt;ul&gt;
&lt;li&gt;Mapas de Navegación y Mapas de Flujo (&lt;strong&gt;AI&lt;/strong&gt;, Arquitectura de la Información)&lt;/li&gt;
&lt;li&gt;Comportamiento de Usuario&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Wireframes&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Prototipado (para simulación de interacción)&lt;/li&gt;
&lt;li&gt;Especificaciones (descripción del comportamiento)&lt;/li&gt;
&lt;li&gt;Bocetos visuales&lt;/li&gt;
&lt;li&gt;Usabilidad&lt;/li&gt;
&lt;li&gt;Accesibilidad&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEO&lt;/strong&gt; (&lt;em&gt;Search Engine Optimization&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este &lt;strong&gt;Diseño UX&lt;/strong&gt; frecuentemente define una secuencia de interacciones entre un usuario y un sistema desarrollado para, en una primera instancia, dar soporte a necesidades u objetivos, y luego satisfacer los requerimientos del sistema y los objetivos para los cuales fue creado.&lt;/p&gt;
&lt;p&gt;¿Y para qué tanto?- se preguntarán. Bueno, tiene sus beneficios, claro (caso contrario no perdería tanto tiempo especializándome en el tema):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Se reducen los elementos que excesivamente distraen al usuario de sus necesidades en el sitio web.&lt;/li&gt;
&lt;li&gt;Aumenta considerablemente la usabilidad del sistema.&lt;/li&gt;
&lt;li&gt;Se definen mejores estándares de diseño y desarrollo, y se automatizan tareas.&lt;/li&gt;
&lt;li&gt;Incorpora elementos de negocios y marketing que atraen y fidelizan a más usuarios.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los invito a estudiar y profundizar más sus conocimientos; sólo así entregaremos mayor calidad y podremos aumentar el valor de nuestro trabajo, y aumentar nuestra lista de clientes, claro.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2008/01/30/ventana-modal-solo-con-css/&#34;&gt;http://www.csslab.cl/2008/01/30/ventana-modal-solo-con-css/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ventana modal sólo con CSS&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2008/10/23/menu-con-tabs-con-css-jquery-y-mootools/&#34;&gt;http://www.csslab.cl/2008/10/23/menu-con-tabs-con-css-jquery-y-mootools/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Menú con tabs con CSS, jQuery y Mootools&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2005/11/04/layout-basico-3-columnas/&#34;&gt;http://www.csslab.cl/2005/11/04/layout-basico-3-columnas/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Layout básico - 3 columnas&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Podcast 03</title>
      <link>https://csslab.cl/2008/11/17/podcast-03/</link>
      <pubDate>Mon, 17 Nov 2008 11:56:28 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/11/17/podcast-03/</guid>
      <description>&lt;p&gt;Luego de ajetreadas semanas, vuelvo con un nuevo aporte pero de audio. No he tenido tiempo ni cabeza para escribir algún artículo, pero sí desde hace un tiempo tenía algunos pensamientos rodeando mi mente y quería mucho compartirlos con quienes quieran bajar este nuevo &lt;strong&gt;podcast&lt;/strong&gt;, y ojalá aportar sobre el tema.&lt;/p&gt;</description>
      <content>&lt;p&gt;Luego de ajetreadas semanas, vuelvo con un nuevo aporte pero de audio. No he tenido tiempo ni cabeza para escribir algún artículo, pero sí desde hace un tiempo tenía algunos pensamientos rodeando mi mente y quería mucho compartirlos con quienes quieran bajar este nuevo &lt;strong&gt;podcast&lt;/strong&gt;, y ojalá aportar sobre el tema.&lt;/p&gt;
&lt;p&gt;En esta ocasión, el tema es amplio pero único:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Webapps&lt;/em&gt; de todo y para todos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[Bajar Podcast 03 (10.28 min, 9.2mb, .zip)][1]{.bajar}&lt;/p&gt;
&lt;p&gt;Espero sea interesante y que pueda crear opinión y ojalá conciencia colectiva. Pronto seguiré con mis actualizaciones de costumbre. Traté de variar en la música, y esta vez la intro es aporte de la gran banda española &lt;a href=&#34;http://es.wikipedia.org/wiki/S&amp;ocirc;ber&#34; title=&#34;Enlace externo a &amp;quot;S&amp;ocirc;be en Wikipedia.org&amp;quot;&#34; target=&#34;_blank&#34;&gt;Sôber&lt;/a&gt; y las de fondo de &lt;a href=&#34;http://balmorheamusic.com/&#34; title=&#34;Enlace externo a &amp;quot;Balmorhea official site&amp;quot;&#34; target=&#34;_blank&#34;&gt;Balmorhea&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/podcast/podcast03.zip&#34;&gt;http://www.csslab.cl/ejemplos/podcast/podcast03.zip&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Bajar Podcast 03&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>4 años ya…</title>
      <link>https://csslab.cl/2008/11/04/4-anos-ya/</link>
      <pubDate>Wed, 05 Nov 2008 02:47:15 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/11/04/4-anos-ya/</guid>
      <description>&lt;p&gt;Faltando 40 minutos para que se termine el día (&lt;strong&gt;GMT&lt;/strong&gt;-3), he cumplido y nuevamente publico un rediseño del sitio y nos felicitamos junto a &lt;strong&gt;CSSLab&lt;/strong&gt; por cumplir 4 años de vida ya. Han sido muchas las batallas pero siempre semblante, trato de entregar lo mejor de mis conocimientos para siempre ver una mejor web.&lt;/p&gt;</description>
      <content>&lt;p&gt;Faltando 40 minutos para que se termine el día (&lt;strong&gt;GMT&lt;/strong&gt;-3), he cumplido y nuevamente publico un rediseño del sitio y nos felicitamos junto a &lt;strong&gt;CSSLab&lt;/strong&gt; por cumplir 4 años de vida ya. Han sido muchas las batallas pero siempre semblante, trato de entregar lo mejor de mis conocimientos para siempre ver una mejor web.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/11/balloons.png&#34; alt=&#34;Globos cumpleaños&#34; width=&#34;200&#34; height=&#34;218&#34; align=&#34;right&#34; /&gt; 
&lt;p&gt;Algunos datos sin importancia: han sido &lt;strong&gt;196 artículos&lt;/strong&gt; (contando este mismo) y &lt;strong&gt;1.869 comentarios&lt;/strong&gt; (humanos, ya que siempre borro los &lt;em&gt;SPAM&lt;/em&gt;). Mi regularidad es variable; aunque trato de escribir por lo menos 1 artículo por semana, a veces el tiempo no me lo permite y otras pocas veces la inspiracion me hace escribir hasta de más.&lt;/p&gt;
&lt;p&gt;Sobre el rediseño, bueno, es muy subjetivo y como siempre soy yo mismo mi crítico, así que leeré sus aportes sobre éste y otros temas relacionados con la funcionalidad; pero creo que he avanzado prevaleciendo el contenido y la navegación por los diferentes temas dentro del sitio, además de los recursos que he ido adquiriendo, principalmente potenciando [Worx][1] y los [Foros][2].&lt;/p&gt;
&lt;p&gt;Gracias por visitar esta humilde web, que desde un rincon del hiperespacio siempre pretende aportar un grano de arena por el bien del usuario.&lt;/p&gt;
&lt;h5 id=&#34;jorge-epuñan-8211-titiritero-de-csslabcl&#34;&gt;Jorge Epuñan – titiritero de CSSLab.cl&lt;/h5&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/worx/&#34;&gt;http://www.csslab.cl/worx/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;CSSLab Worx&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/foros/&#34;&gt;http://www.csslab.cl/foros/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;CSSLab Foros&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Horror #3</title>
      <link>https://csslab.cl/2008/10/29/horror-3/</link>
      <pubDate>Wed, 29 Oct 2008 19:40:56 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/10/29/horror-3/</guid>
      <description>&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;meta name=&#34;GENERATOR&#34; content=&#34;Namo WebEditor v5.0(Trial)&#34;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Comienzo a leer el &lt;strong&gt;HTML&lt;/strong&gt; y ya me doy cuenta que tendré problemas con el código…&lt;/p&gt;</description>
      <content>&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;meta name=&#34;GENERATOR&#34; content=&#34;Namo WebEditor v5.0(Trial)&#34;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Comienzo a leer el &lt;strong&gt;HTML&lt;/strong&gt; y ya me doy cuenta que tendré problemas con el código…&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;li style=&#34;line-height:100%; margin-top:0; margin-bottom:0;&#34;&amp;gt;&amp;lt;font color=&#34;navy&#34; size=&#34;1&#34; face=&#34;Verdana&#34;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;font color=&#34;navy&#34; size=&#34;1&#34; face=&#34;Verdana&#34;&amp;gt;Lorem ipsum...&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;lt;li style=&#34;line-height:100%; margin-top:0; margin-bottom:0;&#34;&amp;gt;&amp;lt;font color=&#34;navy&#34; size=&#34;1&#34; face=&#34;Verdana&#34;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;font color=&#34;navy&#34; size=&#34;1&#34; face=&#34;Verdana&#34;&amp;gt;Dolor sit...&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/li&amp;gt; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Imagínense… cada elemento de lista tenía los mismos estilos… ¡Y era una tremenda lista!&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;Table border cellspacing=&#34;0&#34; width=&#34;346&#34; bordercolordark=&#34;white&#34; bordercolorlight=&#34;black&#34;&amp;gt;&amp;lt;br /&gt;
  &amp;lt;TR VALIGN=&#34;bottom&#34;&amp;gt;&amp;lt;br /&gt;
  &amp;lt;TD BGCOLOR=&#34;#6699CC&#34; ALIGN=&#34;left&#34; width=&#34;83&#34;&amp;gt;&amp;lt;br /&gt;
&amp;lt;FONT FACE=&#34;Verdana&#34; SIZE=&#34;1&#34; color=&#34;white&#34;&amp;gt;&amp;lt;b&amp;gt;LOREM&amp;lt;/b&amp;gt;&amp;lt;/FONT&amp;gt;&amp;lt;/TD&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y como si no bastara:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;p&amp;gt;&amp;nbsp;&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Malas prácticas que infelizmente abundan… sin más comentarios.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Menú con tabs con CSS, jQuery y Mootools</title>
      <link>https://csslab.cl/2008/10/23/menu-con-tabs-con-css-jquery-y-mootools/</link>
      <pubDate>Thu, 23 Oct 2008 20:27:16 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/10/23/menu-con-tabs-con-css-jquery-y-mootools/</guid>
      <description>&lt;p&gt;Esos menúes tipo &lt;em&gt;tabs&lt;/em&gt; ó con subniveles tanto [horizontales][1] como verticales, son muy útiles al momento de desplegar grandes cantidades de navegación sin ser invasivos con el espacio. Puedes arquitecturar toda la estructura de tu sitio de manera tal que el usuario pueda encontrar fácilmente la información que desee, sólo con ir descubriendo con el &lt;em&gt;mouse&lt;/em&gt; las subsecciones que están contenidas dentro del árbol general de navegación.&lt;/p&gt;</description>
      <content>&lt;p&gt;Esos menúes tipo &lt;em&gt;tabs&lt;/em&gt; ó con subniveles tanto [horizontales][1] como verticales, son muy útiles al momento de desplegar grandes cantidades de navegación sin ser invasivos con el espacio. Puedes arquitecturar toda la estructura de tu sitio de manera tal que el usuario pueda encontrar fácilmente la información que desee, sólo con ir descubriendo con el &lt;em&gt;mouse&lt;/em&gt; las subsecciones que están contenidas dentro del árbol general de navegación.&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Por suerte hacer estos tipos de menúes es bastante fácil: basta con tener claro cómo funcionan los [menúes con listas][2] e ir anidando unas dentro de otras; incluso sólo con &lt;strong&gt;CSS&lt;/strong&gt; es suficiente para hacerla funcionar, pero lamentablemente el peor &lt;em&gt;browser&lt;/em&gt; de la historia universal (&lt;strong&gt;IE6&lt;/strong&gt;) no soporta &lt;em&gt;pseudo-classes&lt;/em&gt; en selectores que no sean links (&lt;strong&gt;&lt;a&gt;&lt;/strong&gt;). Así que lo mejor y que más soporte &lt;em&gt;cross-browser&lt;/em&gt; nos entrega es utilizar &lt;strong&gt;Javascript&lt;/strong&gt; en este proceso. Y qué mejor que utilizar [jQuery][3] ó [Mootools][4], 2 de los &lt;em&gt;frameworks&lt;/em&gt; con los que me gusta jugar.&lt;/p&gt;
&lt;p&gt;En este artículo veremos el proceso para crear un menú con tabs y cómo hacerlo funcionar mediante &lt;strong&gt;CSS&lt;/strong&gt; y con la ayuda de &lt;strong&gt;Javascript&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Como mencionaba, un menú con &lt;em&gt;tabs&lt;/em&gt; se compone básicamente de listas anidadas sobre otras listas. El &lt;strong&gt;HTML&lt;/strong&gt; sería el siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;ul id=&#34;menu&#34;&amp;gt;&amp;lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Uno&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
  &amp;lt;li class=&#34;cabeza&#34;&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Dos&amp;lt;/a&amp;gt;&amp;lt;br /&gt;
     &amp;lt;ul&amp;gt;&amp;lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Dos.Uno&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Dos.Dos&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Dos.Tres&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
     &amp;lt;/ul&amp;gt;&amp;lt;br /&gt;
  &amp;lt;/li&amp;gt;&amp;lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Tres&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
  &amp;lt;li class=&#34;cabeza&#34;&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Cuatro&amp;lt;/a&amp;gt;&amp;lt;br /&gt;
     &amp;lt;ul&amp;gt;&amp;lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Cuatro.Uno&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Cuatro.Dos&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
     &amp;lt;/ul&amp;gt;&amp;lt;br /&gt;
  &amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo del HTML][5]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Si el mundo fuera hermoso y no existiera &lt;strong&gt;IE6&lt;/strong&gt;, nos bastaría con un poco de &lt;strong&gt;CSS&lt;/strong&gt; y [selectores avanzados de atributos][6] para hacerlo funcionar:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;ul {&amp;lt;br /&gt;
  list-style: none;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
  ul li {&amp;lt;br /&gt;
    float: left;&amp;lt;br /&gt;
    width: 100px;&amp;lt;br /&gt;
    text-align: center;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
    li.cabeza&amp;gt;ul {&amp;lt;br /&gt;
      display: none;&amp;lt;br /&gt;
    }&amp;lt;br /&gt;
      li.cabeza:hover&amp;gt;ul {&amp;lt;br /&gt;
        display: block;&amp;lt;br /&gt;
      }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo con CSS][7]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Para mejorar el manejo del despliegue de los subniveles, le coloqué una &lt;strong&gt;class=&amp;ldquo;cabeza&amp;rdquo;&lt;/strong&gt; a cada elemento de lista &lt;strong&gt;(&lt;li&gt;&lt;/strong&gt;) que contenga cada nuevo subnivel. Ahora es más fácil diferenciarlas con &lt;strong&gt;CSS&lt;/strong&gt; ó &lt;strong&gt;Javascript&lt;/strong&gt;, como mostraré a continuación. Primero, con &lt;strong&gt;jQuery&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(document).ready(function(){&amp;lt;br /&gt;
  &amp;lt;span class=&#34;commentjs&#34;&gt;// primero escondemos todos los subniveles&amp;lt;/span&gt;&amp;lt;br /&gt;
  $(&#39;li.cabeza &amp;gt; ul&#39;).hide();&amp;lt;br /&gt;
  &amp;lt;span class=&#34;commentjs&#34;&gt;// luego le agregamos el evento de &amp;lt;em&gt;mouseover&amp;lt;/em&gt; y &amp;lt;em&gt;mouseout&amp;lt;/em&gt; mediante &amp;lt;em&gt;hover&amp;lt;/em&gt; de &amp;lt;em&gt;jQuery&amp;lt;/em&gt;&amp;lt;/span&gt;&amp;lt;br /&gt;
  $(&#39;li.cabeza&#39;).hover(&amp;lt;br /&gt;
    function() {&amp;lt;br /&gt;
      $(&#39;ul&#39;, this).show();&amp;lt;br /&gt;
    },&amp;lt;br /&gt;
    function() {&amp;lt;br /&gt;
      $(&#39;ul&#39;, this).hide();&amp;lt;br /&gt;
  }); &amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo jQuery][8]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Muy simple. Ahora, con &lt;strong&gt;Mootools&lt;/strong&gt; (&lt;strong&gt;1.11&lt;/strong&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;window.addEvent(&#39;domready&#39;, function() { &amp;lt;br /&gt;
  &amp;lt;span class=&#34;commentjs&#34;&gt;// creamos una variable &#39;&amp;lt;em&gt;list&amp;lt;/em&gt;&#39; que ser&amp;aacute; el selector &amp;lt;em&gt;&amp;lt;li&amp;gt;&amp;lt;/em&gt; con &amp;lt;em&gt;class=&#34;cabeza&#34;&amp;lt;/em&gt;, ya que la usaremos m&amp;aacute;s de una vez.&amp;lt;/span&gt;&amp;lt;br /&gt;
  var list = $$(&#39;li.cabeza&#39;); &amp;lt;br /&gt;
  &amp;lt;span class=&#34;commentjs&#34;&gt;// luego escondemos cada &amp;lt;em&gt;&amp;lt;ul&amp;gt;&amp;lt;/em&gt; que est&amp;eacute; contenido dentro de &amp;lt;em&gt;li.cabeza&amp;lt;/em&gt; mediante &amp;lt;em&gt;display: none&amp;lt;/em&gt;&amp;lt;/span&gt;&amp;lt;br /&gt;
  list.getElement(&#39;ul&#39;).setStyle(&#39;display&#39;, &#39;none&#39;);&amp;lt;br /&gt;
  &amp;lt;span class=&#34;commentjs&#34;&gt;// ahora agregamos los eventos de &amp;lt;em&gt;mouseenter&amp;lt;/em&gt; y &amp;lt;em&gt;mouseout&amp;lt;/em&gt; respectivos&amp;lt;/span&gt;&amp;lt;br /&gt;
  list.each(function(el) {&amp;lt;br /&gt;
    el.addEvent(&#39;mouseenter&#39;, function(){&amp;lt;br /&gt;
      $(this).getElement(&#39;ul&#39;).setStyle(&#39;display&#39;, &#39;block&#39;);&amp;lt;br /&gt;
    });&amp;lt;br /&gt;
    el.addEvent(&#39;mouseleave&#39;, function(){&amp;lt;br /&gt;
      $(this).getElement(&#39;ul&#39;).setStyle(&#39;display&#39;, &#39;none&#39;);&amp;lt;br /&gt;
    });&amp;lt;br /&gt;
  }); &amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo Mootools][9]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Finalmente si usas un &lt;em&gt;browser&lt;/em&gt; bueno, cualquier de los 3 métodos funcionará igual; viene de ti implementarlo de la mejor forma para que tus usuarios que aún usen &lt;strong&gt;IE6&lt;/strong&gt; para visitar tu sitio puedan disfrutar de una buena navegación y del contenido que ofrece.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2006/02/20/menu-horizontal-y-algo/&#34;&gt;http://www.csslab.cl/2006/02/20/menu-horizontal-y-algo/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Menú horizontal y algo +&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2007/12/28/videocast-2-menu-con-listas/&#34;&gt;http://www.csslab.cl/2007/12/28/videocast-2-menu-con-listas/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Videocast 2: menú con listas&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/tag/jquery/&#34;&gt;http://www.csslab.cl/tag/jquery/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Tags: jQuery&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/tag/mootools/&#34;&gt;http://www.csslab.cl/tag/mootools/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Tags: Mootools&amp;rdquo;&amp;rdquo;
[5]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/tabs/tabs_html.html&#34;&gt;http://www.csslab.cl/ejemplos/tabs/tabs_html.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Menú con Tabs - HTML&amp;rdquo;&amp;rdquo;
[6]: &lt;a href=&#34;http://www.csslab.cl/2007/06/05/selectores-avanzados-de-atributos/&#34;&gt;http://www.csslab.cl/2007/06/05/selectores-avanzados-de-atributos/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Selectores avanzados de atributos&amp;rdquo;&amp;rdquo;
[7]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/tabs/tabs_css.html&#34;&gt;http://www.csslab.cl/ejemplos/tabs/tabs_css.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Menú con Tabs - CSS&amp;rdquo;&amp;rdquo;
[8]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/tabs/tabs_jquery.html&#34;&gt;http://www.csslab.cl/ejemplos/tabs/tabs_jquery.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Menú con Tabs - jQuery&amp;rdquo;&amp;rdquo;
[9]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/tabs/tabs_mootools.html&#34;&gt;http://www.csslab.cl/ejemplos/tabs/tabs_mootools.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Menú con Tabs - Mootoools&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Útiles herramientas</title>
      <link>https://csslab.cl/2008/10/20/utiles-herramientas/</link>
      <pubDate>Mon, 20 Oct 2008 22:46:32 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/10/20/utiles-herramientas/</guid>
      <description>El diseño y desarrollo web no se trata sólo de conocimientos, técnicas y muchas cartas bajo la manga. También influye el ambiente, la plataforma y las herramientas de desarrollo. Sobre este último punto me gustaría compartir en este artículo, en el cual comparto sobre mi experiencia en el uso de herramientas que mejor se han adaptado a mis necesidades y que me han ayudado a acelerar mi trabajo y principalmente a dejar libre mi creatividad:</description>
      <content>&lt;p&gt;El diseño y desarrollo web no se trata sólo de conocimientos, técnicas y muchas cartas bajo la manga. También influye el ambiente, la plataforma y las herramientas de desarrollo. Sobre este último punto me gustaría compartir en este artículo, en el cual comparto sobre mi experiencia en el uso de herramientas que mejor se han adaptado a mis necesidades y que me han ayudado a acelerar mi trabajo y principalmente a dejar libre mi creatividad:&lt;/p&gt;
&lt;h3 id=&#34;a-hrefhttpmacromatescom-target_blank-titleenlace-externo-a-038quot-textmatequottextmatea&#34;&gt;&lt;a href=&#34;http://macromates.com/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;#038;quot Textmate;&amp;quot;&#34;&gt;Textmate&lt;/a&gt;&lt;/h3&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/10/textmate.png&#34; alt=&#34;Textmate&#34; width=&#34;128&#34; height=&#34;128&#34; style=&#34;float: right; padding: 0 0 10px 10px;&#34; /&gt; 
&lt;p&gt;Tras años de ser esclavo de &lt;strong&gt;Dreamweaver&lt;/strong&gt; desde su versión 1.0 (y confieso haber pasado hasta por &lt;strong&gt;Microsoft Frontpage&lt;/strong&gt;), me rendí ante su potencia en demasía. Era mucho &lt;em&gt;software&lt;/em&gt; y poco el provecho que le sacaba: no necesito &lt;em&gt;templates&lt;/em&gt;, &lt;em&gt;behaviors&lt;/em&gt; y menos aún componentes. Me gusta hacer las cosas a mano y que ningún editor me ensucie el código; sólo así logré sacarme de la cabeza el &lt;em&gt;‘facilismo’&lt;/em&gt; y aprender realmente a escribir código fuente como la gente. Lo bueno de &lt;strong&gt;Textmate&lt;/strong&gt; es que es liviano de utilizar, versátil y aún así te ayuda a escribir código, entregándote &lt;em&gt;‘tips’&lt;/em&gt; si se te olvida alguna sentencia en el lenguaje que quieras.&lt;/p&gt;
&lt;h3 id=&#34;a-hrefhttpwwwadobecomproductsphotoshopphotoshopgraphicdesign-target_blank-titleenlace-externo-a-038quot-photoshopquotphotoshopa&#34;&gt;&lt;a href=&#34;http://www.adobe.com/products/photoshop/photoshop/graphicdesign/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;#038;quot Photoshop;&amp;quot;&#34;&gt;Photoshop&lt;/a&gt;&lt;/h3&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/10/photoshop.png&#34; alt=&#34;Photoshop&#34; width=&#34;128&#34; height=&#34;128&#34; style=&#34;float: right; padding: 0 0 10px 10px;&#34; /&gt; 
&lt;p&gt;Oh sí, un editor de imágenes que de seguro &lt;em&gt;Chuck Norris&lt;/em&gt; usa. Consume más memoria &lt;strong&gt;RAM&lt;/strong&gt; que el mismo Sistema Operativo (fue una de las causas directas por las que dupliqué la memoria de mi &lt;em&gt;laptop&lt;/em&gt;), pero tiene de todo lo que se me ocurra y no tengo que recurrir a otros &lt;em&gt;softwares&lt;/em&gt; para nada; lo que se me antoje en el diseño lo aplico con &lt;em&gt;Photoshop&lt;/em&gt;. No hay caso con &lt;em&gt;Fireworks&lt;/em&gt; ni &lt;em&gt;Illustrator&lt;/em&gt;; los &lt;strong&gt;PSD’s&lt;/strong&gt; de mis diseños pesan &lt;em&gt;50mb&lt;/em&gt; como mínimo pero no me importa.&lt;/p&gt;
&lt;h3 style=&#34;clear: both&#34;&gt;
  &lt;a href=&#34;http://www.charcoaldesign.co.uk/pipette&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;#038;quot Pipette;&amp;quot;&#34;&gt;Pipette&lt;/a&gt;
&lt;/h3&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/10/pipette.png&#34; alt=&#34;Pipette&#34; width=&#34;128&#34; height=&#34;128&#34; style=&#34;float: right; padding: 0 0 10px 10px;&#34; /&gt; 
&lt;p&gt;Lejos uno de los &lt;em&gt;freeware&lt;/em&gt; más útiles que he encontrado. &lt;strong&gt;Pippette&lt;/strong&gt; logra de manera rápida y fácil el color en &lt;em&gt;hexacromía&lt;/em&gt; &lt;strong&gt;RGB&lt;/strong&gt; de lo que tengas en tu monitor.&lt;/p&gt;
&lt;h3 style=&#34;clear: both&#34;&gt;
  &lt;a href=&#34;http://www.panic.com/transmit/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;#038;quot Transmit;&amp;quot;&#34;&gt;Transmit&lt;/a&gt;
&lt;/h3&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/10/transmit.png&#34; alt=&#34;Transmit&#34; width=&#34;128&#34; height=&#34;128&#34; style=&#34;float: right; padding: 0 0 10px 10px;&#34; /&gt; 
&lt;p&gt;Llega la hora de subir tu sitio y probarlo en ese &lt;strong&gt;FTP&lt;/strong&gt; que es más lento que una tortuga; con &lt;strong&gt;Transmit&lt;/strong&gt; he logrado una simbiosis de años y no me falla. Si hay error es del servidor o de la conexión, pero nunca de &lt;strong&gt;Transmit&lt;/strong&gt;. He probado incluso &lt;strong&gt;Coda&lt;/strong&gt; pero no me gustan las llaves suizas: cada producto que sea el mejor para cada función.&lt;/p&gt;
&lt;h3 style=&#34;clear: both&#34;&gt;
  &lt;a href=&#34;http://www.apple.com/safari/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;#038;quot Safari;&amp;quot;&#34;&gt;Safari&lt;/a&gt;, &lt;a href=&#34;http://www.mozilla.com/firefox/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;#038;quot Firefox;&amp;quot;&#34;&gt;Firefox&lt;/a&gt;, &lt;a href=&#34;http://www.opera.com/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;#038;quot Opera;&amp;quot;&#34;&gt;Opera&lt;/a&gt;, &lt;a href=&#34;http://www.kronenberg.org/ies4osx/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;#038;quot IE4OSX;&amp;quot;&#34;&gt;IE4OSX&lt;/a&gt;
&lt;/h3&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/10/browsers.png&#34; alt=&#34;Browsers&#34; width=&#34;512&#34; height=&#34;128&#34; style=&#34;padding: 0 0 10px 0;&#34; /&gt; 
&lt;p&gt;&lt;strong&gt;Safari&lt;/strong&gt; por lo rápido de &lt;strong&gt;Webkit&lt;/strong&gt;; &lt;strong&gt;Firefox&lt;/strong&gt; por lo masivo; &lt;strong&gt;Opera&lt;/strong&gt; por lo estricto y &lt;strong&gt;IE4OSX&lt;/strong&gt; porque no puedo sacarme a &lt;strong&gt;IE6&lt;/strong&gt; e &lt;strong&gt;IE7&lt;/strong&gt; de encima…&lt;/p&gt;
&lt;h3 id=&#34;a-hrefhttpwwwadiumxcom-target_blank-titleenlace-externo-a-038quot-adiumquotadiuma&#34;&gt;&lt;a href=&#34;http://www.adiumx.com/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;#038;quot Adium;&amp;quot;&#34;&gt;Adium&lt;/a&gt;&lt;/h3&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/10/adium.png&#34; alt=&#34;Adium&#34; width=&#34;128&#34; height=&#34;128&#34; style=&#34;float: right; padding: 0 0 10px 10px;&#34; /&gt; 
&lt;p&gt;Para mantener contacto con personas reales de carne y hueso, nada mejor que un multi-mensajero que soporta &lt;strong&gt;GTalk&lt;/strong&gt;, &lt;strong&gt;Jabber&lt;/strong&gt;, &lt;strong&gt;MSN&lt;/strong&gt;, &lt;strong&gt;AIM&lt;/strong&gt;, &lt;strong&gt;Yahoo! Messenger,&lt;/strong&gt; &lt;strong&gt;.Mac&lt;/strong&gt;, &lt;strong&gt;Bonjour&lt;/strong&gt; y &lt;strong&gt;ICQ&lt;/strong&gt; entre muchos otros. Te ahorras &lt;strong&gt;RAM&lt;/strong&gt; y espacio en tu escritorio, y es &lt;em&gt;freeware&lt;/em&gt;.&lt;/p&gt;
&lt;h3 style=&#34;clear: both&#34;&gt;
  &lt;a href=&#34;http://www.apple.com/itunes/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;#038;quot iTunes;&amp;quot;&#34;&gt;iTunes&lt;/a&gt;
&lt;/h3&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/10/itunes.png&#34; alt=&#34;iTunes&#34; width=&#34;128&#34; height=&#34;128&#34; style=&#34;float: right; padding: 0 0 10px 10px;&#34; /&gt; 
&lt;p&gt;No puedo vivir y menos trabajar sin música, sino no tengo estímulo para hacer bien las cosas. &lt;strong&gt;iTunes&lt;/strong&gt; me ordena bastante bien mis músicas y mis &lt;em&gt;playlists&lt;/em&gt;, además de sincronizarla con mi &lt;strong&gt;iPod&lt;/strong&gt;. Todo lo que necesito.&lt;/p&gt;
&lt;p&gt;pd. Por si no se han fijado, utilizo desde hace años plataforma &lt;strong&gt;Mac&lt;/strong&gt;…&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Muerte a IE: nuevo plugin</title>
      <link>https://csslab.cl/2008/09/24/muerte-a-ie-nuevo-plugin/</link>
      <pubDate>Wed, 24 Sep 2008 23:49:57 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/09/24/muerte-a-ie-nuevo-plugin/</guid>
      <description>&lt;p&gt;Al parecer ando inspirado y con ganas de aportar más y más a la comunidad de desarrollo web del universo. Y con el afán de aumentar a los usuarios disidentes de &lt;em&gt;Internet Explorer 6&lt;/em&gt; y &lt;em&gt;7&lt;/em&gt; (&lt;em&gt;browser&lt;/em&gt; que también apesta), he creado un nuevo y simpático &lt;em&gt;plugin&lt;/em&gt; que espero ayude a que más usuarios se conviertan a cualquier de los otros &lt;em&gt;browsers&lt;/em&gt; que son bastante mejores.&lt;/p&gt;</description>
      <content>&lt;p&gt;Al parecer ando inspirado y con ganas de aportar más y más a la comunidad de desarrollo web del universo. Y con el afán de aumentar a los usuarios disidentes de &lt;em&gt;Internet Explorer 6&lt;/em&gt; y &lt;em&gt;7&lt;/em&gt; (&lt;em&gt;browser&lt;/em&gt; que también apesta), he creado un nuevo y simpático &lt;em&gt;plugin&lt;/em&gt; que espero ayude a que más usuarios se conviertan a cualquier de los otros &lt;em&gt;browsers&lt;/em&gt; que son bastante mejores.&lt;/p&gt;
&lt;p&gt;En esta ocasión les presento &lt;strong&gt;killIE&lt;/strong&gt;, un &lt;em&gt;plugin&lt;/em&gt; para &lt;strong&gt;jQuery&lt;/strong&gt; que al activarse despliega un glamoroso y atento mensaje que advierte al usuario que está navegando con un pésimo &lt;em&gt;browser&lt;/em&gt; y que gentilmente invita a probar uno nuevo. Como todo buen &lt;em&gt;plugin&lt;/em&gt;, tiene ciertos parámetros que son configurables y su peso es ínfimo, lo que invita a ser utilizado global y masivamente.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/09/plugin_ie6.png&#34; alt=&#34;killIE plugin en acci&amp;oacute;n&#34; width=&#34;500&#34; height=&#34;350&#34; /&gt; 
&lt;h3 id=&#34;instrucciones&#34;&gt;Instrucciones:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Incluye tu librería &lt;strong&gt;jQuery&lt;/strong&gt; favorita (recomiendo &lt;strong&gt;1.2+&lt;/strong&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Incluye el plugin &lt;strong&gt;jquery.killIE.js&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Inícialo: &lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;$(document).ready(function(){&amp;lt;br /&amp;gt;
     $().killIE();&amp;lt;br /&amp;gt;
});&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Algunos parámetros: &lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;text: &amp;ldquo;&amp;lt;em&amp;gt;un texto diferente al propuesto&amp;lt;/em&amp;gt;&amp;rdquo;,&amp;lt;br /&amp;gt;
style: &amp;ldquo;&amp;lt;em&amp;gt;estilos CSS diferentes al propuesto&amp;lt;/em&amp;gt;&amp;rdquo;,&amp;lt;br /&amp;gt;
browser: &amp;lt;em&amp;gt;firefox&amp;lt;/em&amp;gt; (por defecto) / &amp;lt;em&amp;gt;opera&amp;lt;/em&amp;gt; / &amp;lt;em&amp;gt;safari&amp;lt;/em&amp;gt; / &amp;lt;em&amp;gt;chrome&amp;lt;/em&amp;gt;,&amp;lt;br /&amp;gt;
version: &amp;lt;em&amp;gt;ie6&amp;lt;/em&amp;gt; (por defecto) / &amp;lt;em&amp;gt;ie7&amp;lt;/em&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;[Ver demo][1]{.verejemplo} (con IE6, claro).&lt;/p&gt;
&lt;p&gt;[Ver demo][2]{.verejemplo} (ahora con IE7 y algunos parámetros).&lt;/p&gt;
&lt;h4 id=&#34;bajar-jquery-killie-plugin3-12kb-zip&#34;&gt;[Bajar jQuery killIE plugin][3] (1.2kb .zip)&lt;/h4&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/killIE_plugin/demo.html&#34;&gt;http://www.csslab.cl/ejemplos/killIE_plugin/demo.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ver demo jQuery killIE6 plugin&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/killIE_plugin/demo_ie7.html&#34;&gt;http://www.csslab.cl/ejemplos/killIE_plugin/demo_ie7.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ver demo jQuery killIE7 plugin&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/killIE_plugin/jquery.killIE.zip&#34;&gt;http://www.csslab.cl/ejemplos/killIE_plugin/jquery.killIE.zip&lt;/a&gt; &amp;ldquo;Enlace en CSSLab para &amp;ldquo;bajar jQuery killIE plugin&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>jQuery Plugin: simpleAccordion</title>
      <link>https://csslab.cl/2008/09/17/jquery-plugin-simpleaccordion/</link>
      <pubDate>Wed, 17 Sep 2008 13:52:00 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/09/17/jquery-plugin-simpleaccordion/</guid>
      <description>Un nuevo plugin para jQuery sale a la luz. Nuevamente, iluminado por una necesidad en un proyecto web, qué mejor que hacer las cosas a mi manera y al mismo tiempo aportar al mundo con algo que quizás le será útil a alguien más.
Un colega necesitaba hacer una sección de Preguntas Frecuentes (FAQ) y que las respuestas a las preguntas se desplegaran mediante el efecto de acordeón. Bastante simple, ¿no?</description>
      <content>&lt;p&gt;Un nuevo plugin para &lt;strong&gt;jQuery&lt;/strong&gt; sale a la luz. Nuevamente, iluminado por una necesidad en un proyecto web, qué mejor que hacer las cosas a mi manera y al mismo tiempo aportar al mundo con algo que quizás le será útil a alguien más.&lt;/p&gt;
&lt;p&gt;Un colega necesitaba hacer una sección de &lt;em&gt;Preguntas Frecuentes&lt;/em&gt; (&lt;em&gt;FAQ&lt;/em&gt;) y que las respuestas a las preguntas se desplegaran mediante el efecto de acordeón. Bastante simple, ¿no? Bueno, como sabrán le recomendé que lo más semántico era utilizar listas de definición (&lt;strong&gt;&lt;dl&gt;&lt;/strong&gt;). Pero los &lt;em&gt;plugins&lt;/em&gt; que encontraba eran muy grandes para lo poco que necesitaba (&lt;strong&gt;10kb+&lt;/strong&gt;), y necesitaban además de otros &lt;em&gt;plugins&lt;/em&gt; de &lt;strong&gt;jQuery&lt;/strong&gt; para funcionar, como el &lt;strong&gt;Dimensions&lt;/strong&gt;, lo que hacía que pesara aún más el total. Así que construí uno simple, customizado y parametrizable, y que finalmente pesa apenas &lt;strong&gt;1kb&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;modo-de-uso&#34;&gt;Modo de Uso:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Incluye tu librería de &lt;a href=&#34;http://docs.jquery.com/Downloading_jQuery&#34; title=&#34;Enlace externo a &amp;quot;Download jQuery Javascript Framework&amp;quot;&#34; target=&#34;_blank&#34;&gt;jQuery&lt;/a&gt; favorita&lt;/li&gt;
&lt;li&gt;Incluye el plugin &lt;strong&gt;jquery.simpleAccordion.js&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Inicialízalo cuando el [DOM][1] esté cargado: &lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;$(document).ready(function(){&amp;lt;br /&amp;gt;
     $(&amp;rsquo;#id_elemento&amp;rsquo;).simpleAccordion();&amp;lt;br /&amp;gt;
});&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;Algunos par&amp;amp;aacute;metros:

  * **header**: &amp;quot;_selector_&amp;quot; (cualquier **etiqueta**, **class** o id que activar&amp;amp;aacute; el evento; **&amp;lt;dt&amp;gt;** es por defecto)
  * **collapsable**: &amp;quot;_selector_&amp;quot; (igual que el anterior; **&amp;lt;dd&amp;gt;** es por defecto)
  * **speed**: _integral_ (un n&amp;amp;uacute;mero en _milisegundos_ &amp;amp;oacute; las velocidades &amp;quot;**slow**&amp;quot;, &amp;quot;**normal**&amp;quot; &amp;amp;oacute; &amp;quot;**fast**&amp;quot;; **fast** es por defecto)
&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Tu código debe ser algo como esto: &lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;dl id=&amp;ldquo;id_elemento&amp;rdquo;&amp;gt;&amp;lt;br /&amp;gt;
     &amp;lt;dt&amp;gt;Elemento activo&amp;lt;/dl&amp;gt;&amp;lt;br /&amp;gt;
     &amp;lt;dd&amp;gt;Elemento colapsable&amp;lt;/dd&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;/dl&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;&amp;amp;oacute; para esto:

&amp;lt;pre class=&amp;quot;language-markup&amp;quot;&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;ul id=&amp;quot;id_elemento_2&amp;quot;&amp;amp;gt;&amp;amp;lt;br /&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;lt;li class=&amp;quot;cabeza&amp;quot;&amp;amp;gt;Elemento activo&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;br /&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;lt;li class=&amp;quot;colapsable&amp;quot;&amp;amp;gt;Element collapsable&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;br /&amp;gt;
&amp;amp;lt;/ul&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;

&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&amp;lt;code&amp;gt;$(document).ready(function(){&amp;amp;lt;br /&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;$(&#39;#id_elemento_2&#39;).simpleAccordion({&amp;amp;lt;br /&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;header: &amp;quot;.cabeza&amp;quot;,&amp;amp;lt;br /&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;collapsable: &amp;quot;.colapsable&amp;quot;,&amp;amp;lt;br /&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;speed: 200&amp;amp;lt;br /&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;});&amp;amp;lt;br /&amp;gt;
});&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;Tómate una cerveza helada, ya estás listo.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;[Ver ejemplo][2]{.verejemplo}&lt;/p&gt;
&lt;h3 id=&#34;bajar-jquery-simpleaccordion-plugin-v093bajar-zip-24kb-total-con-ejemplo&#34;&gt;[Bajar jQuery simpleAccordion plugin v0.9][3]{.bajar} (.zip 24kb total con ejemplo)&lt;/h3&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4 id=&#34;requerimiento&#34;&gt;Requerimiento:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;jQuery 1.2+&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2008/04/07/iniciandose-en-el-dom/&#34;&gt;http://www.csslab.cl/2008/04/07/iniciandose-en-el-dom/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Iniciándose en el DOM&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/JQuery_Accordion/accordion.html&#34;&gt;http://www.csslab.cl/ejemplos/JQuery_Accordion/accordion.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Ver Ejemplo&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/JQuery_Accordion/JQuery_Accordion_v0.9.zip&#34;&gt;http://www.csslab.cl/ejemplos/JQuery_Accordion/JQuery_Accordion_v0.9.zip&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Bajar jQuery simpleAccordion Plugin&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Maniático del código</title>
      <link>https://csslab.cl/2008/09/10/maniatico-del-codigo/</link>
      <pubDate>Wed, 10 Sep 2008 19:49:59 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/09/10/maniatico-del-codigo/</guid>
      <description>&lt;p&gt;Al escribir tu código fuente, seguro tienes ya la manera en que acostumbras a hacerlo. Si utilizas uno de los tantos editores de código, seguro confías en lo que te escribe, lo que usualmente es desordenado y lleno de basura. Pero no hay como un código, tanto &lt;strong&gt;HTML&lt;/strong&gt; como &lt;strong&gt;CSS&lt;/strong&gt; y &lt;strong&gt;JS&lt;/strong&gt; limpio, pulcro, ordenado y comentado. Como diría &lt;em&gt;WordPress&lt;/em&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Code Is Poetry&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Y realmente lo creo. Un código, además de sostener a tu sitio web, le entrega a los buscadores información muy relevante sobre qué contenidos son más importantes que otros y cómo interpretarlos. Y que se presente de manera ordenada y clara, obviamente facilita la vida a estos queridos &lt;em&gt;spiders&lt;/em&gt; que nos interesan mucho que recorran nuestros sitios.&lt;/p&gt;
&lt;p&gt;A continuación presentaré algunas formas de escribir y comentar código fuente que he recopilado a lo largo de los días, meses y años en que trabajo en el medio web. Aunque me enfocaré al &lt;strong&gt;CSS&lt;/strong&gt;, son aplicables a cualquier lenguaje de marcado web.&lt;/p&gt;</description>
      <content>&lt;p&gt;Al escribir tu código fuente, seguro tienes ya la manera en que acostumbras a hacerlo. Si utilizas uno de los tantos editores de código, seguro confías en lo que te escribe, lo que usualmente es desordenado y lleno de basura. Pero no hay como un código, tanto &lt;strong&gt;HTML&lt;/strong&gt; como &lt;strong&gt;CSS&lt;/strong&gt; y &lt;strong&gt;JS&lt;/strong&gt; limpio, pulcro, ordenado y comentado. Como diría &lt;em&gt;WordPress&lt;/em&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Code Is Poetry&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Y realmente lo creo. Un código, además de sostener a tu sitio web, le entrega a los buscadores información muy relevante sobre qué contenidos son más importantes que otros y cómo interpretarlos. Y que se presente de manera ordenada y clara, obviamente facilita la vida a estos queridos &lt;em&gt;spiders&lt;/em&gt; que nos interesan mucho que recorran nuestros sitios.&lt;/p&gt;
&lt;p&gt;A continuación presentaré algunas formas de escribir y comentar código fuente que he recopilado a lo largo de los días, meses y años en que trabajo en el medio web. Aunque me enfocaré al &lt;strong&gt;CSS&lt;/strong&gt;, son aplicables a cualquier lenguaje de marcado web.&lt;/p&gt;
&lt;h3 id=&#34;comentarios&#34;&gt;Comentarios&lt;/h3&gt;
&lt;p&gt;Uso 2 tipos de comentarios según sea la relevancia del elemento dentro de mi estructura.&lt;/p&gt;
&lt;p&gt;Si es un &lt;strong&gt;id&lt;/strong&gt; importante (&lt;strong&gt;#container&lt;/strong&gt;, &lt;strong&gt;#header&lt;/strong&gt;, &lt;strong&gt;#side&lt;/strong&gt;, &lt;strong&gt;#menu&lt;/strong&gt;, &lt;strong&gt;#footer&lt;/strong&gt;, etc.) lo marco con el símbolo igual (&lt;strong&gt;=&lt;/strong&gt;) sin indentación, o sea alineado al margen izquierdo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;&amp;lt;span class=&#34;commentcss&#34;&gt;/* ============= #container ============= */&amp;lt;/span&gt;&amp;lt;br /&gt;
#container {}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, si es una &lt;strong&gt;class&lt;/strong&gt; pero de las importantes (&lt;strong&gt;.submenu&lt;/strong&gt;, .&lt;strong&gt;nav&lt;/strong&gt;, etc.) la marco con guión (&lt;strong&gt;–&lt;/strong&gt;) e indentado según donde pertenezca la indentación de esa &lt;strong&gt;class&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#menu {}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;commentcss&#34;&gt;/* ------------ .subnav ----------- */&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#menu .subnav {}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Así queda más fácil recorrer el codigo visualmente en busca de algún elemento que necesitemos modificar y/o agregar.&lt;/p&gt;
&lt;p&gt;Otro punto es comentar los [hacks][1], o técnicas para los diferentes browsers (&lt;strong&gt;IE6&lt;/strong&gt;) que no quepan dentro de los comentarios condicionales y que no influyan en el normal comportamiento del estilo con otros &lt;em&gt;browsers&lt;/em&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#side .banners {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin-left: 200px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: inline; &amp;lt;span class=&#34;commentcss&#34;&gt;/* arregla doble margen en IE6 */&amp;lt;/span&gt;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;organizando-regiones-de-coacutedigo&#34;&gt;Organizando regiones de código&lt;/h3&gt;
&lt;p&gt;Una buena técnica es agrupar regiones de código &lt;strong&gt;CSS&lt;/strong&gt; que tengan funciones similares, como por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;seteos globales (&lt;strong&gt;reseter&lt;/strong&gt;, &lt;strong&gt;body&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;class&lt;/strong&gt;‘es generales (&lt;strong&gt;.izquierda&lt;/strong&gt;, &lt;strong&gt;.derecha&lt;/strong&gt;, &lt;strong&gt;.clear&lt;/strong&gt;, &lt;strong&gt;.centrado&lt;/strong&gt;, etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;&amp;lt;span class=&#34;commentcss&#34;&gt;/*** SETEOS GENERALES ***/&amp;lt;/span&gt;&amp;lt;br /&gt;
* {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 0;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 0;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
body {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-family: Georgia, serif;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;indentado&#34;&gt;Indentado&lt;/h3&gt;
&lt;p&gt;Es lo que menos veo utilizado dentro de códigos, pero es lo que más ayuda al orden y entendimiento de éste. Lo que recomiendo es un indentado básico con la tecla &lt;strong&gt;tab&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#container {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 960px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 0 auto;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y cuando tenemos selectores que heredan de otros electores, también los indento con &lt;strong&gt;tab&lt;/strong&gt; a medida que se vayan anidando:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#menu {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border-left: 2px solid gray;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#menu li {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin-bottom: 5px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size: 1.2em;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#menu a {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: block;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: red;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-decoration: none;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#menu a:hover {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: red;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: white;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Así sabremos con más facilidad cuáles estilos pertenecen o heredan &lt;strong&gt;class&lt;/strong&gt;‘es de otros. Ahora, si eres obsesivo-compulsivo del orden, puedes optar por el siguiente método:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;body {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-family:&amp;nbsp;&amp;nbsp;&amp;nbsp;Tahoma, Arial, sans-serif;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-style:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;inherit;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#333;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Visualmetne es bastante ordenado, pero te puedes volver loco escribiendo código así.&lt;/p&gt;
&lt;h3 id=&#34;ahorrando-espacio&#34;&gt;Ahorrando espacio&lt;/h3&gt;
&lt;p&gt;Si eres de los que les gusta ahorrar cada &lt;strong&gt;kb&lt;/strong&gt;, puedes escribir el código horizontalmente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#header { border-bottom: 2px solid gray; margin-bottom: 10px; }&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#header .subnav { float: right; width: 300px; margin: 10px; }&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#header .subnav li { float: left; margin-left: 5px; }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ó:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#header {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border-bottom: 2px solid gray; margin-bottom: 10px;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#header .subnav {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: right; width: 300px; margin: 10px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#header .subnav li {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left; margin-left: 5px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://perishablepress.com/press/2008/09/10/series-summary-obsessive-css-code-formatting/&#34; title=&#34;Enlace externo a &amp;quot;Series Summary: Obsessive CSS Code Formatting &amp;bull; Perishable Press&amp;quot;&#34; target=&#34;_blank&#34;&gt;Series Summary: Obsessive CSS Code Formatting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/category/hacks/&#34;&gt;http://www.csslab.cl/category/hacks/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Categoría: Hacks&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Review 5: DivIt</title>
      <link>https://csslab.cl/2008/08/28/review-5-divit/</link>
      <pubDate>Thu, 28 Aug 2008 15:09:29 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/08/28/review-5-divit/</guid>
      <description>A través de este mismo sitio, Rolando Murillo me contacta para mostrarme su última joya: DivIt, un sistema de grillas para que trabajes el layout de tu sitio ordenadamente mediante porcentajes. Confieso que trabajar con porcentajes es mi karma; lo encuentro muy difícl, especialmente al momento de lograr una armonía entre browsers, y para IE6 no puedes usar cifras absolutas, sino que en vez de 50% deberías tantear entre 48% y 49.</description>
      <content>&lt;p&gt;A través de este mismo sitio, &lt;strong&gt;Rolando Murillo&lt;/strong&gt; me contacta para mostrarme su última joya: &lt;a href=&#34;http://acualicio.us/divit-to-the-limit&#34; title=&#34;Enlace externo a &amp;quot;DivIt to the limit en Acualicio.us&amp;quot;&#34; target=&#34;_blank&#34;&gt;DivIt&lt;/a&gt;, un sistema de grillas para que trabajes el &lt;em&gt;layout&lt;/em&gt; de tu sitio ordenadamente mediante porcentajes. Confieso que trabajar con porcentajes es mi &lt;em&gt;karma&lt;/em&gt;; lo encuentro muy difícl, especialmente al momento de lograr una armonía entre &lt;em&gt;browsers&lt;/em&gt;, y para &lt;strong&gt;IE6&lt;/strong&gt; no puedes usar cifras absolutas, sino que en vez de 50% deberías tantear entre 48% y 49.9%… probando aver cuál funciona mejor sin quebrar el &lt;em&gt;layout&lt;/em&gt;; un lío… Así que me casé con &lt;em&gt;layout&lt;/em&gt; fijo y lo domino bastante bien.&lt;/p&gt;
&lt;p&gt;La idea detrás de &lt;strong&gt;DivIt&lt;/strong&gt; es simple: mediante &lt;strong&gt;class&lt;/strong&gt;‘es pre-establecidad, divides los elementos siempre y cuando el ancho total sume 100%. Por ejemplo, para una fila puedes usar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;100%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;50%+50%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;33%+33%+33%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;25%+25%+25%+25%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;50%+25%+25%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;etc etc etc&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La combitatoria va con tu imaginación y tu necesidades. Puedes establecer un contenedor con ancho fijo, o con ancho también con porcentaje. En este caso &lt;strong&gt;DivIt&lt;/strong&gt; (y el uso de porcentajes en general) es bastante flexible y hace bastante fácil su implementación, principalmente para quienes se dificultan con calcular anchos de cajas para &lt;em&gt;layouts&lt;/em&gt; complejos.&lt;/p&gt;
&lt;p&gt;¿Qué pasa si entre las cajas tiene &lt;strong&gt;padding&lt;/strong&gt; y/o &lt;strong&gt;margin&lt;/strong&gt;? Rolando recomienda utilizar una &lt;strong&gt;class&lt;/strong&gt; que contenga estas propiedades, entre la caja de &lt;em&gt;layout&lt;/em&gt; y el contenido mismo de la caja, tal como [recomendé hace un tiempo atrás][1]. ¿Pero si entre cajas hay un &lt;strong&gt;border-right&lt;/strong&gt;, y luego un &lt;strong&gt;margin-right&lt;/strong&gt;? Eses son casos de diseño que se deben de solucionar con bastante ingenio, ya que sabemos que son elementos que hacen parte del [modelo de caja][2] e influyen en el ancho de la caja, inclusive si son con porcentajes.. y personalmente esos son impedimentos que me hacen preferir definir y construir el layout a mano; pierdo más tiempo pero tengo más control.&lt;/p&gt;
&lt;p&gt;En mis pruebas &lt;strong&gt;DivIt&lt;/strong&gt; anduvo bastante bien, logrando armonía entre mis &lt;em&gt;browsers&lt;/em&gt; de pruebas, así que logró mi satisfacción y que me tomara mi tiempo en escribir este &lt;em&gt;review&lt;/em&gt;. Para funcionar, Rolando entrega un &lt;strong&gt;.zip&lt;/strong&gt; con varios archivos necesarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;reset.css&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;divit.css&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;ie.css&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;minmax.js&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El &lt;strong&gt;reseter.css&lt;/strong&gt; es necesario para cualquier layout, pero aquí está incluído como archivo aparte; &lt;strong&gt;divit.css&lt;/strong&gt; contiene las &lt;strong&gt;class&lt;/strong&gt;‘es de porcentajes necesarias; &lt;strong&gt;ie.css&lt;/strong&gt; las arregla para &lt;strong&gt;IE6&lt;/strong&gt; y &lt;strong&gt;minmax.js&lt;/strong&gt; según las palabras de Rolando &lt;em&gt;&amp;ldquo;para soportar min/max-width en IE&amp;rdquo;&lt;/em&gt;. Estos dos últimos archivos asumo que deben ser incluídos mediante [comentarios condicionales][3], y según entiendo este último &lt;strong&gt;.js&lt;/strong&gt; no es necesario si no usas &lt;strong&gt;min/max-width&lt;/strong&gt;… tampoco me quedó claro eso.&lt;/p&gt;
&lt;h4 id=&#34;pros&#34;&gt;Pros:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;fácil de entender.&lt;/li&gt;
&lt;li&gt;fácil de usar.&lt;/li&gt;
&lt;li&gt;resultados reales.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;contras&#34;&gt;Contras:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;falta documentación más detallada (instrucciones).&lt;/li&gt;
&lt;li&gt;falta comentarios detallados en los source entregados.&lt;/li&gt;
&lt;li&gt;la implementación con IE podría ser más integrada (sin necesidad de una hoja de estilos externa o comentarios condicionales).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;link-a-hrefhttpacualiciousdivit-titleenlace-externo-a-quotbajar-divit-en-acualiciousquot-target_blankdivit--un-grid-system-que-divide-el-trabajoa&#34;&gt;Link: &lt;a href=&#34;http://acualicio.us/divit/&#34; title=&#34;Enlace externo a &amp;quot;Bajar DivIt en Acualicio.us&amp;quot;&#34; target=&#34;_blank&#34;&gt;DivIt // Un grid-system que divide el trabajo&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/07/19/como-caja-2-superando-el-modelo/&#34;&gt;http://www.csslab.cl/2007/07/19/como-caja-2-superando-el-modelo/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Como Caja 2: Superando el Modelo&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&#34;&gt;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Como Caja: el modelo&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2006/07/28/se-viene-ie7-&amp;amp;iexcl;huid/&#34;&gt;http://www.csslab.cl/2006/07/28/se-viene-ie7-&amp;amp;iexcl;huid/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Modelo de Caja&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Redimensionado Proporcional</title>
      <link>https://csslab.cl/2008/08/25/redimensionado-proporcional/</link>
      <pubDate>Mon, 25 Aug 2008 20:05:00 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/08/25/redimensionado-proporcional/</guid>
      <description>&lt;p&gt;Con redimensionado proporcional, me refiero a que una imagen cualquiera, se redimensione dependiendo de la proporción de la resolución del monitor, sin que se deforme o pierda calidad en el proceso. La idea es que se haga al mismo tiempo en que la ventana del &lt;em&gt;browser&lt;/em&gt; se mueva, sin tener que esperar que se adapte a la resolución del computador.&lt;/p&gt;
&lt;p&gt;Este es otro de esos trucos &lt;strong&gt;CSS&lt;/strong&gt; donde uno se hace esa dolorosa pregunta: &lt;em&gt;&amp;quot;¿Por qué no se me había ocurrido antes?&amp;quot;&lt;/em&gt;. Pero bueno, para qué lamentarse si se puede disfrutar de la solución.&lt;/p&gt;</description>
      <content>&lt;p&gt;Con redimensionado proporcional, me refiero a que una imagen cualquiera, se redimensione dependiendo de la proporción de la resolución del monitor, sin que se deforme o pierda calidad en el proceso. La idea es que se haga al mismo tiempo en que la ventana del &lt;em&gt;browser&lt;/em&gt; se mueva, sin tener que esperar que se adapte a la resolución del computador.&lt;/p&gt;
&lt;p&gt;Este es otro de esos trucos &lt;strong&gt;CSS&lt;/strong&gt; donde uno se hace esa dolorosa pregunta: &lt;em&gt;&amp;quot;¿Por qué no se me había ocurrido antes?&amp;quot;&lt;/em&gt;. Pero bueno, para qué lamentarse si se puede disfrutar de la solución.&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Al grano entonces. Si se tiene una imagen bastante grande como para que actúe como una atractiva imagen que vaya a aportar al diseño y contenido del sitio, y no mermar la usabilidad y accesibilidad de la web con su gran peso y colores distractores, podemos aplicarla de fondo. Ahora, el problema surge que queremos ponerla para que a medida que se vaya redimensionando la ventana del &lt;em&gt;browser&lt;/em&gt;, la imagen también se escale para adaptarse al soporte. Así no perdemos ningún pixel de ella y logramos ese objetivo con el diseño, lo que grafico a continuación:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2008/08/resize.gif&#34; alt=&#34;Redimensionando Proporcionalmente - CSSLab.cl&#34;&gt;&lt;/p&gt;
&lt;p&gt;Esto se lograba con &lt;em&gt;Flash&lt;/em&gt; con un poco de habilidad en &lt;em&gt;Actionscript&lt;/em&gt; y &lt;strong&gt;Stage.scaleMode&lt;/strong&gt;. Pero con un poco de simple &lt;strong&gt;CSS&lt;/strong&gt; podemos lograr lo mismo. A continuación, la explicación.&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;HTML&lt;/strong&gt; será una imagen que será insertada como etiqueta &lt;strong&gt;&lt;img /&gt;&lt;/strong&gt; y no con &lt;strong&gt;background-image&lt;/strong&gt; como se podrían imaginas. Luego, el contenido que mediante &lt;strong&gt;CSS&lt;/strong&gt; será correctamente posicionado:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt; &amp;lt;img src=&#34;fondo.jpg&#34; class=&#34;imagen_fondo&#34; alt=&#34;DigitalArt: Fractal Meeting&#34; /&amp;gt;&amp;lt;br /&gt;
&amp;lt;h1&amp;gt;Fractal Meeting&amp;lt;/h1&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Luego, la versatilidad del &lt;strong&gt;CSS&lt;/strong&gt;. Posicionaremos la imagen absolutamente, indicando que el ancho sea al &lt;strong&gt;100%&lt;/strong&gt;. ¡Y eso es todo! Basta con un &lt;strong&gt;overflow: hidden&lt;/strong&gt; al &lt;strong&gt;&lt;body&gt;&lt;/strong&gt; u otro elemento contenedor que tengan para que no les forme &lt;em&gt;scroll&lt;/em&gt;, y ya. No hay más:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;body {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;overflow: hidden;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
.imagen_fondo {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 100%;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;top: 0;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;left: 0;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
.titulo {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;top: 50%;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;left: 0;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 100%;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo final][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Muevan la ventana del &lt;em&gt;browser&lt;/em&gt; para ver esta técnica en acción. Y para el código completo, basta con ver el código fuente del ejemplo anterior.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.cssplay.co.uk/layouts/background.html&#34; title=&#34;Enlace externo a &amp;quot;CSSPlay - 100% wide/high &#39;background&#39; image emulation&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSSPlay – 100% wide/high ‘background’ image emulation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://css-tricks.com/how-to-resizeable-background-image/&#34; title=&#34;Enlace externo a &amp;quot;CSSTricks - How To: Resizeable Background Image&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSSTricks – How To: Resizeable Background Image&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/redimensionado/&#34;&gt;http://www.csslab.cl/ejemplos/redimensionado/&lt;/a&gt; &amp;ldquo;Enlace a &amp;ldquo;Ver Ejemplo de &amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 28</title>
      <link>https://csslab.cl/2008/08/22/lo-vi-y-me-gusto-28/</link>
      <pubDate>Fri, 22 Aug 2008 19:17:15 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/08/22/lo-vi-y-me-gusto-28/</guid>
      <description>#28 – 22 Agosto 2008</description>
      <content>&lt;p&gt;#28 – 22 Agosto 2008&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://viaweb.com.mx/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/08/viaweb.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.gruasurdile.cl/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/08/urdile.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Definitivo: PNG’s transparentes en IE6</title>
      <link>https://csslab.cl/2008/08/18/definitivo-pngs-transparentes-en-ie6/</link>
      <pubDate>Mon, 18 Aug 2008 23:50:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/08/18/definitivo-pngs-transparentes-en-ie6/</guid>
      <description>&lt;p&gt;Finalmente dí con la solución final a mis problemas de soporte de transparencias de &lt;strong&gt;PNG&lt;/strong&gt; para &lt;strong&gt;IE6&lt;/strong&gt;. Este tema es otro en los que más usuarios entran a &lt;strong&gt;CSSLab&lt;/strong&gt; buscando por soluciones reales. En mi [anterior artículo][1] sobre este mismo tema, la solución es real pero su implementación se torna complicada de adaptar en cualquier ámbito de sus proyectos.&lt;/p&gt;
&lt;p&gt;Últimamente he logrado probar e implementar 2 soluciones diferentes para solucionar este drama que nos reúne. Ambas se implementan mediante &lt;strong&gt;Javascript&lt;/strong&gt; y necesitan de leves retoques para funcionar (no se frustren si no se ve a la primera, basta con pensar denuevo cómo están las estructuras de tus archivos y colocar adecuadamente las rutas).&lt;/p&gt;</description>
      <content>&lt;p&gt;Finalmente dí con la solución final a mis problemas de soporte de transparencias de &lt;strong&gt;PNG&lt;/strong&gt; para &lt;strong&gt;IE6&lt;/strong&gt;. Este tema es otro en los que más usuarios entran a &lt;strong&gt;CSSLab&lt;/strong&gt; buscando por soluciones reales. En mi [anterior artículo][1] sobre este mismo tema, la solución es real pero su implementación se torna complicada de adaptar en cualquier ámbito de sus proyectos.&lt;/p&gt;
&lt;p&gt;Últimamente he logrado probar e implementar 2 soluciones diferentes para solucionar este drama que nos reúne. Ambas se implementan mediante &lt;strong&gt;Javascript&lt;/strong&gt; y necesitan de leves retoques para funcionar (no se frustren si no se ve a la primera, basta con pensar denuevo cómo están las estructuras de tus archivos y colocar adecuadamente las rutas).&lt;/p&gt;
&lt;h3 id=&#34;a-hrefhttpwwwtwinhelixcomcssiepngfix-titleenlace-externo-a-quotie-png-fix-v10--20-alpha-2quot-target_blanktwinhelix-png-fix-v2a&#34;&gt;&lt;a href=&#34;http://www.twinhelix.com/css/iepngfix/&#34; title=&#34;Enlace externo a &amp;quot;IE PNG Fix v1.0 / 2.0 Alpha 2&amp;quot;&#34; target=&#34;_blank&#34;&gt;Twinhelix PNG Fix v2&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Esta segunda versión está de lujo y me hizo volver a creer en el trabajo de &lt;strong&gt;Twinhelix&lt;/strong&gt;. Lo que hace esto es a través de un &lt;em&gt;behavior&lt;/em&gt; agrega soporte casi-nativo del canal alpha de &lt;strong&gt;PNG&lt;/strong&gt; para &lt;strong&gt;IE5.5+&lt;/strong&gt; sin tener que hacer cambios en el documento &lt;strong&gt;HTML&lt;/strong&gt;. Otras ventajas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Conversión configurable de elementos &lt;strong&gt;PNG&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Soporta para imágenes llamadas a través de la etiqueta &lt;strong&gt;HTML&lt;/strong&gt; &lt;strong&gt;&lt;img /&gt;&lt;/strong&gt; y mediante la propiedad &lt;strong&gt;CSS background-image.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Soporta la repetición del &lt;strong&gt;background&lt;/strong&gt; mediante &lt;strong&gt;background-repeat&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Las imágenes pueden ser llamadas dentro del mismo documento o mediante hojas de estilos externas.&lt;/li&gt;
&lt;li&gt;Soporta cambios de estado de la imagen mediante &lt;strong&gt;CSS&lt;/strong&gt; o &lt;strong&gt;Javascript&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Soporta &lt;em&gt;links&lt;/em&gt; que sean llamados en capas superiores a la del &lt;strong&gt;PNG&lt;/strong&gt; transparente.&lt;/li&gt;
&lt;li&gt;Muy pequeño y liviano.&lt;/li&gt;
&lt;li&gt;Gratis.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;modo-de-uso&#34;&gt;Modo de uso:&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Copiar &lt;em&gt;iepngfix.htc&lt;/em&gt; y &lt;em&gt;blank.gif&lt;/em&gt; a la estructura de tu sitio.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copiar esta sencilla línea de código &lt;strong&gt;CSS que define en cuáles elementos el&lt;/strong&gt; &lt;strong&gt;.htc&lt;/strong&gt; hará que las imágenes soporten transparencia. Ten cuidado de llamar a la ruta del &lt;strong&gt;.htc&lt;/strong&gt; correctamente:
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;img, div { behavior: url(iepngfix.htc) }&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ten el cuidado de además entregar la ruta correcta en &lt;em&gt;iepngfix.htc&lt;/em&gt; en que tienes el &lt;em&gt;blank.gif&lt;/em&gt;. Te recomiendo en esta hacerlo de forma absoluta:
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;var blankImg = &amp;lsquo;/imagenes/blank.gif&amp;rsquo;;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Eso es. Cuando termines todo eso deberías de ver algo similar al ejemplo 1.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;[Ver ejemplo 1 (con IE6, claro).][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.twinhelix.com/test/iepngfix.zip&#34; title=&#34;Enlace externo a &amp;quot;Download Twinhelix IE6PNGFix v&amp;quot;&#34; target=&#34;_blank&#34; class=&#34;bajar&#34;&gt;Bajar Twinhelix IEPNGFix v2&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;a-hrefhttplabsunitinteractivecomunitpngfixphp-titleenlace-externo-a-quotunit-png-fixquot-target_blankunit-png-fixa&#34;&gt;&lt;a href=&#34;http://labs.unitinteractive.com/unitpngfix.php&#34; title=&#34;Enlace externo a &amp;quot;Unit PNG Fix&amp;quot;&#34; target=&#34;_blank&#34;&gt;Unit PNG Fix&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Irrumpió en la web hace muy poco y la está rompiendo. Este método se aplica mediante el llamado de un &lt;strong&gt;Javascript&lt;/strong&gt;, el que al igual que el anterior lee un archivo &lt;em&gt;clear.gif&lt;/em&gt; y lo aplica a los &lt;strong&gt;PNG’s&lt;/strong&gt; haciéndolos transparentes para &lt;strong&gt;IE6&lt;/strong&gt;. Su plus es que pesa sólo &lt;em&gt;1kb&lt;/em&gt; y para su implementación sólo se requiere llamar el &lt;strong&gt;.js&lt;/strong&gt;. Claro que se debe tener el cuidado de aplicar las rutas, tanto del &lt;strong&gt;.js&lt;/strong&gt; como del &lt;strong&gt;.gif&lt;/strong&gt; correctamente. Puedes llamar el &lt;em&gt;unitpngfix.js&lt;/em&gt; mediante comentarios condicionales, de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;!--[if lt IE 7]&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;script src=&#34;js/unitpngfix.js&#34; type=&#34;text/javascript&#34;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br /&gt;
  &amp;lt;![endif]--&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En la primera línea de código del &lt;em&gt;unitpngfix.js&lt;/em&gt;, debes configurar la ruta desde dónde llamar &lt;em&gt;clear.gif&lt;/em&gt;, y nuevamente recomiendo que sea absolutamente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;var clear=&#34;/imagenes/clear.gif&#34;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y ya. Si seteaste bien las rutas, deberías de ver algo similar al ejemplo 2.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 2 (con IE6, insisto).][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://labs.unitinteractive.com/downloads/unitpngfix.zip&#34; title=&#34;Enlace externo a &amp;quot;Download Unit PNG Fix&amp;quot;&#34; target=&#34;_blank&#34; class=&#34;bajar&#34;&gt;Bajar Unit PNG Fix&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Y: ¿Cuál es mejor? Hasta ahora, ambas me han funcionado perfecto, por lo que les dejo a uds. definir su favorito.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2006/08/14/pngs-transparentes-en-ie6/&#34;&gt;http://www.csslab.cl/2006/08/14/pngs-transparentes-en-ie6/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;PNG’s transparentes en IE6&amp;quot;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/png_2/twinhelix.html&#34;&gt;http://www.csslab.cl/ejemplos/png_2/twinhelix.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;PNG&amp;rsquo;s transparentes para IE6: Ejemplo Twinhelix&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/png_2/unitpng.html&#34;&gt;http://www.csslab.cl/ejemplos/png_2/unitpng.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;PNG&amp;rsquo;s transparentes para IE6: Ejemplo Unit PNG Fix&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>jQuery plugin: fontSizer</title>
      <link>https://csslab.cl/2008/08/07/jquery-plugin-fontsizer/</link>
      <pubDate>Thu, 07 Aug 2008 20:41:38 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/08/07/jquery-plugin-fontsizer/</guid>
      <description>Un nuevo plugin para el grandioso jQuery ha nacido. Por un proyecto en el cual estoy involucrado, era necesario un método parametrizable para manejar aumento/disminución del tamaño de fuentes. Busqué mucho un plugin para esto, y me frustré bastante dado la carencia del ideal, así que gracias a la habilidad del web developer Rodrigo Augosto, surge este nuevo aporte a la accesibilidad web.
[Ver ejemplo][1]{.verejemplo}
Modo de Uso  Adjuntar jquery.</description>
      <content>&lt;p&gt;Un nuevo &lt;em&gt;plugin&lt;/em&gt; para el grandioso &lt;a href=&#34;http://www.jquery.com/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;jQuery Javascript Framework&amp;quot;&#34;&gt;jQuery&lt;/a&gt; ha nacido. Por un proyecto en el cual estoy involucrado, era necesario un método parametrizable para manejar aumento/disminución del tamaño de fuentes. Busqué mucho un plugin para esto, y me frustré bastante dado la carencia del ideal, así que gracias a la habilidad del &lt;em&gt;web developer&lt;/em&gt; &lt;a href=&#34;http://www.protoboard.cl/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Protoboard.cl&amp;quot;&#34;&gt;Rodrigo Augosto&lt;/a&gt;, surge este nuevo aporte a la accesibilidad web.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;h3 id=&#34;modo-de-uso&#34;&gt;Modo de Uso&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Adjuntar &lt;em&gt;jquery.js&lt;/em&gt; y &lt;em&gt;jquery.fontSizer.js&lt;/em&gt; entre las etiquetas &lt;strong&gt;&lt;head&gt;&lt;/head&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Definir &lt;em&gt;id’s&lt;/em&gt; para ambos links, por ejemplo &lt;strong&gt;#aumentar&lt;/strong&gt; (+) y &lt;strong&gt;#disminuir&lt;/strong&gt; (-)&lt;/li&gt;
&lt;li&gt;Inicializar el &lt;em&gt;plugin&lt;/em&gt;, como en el ejemplo:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(document).ready(function(){&amp;lt;br /&gt;
    $(&#34;#aumentar&#34;).fontSizer({&amp;lt;br /&gt;
       action: &#34;up&#34;&amp;lt;br /&gt;
    });&amp;lt;br /&gt;
    $(&#34;#disminuir&#34;).fontSizer({&amp;lt;br /&gt;
       action: &#34;down&#34;,&amp;lt;br /&gt;
    });&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eso es. El único parámetro obligatorio es indicar la acción de cada link mediante &lt;em&gt;action&lt;/em&gt;. Los parámetros son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;action: &amp;ldquo;up/down&amp;rdquo;&lt;/em&gt; (requerido).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;elements: &amp;ldquo;elemento&amp;rdquo;&lt;/em&gt; (un id, class o etiqueta donde actuará el cambio de tamaño de fuente).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;increment: número&lt;/em&gt; (en cuántos pasos serán el cambio de tamaño; por defecto es de 1 en 1).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;max: número&lt;/em&gt; (tamaño máximo del tamaño de fuente; por defecto es 30px).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;min: número&lt;/em&gt; (tamaño mínimo del tamaño de fuente; por defecto es 8px).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por ahora solo ha sido probado con &lt;em&gt;jQuery 1.2.6&lt;/em&gt;, pero no debería de tener problemas con versiones desde &lt;em&gt;1.2+&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;[Descargar (.zip)][2]{.bajar}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/fontsizer/index.html&#34;&gt;http://www.csslab.cl/ejemplos/fontsizer/index.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo jQuery fontSizer&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/fontsizer/jquery.fontSizer.zip&#34;&gt;http://www.csslab.cl/ejemplos/fontsizer/jquery.fontSizer.zip&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Review 4: Las Leyes de la Simplicidad</title>
      <link>https://csslab.cl/2008/07/27/review-4-las-leyes-de-la-simplicidad/</link>
      <pubDate>Sun, 27 Jul 2008 23:32:43 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/07/27/review-4-las-leyes-de-la-simplicidad/</guid>
      <description>Este es uno de esos libros que debes leer independiente del oficio que ejerces. El catedrático del MIT John Maeda se desliza en un breve pero preciso libro (creo que son los mejores libros: no más de 100 páginas pero con el contenido que no sobra) en todos los ámbitos donde la simplicidad puede hacer más bello al producto: sea éste un producto de innovación tecnológica como el iPod, una aplicación Web como el indexador de contenidos Google, una tarea, una nueva empresa, escribir un libro, salir a comer… enfin, cualquier cosa puede hacerse más simple y por ello más útil, bello y trascedental.</description>
      <content>&lt;p&gt;Este es uno de esos libros que debes leer independiente del oficio que ejerces. El catedrático del &lt;strong&gt;MIT&lt;/strong&gt; &lt;a href=&#34;http://www.lawsofsimplicity.com/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;lawsofsimplicity.com&amp;quot;&#34;&gt;John Maeda&lt;/a&gt; se desliza en un breve pero preciso libro (creo que son los mejores libros: no más de 100 páginas pero con el contenido que no sobra) en todos los ámbitos donde la simplicidad puede hacer más bello al producto: sea éste un producto de innovación tecnológica como el &lt;strong&gt;iPod&lt;/strong&gt;, una aplicación Web como el indexador de contenidos &lt;strong&gt;Google&lt;/strong&gt;, una tarea, una nueva empresa, escribir un libro, salir a comer… enfin, cualquier cosa puede hacerse más simple y por ello más útil, bello y trascedental.&lt;/p&gt;
&lt;p&gt;Finalmente son 10 las leyes con que John nos explica con un vocabulario muy simple (sí, seguro también lo pensó) el camino para lograr productos simples:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/07/leyes_simplicidad.jpg&#34; alt=&#34;Las Leyes de la Simplicidad&#34; width=&#34;200&#34; height=&#34;284&#34; align=&#34;right&#34; /&gt; 
&lt;ol&gt;
&lt;li&gt;Reducir&lt;/li&gt;
&lt;li&gt;Organizar&lt;/li&gt;
&lt;li&gt;Tiempo&lt;/li&gt;
&lt;li&gt;Aprendizaje&lt;/li&gt;
&lt;li&gt;Diferencias&lt;/li&gt;
&lt;li&gt;Contexto&lt;/li&gt;
&lt;li&gt;Emoción&lt;/li&gt;
&lt;li&gt;Confianza&lt;/li&gt;
&lt;li&gt;Fracaso&lt;/li&gt;
&lt;li&gt;La Única&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Una lectura muy amena, simple y directa que nos ayudará no sólo a simplificar nuestro trabajo, sino que seguro nuestras vidas. Podremos darle más sentido a nuestras acciones, dándoles más valor y aprovechando más el tiempo. Búsquenlo en su libreria favorita, espero lo puedan encontrar y tener su copia.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Desarrollos Web para iPhone</title>
      <link>https://csslab.cl/2008/07/10/desarrollos-web-para-iphone/</link>
      <pubDate>Thu, 10 Jul 2008 18:52:40 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/07/10/desarrollos-web-para-iphone/</guid>
      <description>&lt;p&gt;Desde hace unos meses &lt;strong&gt;CSSLab&lt;/strong&gt; tiene un &lt;em&gt;theme&lt;/em&gt; especial si entras a través de un &lt;strong&gt;iPhone&lt;/strong&gt;. Y ante la inminente llegada de este codiciado aparato al resto del mundo, he entrado de lleno estudiando desarrollos para esta plataforma. Los aplicativos me la están ganando, ya que se hacen con &lt;a href=&#34;http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;The Objective-C 2.0 Programming Language&amp;quot;&#34;&gt;Objective-C&lt;/a&gt; el que no es mi fuerte (me costó un montón un simple &lt;em&gt;Hello World&lt;/em&gt;). Pero hoy he dedicado mis investigaciones para desarrollos web propios para &lt;strong&gt;iPhone&lt;/strong&gt;, a través de aplicaciones ricas en cuanto a interacción (&lt;a href=&#34;http://en.wikipedia.org/wiki/Rich_Internet_application&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Rich Internet application from Wikipedia.org&amp;quot;&#34;&gt;RIA&lt;/a&gt;).&lt;/p&gt;</description>
      <content>&lt;p&gt;Desde hace unos meses &lt;strong&gt;CSSLab&lt;/strong&gt; tiene un &lt;em&gt;theme&lt;/em&gt; especial si entras a través de un &lt;strong&gt;iPhone&lt;/strong&gt;. Y ante la inminente llegada de este codiciado aparato al resto del mundo, he entrado de lleno estudiando desarrollos para esta plataforma. Los aplicativos me la están ganando, ya que se hacen con &lt;a href=&#34;http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;The Objective-C 2.0 Programming Language&amp;quot;&#34;&gt;Objective-C&lt;/a&gt; el que no es mi fuerte (me costó un montón un simple &lt;em&gt;Hello World&lt;/em&gt;). Pero hoy he dedicado mis investigaciones para desarrollos web propios para &lt;strong&gt;iPhone&lt;/strong&gt;, a través de aplicaciones ricas en cuanto a interacción (&lt;a href=&#34;http://en.wikipedia.org/wiki/Rich_Internet_application&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Rich Internet application from Wikipedia.org&amp;quot;&#34;&gt;RIA&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Lo bueno es que &lt;strong&gt;iPhone&lt;/strong&gt; usa &lt;em&gt;Safari&lt;/em&gt; como &lt;em&gt;browser&lt;/em&gt; (hasta ahora, único). Estoy muy acostumbrado con su uso y manejo, así que conozco bien sus potenciales. Para ser específico, el motor de &lt;strong&gt;iPhone&lt;/strong&gt; es el &lt;em&gt;WebKit 419.3&lt;/em&gt;, (el que correspondería al de &lt;em&gt;Safari 2&lt;/em&gt; para plataformas &lt;em&gt;Mac OS X&lt;/em&gt;). Es posible crear sitios que sólo sean vistos por este &lt;em&gt;Safari&lt;/em&gt;, tal como una hoja de estilos &lt;em&gt;media=&amp;ldquo;handheld&amp;rdquo;&lt;/em&gt; es leída sólo por [dispositivos móviles][1]; ya &lt;strong&gt;iPhone&lt;/strong&gt; no lo interpreta, utiliza por defecto la hoja de estilos principales (sea &lt;em&gt;media=&amp;ldquo;all&amp;rdquo;&lt;/em&gt; ó &lt;em&gt;media=&amp;ldquo;screen&amp;rdquo;&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Entonces ¿cómo lo hace?&lt;/p&gt;
&lt;p&gt;Para crear estilos sólo para &lt;strong&gt;iPhone&lt;/strong&gt;, podemos linkear una hoja de estilos externa pero &lt;a href=&#34;http://www.w3.org/TR/css3-mediaqueries/&#34; title=&#34;Enlace externo a &amp;quot;Media Queries at W3C.org&amp;quot;&#34; target=&#34;_blank&#34;&gt;con un cambio en el atributo media&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;link href=&#34;estilos_iphone.css&#34; rel=&#34;stylesheet&#34; media=&#34;only screen and (max-device-width: 480px)&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este cambio en media es propio de &lt;strong&gt;CSS3&lt;/strong&gt;, una de las ventajas de &lt;em&gt;Safari&lt;/em&gt;. Dice precisamente que para anchos de pantalla de hasta 480px (que es el ancho máximo del &lt;strong&gt;iPhone&lt;/strong&gt; en apaisado) utilice tal hoja de estilos. Ahora, para los otros anchos (computadores personales):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;link href=&#34;estilos_iphone.css&#34; rel=&#34;stylesheet&#34; media=&#34;only screen and (min-device-width: 481px)&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nuevamente, esto sólo funcionará en &lt;em&gt;Safari 2+&lt;/em&gt; para &lt;em&gt;Mac OS X&lt;/em&gt; ó &lt;em&gt;Windows&lt;/em&gt;; para que se comporte debidamente en todos los &lt;em&gt;browsers&lt;/em&gt;, recomiento primero linkear la hoja de estilos general como siempre lo han hecho (&lt;em&gt;media=&amp;ldquo;screen&amp;rdquo;&lt;/em&gt;), y a continuación la del &lt;strong&gt;iPhone&lt;/strong&gt; con el &lt;em&gt;media=&amp;ldquo;only screen and (max-device-width: 480px)&amp;rdquo;&lt;/em&gt; que ya mostré.&lt;/p&gt;
&lt;p&gt;La otra manera (que utilizaré en los ejemplos, los que podrás notar diferencia si los ves con un &lt;strong&gt;iPhone&lt;/strong&gt;, claro) [ya la había mencionado en un artículo anterior][2], y se usan juntos del mismo estilo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@media screen {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;commentcss&#34;&gt;// estilos para todos los browsers&amp;lt;/span&gt;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
@media screen and (max-device-width: 480px) {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;commentcss&#34;&gt;// estilos s&amp;oacute;lo para iPhone&amp;lt;/span&gt;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 1][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;También puedes detectar si el sitio se está leyendo desde el &lt;strong&gt;iPhone&lt;/strong&gt; y redireccionarlo a otra página mediante &lt;strong&gt;PHP&lt;/strong&gt; (que fue lo q usé para &lt;strong&gt;CSSLab&lt;/strong&gt;), como por ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;if (stristr($_SERVER[&#39;HTTP_USER_AGENT&#39;], &amp;lsquo;iPhone&amp;rsquo;)) {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;commentcss&#34;&gt;// redirecciona&amp;lt;/span&gt;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;![Dimensiones de pantalla para iPhone en CSSLab.cl][4]&lt;/p&gt;
&lt;p&gt;Otro punto a tener en cuenta es la etiqueta &lt;strong&gt;&lt;meta&gt;&lt;/strong&gt; y el valor &lt;strong&gt;viewport&lt;/strong&gt;. Con él podemos manejar varias propiedades al momento de cargar la página en sus &lt;strong&gt;iPhone&lt;/strong&gt;. Sus valores son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;width&lt;/strong&gt;: controla el ancho el cual la página se mostrará en primera instancia. Cuando cargas una página, &lt;em&gt;Safari&lt;/em&gt; la adapta para el el 100% del alto y del ancho para que quepa dentro de la primera vista. Si el ancho de tu sitio es de 800px, pero quieres que al momento de cargar la página se desplieguen los primeros 400px, lo defines mediante este valor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;height&lt;/strong&gt;: similar al anterior, la página se cargará mostrando el alto que determinemos en primera instancia, aunque éste sea mayor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;user-scalable&lt;/strong&gt;: determina si el usuario puede o no hacer &lt;em&gt;zoom&lt;/em&gt; (&lt;em&gt;in-out&lt;/em&gt;) a la página. El valor por defecto es &lt;em&gt;‘yes’&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;meta name=&#34;viewport&#34; content=&#34;width=300, user-scalable=no&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 2][5]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Otro punto es la capacidad de esconder la barra de &lt;strong&gt;URL&lt;/strong&gt; que tiene &lt;em&gt;Safari&lt;/em&gt;, y desplegar la página sin ella. A través de &lt;strong&gt;Javascript&lt;/strong&gt; podemos hacer ese desplazamiento apenas la página cargue, de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;setTimeout(function(){&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window.scrollTo(0, 1);&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 3][6]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Esto funciona sólo si el alto de la página es mayor al de la ventana al momento de cargarse.&lt;/p&gt;
&lt;p&gt;Otro punto a considerar es la capacidad de interactuar con elementos propios de &lt;strong&gt;iPhone&lt;/strong&gt; a través de simple &lt;strong&gt;HTML&lt;/strong&gt; y enlaces, por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Para hacer una llamada telefónica a través de un link:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;a href=&#34;tel:6666666&#34;&amp;gt;Hacer llamado&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Para enviar un e-mail:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;a href=&#34;mailto:usuario@dominio.com&#34;&amp;gt;Envia un e-mail&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Para buscar un lugar en Google Maps:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;a href=&#34;http://maps.google.com/maps?q=santiago+chile&#34;&amp;gt;Santiago, Chile&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 4][7]{.verejemplo}&lt;/p&gt;
&lt;p&gt;El ultimo punto que mencionaré en este artículo, es el poder de &lt;em&gt;Safari&lt;/em&gt; cuando hablamos de estilos. Principalmente, cuando queremos aplicar estilos para elementos de formulario. &lt;em&gt;WebKit&lt;/em&gt; tiene propiedades propias que podemos finalmente utilizar sin vergüenza: radio, opacidad y sombras, entre otros:&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 5][8]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Finalmente, algunos aspectos técnicos sobre &lt;em&gt;Safari&lt;/em&gt; y la plataforma misma &lt;strong&gt;iPhone&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;aspectos-teacutecnicos&#34;&gt;Aspectos técnicos:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HTML&lt;/strong&gt; &lt;strong&gt;4.01&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;XHTML&lt;/strong&gt; &lt;strong&gt;1.0&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS 2.1&lt;/strong&gt; y algo de &lt;strong&gt;CSS 3&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Javascript 1.4&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Manipulación del &lt;strong&gt;DOM&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ajax&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;sobre-dimensiones&#34;&gt;Sobre dimensiones:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;el ancho de la pantalla es de 320px.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;sobre-imaacutegenes&#34;&gt;Sobre imágenes:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Soporte para &lt;strong&gt;GIF&lt;/strong&gt; animados (aunque no deben pasar de 2mb), &lt;strong&gt;JPG&lt;/strong&gt;, &lt;strong&gt;PNG&lt;/strong&gt; y &lt;strong&gt;TIFF&lt;/strong&gt; (hasta 8mb).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;sobre-medios&#34;&gt;Sobre medios:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Soporte para &lt;strong&gt;PDF&lt;/strong&gt; y &lt;strong&gt;Quicktime&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;No soporta &lt;strong&gt;Java&lt;/strong&gt; ó películas &lt;strong&gt;Flash&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;sobre-javascript&#34;&gt;Sobre Javascript:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Limitado a 5 segundos, 10mb y máximo 8 documentos al mismo tiempo.&lt;/li&gt;
&lt;li&gt;Algunos eventos no son soportados: &lt;em&gt;mouseover&lt;/em&gt;, mouseout, &lt;em&gt;onmouseenter&lt;/em&gt;, &lt;em&gt;onmouseleave&lt;/em&gt;, &lt;em&gt;onmousemove&lt;/em&gt;, &lt;em&gt;onSelect&lt;/em&gt;, &lt;em&gt;onresize&lt;/em&gt; y &lt;em&gt;onScroll&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;No permite cortar/copiar/pegar, &lt;em&gt;drag&amp;amp;drop&lt;/em&gt; y selecccionar texto/elementos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;sobre-estilos&#34;&gt;Sobre estilos:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Safari&lt;/em&gt; para &lt;strong&gt;iPhone&lt;/strong&gt; no reconoce los &lt;em&gt;media types print&lt;/em&gt; y &lt;em&gt;handheld&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Soporta estilos propios de &lt;em&gt;WebKit&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;No soporta pseudoclass &lt;em&gt;:hover&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Las tipografías soportadas son American Typewriter, Arial, Arial Rounded MT Bold, Courier, Courier New, Georgia, Helvetica, Helvetica Neue, Marker Felt, Times New Roman, Trebuchet MS, Verdana y Zapfino.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;![Tipografías soportadas por iPhone en CSSLab.cl][9]&lt;/p&gt;
&lt;h3 id=&#34;sobre-html&#34;&gt;Sobre HTML:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;No soporta subida de archivos &lt;strong&gt;&lt;input type=&#34;file&#34; /&gt;&lt;/strong&gt; (se deshabilita).&lt;/li&gt;
&lt;li&gt;Enlaces pueden ser directos para números telefónicos, emails y mapas de &lt;strong&gt;Google&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;No soporta &lt;em&gt;tooltips&lt;/em&gt;, aunque muestra el contenido del atributo &lt;em&gt;title=&amp;quot;&amp;quot;&lt;/em&gt; si mantienes presionado el enlace.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;algunas-buenas-praacutecticas-a-considerar&#34;&gt;Algunas buenas prácticas a considerar:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Siempre separar &lt;strong&gt;HTML&lt;/strong&gt; y &lt;strong&gt;CSS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Usar &lt;strong&gt;HTML&lt;/strong&gt; bien estructurado y válido&lt;/li&gt;
&lt;li&gt;Escalar y optimizar imágenes apropiadamente, no a través de estilos o atributos &lt;strong&gt;HTML&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Evitar uso de &lt;strong&gt;&lt;frameset&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Utilizar columnas para mejor manejo de &lt;em&gt;zoom&lt;/em&gt; (evitar ancho completo).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/css3-mediaqueries/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Media Queries at W3C.org&amp;quot;&#34;&gt;Media Queries at W3C.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://qooxdoo.org/documentation/general/webkit_css_styles&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Webkit CSS Styles&amp;quot;&#34;&gt;Webkit CSS Styles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.iphonewebdev.com/examples/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;iPhoneWebDev&amp;quot;&#34;&gt;iPhoneWebDev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://ajaxian.com/archives/iphone-web-development-tips-and-official-documentation-released&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;iPhone Web Development Tips and Official Documentation Released at Ajaxian.com&amp;quot;&#34;&gt;iPhone Web Development Tips and Official Documentation Released at Ajaxian.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2006/03/07/css-para-moviles/&#34;&gt;http://www.csslab.cl/2006/03/07/css-para-moviles/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;CSS para móviles&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2008/06/24/tip-precoz-2-combinando-media/&#34;&gt;http://www.csslab.cl/2008/06/24/tip-precoz-2-combinando-media/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Tip Precoz 2: combinando @media&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/webiphone/ejemplo1.html&#34;&gt;http://www.csslab.cl/ejemplos/webiphone/ejemplo1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 1 iPhone&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2008/07/dimensiones.jpg&#34;&gt;http://www.csslab.cl/wp-content/uploads/2008/07/dimensiones.jpg&lt;/a&gt;
[5]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/webiphone/ejemplo2.html&#34;&gt;http://www.csslab.cl/ejemplos/webiphone/ejemplo2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 2 iPhone&amp;rdquo;&amp;rdquo;
[6]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/webiphone/ejemplo3.html&#34;&gt;http://www.csslab.cl/ejemplos/webiphone/ejemplo3.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 3 iPhone&amp;rdquo;&amp;rdquo;
[7]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/webiphone/ejemplo4.html&#34;&gt;http://www.csslab.cl/ejemplos/webiphone/ejemplo4.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 4 iPhone&amp;rdquo;&amp;rdquo;
[8]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/webiphone/ejemplo5.html&#34;&gt;http://www.csslab.cl/ejemplos/webiphone/ejemplo5.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 5 iPhone&amp;rdquo;&amp;rdquo;
[9]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2008/07/fonts.gif&#34;&gt;http://www.csslab.cl/wp-content/uploads/2008/07/fonts.gif&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Overflow en IE6</title>
      <link>https://csslab.cl/2008/07/07/overflow-en-ie6/</link>
      <pubDate>Mon, 07 Jul 2008 17:43:22 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/07/07/overflow-en-ie6/</guid>
      <description>Ayayay cuántos dolores de cabeza he tenido a causa de Internet Explorer 6. Son bugs, fallas y mañas múltiples que se necesitan dotes de malabarista para conocerlos (ni siquiera trato de entenderlos; sólo sé que existen) y buscar una solución. He abarcado un montón de ellos aquí en CSSLab, y al parecer este es uno más de ellos ya que la lista parece ser interminable.
Desde que cambié el diseño de este sitio al actual donde la home tiene un scroll horizontal, no pude solucionarlo para IE6.</description>
      <content>&lt;p&gt;Ayayay cuántos dolores de cabeza he tenido a causa de &lt;em&gt;Internet Explorer 6&lt;/em&gt;. Son &lt;em&gt;bugs&lt;/em&gt;, fallas y mañas múltiples que se necesitan dotes de malabarista para conocerlos (ni siquiera trato de entenderlos; sólo sé que existen) y buscar una solución. He abarcado un montón de ellos aquí en &lt;strong&gt;CSSLab&lt;/strong&gt;, y al parecer este es uno más de ellos ya que la lista parece ser interminable.&lt;/p&gt;
&lt;p&gt;Desde que cambié el diseño de este sitio al actual donde la home tiene un &lt;em&gt;scroll&lt;/em&gt; horizontal, no pude solucionarlo para &lt;strong&gt;IE6&lt;/strong&gt;. Como ese es mi &lt;em&gt;browser&lt;/em&gt; más odioado, lo dejé para ‘&lt;em&gt;luego lo veo&lt;/em&gt;‘. Pero ya era hora de darle una solución final, y comencé a buscar sobre &lt;strong&gt;overflow: hidden&lt;/strong&gt; en &lt;em&gt;IE6&lt;/em&gt;. Precisamente, ese &lt;em&gt;browser&lt;/em&gt; tiene un &lt;em&gt;bug&lt;/em&gt; muy específico, que se da cuando tienes una caja contenedora que envuelve otra caja, y esta última tiene un &lt;strong&gt;position&lt;/strong&gt; (&lt;strong&gt;relative&lt;/strong&gt; o &lt;strong&gt;absolute&lt;/strong&gt;) definido. Lo que sucede es que la caja que contiene no aplica el &lt;strong&gt;overflow: hidden;&lt;/strong&gt; como debería, sin razón aparente.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 1][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Maldito &lt;em&gt;browser&lt;/em&gt;. No me canso de maldecirlo. 80% del mercado por puro monopolio. Bueno, la solución es demasiado simple, pero había que investigar un poco antes. Basta con aplicar &lt;strong&gt;position&lt;/strong&gt; (&lt;strong&gt;relative&lt;/strong&gt; o &lt;strong&gt;absolute&lt;/strong&gt;) a la caja contenedora también y &lt;strong&gt;overflow&lt;/strong&gt; funcionará para &lt;strong&gt;IE6&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo final][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;![Imagen en CSSLab de ejemplo de Overflow en IE6][3]&lt;/p&gt;
&lt;p&gt;Así que ya saben, si se dan esas condiciones y su caja no esconde el contenido como debería, probablemente esta es la solución. Pero cuidado, si tienen elementos flotando, quizás [algún][4] [método][5] de clearfix a la misma caja contenedora será necesario.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/overflow_ie6/1.html&#34;&gt;http://www.csslab.cl/ejemplos/overflow_ie6/1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 1&amp;quot;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/overflow_ie6/final.html&#34;&gt;http://www.csslab.cl/ejemplos/overflow_ie6/final.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo Final&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2008/07/overflow_ie6.gif&#34;&gt;http://www.csslab.cl/wp-content/uploads/2008/07/overflow_ie6.gif&lt;/a&gt;
[4]: &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34;&gt;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Flotando en la incertidumbre&amp;rdquo;&amp;rdquo;
[5]: &lt;a href=&#34;http://www.csslab.cl/2008/06/09/clearfix-ultimate/&#34;&gt;http://www.csslab.cl/2008/06/09/clearfix-ultimate/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;clearfix ultimate&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Podcast 02</title>
      <link>https://csslab.cl/2008/06/26/podcast-02/</link>
      <pubDate>Fri, 27 Jun 2008 02:22:10 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/06/26/podcast-02/</guid>
      <description>Ya era hora, casi 2 años y les presento el segundo Podcast. ¿Porqué tanto tiempo pasó? se podrían preguntar… bueno, uno porque no le veía tanta utilidad un podcast en un sitio donde el código fuente es el protagonista. Pero este tema es de opinión, y espero sea mejor escucharlo que leerlo. En esta ocasión, el monólogo es:
 Nueva Guerra de Browsers. Recomendaciones para un layout cross-browser.  Nuevamente, espero sus comentarios, sugerencias y/u opiniones.</description>
      <content>&lt;p&gt;Ya era hora, casi 2 años y les presento el segundo &lt;strong&gt;Podcast&lt;/strong&gt;. &lt;em&gt;¿Porqué tanto tiempo pasó?&lt;/em&gt; se podrían preguntar… bueno, uno porque no le veía tanta utilidad un &lt;strong&gt;podcast&lt;/strong&gt; en un sitio donde el código fuente es el protagonista. Pero este tema es de opinión, y espero sea mejor escucharlo que leerlo. En esta ocasión, el monólogo es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nueva Guerra de Browsers.&lt;/li&gt;
&lt;li&gt;Recomendaciones para un layout cross-browser.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nuevamente, espero sus comentarios, sugerencias y/u opiniones.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/podcast/podcast02.zip&#34; title=&#34;Bajar Podcast 02&#34;&gt;Bajar Podcast 02 (19.6mb .zip)&lt;/a&gt;{.bajar}&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Tip Precoz 2: combinando @media</title>
      <link>https://csslab.cl/2008/06/24/tip-precoz-2-combinando-media/</link>
      <pubDate>Tue, 24 Jun 2008 16:45:57 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/06/24/tip-precoz-2-combinando-media/</guid>
      <description>Los media type especifican el soporte al cual apunta la hoja de estilos definida: pantalla (screen), [papel (print)][1], [móviles (handheld)][2], etc. Algunas propiedades CSS están diseñadas para medios específicos (page-break-after y page-break-before se usan para media=&amp;ldquo;print&amp;rdquo; por ejemplo), y en otros casos propiedades son compartidos por diferentes medios, pero usan diferentes unidades (pixel para pantalla, centímetros para papel).
Usualmente se especifican los medios al cual apuntan las hojas de estilos como atributo de la etiqueta , de la siguiente forma:</description>
      <content>&lt;p&gt;Los &lt;a href=&#34;http://www.w3.org/TR/REC-CSS2/media.html&#34; title=&#34;Enlace externo a &amp;quot;Introduction to media types&amp;quot;&#34; target=&#34;_blank&#34;&gt;media type&lt;/a&gt; especifican el soporte al cual apunta la hoja de estilos definida: pantalla (screen), [papel (print)][1], [móviles (handheld)][2], etc. Algunas propiedades &lt;strong&gt;CSS&lt;/strong&gt; están diseñadas para medios específicos (&lt;strong&gt;page-break-after&lt;/strong&gt; y &lt;strong&gt;page-break-before&lt;/strong&gt; se usan para &lt;strong&gt;media=&amp;ldquo;print&amp;rdquo;&lt;/strong&gt; por ejemplo), y en otros casos propiedades son compartidos por diferentes medios, pero usan diferentes unidades (&lt;em&gt;pixel&lt;/em&gt; para pantalla, centímetros para papel).&lt;/p&gt;
&lt;p&gt;Usualmente se especifican los medios al cual apuntan las hojas de estilos como atributo de la etiqueta &lt;strong&gt;&lt;link /&gt;&lt;/strong&gt;, de la siguiente forma:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;link&amp;nbsp;href=&#34;estilos/layout.css&#34;&amp;nbsp;rel=&#34;stylesheet&#34;&amp;nbsp;type=&#34;text/css&#34;&amp;nbsp;media=&#34;screen&#34;&amp;nbsp;/&amp;gt;&amp;lt;br /&gt;
&amp;lt;link&amp;nbsp;href=&#34;estilos/print.css&#34;&amp;nbsp;rel=&#34;stylesheet&#34;&amp;nbsp;type=&#34;text/css&#34;&amp;nbsp;media=&#34;print&#34;&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sin embargo existen otros 2 métodos, los cuales pueden ser utilizados dentros mismo de las hojas de estilos. El segundo mediante &lt;strong&gt;@import&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;@import url(&#34;sintetizado.css&#34;) aural;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y el tercero, a través de la regla &lt;strong&gt;@media&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;@media print {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body { font-size: 14pt }&amp;lt;br /&gt;
 }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con esta regla, podemos definir dentro de nuestras hojas de estilos las propiedades y valores para cada medio, sin necesidad de linkear otras hojas de estilo externas:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;@media&amp;nbsp;screen&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body&amp;nbsp;{&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: #666;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size: 12px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 15px&amp;nbsp;0;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  @media&amp;nbsp;print&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body&amp;nbsp;{&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-color: #fff&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: #000;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 1cm;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;br /&gt;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para entregar información más completa, todos los medios disponibles en &lt;strong&gt;CSS 2&lt;/strong&gt; son:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;all&lt;/dt&gt;
&lt;dd&gt;todos los medios&lt;/dd&gt;
&lt;dt&gt;aural&lt;/dt&gt;
&lt;dd&gt;para sintetizadores de voz&lt;/dd&gt;
&lt;dt&gt;braille&lt;/dt&gt;
&lt;dd&gt;para dispositivos táctiles que usan braille&lt;/dd&gt;
&lt;dt&gt;embossed&lt;/dt&gt;
&lt;dd&gt;utilizada para impresoras para braille&lt;/dd&gt;
&lt;dt&gt;handheld&lt;/dt&gt;
&lt;dd&gt;dispositivvos móviles&lt;/dd&gt;
&lt;dt&gt;print&lt;/dt&gt;
&lt;dd&gt;material impreso&lt;/dd&gt;
&lt;dt&gt;projection&lt;/dt&gt;
&lt;dd&gt;proyectores o impresores de transparencias&lt;/dd&gt;
&lt;dt&gt;screen&lt;/dt&gt;
&lt;dd&gt;pantallas en color en general&lt;/dd&gt;
&lt;dt&gt;tty&lt;/dt&gt;
&lt;dd&gt;medios con caracter en grilla, como teletipos, terminales o dispositivos móviles con capacidad limitada. Al tener nula resoución, no se debe usar la unidad de pixeles.&lt;/dd&gt;
&lt;dt&gt;tv&lt;/dt&gt;
&lt;dd&gt;dispositivos de televisión (baja resolución)&lt;/dd&gt;
&lt;/dl&gt;
&lt;h4 id=&#34;link&#34;&gt;Link:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/REC-CSS2/media.html&#34; title=&#34;Enlace externo a &amp;quot;Introduction to media types&amp;quot;&#34; target=&#34;_blank&#34;&gt;Media types&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2005/11/15/mediaprint/&#34;&gt;http://www.csslab.cl/2005/11/15/mediaprint/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;media=&amp;lsquo;print&amp;rsquo; (actualizado)&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2006/03/07/css-para-moviles/&#34;&gt;http://www.csslab.cl/2006/03/07/css-para-moviles/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;CSS para móviles&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Tip Precoz 1: atributos contextuales</title>
      <link>https://csslab.cl/2008/06/20/tip-precoz-1-atributos-contextuales/</link>
      <pubDate>Fri, 20 Jun 2008 17:02:07 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/06/20/tip-precoz-1-atributos-contextuales/</guid>
      <description>Un tip precoz es un método tan corto y rápido, que casi que no es un artículo en sí. Los artículos son más bien extensos, donde explico paso-por-paso alguna técnica propuesta. En esta ocasión es casi como un twitter-artículo. La presente técnica la conozco pero no sé de dónde la saqué, ya que por más que busco en la web no encuentro documentación alguna al respecto. No sé ni cómo se llama, así que la incluí dentro de los selectores contextuales, ya que se comporta respetando los atributos adyacentes.</description>
      <content>&lt;p&gt;Un &lt;em&gt;tip precoz&lt;/em&gt; es un método tan corto y rápido, que casi que no es un artículo en sí. Los artículos son más bien extensos, donde explico paso-por-paso alguna técnica propuesta. En esta ocasión es casi como un &lt;em&gt;twitter-artículo.&lt;/em&gt; La presente técnica la conozco pero no sé de dónde la saqué, ya que por más que busco en la web no encuentro documentación alguna al respecto. No sé ni cómo se llama, así que la incluí dentro de los selectores contextuales, ya que se comporta respetando los atributos adyacentes.&lt;/p&gt;
&lt;p&gt;Veamos la siguiente situación: tengo una etiqueta con una &lt;strong&gt;class=&amp;ldquo;destacado&amp;rdquo;&lt;/strong&gt; donde lo que hace es poner rojo el color del texto:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;.destacado {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;color: red;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;blockquote class=&#34;destacado&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Lorem ipsum dolor sit amet.&amp;lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esa &lt;em&gt;class&lt;/em&gt; la uso en varias otras etiquetas, pero hay una que por &lt;em&gt;X&lt;/em&gt; motivo tiene un &lt;strong&gt;id=&amp;ldquo;unico&amp;rdquo;&lt;/strong&gt;, y necesito que esa etiqueta tenga un tamaño de fuente mayor. Lo normal sería pensar en crear otra &lt;em&gt;class&lt;/em&gt; que tenga color rojo y &lt;em&gt;font-size&lt;/em&gt; deseado. Otra solución es crear una &lt;em&gt;class&lt;/em&gt; con sólo el nuevo &lt;em&gt;font-size&lt;/em&gt; y aplicarlo junto a la &lt;strong&gt;class=&amp;ldquo;destacado&amp;rdquo;&lt;/strong&gt; ya existente. Pero otra solución es utilizar el &lt;strong&gt;id=&amp;ldquo;unico&amp;rdquo;&lt;/strong&gt; junto a la &lt;strong&gt;class=&amp;ldquo;destacado&amp;rdquo;&lt;/strong&gt; ya declarados para ello, de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#unico.destacado {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size: 3em;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;blockquote id=&#34;unico&#34; class=&#34;destacado&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Amet sit dolor ipsum lorem.&amp;lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Como &lt;strong&gt;.destacado&lt;/strong&gt; ya está declarado para poner color rojo al texto, sólo basta agregar el nuevo tamaño de texto.&lt;/p&gt;
&lt;p&gt;Ahora, hay otra situación. Qué pasa si, por esas cosas de la vida, tengo dos &lt;em&gt;classes&lt;/em&gt; en una misma etiqueta:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;blockquote class=&#34;destacado menor&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Bla ble bli blo blu.&amp;lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y quiero que el texto sea rojo (ya declarado en &lt;strong&gt;.destacado&lt;/strong&gt;) pero con un &lt;em&gt;font-size&lt;/em&gt; menor. De la misma forma anterior:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;.destacado.menor {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size: 0.5em;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y… si por esos accidentes raros de la vida profesional te tocara un elemento con 1 &lt;em&gt;id&lt;/em&gt; y 2 &lt;em&gt;classes&lt;/em&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;blockquote id=&#34;unico&#34; class=&#34;destacado mayor&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Cla cle cli clo clu.&amp;lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y quieres también darle estilo pero sólo cuando esté dado esa situación… supones bien, de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#unico.destacado.mayor {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size: 6em;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver todos los ejemplos juntos][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Me da gusto esta vez de anunciar que esto funciona en &lt;strong&gt;IE6&lt;/strong&gt;… por lo tanto, los otros browsers buenos también lo aceptan.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/tip_precoz/selector.html&#34;&gt;http://www.csslab.cl/ejemplos/tip_precoz/selector.html&lt;/a&gt; &amp;ldquo;Enlace a ejemplo en CSSLab de &amp;ldquo;Tip Precoz 1: atributos contextuales&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>clearfix ultimate</title>
      <link>https://csslab.cl/2008/06/09/clearfix-ultimate/</link>
      <pubDate>Mon, 09 Jun 2008 22:39:29 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/06/09/clearfix-ultimate/</guid>
      <description>&lt;p&gt;Muchas han sido las veces que [he nombrado][1] y [recontra-aplicado][2] el método de &lt;strong&gt;.clearfix&lt;/strong&gt; aquí en &lt;strong&gt;CSSLab&lt;/strong&gt;. Lo suelo nombrar a menudo en clases, ya que es el método más fácil de entender y sobrellevar el colapso de cajas contenedoras de ventanas flotantes. Fácil porque basta con aplicar una &lt;strong&gt;class=&amp;ldquo;clearfix&amp;rdquo;&lt;/strong&gt; y nuestra caja vuelve a comportarse como debería. Pero es código extra que quizás ensucie nuestra hoja de estilos, y andar agregando &lt;em&gt;class&lt;/em&gt;‘es que no tienen sentido semántico puede que no agrade a los más puristas. Pero existe desde hace mucho tiempo otra solución al mismo problema.&lt;/p&gt;</description>
      <content>&lt;p&gt;Muchas han sido las veces que [he nombrado][1] y [recontra-aplicado][2] el método de &lt;strong&gt;.clearfix&lt;/strong&gt; aquí en &lt;strong&gt;CSSLab&lt;/strong&gt;. Lo suelo nombrar a menudo en clases, ya que es el método más fácil de entender y sobrellevar el colapso de cajas contenedoras de ventanas flotantes. Fácil porque basta con aplicar una &lt;strong&gt;class=&amp;ldquo;clearfix&amp;rdquo;&lt;/strong&gt; y nuestra caja vuelve a comportarse como debería. Pero es código extra que quizás ensucie nuestra hoja de estilos, y andar agregando &lt;em&gt;class&lt;/em&gt;‘es que no tienen sentido semántico puede que no agrade a los más puristas. Pero existe desde hace mucho tiempo otra solución al mismo problema.&lt;/p&gt;
&lt;p&gt;Ya [lo mencioné de rebote en un artículo][3]. Este método no tiene nombre conocido (por lo menos en los sitios que he leído no lo nombran de alguna manera especial). Es tan simple que dan ganas de tirarse por la ventana por no conocerlo antes.&lt;/p&gt;
&lt;p&gt;Se trata de utilizar la propiedad &lt;strong&gt;CSS&lt;/strong&gt; &lt;strong&gt;overflow&lt;/strong&gt; en la caja que está colapsando. Eso es todo. Basta con incluirla en algún de los siguientes valores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;overflow: auto;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;overflow: hidden;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;overflow: scroll;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Y la caja volverá a comportarse como debiera: envolviendo a los elementos flotantes dentro de ella. La teoría es simple: como el valor por defecto es &lt;em&gt;overflow: visible&lt;/em&gt;, esto hace que la caja crezca para adaptarse al tamaño que tienen sus elementos (etiquetas) hijo. Con &lt;em&gt;visible&lt;/em&gt; se asume que se han dado los valores de ancho (&lt;em&gt;width&lt;/em&gt;) y alto (&lt;em&gt;height&lt;/em&gt;) y por eso nada sucede; ya con los demás valores ya nombrados, obliga a la caja contenedora a re-calcular sus dimensiones, tomando en cuenta ahora a los elementos hijos que están con &lt;em&gt;float&lt;/em&gt;. Con alguno de estos valores de &lt;em&gt;overflow&lt;/em&gt;, le recordamos a la caja contenedora que tienen elementos hijo (flotando) y que debe conocer sus tamaños para envolverlos.&lt;/p&gt;
&lt;p&gt;El ejemplo más clásico a continuación. El &lt;strong&gt;HTML&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;contenedor&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div class=&#34;flotando_izquierda&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Floto hacia la izquierda&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div class=&#34;flotando_derecha&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Floto hacia la derecha&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y el &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#contenedor {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;overflow: auto;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 1%;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.flotando_izquierda {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.flotando_derecha {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: right;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][4]{.verejemplo}&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Para que &lt;strong&gt;IE6&lt;/strong&gt; reconociera este método, hubo que aplicar a la caja contenedora (en este caso &lt;strong&gt;#contenedor&lt;/strong&gt;) &lt;strong&gt;height: 1%&lt;/strong&gt;, haciendo que todos los &lt;em&gt;browsers&lt;/em&gt; modernos desplieguen de igual manera este método.&lt;/p&gt;
&lt;p&gt;El único detalle que le encontré fue al momento de utilizar dentro de &lt;strong&gt;#contenedor&lt;/strong&gt; un elemento [posicionado absolutamente][5], relativo a él, lo que hace que se muestre la barra de &lt;em&gt;scroll&lt;/em&gt; (dado el &lt;strong&gt;overlow: auto;&lt;/strong&gt;). En ese caso, lo mejor es utilizar &lt;strong&gt;overflow: hidden&lt;/strong&gt;, lo que hace a la caja esconder al elemento absoluto, en el caso de éste ser más grande que la caja misma.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo con absolute][6]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Este caso es bastante específico, y creo que no hace que este método deje de ser una muy buena alternativa de despeje.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.sitepoint.com/blogs/2005/02/26/simple-clearing-of-floats/&#34; title=&#34;Enlace externo a &amp;quot;Simple Clearing of Floats&amp;quot;&#34; target=&#34;_blank&#34;&gt;Simple Clearing of Floats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.quirksmode.org/css/clearing.html&#34; title=&#34;Enlace externo a &amp;quot;Clearing floats&amp;quot;&#34; target=&#34;_blank&#34;&gt;Clearing floats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.planseldon.com/blog/hasta-siempre-clearboth/&#34; title=&#34;Enlace externo a &amp;quot;Hasta siempre, clear:both&amp;quot;&#34; target=&#34;_blank&#34;&gt;Hasta siempre, clear:both&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34;&gt;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Flotando en la incertidumbre&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2007/03/09/clearfix-el-widget/&#34;&gt;http://www.csslab.cl/2007/03/09/clearfix-el-widget/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;.clearfix: el widget&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2008/01/28/review-1-origo-css/&#34;&gt;http://www.csslab.cl/2008/01/28/review-1-origo-css/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Review 1: Origo CSS&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/clearfix_ultimate/overflow.html&#34;&gt;http://www.csslab.cl/ejemplos/clearfix_ultimate/overflow.html&lt;/a&gt; &amp;ldquo;Ver enlace a ejemplo &amp;ldquo;Clearfix Ultimate&amp;rdquo;&amp;rdquo;
[5]: &lt;a href=&#34;http://www.csslab.cl/2007/05/11/absolutamente-si/&#34;&gt;http://www.csslab.cl/2007/05/11/absolutamente-si/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;quot; Absolutamente sí&amp;rdquo;&amp;quot;
[6]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/clearfix_ultimate/overflow_absolute.html&#34;&gt;http://www.csslab.cl/ejemplos/clearfix_ultimate/overflow_absolute.html&lt;/a&gt; &amp;ldquo;Ver enlace a ejemplo &amp;ldquo;Clearfix Ultimate con Absolute&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Parallax en uso real</title>
      <link>https://csslab.cl/2008/05/29/parallax-en-uso-real/</link>
      <pubDate>Thu, 29 May 2008 20:43:39 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/05/29/parallax-en-uso-real/</guid>
      <description>&lt;p&gt;Luego del anterior artículo develando [cómo se realiza el efecto Parallax con CSS][1], surgieron dudas de su real aplicación en proyectos web. Así como se presentó no tiene mucho sentido, y como mencioné, es difícil verlo aplicado sin que se note el efecto que produce (ya que el usuario no suele modificar el tamaño de la ventana de su &lt;em&gt;browser&lt;/em&gt;). Así que para paliar [esa frustración que surgió en los comentarios][2], me propuse inventar un método para verlo funcionando de acuerdo a la interacción del usuario con el sitio. Primero intenté con el movimiento del &lt;em&gt;mouse&lt;/em&gt; sobre la superficie de la ventana (con lo que hice para el sitio de &lt;a href=&#34;http://www.2monos.net/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;2monos.net&amp;quot;&#34;&gt;2monos&lt;/a&gt;), pero no funcionó por problemas de posicionamiento relativo de los elementos. Luego, pensé en &lt;a href=&#34;http://demos.mootools.net/Fx.Scroll&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a a &amp;quot;Mootools.net - FX.Scroll&amp;quot;&#34;&gt;movimiento horizontal mediante anclas&lt;/a&gt;; algo que ya había utilizado en otras ocasiones anteriores. Felizmente logré integrarlo a través del grandioso &lt;strong&gt;Mootools&lt;/strong&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;Luego del anterior artículo develando [cómo se realiza el efecto Parallax con CSS][1], surgieron dudas de su real aplicación en proyectos web. Así como se presentó no tiene mucho sentido, y como mencioné, es difícil verlo aplicado sin que se note el efecto que produce (ya que el usuario no suele modificar el tamaño de la ventana de su &lt;em&gt;browser&lt;/em&gt;). Así que para paliar [esa frustración que surgió en los comentarios][2], me propuse inventar un método para verlo funcionando de acuerdo a la interacción del usuario con el sitio. Primero intenté con el movimiento del &lt;em&gt;mouse&lt;/em&gt; sobre la superficie de la ventana (con lo que hice para el sitio de &lt;a href=&#34;http://www.2monos.net/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;2monos.net&amp;quot;&#34;&gt;2monos&lt;/a&gt;), pero no funcionó por problemas de posicionamiento relativo de los elementos. Luego, pensé en &lt;a href=&#34;http://demos.mootools.net/Fx.Scroll&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a a &amp;quot;Mootools.net - FX.Scroll&amp;quot;&#34;&gt;movimiento horizontal mediante anclas&lt;/a&gt;; algo que ya había utilizado en otras ocasiones anteriores. Felizmente logré integrarlo a través del grandioso &lt;strong&gt;Mootools&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;En esta ocasión utilicé bastantes más capas que en el ejemplo original (6 en total… un poco exagerado ya que los &lt;strong&gt;PNG&lt;/strong&gt;‘s pesan bastante), pero el &lt;strong&gt;HTML&lt;/strong&gt; fue construído de igual manera:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;nube&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;montanas&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;ciudad&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;personas&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;persona1&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;img src=&#34;imgs/persona1.png&#34; width=&#34;280&#34; height=&#34;280&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Nulla facilisi. In vel sem...&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;persona2&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;img src=&#34;imgs/persona2.png&#34; width=&#34;280&#34; height=&#34;280&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Aliquam et nisl vel ligula...&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;persona3&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;img src=&#34;imgs/persona3.png&#34; width=&#34;280&#34; height=&#34;280&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Nunc auctor bibendum eros....&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;enredadera&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;hojas&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y el &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#nube, #montanas, #ciudad, #enredadera, #hojas, #personas {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 100%;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 200%;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;left: -150px;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Un detalle importante fue ampliar bastante el ancho de todas las cajas para que puedan soportar un desplazamiento horizontal contínuo (cuidando siempre que sea en porcentaje; así se conserva el efecto &lt;strong&gt;Parallax&lt;/strong&gt;). Cada imagen es aplicada como &lt;strong&gt;background&lt;/strong&gt; y posicionada horizontalmente en porcentaje y verticalmente de acuerdo a su ubicación (&lt;strong&gt;top&lt;/strong&gt; ó &lt;strong&gt;bottom&lt;/strong&gt;).&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#nube {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(../imgs/nube.png) 20% top repeat-x;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  #montanas {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(../imgs/montanas.png) 10% bottom repeat-x;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  #ciudad {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(../imgs/ciudad.png) 30% bottom repeat-x;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  #enredadera {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(../imgs/enredadera.png) 40% top repeat-x;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  #hojas {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(../imgs/hojas.png) 50% bottom repeat-x;&amp;lt;br /&gt;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si modifican el ancho de la ventana verán que se conserva el efecto &lt;strong&gt;Parallax&lt;/strong&gt;, salvo la capa de personas la que pretendo que sea contenido (dado el caso que se requiera así).&lt;/p&gt;
&lt;p&gt;Ahora, la magia se aplica a través de &lt;strong&gt;Mootools&lt;/strong&gt;. El efecto de desplazamiento está dentro del &lt;strong&gt;.js&lt;/strong&gt; que incluí al bajar el archivo y se llama [FX.Style][4]. Con él haremos que mediante un evento de &lt;strong&gt;click&lt;/strong&gt; en cada botón, cada &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; se desplace en diferentes medidas de su &lt;strong&gt;margin-left&lt;/strong&gt;. O sea, la primera capa &lt;strong&gt;#nubes&lt;/strong&gt; se moverá &lt;strong&gt;-100px&lt;/strong&gt; a la izquierda, luego &lt;strong&gt;#montanas&lt;/strong&gt; lo harán &lt;strong&gt;-200px&lt;/strong&gt; y así sucesivamente, logrando un efecto de profundidad en cada capa ya que se moverán en diferentes medidas:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(&#39;btn_uno&#39;).addEvent(&#39;click&#39;, function(){&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;nube.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: 0&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;montanas.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: 0&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;ciudad.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: 0&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;enredadera.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: 0&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;hojas.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: 0&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;personas.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: 0&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
  });&amp;lt;br /&gt;
  $(&#39;btn_dos&#39;).addEvent(&#39;click&#39;, function(){&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;nube.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: -100&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;montanas.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: -200&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;ciudad.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: -300&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;enredadera.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: -400&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;hojas.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: -1000&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;personas.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: -500&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
  });&amp;lt;br /&gt;
$(&#39;btn_tres&#39;).addEvent(&#39;click&#39;, function(){&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;nube.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: -500&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;montanas.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: -600&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;ciudad.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: -700&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;enredadera.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: -800&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;hojas.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: -1500&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;personas.start({&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;margin-left&#39;: -900&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
  });&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Pueden ver el código completo de cada elemento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[Código CSS][5]&lt;/li&gt;
&lt;li&gt;[Código JS][6]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[Ver ejemplo final][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;PD: El movimiento en &lt;strong&gt;Safari 3&lt;/strong&gt; anda perfecto, muy suave; ya en &lt;strong&gt;Firefox 2&lt;/strong&gt; y &lt;strong&gt;3&lt;/strong&gt; se pega algunos saltos, y en &lt;strong&gt;Opera 9.2&lt;/strong&gt; anda mas cortado aún… Quizás sea mi computador, espero sus impresiones sobre esto.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2008/05/26/reproduciendo-parallax/&#34;&gt;http://www.csslab.cl/2008/05/26/reproduciendo-parallax/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Reproduciendo Parallax&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2008/05/26/reproduciendo-parallax/#comment-19952&#34;&gt;http://www.csslab.cl/2008/05/26/reproduciendo-parallax/#comment-19952&lt;/a&gt; &amp;ldquo;Comentario en CSSLab en &amp;ldquo;Reproduciendo Parallax&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/parallax_mootools/&#34;&gt;http://www.csslab.cl/ejemplos/parallax_mootools/&lt;/a&gt; &amp;ldquo;Ejemplo en CSSLab de &amp;ldquo;Parallax con Mootools&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://docs.mootools.net/Effects/Fx-Style.js&#34;&gt;http://docs.mootools.net/Effects/Fx-Style.js&lt;/a&gt; &amp;ldquo;Enlace externo a &amp;ldquo;Mootools.net - FX.Style&amp;rdquo;&amp;rdquo;
[5]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/parallax_mootools/css/layout.css&#34;&gt;http://www.csslab.cl/ejemplos/parallax_mootools/css/layout.css&lt;/a&gt; &amp;ldquo;Archivo CSS en CSSLab de &amp;ldquo;Parallax con Mootools&amp;rdquo;&amp;rdquo;
[6]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/parallax_mootools/js/lib.js&#34;&gt;http://www.csslab.cl/ejemplos/parallax_mootools/js/lib.js&lt;/a&gt; &amp;ldquo;Archivo JS en CSSLab de &amp;ldquo;Parallax con Mootools&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Reproduciendo Parallax</title>
      <link>https://csslab.cl/2008/05/26/reproduciendo-parallax/</link>
      <pubDate>Mon, 26 May 2008 21:20:42 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/05/26/reproduciendo-parallax/</guid>
      <description>El efecto Parallax es una técnica que consiste en aplicar el efecto de profundidad a través de capas, utlizando principalmente CSS. Con esto podemos simular un pseudo-3D dentro de un escenario. Esta técnica es prácticamente la misma utilizada en los juegos 2D donde el personaje se mueve por su mundo (Sonic, Mario, etc) y el fondo se mueve en diferentes velocidades, simulando profundidad.
Esta es una técnica muy limitante, ya que se necesita mucha creatividad para encontrar un uso práctico que impacte al usuario y que principalmente no sea un estorbo en la navegación del sitio.</description>
      <content>&lt;p&gt;El efecto &lt;strong&gt;Parallax&lt;/strong&gt; es una técnica que consiste en aplicar el efecto de profundidad a través de capas, utlizando principalmente &lt;strong&gt;CSS&lt;/strong&gt;. Con esto podemos simular un pseudo-3D dentro de un escenario. Esta técnica es prácticamente la misma &lt;a href=&#34;http://en.wikipedia.org/wiki/Parallax_scrolling&#34; title=&#34;Enlace externo a &amp;quot;Parallax Effect in Wikipedia.org&amp;quot;&#34; target=&#34;_blank&#34;&gt;utilizada en los juegos 2D&lt;/a&gt; donde el personaje se mueve por su mundo (&lt;em&gt;Sonic&lt;/em&gt;, &lt;em&gt;Mario&lt;/em&gt;, etc) y el fondo se mueve en diferentes velocidades, simulando profundidad.&lt;/p&gt;
&lt;p&gt;Esta es una técnica muy limitante, ya que se necesita mucha creatividad para encontrar un uso práctico que impacte al usuario y que principalmente no sea un estorbo en la navegación del sitio. Otro punto importante es que lo más probable necesiten hacerlo con &lt;strong&gt;PNG&lt;/strong&gt; transparente, lo que hace que &lt;strong&gt;IE6&lt;/strong&gt; sea excluído (salvo utilicen algun buen filtro de &lt;strong&gt;PNG&lt;/strong&gt; para él). Un par de gradiosos ejemplos lo encontramos en el sitio de &lt;a href=&#34;http://www.silverbackapp.com/&#34; title=&#34;Enlace externo a &amp;quot;Efecto paralllax en silverbackapp.com&amp;quot;&#34; target=&#34;_blank&#34;&gt;Silverback&lt;/a&gt; y de &lt;a href=&#34;http://weallhatequickbooks.com/&#34; title=&#34;Enlace externo a &amp;quot;Efecto parallax en weallhatequickbooks.com&amp;quot;&#34; target=&#34;_blank&#34;&gt;We all hate quick books&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En este artículo les mostraré cómo se realiza, y lo más probable es que se hagan la misma pregunta que yo me hice: &lt;em&gt;¿porqué &lt;strong&gt;#&amp;amp;œ¥Ω&lt;/strong&gt; no se me ocurrió a mí antes?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Parallax&lt;/strong&gt; no es muy amigable, ya que a primera vista no se nota. Se necesita mover la ventana del &lt;em&gt;browser&lt;/em&gt; para recién notar el efecto. Primero les presento el ejemplo final, para que puedan apreciar lo que haremos. Si modifican el tamaño de su ventana podrán notar de qué les estoy hablando&lt;/p&gt;
&lt;p&gt;[Ver ejemplo final][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Primero necesitamos de las imágenes que formarán nuestras capas. Cuiden de prepararlas cosa que el final y el principio calcen perfectamente; en mi caso con 3 capas necesité montañas, árboles y unas ramas desenfocadas como se muestran en el siguiente diagrama:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/05/parallax.jpg&#34; alt=&#34;CSSLab: Diagrama de Parallax&#34; width=&#34;440&#34; height=&#34;278&#34; /&gt; 
&lt;p&gt;Luego, el &lt;strong&gt;HTML&lt;/strong&gt;. Básicamente se compone de (en mi caso) 3 &lt;strong&gt;div&lt;/strong&gt;‘s, uno para cada capa (cada capa anidado en otra):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;montanas&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;arboles&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;hojas&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El &lt;strong&gt;&lt;div&gt; #montanas&lt;/strong&gt; será el que se despliegue más atrás; así &lt;strong&gt;#hojas&lt;/strong&gt; será el que esté más adelante y el que se moverá más rápido que las otras.&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;CSS&lt;/strong&gt; es muy simple. El efecto se logra con un juego de porcentajes: mientras agregamos las imágenes de fondo de los &lt;strong&gt;div&lt;/strong&gt;‘s mediante &lt;strong&gt;background-image&lt;/strong&gt;, posicionamos cada capa (con &lt;strong&gt;background-position&lt;/strong&gt;) con porcentajes horizontales: mientras las montañas se ubican a &lt;strong&gt;30%&lt;/strong&gt; de la izquierda, las hojas estarán a &lt;strong&gt;70%&lt;/strong&gt; lo que hará que se muevan en diferentes velocidades si la ventana se mueve. Este juego de porcentajes es toda la técnica, el resto será vil [posicionamiento absoluto][2] (para que los elementos estén a 100% alto y ancho, y se ubiquen en el extremo inferior del &lt;em&gt;browser&lt;/em&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#montanas {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(images/montanas.png) 30% bottom repeat-x;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 100%;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 100%&amp;lt;br /&gt;
  } &amp;lt;br /&gt;
  #arboles {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(images/arboles.png) 50% bottom repeat-x;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 100%;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 100%&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  #hojas {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(images/hojas.png) 70% bottom repeat-x;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 100%;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 100%&amp;lt;br /&gt;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver nuevamente ejemplo final][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/parallax/&#34;&gt;http://www.csslab.cl/ejemplos/parallax/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo Final Parallax&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2007/05/11/absolutamente-si/&#34;&gt;http://www.csslab.cl/2007/05/11/absolutamente-si/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Absolutamente sí&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Review 3: No me hagas pensar</title>
      <link>https://csslab.cl/2008/05/20/review-3-no-me-hagas-pensar/</link>
      <pubDate>Tue, 20 May 2008 15:18:04 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/05/20/review-3-no-me-hagas-pensar/</guid>
      <description>Siempre que viaje me traigo libros, ya que en Chile son muy caros y no incentiva siquiera pensar en comprar uno. En un viaje a Brasil me traje uno que hace mucho tenía ganas de leer: Don’t make me think, de Steve Krug.
A primera vista es un libro bastante delgado, lo que me incentivó a leerlo durante ese mismo viaje. Su temática es muy precisa: aborda el concepto detrás de la usabilidad web, y el sentido común para lograr una exitosa experiencia por parte del usuario.</description>
      <content>&lt;p&gt;Siempre que viaje me traigo libros, ya que en Chile son muy caros y no incentiva siquiera pensar en comprar uno. En un viaje a Brasil me traje uno que hace mucho tenía ganas de leer: &lt;strong&gt;Don’t make me think&lt;/strong&gt;, de &lt;strong&gt;Steve Krug&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A primera vista es un libro bastante delgado, lo que me incentivó a leerlo durante ese mismo viaje. Su temática es muy precisa: aborda el concepto detrás de la usabilidad web, y el sentido común para lograr una exitosa experiencia por parte del usuario. Steve entrega muchos tips, técnicas y ejemplos de su experiencia personal, lo que valoro mucho de este libro. Su lectura es muy amena y precisa; él mismo lo deja claro desde el comienzo -&amp;quot;&lt;em&gt;este es un libro para que sea leído en un viaje corto de avión&lt;/em&gt;&amp;quot;- lo que hace la lectura muy fácil.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/05/nomehagaspensar.gif&#34; alt=&#34;No me hagas pensar - Steve Krug&#34; width=&#34;221&#34; height=&#34;250&#34; align=&#34;right&#34; /&gt; 
&lt;p&gt;Entre los temas que toca, están:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Patrones de usuario&lt;/li&gt;
&lt;li&gt;Diseño de navegación&lt;/li&gt;
&lt;li&gt;Layout de una página de inicio&lt;/li&gt;
&lt;li&gt;Tests de usabilidad&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ya van en la segunda edición (2006), y como el mercado web va tan rápido, creo que ya es hora de una tercera actualización de sus contenidos y ejemplos principalmente (muestra sitios web del 2000… totalmente obsoletos).&lt;/p&gt;
&lt;p&gt;Muy recomendable, lamentablemente no se encuentra en librerías locales. Mi copia está en portugués y la traducción no es la mejor (mucho tecnicismo que no puede ser traducido); me imagino que en español debiese pasar lo mismo. Si tienen buen inglés, no duden en &lt;a href=&#34;http://www.amazon.com/s/ref=nb_ss_gw/002-6136587-2041654?url=search-alias%3Daps&amp;field-keywords=no+me+hagas+pensar&amp;x=0&amp;y=0&#34; title=&#34;Enlace externo a &amp;quot;No me hagas pensar en Amazon.com&amp;quot;&#34; target=&#34;_blank&#34;&gt;encargar su copia&lt;/a&gt;.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 27</title>
      <link>https://csslab.cl/2008/05/14/lo-vi-y-me-gusto-27/</link>
      <pubDate>Wed, 14 May 2008 16:14:52 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/05/14/lo-vi-y-me-gusto-27/</guid>
      <description>#27 – 14 Mayo 2008</description>
      <content>&lt;p&gt;#27 – 14 Mayo 2008&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://faviconstore.com/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/05/faviconstore.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.asesoriagrafica.cl/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/05/asesoriagrafica.gif&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>M&amp;aacute;s tipograf&amp;iacute;as con sIFR</title>
      <link>https://csslab.cl/2008/05/08/ms-tipografas-con-sifr/</link>
      <pubDate>Thu, 08 May 2008 19:46:58 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/05/08/ms-tipografas-con-sifr/</guid>
      <description>&lt;p&gt;Una de las grandes limitaciones de diseño web está en el manejo tipográfico, ya que tenemos una escasa gama de tipografías disponibles a la que podames aspirar que posean todos los usuarios. Hablamos de &lt;em&gt;Arial&lt;/em&gt;, &lt;em&gt;Helvetica&lt;/em&gt;, &lt;em&gt;Verdana&lt;/em&gt; y &lt;em&gt;Tahoma&lt;/em&gt; para las &lt;em&gt;sans-serif&lt;/em&gt; (palo seco); &lt;em&gt;Georgia&lt;/em&gt;, &lt;em&gt;Times/Times New Roman&lt;/em&gt; para las &lt;em&gt;serif&lt;/em&gt; y &lt;em&gt;Courier/Courier New&lt;/em&gt; para &lt;em&gt;monospace&lt;/em&gt;. Y sería, tenemos limitada la creatividad con eso. Si pensamos en utilizar una &lt;em&gt;font&lt;/em&gt; especial, lo único que tenemos es recortarla como un &lt;strong&gt;GIF&lt;/strong&gt; y ponerlas con alguna [técnica de text-replacement][1].&lt;/p&gt;
&lt;p&gt;Pero ya existe &lt;strong&gt;sIFR&lt;/strong&gt;. Acrónimo de &lt;em&gt;Scalable Inman Flash Replacement&lt;/em&gt;, es una técnica que permite que reemplaces elementos de texto con equivalentes en &lt;strong&gt;Flash&lt;/strong&gt;. &lt;strong&gt;sIFR&lt;/strong&gt; es una solución &lt;em&gt;cross-browser&lt;/em&gt; y_cross-platform_ para asuntos de tipografía en la web.&lt;/p&gt;</description>
      <content>&lt;p&gt;Una de las grandes limitaciones de diseño web está en el manejo tipográfico, ya que tenemos una escasa gama de tipografías disponibles a la que podames aspirar que posean todos los usuarios. Hablamos de &lt;em&gt;Arial&lt;/em&gt;, &lt;em&gt;Helvetica&lt;/em&gt;, &lt;em&gt;Verdana&lt;/em&gt; y &lt;em&gt;Tahoma&lt;/em&gt; para las &lt;em&gt;sans-serif&lt;/em&gt; (palo seco); &lt;em&gt;Georgia&lt;/em&gt;, &lt;em&gt;Times/Times New Roman&lt;/em&gt; para las &lt;em&gt;serif&lt;/em&gt; y &lt;em&gt;Courier/Courier New&lt;/em&gt; para &lt;em&gt;monospace&lt;/em&gt;. Y sería, tenemos limitada la creatividad con eso. Si pensamos en utilizar una &lt;em&gt;font&lt;/em&gt; especial, lo único que tenemos es recortarla como un &lt;strong&gt;GIF&lt;/strong&gt; y ponerlas con alguna [técnica de text-replacement][1].&lt;/p&gt;
&lt;p&gt;Pero ya existe &lt;strong&gt;sIFR&lt;/strong&gt;. Acrónimo de &lt;em&gt;Scalable Inman Flash Replacement&lt;/em&gt;, es una técnica que permite que reemplaces elementos de texto con equivalentes en &lt;strong&gt;Flash&lt;/strong&gt;. &lt;strong&gt;sIFR&lt;/strong&gt; es una solución &lt;em&gt;cross-browser&lt;/em&gt; y_cross-platform_ para asuntos de tipografía en la web.&lt;/p&gt;
&lt;p&gt;Su funcionamiento es bastante práctico. Está compuesto de una película &lt;strong&gt;SWF&lt;/strong&gt;, un archivo &lt;strong&gt;Javascript&lt;/strong&gt; y dos archivos &lt;strong&gt;CSS&lt;/strong&gt;. Con el &lt;strong&gt;.swf&lt;/strong&gt; lo que hará es incluir la tipografía que quieras utilizar en uno o varios estilos (&lt;em&gt;normal&lt;/em&gt;, &lt;em&gt;bold&lt;/em&gt;, &lt;em&gt;italic&lt;/em&gt;). Con el &lt;strong&gt;.js&lt;/strong&gt; se realizará la magia de reemplazar el texto que definas con la película &lt;strong&gt;.swf&lt;/strong&gt; pero sin inyectar el objeto, o sea, tu código fuente generado no tendrá ningún &lt;strong&gt;&lt;embed&gt;&lt;/strong&gt; u &lt;strong&gt;&lt;object&gt;&lt;/strong&gt;, sino que estará el texto que tengas escrito tal y como sería un &lt;strong&gt;HTML&lt;/strong&gt;. Ya los &lt;strong&gt;.css&lt;/strong&gt; ayudan al &lt;strong&gt;.js&lt;/strong&gt; a emplazar las películas (a través de un juego con &lt;strong&gt;visibility&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;La idea no es reemplazar todos tus textos con tipografías en &lt;strong&gt;Flash&lt;/strong&gt;, sino ser prudentes y sólo enfocarnos en títulos, bloques (&lt;strong&gt;blockquote&lt;/strong&gt;) u otros elementos destacables. Lo bueno es que no pierdes la [semántica][2] y los indexadores leerán tu sitio tal y como sería un &lt;strong&gt;HTML&lt;/strong&gt;, ya que realmente ES un &lt;strong&gt;HTML&lt;/strong&gt;. Otra ventaja es que si utilizas la película &lt;strong&gt;Flash&lt;/strong&gt; más de una vez, ésta quedará en el cache del usuario y será cargada sólo una vez, lo que no hará &lt;em&gt;taaaaaaan&lt;/em&gt; grave el peso que ganas con esto. Ahora, veámoslo en la práctica:&lt;/p&gt;
&lt;p&gt;[Ver Ejemplo 1][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;No es muy complicado de implementar, pero me costó la primera vez así que lo haré didáctico para todos, detallando paso por paso.&lt;/p&gt;
&lt;h3 id=&#34;paso-1&#34;&gt;Paso 1&lt;/h3&gt;
&lt;p&gt;Bajar el &lt;strong&gt;sIFR&lt;/strong&gt; de &lt;a href=&#34;http://dev.novemberborn.net/sifr3/nightlies/&#34; title=&#34;Enlace externo a sIFR Nightlies&#34; target=&#34;_blank&#34;&gt;su sitio web&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;paso-2&#34;&gt;Paso 2&lt;/h3&gt;
&lt;p&gt;Crear tu película &lt;strong&gt;.swf&lt;/strong&gt; con la &lt;em&gt;font&lt;/em&gt; que desees. Para eso, debes abrir el &lt;strong&gt;.fla&lt;/strong&gt; que está dentro del directorio &lt;strong&gt;flash&lt;/strong&gt; y abrir el &lt;em&gt;MovieClip&lt;/em&gt; &lt;strong&gt;‘holder’&lt;/strong&gt;, allí seleccionas el área de texto dinámico y cambias la tipografía que trae por defecto (&lt;em&gt;Verdana&lt;/em&gt;) por la que quieras (en mi caso será &lt;em&gt;Frutiger Condensed&lt;/em&gt;… bella).&lt;/p&gt;
&lt;p&gt;![Paso 2: seleccionar tipografía en sIFR][4]&lt;/p&gt;
&lt;p&gt;Un detalle importante para textos no-anglos son los acentos. Por defecto se incluyen caracteres básicos, números y algunos símbolos. Debes agregar a mano los acentos para nuestro idioma que creas necesarios: &lt;strong&gt;á é í ó ú ñ ä ë ï ö ü&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;![Paso 2: seleccionar caracteres especiales para sIFR][5]&lt;/p&gt;
&lt;p&gt;Luego publica tu película como siempre lo haces en &lt;strong&gt;Flash&lt;/strong&gt; (&lt;em&gt;command+enter&lt;/em&gt; o &lt;em&gt;control+enter&lt;/em&gt; en &lt;em&gt;Win&lt;/em&gt;) dentro de esta carpeta que estás trabajando (&lt;em&gt;flash&lt;/em&gt;). Esto es importante ya que contiene algunos &lt;strong&gt;.as&lt;/strong&gt; que hacen que la magia ocurra. Ponle un nombre característico a tu &lt;strong&gt;.swf&lt;/strong&gt;, quizás el nombre de la familia tipográfica que estás usando sería apropiado.&lt;/p&gt;
&lt;p&gt;![Paso 2: exportar película para sIFR][6]&lt;/p&gt;
&lt;h3 id=&#34;paso-3&#34;&gt;Paso 3&lt;/h3&gt;
&lt;p&gt;Ordena tus archivos. Recomiendo que los juntes dentro de un único directorio llamado &lt;strong&gt;/sifr&lt;/strong&gt;. Los únicos que necesitarás de todo eso son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;tu_tipografia.swf&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;sIFR-print.css&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;sIFR-screen.css&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;sifr.js&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;paso-4&#34;&gt;Paso 4&lt;/h3&gt;
&lt;p&gt;Ahora toca configurar nuestro &lt;strong&gt;HTML&lt;/strong&gt;. Lo primero es incluir el &lt;strong&gt;.js&lt;/strong&gt; y los &lt;strong&gt;.css&lt;/strong&gt; correspondientes:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;link rel=&#34;stylesheet&#34; href=&#34;sifr/sIFR-screen.css&#34; type=&#34;text/css&#34; media=&#34;screen&#34; /&amp;gt;&amp;lt;br /&gt;
&amp;lt;link rel=&#34;stylesheet&#34; href=&#34;sifr/sIFR-print.css&#34; type=&#34;text/css&#34; media=&#34;print&#34; /&amp;gt;&amp;lt;br /&gt;
&amp;lt;script type=&#34;text/javascript&#34; src=&#34;sifr/sifr.js&#34;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lo segundo, agregar algunos comandos en &lt;strong&gt;Javascript&lt;/strong&gt; para hacer que nuestra película funcione con los selectores que deseemos:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;  var tu_tipografia = {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;src: &#39;sifr/tu_tipografia.swf&#39;&amp;lt;br /&gt;
  };&amp;lt;br /&gt;
  sIFR.activate(tu_tipografia);&amp;lt;br /&gt;
  sIFR.replace(tu_tipografia, {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;selector: &#39;h1&#39;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,css: {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;.sIFR-root&#39;: {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;color&#39;: &#39;#FF0000&#39;,&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;font-size&#39;: 56,&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#39;text-align&#39;: &#39;center&#39;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;,wmode: &#39;transparent&#39;&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Claramente la variable &lt;strong&gt;tu_tipografia&lt;/strong&gt; y todo lo que tenga este nombre deberá coincidir con el nombre que le has puesto a tu película &lt;strong&gt;SWF&lt;/strong&gt; con la fuente que agregaste en el &lt;strong&gt;Paso 2&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;El resto son comandos donde dicen cuál es el selector que quieres reemplazar (un &lt;strong&gt;H1&lt;/strong&gt;, una &lt;strong&gt;class&lt;/strong&gt;, un &lt;strong&gt;id&lt;/strong&gt;… enfin) e incluso &lt;a href=&#34;http://wiki.novemberborn.net/sifr3/Styling&#34; title=&#34;Enlace externo a &amp;quot;CSS styles in sIFR&amp;quot;&#34; target=&#34;_blank&#34;&gt;comandos &lt;strong&gt;CSS&lt;/strong&gt;&lt;/a&gt; (no todos, principalmente para estilos de texto como color y tamaño por ejemplo).&lt;/p&gt;
&lt;h3 id=&#34;paso-5&#34;&gt;Paso 5&lt;/h3&gt;
&lt;p&gt;Subir todo a un servidor, ya que localmente no podrás ver nada. Desde ahí la verás los resultados.&lt;/p&gt;
&lt;p&gt;[Ver Ejemplo Final][7]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Miren el código fuente, verán lo simple que es y que funciona de maravilla.&lt;/p&gt;
&lt;h4 id=&#34;link&#34;&gt;Link&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://wiki.novemberborn.net/sifr3&#34; title=&#34;Enlace externo a &amp;quot;sIFR 3 Documentation &amp; FAQ&amp;quot;&#34; target=&#34;_blank&#34;&gt;sIFR 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2006/09/25/image-replacement-o-como-reemplazar-contenido-por-imagen/&#34;&gt;http://www.csslab.cl/2006/09/25/image-replacement-o-como-reemplazar-contenido-por-imagen/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Image Replacement o cómo reemplazar contenido por imagen&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2006/04/12/un-paseo-por-la-semantica/&#34;&gt;http://www.csslab.cl/2006/04/12/un-paseo-por-la-semantica/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Un paseo por la Semántica&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/sifr/ejemplo1.html&#34;&gt;http://www.csslab.cl/ejemplos/sifr/ejemplo1.html&lt;/a&gt; &amp;ldquo;Ver Ejemplo 1 sobre sIFR en CSSLab&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2008/05/fig1.jpg&#34;&gt;http://www.csslab.cl/wp-content/uploads/2008/05/fig1.jpg&lt;/a&gt;
[5]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2008/05/fig2.jpg&#34;&gt;http://www.csslab.cl/wp-content/uploads/2008/05/fig2.jpg&lt;/a&gt;
[6]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2008/05/fig3.jpg&#34;&gt;http://www.csslab.cl/wp-content/uploads/2008/05/fig3.jpg&lt;/a&gt;
[7]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/sifr/sifr.html&#34;&gt;http://www.csslab.cl/ejemplos/sifr/sifr.html&lt;/a&gt; &amp;ldquo;Ver Ejemplo Final sobre sIFR en CSSLab&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Un poco de historia: &lt;em&gt;Browser Wars&lt;/em&gt;</title>
      <link>https://csslab.cl/2008/05/05/un-poco-de-historia-browser-wars/</link>
      <pubDate>Mon, 05 May 2008 21:53:49 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/05/05/un-poco-de-historia-browser-wars/</guid>
      <description>&lt;p&gt;Eran mediados de los ’90, y nadie vaticinaba los acontecimientos que desencadenarían la actual crisis de los estándares, efectos que aún persisten. &lt;strong&gt;Browser Wars&lt;/strong&gt; fue la competencia entre &lt;em&gt;web browsers&lt;/em&gt; o navegadores web por la dominación del mercado. Para ser más precisos, fue la lucha entre 2 compañías, &lt;strong&gt;Netscape&lt;/strong&gt; y &lt;strong&gt;Microsoft&lt;/strong&gt; por imponer sus navegadores por sobre el otro y así obtener más usuarios.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2008/05/browserwar.jpg&#34; alt=&#34;Netscape v/s Explorer&#34; align=&#34;left&#34; /&gt; Decorría 1995 y la web ya tenía la atención del público online. &lt;strong&gt;Netscape Navigator&lt;/strong&gt; fue el primer gran browser para navegar en la web en esos tiempos, y &lt;strong&gt;Microsoft&lt;/strong&gt; divisó el potencial económico de la web, por lo que compró licencias del pequeño &lt;em&gt;browser&lt;/em&gt; &lt;strong&gt;Mosaic&lt;/strong&gt; para crear su primera versión de &lt;strong&gt;Internet Explorer 1.0&lt;/strong&gt;, la cual fue incluída en el paquete de su sistema operativo &lt;strong&gt;Windows 95&lt;/strong&gt;. Meses más tarde salía &lt;strong&gt;Internet Explorer 2.0&lt;/strong&gt;, y la guerra era ya evidente. El objetivo de &lt;strong&gt;Microsoft&lt;/strong&gt; era dirigir la atención de los usuarios de la web hacia sus productos, apuntando la página de inicio de su navegador hacia su propio sitio web. Dado a esto, &lt;strong&gt;Microsoft&lt;/strong&gt; pudo distribuir &lt;strong&gt;Explorer&lt;/strong&gt; sin cobrar por ello. La carrera por nuevas versiones, tanto de &lt;strong&gt;Netscape Communicator&lt;/strong&gt; como de &lt;strong&gt;Internet Explorer&lt;/strong&gt; no se hizo esperar, donde se daba prioridad a nuevas funcionalidades más que la corrección de errores de sus versiones anteriores, dando como fruto productos inestables, muchos fallas de seguridad y lenguajes cada vez más propios que estandarizados. Con esto fue común verse imágenes del tipo &amp;ldquo;&lt;em&gt;Mejor visto en Netscape&lt;/em&gt;&amp;rdquo; u &amp;ldquo;&lt;em&gt;Optimizado para Internet Explorer&lt;/em&gt;&amp;rdquo;. Esto indicaba los bandos contrarios que estaban ya marcados.&lt;/p&gt;</description>
      <content>&lt;p&gt;Eran mediados de los ’90, y nadie vaticinaba los acontecimientos que desencadenarían la actual crisis de los estándares, efectos que aún persisten. &lt;strong&gt;Browser Wars&lt;/strong&gt; fue la competencia entre &lt;em&gt;web browsers&lt;/em&gt; o navegadores web por la dominación del mercado. Para ser más precisos, fue la lucha entre 2 compañías, &lt;strong&gt;Netscape&lt;/strong&gt; y &lt;strong&gt;Microsoft&lt;/strong&gt; por imponer sus navegadores por sobre el otro y así obtener más usuarios.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2008/05/browserwar.jpg&#34; alt=&#34;Netscape v/s Explorer&#34; align=&#34;left&#34; /&gt; Decorría 1995 y la web ya tenía la atención del público online. &lt;strong&gt;Netscape Navigator&lt;/strong&gt; fue el primer gran browser para navegar en la web en esos tiempos, y &lt;strong&gt;Microsoft&lt;/strong&gt; divisó el potencial económico de la web, por lo que compró licencias del pequeño &lt;em&gt;browser&lt;/em&gt; &lt;strong&gt;Mosaic&lt;/strong&gt; para crear su primera versión de &lt;strong&gt;Internet Explorer 1.0&lt;/strong&gt;, la cual fue incluída en el paquete de su sistema operativo &lt;strong&gt;Windows 95&lt;/strong&gt;. Meses más tarde salía &lt;strong&gt;Internet Explorer 2.0&lt;/strong&gt;, y la guerra era ya evidente. El objetivo de &lt;strong&gt;Microsoft&lt;/strong&gt; era dirigir la atención de los usuarios de la web hacia sus productos, apuntando la página de inicio de su navegador hacia su propio sitio web. Dado a esto, &lt;strong&gt;Microsoft&lt;/strong&gt; pudo distribuir &lt;strong&gt;Explorer&lt;/strong&gt; sin cobrar por ello. La carrera por nuevas versiones, tanto de &lt;strong&gt;Netscape Communicator&lt;/strong&gt; como de &lt;strong&gt;Internet Explorer&lt;/strong&gt; no se hizo esperar, donde se daba prioridad a nuevas funcionalidades más que la corrección de errores de sus versiones anteriores, dando como fruto productos inestables, muchos fallas de seguridad y lenguajes cada vez más propios que estandarizados. Con esto fue común verse imágenes del tipo &amp;ldquo;&lt;em&gt;Mejor visto en Netscape&lt;/em&gt;&amp;rdquo; u &amp;ldquo;&lt;em&gt;Optimizado para Internet Explorer&lt;/em&gt;&amp;rdquo;. Esto indicaba los bandos contrarios que estaban ya marcados.&lt;/p&gt;
&lt;p&gt;En 1995 &lt;strong&gt;Netscape&lt;/strong&gt; contaba con un 90% del mercado de navegadores, y &lt;strong&gt;Microsoft&lt;/strong&gt; comenzó a declinar la balanza hacia su lado con la ventaja de tener el monopolio de sistemas operativos y la inclusión de &lt;strong&gt;Explorer&lt;/strong&gt; en ellos, a pesar de de ser inferior en prestaciones. Mientras &lt;strong&gt;Netscape&lt;/strong&gt; era una empresa pequeña y vulnerable financieramente al depender del desarrollo de sólo 1 software, &lt;strong&gt;Microsoft&lt;/strong&gt; inyectaba fondos de las ventas de su &lt;strong&gt;Windows&lt;/strong&gt; y sacaba mejoras cada vez más rápidas.&lt;/p&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2008/05/ff_ie.jpg&#34; alt=&#34;Firefox v/s Explorer&#34; align=&#34;right&#34; /&gt; 
&lt;p&gt;La derrota de &lt;strong&gt;Netscape&lt;/strong&gt; de vío finalmente en 1998, y desde entonces &lt;strong&gt;Internet Explorer&lt;/strong&gt; tiene alrededor del 90% del mercado de navegadores. Esta guerra terminó cuando &lt;strong&gt;Microsoft&lt;/strong&gt; dejó de tener competencia seria en el mercado de navegadores. Con esto no hubo grandes innovaciones por años, hasta que el mercado ha vuelto a la actividad con el crecimiento de &lt;strong&gt;Mozilla Firefox&lt;/strong&gt; en 2002.&lt;/p&gt;
&lt;p&gt;Esta guerra ha provocado varias consecuencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los estándares web fueron debilitados a raíz del monopolio de sólo 1 navegador. Carencias en las hojas de estilos (&lt;strong&gt;CSS&lt;/strong&gt;), el formato de imágenes &lt;strong&gt;PNG&lt;/strong&gt; y la interpretación del &lt;strong&gt;XHTML&lt;/strong&gt; son algunas de ellas.&lt;/li&gt;
&lt;li&gt;La inclusión de extensiones propietarias y poco universales, como &lt;strong&gt;VBScript&lt;/strong&gt;, &lt;strong&gt;DHTML&lt;/strong&gt; o &lt;strong&gt;ActiveX&lt;/strong&gt;, lo que provoca más incompatibilidad entre plataformas.&lt;/li&gt;
&lt;li&gt;Mayor vulnerabilidad a ataques informáticos, dado a la predominancia de un navegador con muchas fallas de seguridad.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Actualmente, el mercado es abarcado por 4 empresas: &lt;strong&gt;Microsoft&lt;/strong&gt; (&lt;strong&gt;Internet Explorer&lt;/strong&gt;), &lt;strong&gt;Mozilla&lt;/strong&gt; (&lt;strong&gt;Firefox&lt;/strong&gt;), &lt;strong&gt;Apple&lt;/strong&gt; (&lt;strong&gt;Safari&lt;/strong&gt;) y &lt;strong&gt;Opera&lt;/strong&gt; (&lt;strong&gt;Opera Browser&lt;/strong&gt;), aunque los 2 primeros son los con mayor uso por usuarios en la actualidad.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;*extracto del ramo eLearning de &lt;a href=&#34;http://elearning2.uniacc.cl/index.php?option=com_content&amp;task=view&amp;id=155&amp;Itemid=552&#34; title=&#34;Enlace externo a &amp;quot;INGENIERÍA INFORMÁTICA MULTIMEDIA&amp;quot;&#34; target=&#34;_blank&#34;&gt;Programación Web&lt;/a&gt; que imparto en la &lt;a href=&#34;http://www.uniacc.cl/&#34; title=&#34;Enlace externo a &amp;quot;Universidad UNIACC&amp;quot;&#34; target=&#34;_blank&#34;&gt;Universidad UNIACC&lt;/a&gt;.&lt;br&gt;
*Imágenes encontradas en Google Images.&lt;/em&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Rayos-X contra no-estándares</title>
      <link>https://csslab.cl/2008/04/25/rayos-x-contra-no-estandares/</link>
      <pubDate>Fri, 25 Apr 2008 17:50:30 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/04/25/rayos-x-contra-no-estandares/</guid>
      <description>La idea de una hoja de estilos que muestre evidentemente un marcado HTML deficiente o anticuado no es de nada nueva. Ya Eric Meyer hizo referencia a esfuerzos para desarrollar estilos que diagnosticaran etiquetas o atributos mal utilizados o llanamente obsoletos dentro de una página web. El objetivo es tener un grupo de estilos que puedan ser aplicados durante la fase de desarrollo (o armado) de un sitio web, o durante el análisis para un rediseño.</description>
      <content>&lt;p&gt;La idea de una hoja de estilos que muestre evidentemente un marcado &lt;strong&gt;HTML&lt;/strong&gt; deficiente o anticuado no es de nada nueva. Ya &lt;a href=&#34;http://meyerweb.com/eric/thoughts/2007/09/07/diagnostic-styling/&#34; title=&#34;Enlace externo a &amp;quot;Diagnostic Styling&amp;quot;&#34; target=&#34;_blank&#34;&gt;Eric Meyer hizo referencia&lt;/a&gt; a esfuerzos para desarrollar estilos que &lt;em&gt;diagnosticaran&lt;/em&gt; etiquetas o atributos mal utilizados o llanamente obsoletos dentro de una página web. El objetivo es tener un grupo de estilos que puedan ser aplicados durante la fase de desarrollo (o armado) de un sitio web, o durante el análisis para un rediseño.&lt;/p&gt;
&lt;p&gt;Elementos tan simples como links vacíos, o que no llevan a ningún lado (&lt;strong&gt;&lt;a href=&#34;#&#34;&gt;&lt;/strong&gt;), imágenes sin definición de atributo &lt;strong&gt;alt&lt;/strong&gt; (&lt;strong&gt;&lt;img alt=&#34;&#34;&gt;&lt;/strong&gt;) o el mismo uso del atributo &lt;strong&gt;style=&amp;quot;&amp;quot;&lt;/strong&gt; dentro de cualquier etiqueta son detectados y mostrados con un estilo que traté de que fuera bastante notorio: bordes gruesos o colores poco comunes de fondo, por ejemplo.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 1][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;En el &lt;strong&gt;ejemplo 1&lt;/strong&gt;, podrán ver (si ven el código fuente) que la estructura de esa página está bastante mal hecha, seguramente por algún software que hace el trabajo &lt;em&gt;fácil.&lt;/em&gt; Al aplicar la hoja de estilos &lt;strong&gt;rayos-x.css&lt;/strong&gt;, podrán notar todo lo que hace evidente:&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 2][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;La hoja de estilos que hace la detección, contiene lo siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;&amp;lt;span class=&#34;commentcss&#34;&gt;/* -- atributos del &amp;lt;body&amp;gt; obsoletos -- */&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body[bgcolor], body[background], body[link], body[alink], body[vlink] {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border: 3px dashed red;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
&amp;lt;span class=&#34;commentcss&#34;&gt;/* -- etiquetas obsoletas desde HTML 4.01 -- */&amp;lt;/span&gt;&amp;lt;br /&gt;
  font, center, marquee, b, i, u, strike, menu, basefont, applet {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: fuchsia;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-weight: bold;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
&amp;lt;span class=&#34;commentcss&#34;&gt;/* -- atributos de estilo dentro de etiquetas, obsoletos todos -- */&amp;lt;/span&gt;&amp;lt;br /&gt;
  *[align], *[color] {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border: 2px double blue;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
&amp;lt;span class=&#34;commentcss&#34;&gt;/* -- atributos de estilo para etiquetas comunes -- */&amp;lt;/span&gt;&amp;lt;br /&gt;
  div[bgcolor], div[background], table[bgcolor], table[background], td[bgcolor], td[background], th[bgcolor], th[background] {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: lime;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
&amp;lt;span class=&#34;commentcss&#34;&gt;/* -- detectando etiquetas vacias -- */&amp;lt;/span&gt;&amp;lt;br /&gt;
  div:empty, span:empty, li:empty, p:empty, td:empty, th:empty {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: yellow;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
&amp;lt;span class=&#34;commentcss&#34;&gt;/* -- detectando atributo style dentro de cualquier etiqueta -- */&amp;lt;/span&gt;&amp;lt;br /&gt;
  *[style] {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border: 1px solid cyan;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
&amp;lt;span class=&#34;commentcss&#34;&gt;/* -- busca por algun spacer que se haya escapado -- */&amp;lt;/span&gt;&amp;lt;br /&gt;
  img[src$=&#34;spacer.gif&#34;] {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border: 4px solid fuchsia;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
&amp;lt;span class=&#34;commentcss&#34;&gt;/* -- busca por atributos alt y title vacios en &amp;lt;img /&amp;gt; -- */&amp;lt;/span&gt;&amp;lt;br /&gt;
  img[alt=&#34;&#34;], img[title=&#34;&#34;] {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border-width: 3px;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
&amp;lt;span class=&#34;commentcss&#34;&gt;/* -- busca atributo title vacio en &amp;lt;a&amp;gt; -- */&amp;lt;/span&gt;&amp;lt;br /&gt;
  a[title=&#34;&#34;] {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: chocolate;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
&amp;lt;span class=&#34;commentcss&#34;&gt;/* -- busca links de ancla vacio -- */&amp;lt;/span&gt;&amp;lt;br /&gt;
  a[href=&#34;#&#34;] {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: lime;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
&amp;lt;span class=&#34;commentcss&#34;&gt;/* -- busca por links vacios -- */&amp;lt;/span&gt;&amp;lt;br /&gt;
  a[href=&#34;&#34;] {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: fuchsia;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y para utilizarla, sólo deben linkearla a la página que deseen de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;link rel=&#34;stylesheet&#34; href=&#34;rayos-x.css&#34; type=&#34;text/css&#34; media=&#34;screen&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 class=&#34;bajar&#34; id=&#34;descargar-rayos-xzip-1kb3&#34;&gt;[Descargar rayos-x.zip [1kb]][3]&lt;/h3&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/rayos-x/ejemplo1.html&#34;&gt;http://www.csslab.cl/ejemplos/rayos-x/ejemplo1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab para &amp;ldquo;Ver ejemplo 1&amp;quot;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/rayos-x/ejemplo2.html&#34;&gt;http://www.csslab.cl/ejemplos/rayos-x/ejemplo2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab para &amp;ldquo;Ver ejemplo 2&amp;quot;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/rayos-x/rayos-x.zip&#34;&gt;http://www.csslab.cl/ejemplos/rayos-x/rayos-x.zip&lt;/a&gt; &amp;ldquo;Enlace en CSSLab para &amp;ldquo;descargar estilo rayos-x.css&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Review 2: Shadowbox</title>
      <link>https://csslab.cl/2008/04/17/review-2-shadowbox/</link>
      <pubDate>Thu, 17 Apr 2008 20:56:04 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/04/17/review-2-shadowbox/</guid>
      <description>[Ventanas modales][1] actualmente hay por montones, cada una ofrece mejores prestaciones y se comportan relativamente bien dentro del entorno de desarrollo al cual fueron creadas. [Lightbox][2] fue uno de los primeros, [Thickbox][3] uno de los más completos, Greybox, Lightwindow… enfin. Hace poco descubrí el que creo es el que va más allá de todos, y que merece una especial atención: Shadowbox.
 Shadowbox es una ventana modal escrita enteramente en Javascript.</description>
      <content>&lt;p&gt;[Ventanas modales][1] actualmente hay por montones, cada una ofrece mejores prestaciones y se comportan relativamente bien dentro del entorno de desarrollo al cual fueron creadas. [Lightbox][2] fue uno de los primeros, [Thickbox][3] uno de los más completos, &lt;a href=&#34;http://www.orangoo.com/labs/GreyBox/&#34; title=&#34;Enlace externo a &amp;quot;Greybox - A pop-up window that doesn&#39;t suck.&amp;quot;&#34; target=&#34;_blank&#34;&gt;Greybox&lt;/a&gt;, &lt;a href=&#34;http://www.stickmanlabs.com/lightwindow/&#34; title=&#34;Enlace externo a &amp;quot;LightWindow v2.0&amp;quot;&#34; target=&#34;_blank&#34;&gt;Lightwindow&lt;/a&gt;… enfin. Hace poco descubrí el que creo es el que va más allá de todos, y que merece una especial atención: &lt;a href=&#34;http://mjijackson.com/shadowbox/index.html&#34; title=&#34;Enlace a &amp;quot;&amp;quot;Shadowbox 1.0&#34; target=&#34;_blank&#34;&gt;Shadowbox&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Shadowbox&lt;/strong&gt; es una &lt;em&gt;ventana modal&lt;/em&gt; escrita enteramente en &lt;strong&gt;Javascript&lt;/strong&gt;. Puede desplegar una amplia gama de archivos gráficos (imágenes, películas, etc.). Es &lt;strong&gt;crossbrowser&lt;/strong&gt;, multiplataforma, de código limpio, relativamente bien documentado (aunque es nuevo).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Más prestaciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Su marcado se apega a los estándares web (valida).&lt;/li&gt;
&lt;li&gt;Puede adaptarse fácilmente a cualquier aplicación.&lt;/li&gt;
&lt;li&gt;Fácilmente customizable mediantye &lt;em&gt;skins&lt;/em&gt; (&lt;strong&gt;CSS&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Soporta formatos de imágenes, &lt;em&gt;Quicktime&lt;/em&gt;, &lt;em&gt;Windows Media Player&lt;/em&gt;, &lt;em&gt;Flash&lt;/em&gt;, &lt;em&gt;Flash Video&lt;/em&gt;, &lt;strong&gt;HTML&lt;/strong&gt; y páginas externas.&lt;/li&gt;
&lt;li&gt;Maneja errores de plugin elegantemente, desplegando una sugerencia de link para bajarlo si hay necesidad.&lt;/li&gt;
&lt;li&gt;Ofrece opciones configurables sin tocar código fuente.&lt;/li&gt;
&lt;li&gt;Soporta enlaces vía mapeo de imágenes (mediante la etiqueta &lt;strong&gt;&lt;area&gt;&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Compatible con Firefox 1.5+, Camino, Safari 2+, Opera 9+, Internet Explorer 6+.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Impresionante, ¿no? Pero lo que más me llamó la atención fue otro detalle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mediante adaptadores, puedes usarla sin importar el &lt;em&gt;framework&lt;/em&gt; que hayas implementado en tu sitio, o que estés acostumbrado a trabajar. O sea, puedes usar &lt;strong&gt;Shadowbox&lt;/strong&gt; con &lt;strong&gt;Prototype&lt;/strong&gt;, &lt;strong&gt;jQuery&lt;/strong&gt;, &lt;strong&gt;Yahoo! UI&lt;/strong&gt;, &lt;strong&gt;Mootools&lt;/strong&gt;, &lt;strong&gt;Ext&lt;/strong&gt; o &lt;strong&gt;Dojo&lt;/strong&gt;; el que más te acomode. ¡Genial! Sólo debes incluir el adapter necesario de acuerdo al &lt;em&gt;framework&lt;/em&gt; a gusto del consumidor.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo implementé en un nuevo proyecto personal llamado &lt;a href=&#34;http://www.rulz.cl/&#34; title=&#34;Enlace externo a &amp;quot;Rulz.cl&amp;quot;&#34; target=&#34;_blank&#34;&gt;Rulz&lt;/a&gt;, y realmente muy potente. Lo mejor es que actúa mediante la asignación del atributo &lt;strong&gt;rel=&amp;ldquo;shadowbox&amp;rdquo;&lt;/strong&gt; dentro de &lt;strong&gt;&lt;a&gt;&lt;/strong&gt;, lo que a contrario de &lt;strong&gt;Thickbox&lt;/strong&gt; (que fue el que estaba usando), no me interfiere en el enlace ya que estaba ya pasando algunos parámetros de geo-ubicación (para &lt;em&gt;Google Maps&lt;/em&gt;, pueden probarlo si entran a alguna reseña y presionan &amp;ldquo;&lt;em&gt;Ver mapa de ubicación&lt;/em&gt;&amp;rdquo;).&lt;/p&gt;
&lt;h4 id=&#34;pros&#34;&gt;Pros:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;fácil implementación.&lt;/li&gt;
&lt;li&gt;ultra-mega-customizable.&lt;/li&gt;
&lt;li&gt;multi-framework (!!!).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;contras&#34;&gt;Contras:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;no es tan liviano como quisiera.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;link&#34;&gt;Link&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;http://mjijackson.com/shadowbox/index.html&#34; title=&#34;Enlace externo a  &amp;quot;Shadowbox 1.0&amp;quot;&#34; target=&#34;_blank&#34;&gt;Shadowbox 1.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2008/01/30/ventana-modal-solo-con-css/&#34;&gt;http://www.csslab.cl/2008/01/30/ventana-modal-solo-con-css/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ventana modal sólo con CSS&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2006/06/23/javascript-toolkit-y-demases/&#34;&gt;http://www.csslab.cl/2006/06/23/javascript-toolkit-y-demases/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;JavaScript, Toolkit y demases&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2007/07/09/140/&#34;&gt;http://www.csslab.cl/2007/07/09/140/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Validando el CSS de Thickbox&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>El espacio blanco</title>
      <link>https://csslab.cl/2008/04/10/el-espacio-blanco/</link>
      <pubDate>Thu, 10 Apr 2008 21:07:38 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/04/10/el-espacio-blanco/</guid>
      <description>&lt;p&gt;La propiedad &lt;strong&gt;CSS&lt;/strong&gt; para &lt;strong&gt;white-space&lt;/strong&gt; no es muy conocida ni muy utilizada, pero sí tiene una importante utilidad al momento de diagramar textos. Son esos detalles finos que marcan la diferencia entre un &lt;em&gt;escritor de código web&lt;/em&gt;, y un &lt;em&gt;power master pro&lt;/em&gt; en estilos.&lt;/p&gt;</description>
      <content>&lt;p&gt;La propiedad &lt;strong&gt;CSS&lt;/strong&gt; para &lt;strong&gt;white-space&lt;/strong&gt; no es muy conocida ni muy utilizada, pero sí tiene una importante utilidad al momento de diagramar textos. Son esos detalles finos que marcan la diferencia entre un &lt;em&gt;escritor de código web&lt;/em&gt;, y un &lt;em&gt;power master pro&lt;/em&gt; en estilos.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;White-space&lt;/strong&gt; define cómo se comportan los espacios en blanco dentro de un elemento, o sea, en un párrafo son los espacios entre 2 palabras. Sus valores son:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;normal&lt;/strong&gt;: por defecto, el espacio en blanco es ignorado por el &lt;em&gt;browser&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pre&lt;/strong&gt;: el espacio en blanco es preservado por el navegador.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;nowrap&lt;/strong&gt;: el texto no se quiebra, continúa en la misma línea hasta que no haya un quiebre mediante la etiqueta &lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ahora, su real uso. Según veo, da igual si lo declaras o no para todos los &lt;strong&gt;&lt;p&gt;&lt;/strong&gt; por ejemplo. Pero sí me da un real uso cuando trabajo con links. Si tengo uno o varios links de 2 o más palabras, y justo uno te ellos me pilla en el margen del contenedor y se le ocurre quebrarme en 2 el enlace… se ve bastante feo y dificulta la lectura de ese link:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/white-space.html&#34;&gt;Ver ejemplo&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;Bueno, con &lt;strong&gt;white-space: nowrap;&lt;/strong&gt; se soluciona, ya que si el contenido dentro de &lt;strong&gt;&lt;a&gt;&lt;/a&gt;&lt;/strong&gt; no cabe en la línea, no me lo corta en 2 (como ocurre con &lt;strong&gt;Miguel Benigno&lt;/strong&gt; del ejemplo anterior… pobrecito), sino que entero baja al siguiente renglón.&lt;/p&gt;
&lt;p&gt;Pequeños detalles que marcan la diferencia.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Iniciándose en el DOM (actualizado)</title>
      <link>https://csslab.cl/2008/04/07/iniciandose-en-el-dom/</link>
      <pubDate>Mon, 07 Apr 2008 16:26:33 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/04/07/iniciandose-en-el-dom/</guid>
      <description>&lt;p&gt;Este artículo fue &lt;a href=&#34;#actualizado&#34;&gt;actualizado&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Document Object Model&lt;/strong&gt;&lt;/em&gt;, o &lt;strong&gt;DOM&lt;/strong&gt;, o &lt;em&gt;&lt;strong&gt;Modelo en Objetos para representar Documentos&lt;/strong&gt;&lt;/em&gt; es una modelo en que los scripts pueden acceder y modificar dinámicamente el contenido, la estructura o los estilos de documentos &lt;strong&gt;HTML&lt;/strong&gt;. A través del manejo del &lt;strong&gt;DOM&lt;/strong&gt; se permiten las actualizaciones en tiempo real de contenidos, envío de formularios asincrónicamente, etc. O sea, es la base del funcionamiento de los rollovers, del &lt;strong&gt;onclick&lt;/strong&gt;, de &lt;strong&gt;AJAX&lt;/strong&gt;.. Se utilizó por primera vez en &lt;strong&gt;Netscape Navigator 2.0&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;El entendimiento del &lt;strong&gt;DOM&lt;/strong&gt; es la base para entender la programación web.&lt;/p&gt;</description>
      <content>&lt;p&gt;Este artículo fue &lt;a href=&#34;#actualizado&#34;&gt;actualizado&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Document Object Model&lt;/strong&gt;&lt;/em&gt;, o &lt;strong&gt;DOM&lt;/strong&gt;, o &lt;em&gt;&lt;strong&gt;Modelo en Objetos para representar Documentos&lt;/strong&gt;&lt;/em&gt; es una modelo en que los scripts pueden acceder y modificar dinámicamente el contenido, la estructura o los estilos de documentos &lt;strong&gt;HTML&lt;/strong&gt;. A través del manejo del &lt;strong&gt;DOM&lt;/strong&gt; se permiten las actualizaciones en tiempo real de contenidos, envío de formularios asincrónicamente, etc. O sea, es la base del funcionamiento de los rollovers, del &lt;strong&gt;onclick&lt;/strong&gt;, de &lt;strong&gt;AJAX&lt;/strong&gt;.. Se utilizó por primera vez en &lt;strong&gt;Netscape Navigator 2.0&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;El entendimiento del &lt;strong&gt;DOM&lt;/strong&gt; es la base para entender la programación web.&lt;/p&gt;
&lt;p&gt;Aunque el desarrollo del &lt;strong&gt;DOM&lt;/strong&gt; es responsabilidad de la &lt;strong&gt;W3C&lt;/strong&gt;, como todo lo que sale de ahí, ha habido discrepancias en su implementación. Aunque todos los navegadores usan &lt;strong&gt;Javascript&lt;/strong&gt; como lenguaje de programación, los objetos no se comportan de la misma manera, lo que se traducía en diferentes maneras en que había que programar para &lt;strong&gt;IE&lt;/strong&gt;, &lt;strong&gt;Netscape&lt;/strong&gt;, &lt;strong&gt;Firefox&lt;/strong&gt;… (ya no nos bastaba tener que hacer que los estilos funcionaran parecidos entre navegadores… ¡ahora con el &lt;strong&gt;DOM&lt;/strong&gt; tambiém!). Eso lo puedes notar en sitios donde el &lt;strong&gt;onclick&lt;/strong&gt; sólo funciona en &lt;strong&gt;IE6&lt;/strong&gt; y no en &lt;strong&gt;Safari&lt;/strong&gt;, por ejemplo. Gran ayuda son los &lt;em&gt;frameworks&lt;/em&gt; de &lt;strong&gt;Javascript&lt;/strong&gt;, que ponen todos sus esfuerzos en lograr que sus fantásticas funcionalidades sean &lt;em&gt;crossbrowser&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;manipulando-objetos&#34;&gt;Manipulando Objetos&lt;/h3&gt;
&lt;p&gt;Objetos en un sitio web tienen propiedades, así como en la vida real una piedra tiene peso, color y textura:&lt;/p&gt;
&lt;p&gt;Para el siguiente modelo:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;div id=&#34;texto&#34;&amp;gt;lorem Ipsum&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El objeto puede ser &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; o su identificador, el &lt;strong&gt;id=&amp;ldquo;texto&amp;rdquo;&lt;/strong&gt;. La propiedad puede ser el color del texto, o su tamaño. Juguemos con su color. El valor, será el valor del color en &lt;em&gt;hexacromía&lt;/em&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;Objeto.propiedad = valor&amp;lt;br /&gt;
Texto.color = #f00;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;usando-jquery&#34;&gt;Usando jQuery:&lt;/h4&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;$(&#34;#texto&#34;).css(color: &#34;#f00&#34;);&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;usando-mootools&#34;&gt;Usando Mootools:&lt;/h4&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;&amp;(&#34;#texto&#34;).setStyle(&#39;color&#39;, &#39;#f00&#39;);&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;manipulando-eventos&#34;&gt;Manipulando Eventos&lt;/h3&gt;
&lt;p&gt;Un evento se define cuando alguna situación cambia en el comportamiento del sitio web: cuando se presiona alguna tecla, el click del mouse, la posición del cursor; o sea, la interacción del usuario con el sitio web. Estos eventos también son objetos (que responden a eventos) y se pueden manejar mediante &lt;strong&gt;Javascript&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Para el mismo modelo anterior, mediante un &lt;strong&gt;MouseOver&lt;/strong&gt;:&lt;/p&gt;
&lt;h4 id=&#34;usando-jquery-1&#34;&gt;Usando jQuery:&lt;/h4&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;$(&#34;#texto&#34;).mouseover(function() {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&#34;Mouse sobre el div#texto&#34;);&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;usando-mootools-1&#34;&gt;Usando Mootools:&lt;/h4&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;$(&#34;#texto&#34;).addEvent(&#39;mouseover&#39;, function() {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&#34;Mouse sobre el div#texto&#34;);&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a name=&#34;actualizado&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;onload-vs-ondomready&#34;&gt;onLoad v/s onDomReady&lt;/h3&gt;
&lt;p&gt;Siento que me faltó un importante tópico que tratar en este breve paso por el &lt;strong&gt;DOM&lt;/strong&gt;. Se trata del evento que gatilla las acciones de la página, más precisamente el anticuado &lt;strong&gt;onLoad&lt;/strong&gt;, v/s el moderno &lt;strong&gt;onDomReady&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;El problema de &lt;strong&gt;onLoad&lt;/strong&gt; es que espera que toooda la página, y toooooodos sus elementos estén cargados para ejecutarse. Su nombre lo dice, &lt;strong&gt;cuandoCargue&lt;/strong&gt; (&lt;strong&gt;onLoad&lt;/strong&gt;). Imagínate: primero cargas el &lt;strong&gt;HTML&lt;/strong&gt; y sus elementos, luego los &lt;em&gt;scripts&lt;/em&gt;, las imágenes… puede demorarse un montón. Cuando recién termina todo eso ejecuta algún evento determinado por &lt;strong&gt;onLoad&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Aquí es cuando viene al rescate &lt;strong&gt;onDomReady&lt;/strong&gt;. Este evento creado por los &lt;em&gt;frameworks&lt;/em&gt; (&lt;a href=&#34;http://docs.mootools.net/Window/Window-DomReady.js&#34; title=&#34;Enlace externo a &amp;quot;Mootools: Window. DomReady.js&amp;quot;&#34; target=&#34;_blank&#34;&gt;Mootools&lt;/a&gt; y &lt;a href=&#34;http://developer.yahoo.com/yui/event/#ondomready&#34; title=&#34;Enlace externo a &amp;quot;Yahoo! UI Library: Using the onDOMReady Method&amp;quot;&#34; target=&#34;_blank&#34;&gt;YUI&lt;/a&gt; lo tienen implementado) ejecuta sus comandos justo cuando los elementos &lt;strong&gt;HTML&lt;/strong&gt; de la página están renderizados, o sea, justo lo necesario para comenzar a manipularlos como objetos. Genial, mientras aún siguen cargando el resto de las imágenes, &lt;em&gt;swf’s&lt;/em&gt;, etc.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/DOM/&#34; title=&#34;DOM in W3C website&#34; target=&#34;_blank&#34;&gt;Document Object Model (DOM)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 26</title>
      <link>https://csslab.cl/2008/04/02/lo-vi-y-me-gusto-26/</link>
      <pubDate>Wed, 02 Apr 2008 21:35:56 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/04/02/lo-vi-y-me-gusto-26/</guid>
      <description>#26 – 02 Abril 2008</description>
      <content>&lt;p&gt;#26 – 02 Abril 2008&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.hclogistica.cl/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/04/hc.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.benvidatour.net/&#34; target=&#34;_blank&#34; title=&#34;Abrir Sitio&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/04/benvidatour.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Microformatos 2 contra-ataca</title>
      <link>https://csslab.cl/2008/03/28/microformatos-2-contra-ataca/</link>
      <pubDate>Fri, 28 Mar 2008 19:38:35 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/03/28/microformatos-2-contra-ataca/</guid>
      <description>&lt;p&gt;Tenía pendiente una segunda entrega más completa sobre &lt;strong&gt;Microformatos&lt;/strong&gt;. Espero el [primer artículo][1] haya quedado con gusto a poco, ya que ahora la idea es profundizar en el tema. Veremos los distintos tipos de &lt;strong&gt;microformatos&lt;/strong&gt; disponibles, y cómo podemos utilizarlos en la práctica.&lt;/p&gt;
&lt;p&gt;Recapitulando, los &lt;strong&gt;microformatos&lt;/strong&gt; nacieron bajo el alero de ampliar estándares semánticos aplicados a la &lt;strong&gt;www&lt;/strong&gt;. La idea es que los indexadores y buscadores sean más inteligentes y entreguen datos más precisos en cuanto nosotros desarrolladores y profesionales dedicados a la web entreguemos mejor esos datos.&lt;/p&gt;
&lt;p&gt;¿Y eso en concreto? Ya estaremos viendo resultados, con el &lt;a href=&#34;http://www.ysearchblog.com/archives/000527.html&#34; title=&#34;Enlace externo a &amp;quot;The Yahoo! Search Open Ecosystem&amp;quot;&#34; target=&#34;_blank&#34;&gt;anuncio de Yahoo! de incluir soporte a estándares web semánticos&lt;/a&gt;, incluyendo los &lt;strong&gt;microformatos&lt;/strong&gt; en sus búsquedas. Excelente iniciativa.&lt;/p&gt;
&lt;p&gt;Comencemos la diversión. Estos son los principales formatos disponibles:&lt;/p&gt;</description>
      <content>&lt;p&gt;Tenía pendiente una segunda entrega más completa sobre &lt;strong&gt;Microformatos&lt;/strong&gt;. Espero el [primer artículo][1] haya quedado con gusto a poco, ya que ahora la idea es profundizar en el tema. Veremos los distintos tipos de &lt;strong&gt;microformatos&lt;/strong&gt; disponibles, y cómo podemos utilizarlos en la práctica.&lt;/p&gt;
&lt;p&gt;Recapitulando, los &lt;strong&gt;microformatos&lt;/strong&gt; nacieron bajo el alero de ampliar estándares semánticos aplicados a la &lt;strong&gt;www&lt;/strong&gt;. La idea es que los indexadores y buscadores sean más inteligentes y entreguen datos más precisos en cuanto nosotros desarrolladores y profesionales dedicados a la web entreguemos mejor esos datos.&lt;/p&gt;
&lt;p&gt;¿Y eso en concreto? Ya estaremos viendo resultados, con el &lt;a href=&#34;http://www.ysearchblog.com/archives/000527.html&#34; title=&#34;Enlace externo a &amp;quot;The Yahoo! Search Open Ecosystem&amp;quot;&#34; target=&#34;_blank&#34;&gt;anuncio de Yahoo! de incluir soporte a estándares web semánticos&lt;/a&gt;, incluyendo los &lt;strong&gt;microformatos&lt;/strong&gt; en sus búsquedas. Excelente iniciativa.&lt;/p&gt;
&lt;p&gt;Comencemos la diversión. Estos son los principales formatos disponibles:&lt;/p&gt;
&lt;h3 id=&#34;a-hrefhttpmicroformatsorgwikihcard-titleenlace-externo-a-quothcard-in-microformatsorgquot-target_blankhcarda&#34;&gt;&lt;a href=&#34;http://microformats.org/wiki/hcard&#34; title=&#34;Enlace externo a &amp;quot;hCard in microformats.org&amp;quot;&#34; target=&#34;_blank&#34;&gt;hCard&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Se usa para representar personas, compañías, organizaciones y lugares, utilizando propiedades &lt;a href=&#34;http://es.wikipedia.org/wiki/VCard&#34; title=&#34;Enlace externo a &amp;quot;vCard in wikipedia.org&amp;quot;&#34; target=&#34;_blank&#34;&gt;vCard&lt;/a&gt; y valores en semántico &lt;strong&gt;HTML&lt;/strong&gt; ó &lt;strong&gt;XHTML&lt;/strong&gt;. Ha sido ya implementado en software, por ejemplo, &lt;strong&gt;AddressBook&lt;/strong&gt; de &lt;strong&gt;Apple&lt;/strong&gt;. Es muy común incluir sus &lt;strong&gt;vCards&lt;/strong&gt; en los emails enviados, para tener constante actualización de los datos del destinatario.&lt;/p&gt;
&lt;p&gt;En el siguiente ejemplo, verán cómo se construye un &lt;strong&gt;hCard&lt;/strong&gt;, básicamente a base de &lt;strong&gt;id&lt;/strong&gt;‘s y &lt;strong&gt;class&lt;/strong&gt;‘es ya definidas por el estándar:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;hcard-Jorge-Luis-Epu&amp;ntilde;an-Hern&amp;aacute;ndez&#34; class=&#34;vcard&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;a class=&#34;url fn n&#34; href=&#34;http://www.be-studios.com&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;given-name&#34;&amp;gt;Jorge&amp;lt;/span&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;additional-name&#34;&amp;gt;Luis&amp;lt;/span&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;family-name&#34;&amp;gt;Epu&amp;ntilde;an Hern&amp;aacute;ndez&amp;lt;/span&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/a&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div class=&#34;org&#34;&amp;gt;Be Studios&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div class=&#34;adr&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;locality&#34;&amp;gt;Santiago&amp;lt;/span&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;country-name&#34;&amp;gt;Chile&amp;lt;/span&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;a-hrefhttpmicroformatsorgwikihcalendar-titleenlace-externo-a-quothcalendar-in-microformatsorgquot-target_blankhcalendara&#34;&gt;&lt;a href=&#34;http://microformats.org/wiki/hcalendar&#34; title=&#34;Enlace externo a &amp;quot;hCalendar in microformats.org&amp;quot;&#34; target=&#34;_blank&#34;&gt;hCalendar&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Definido para formatos de eventos calendarizados, basado en el estándar &lt;strong&gt;iCalendar&lt;/strong&gt; y adaptado para su uso en &lt;strong&gt;HTML&lt;/strong&gt; o &lt;strong&gt;XHTML&lt;/strong&gt;, &lt;strong&gt;RSS&lt;/strong&gt; y cualquier &lt;strong&gt;XML&lt;/strong&gt;. Muy útil para tu blog, si quieres publicar algún evento, como un cumpleaños. Así, los &lt;em&gt;spiders&lt;/em&gt; de búsqueda u otros agregadores pueden leer ese evento marcado como microformato, convertirlos automáticamente a formato &lt;strong&gt;iCalendar&lt;/strong&gt; y utilizarlo en &lt;strong&gt;iCal&lt;/strong&gt;, software de &lt;strong&gt;Apple&lt;/strong&gt; que ya utiliza este estándar, para dar un ejemplo.&lt;/p&gt;
&lt;p&gt;Ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div class=&#34;vevent&#34; id=&#34;hcalendar-Mi-Cumplea&amp;ntilde;os&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;a class=&#34;url&#34; href=&#34;http://www.csslab.cl&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;abbr class=&#34;dtstart&#34; title=&#34;20080218&#34;&amp;gt;February 18th&amp;lt;/abbr&amp;gt;,&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;abbr class=&#34;dtend&#34; title=&#34;20080219&#34;&amp;gt; 2008&amp;lt;/abbr&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;summary&#34;&amp;gt;Mi Cumplea&amp;ntilde;os&amp;lt;/span&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/a&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div class=&#34;description&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Mi cumplea&amp;ntilde;os n&amp;uacute;mero 27. Oh s&amp;iacute;, aunque tengo muchas canas no soy anciano.&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;a-hrefhttpmicroformatsorgwikihreview-titleenlace-externo-a-quothreview-in-microformatsorgquot-target_blankhreviewa&#34;&gt;&lt;a href=&#34;http://microformats.org/wiki/hreview&#34; title=&#34;Enlace externo a &amp;quot;hReview in microformats.org&amp;quot;&#34; target=&#34;_blank&#34;&gt;hReview&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Se usa para reseñas de productos, servicios, empresas, eventos, lugares, etc.&lt;/p&gt;
&lt;p&gt;Ejemplo en que un ficticio &lt;em&gt;CCazorla&lt;/em&gt; hace un review sobre mi persona:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div class=&#34;hreview&#34;&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;reviewer&#34;&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;fn&#34;&amp;gt;CCazorla&amp;lt;/span&amp;gt;, &amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;abbr class=&#34;dtreviewed&#34; title=&#34;20080325&#34;&amp;gt;25 de Marzo de 2008&amp;lt;/abbr&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;a class=&#34;person url&#34; href=&#34;http://www.csslab.cl&#34;&amp;gt;&amp;lt;span class=&#34;fn&#34;&amp;gt;Jorge Epu&amp;ntilde;an&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt;Rating: &amp;lt;span class=&#34;rating&#34;&amp;gt;2&amp;lt;/span&amp;gt; de 5&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;blockquote class=&#34;description&#34;&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Perfeccionista por naturaleza, siempre busca superarse profesionalmente. Por dentro muy buena persona. Por fuera de personalidad extra&amp;ntilde;a, un tanto psicópata.&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/blockquote&amp;gt;&amp;lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;a-hrefhttpmicroformatsorgwikigeo-titleenlace-externo-a-quotgeo-in-microformatsorgquot-target_blankgeoa&#34;&gt;&lt;a href=&#34;http://microformats.org/wiki/geo&#34; title=&#34;Enlace externo a &amp;quot;geo in microformats.org&amp;quot;&#34; target=&#34;_blank&#34;&gt;Geo&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Se basa en la propiedad ‘geo’ del estándar &lt;strong&gt;vCard&lt;/strong&gt;, y agrega nuevas sub-propiedades para completar. Se tratan de &lt;strong&gt;id&lt;/strong&gt;‘s específicos para coordenadas de &lt;em&gt;latitud&lt;/em&gt; y &lt;em&gt;longitud&lt;/em&gt;, las que se pueden agregar directamente en la página o &lt;strong&gt;XML&lt;/strong&gt; mediante &lt;strong&gt;RSS&lt;/strong&gt; o &lt;strong&gt;Atom&lt;/strong&gt;, y ser indexadas para luego, por ejemplo, mostrar la ubicación directamente en &lt;strong&gt;GMaps&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div class=&#34;geo&#34;&amp;gt;Arax&amp;aacute;: &amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;latitude&#34;&amp;gt;37.0625&amp;lt;/span&amp;gt;, &amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;longitude&#34;&amp;gt;-95.677068&amp;lt;/span&amp;gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Existen algunos más, como &lt;a href=&#34;http://en.wikipedia.org/wiki/Dublin_Core&#34; title=&#34;Enlace externo a &amp;quot;Dublin Core in wikipedia.org&amp;quot;&#34; target=&#34;_blank&#34;&gt;Dublin Core&lt;/a&gt;, &lt;a href=&#34;http://microformats.org/wiki/xfn&#34; title=&#34;Enlace externo a &amp;quot;XFN - Xhtml Friends Network in microformats.org&amp;quot;&#34; target=&#34;_blank&#34;&gt;XFN&lt;/a&gt;, &lt;a href=&#34;http://www.foaf-project.org/&#34; title=&#34;Enlace externo a &amp;quot;The Friend of a Friend (FOAF) project.&amp;quot;&#34; target=&#34;_blank&#34;&gt;FOAF&lt;/a&gt;, pero están aún en etapas de definiciones y aprobaciones, lo que hace ver lejana su estandarización. Pero no dejan de ser buenas intenciones para necesidades reales, en contínuo desarrollo.&lt;/p&gt;
&lt;p&gt;¿Mi opinión? Son un gran aporte a la web semántica y la catalogación de la información que componen las páginas porque, sobre todo, Internet se compone prioritariamente de información. Sólo faltan ser lanzados definitivamente y dados a conocer, además de ser integrados en los software de desarrollo y gestores de contenido web (&lt;strong&gt;CMS&lt;/strong&gt;). Finalmente ahí podremos ver su real potencial, con la llamada [Web 3.0.][2]&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://microformats.org/code/hcard/creator&#34; title=&#34;Enlace externo a &amp;quot;hCard Creator&amp;quot;&#34; target=&#34;_blank&#34;&gt;hCard Creator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://microformats.org/code/hcalendar/creator&#34; title=&#34;Enlace externo a &amp;quot;hCalendar Creator&amp;quot;&#34; target=&#34;_blank&#34;&gt;hCalendar Creator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2008/01/03/un-poco-sobre-microformatos/&#34;&gt;http://www.csslab.cl/2008/01/03/un-poco-sobre-microformatos/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Un poco sobre Microformatos&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2007/08/30/la-semantica-en-la-web-30/&#34;&gt;http://www.csslab.cl/2007/08/30/la-semantica-en-la-web-30/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;La semántica en la Web 3.0&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Simulando un efecto negativo</title>
      <link>https://csslab.cl/2008/03/24/simulando-un-efecto-negativo/</link>
      <pubDate>Mon, 24 Mar 2008 14:26:09 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/03/24/simulando-un-efecto-negativo/</guid>
      <description>&lt;p&gt;Vi este efecto bastante interesante &lt;a href=&#34;http://www.westciv.com/style_master/index.html&#34; title=&#34;Enlace externo a &amp;quot;web standards software and learning&amp;quot;&#34; target=&#34;_blank&#34;&gt;en un sitio web&lt;/a&gt;, y me atreví a intentar replicarlo a mí manera. Luego de fracasar en mi primer intento, decidí hacer trampa y revisé su código fuente. Me dí cuenta de que utilizaban una propiedad que no conocía, lo que me explicó mi anterior fracaso. Primero, un video de una captura tomada desde el mismo sitio web, para que vean a lo que me refiero. Luego, la explicación bastante simple.&lt;/p&gt;</description>
      <content>&lt;p&gt;Vi este efecto bastante interesante &lt;a href=&#34;http://www.westciv.com/style_master/index.html&#34; title=&#34;Enlace externo a &amp;quot;web standards software and learning&amp;quot;&#34; target=&#34;_blank&#34;&gt;en un sitio web&lt;/a&gt;, y me atreví a intentar replicarlo a mí manera. Luego de fracasar en mi primer intento, decidí hacer trampa y revisé su código fuente. Me dí cuenta de que utilizaban una propiedad que no conocía, lo que me explicó mi anterior fracaso. Primero, un video de una captura tomada desde el mismo sitio web, para que vean a lo que me refiero. Luego, la explicación bastante simple.&lt;/p&gt;
&lt;div style=&#34;width: 320px; margin: 20px auto; border: 4px solid #999;&#34;&gt;
  &lt;video controls width=&#34;320&#34; height=&#34;240&#34;&gt;&lt;source src=&#34;http://www.csslab.cl/ejemplos/fx_negativo/westciv.ogv&#34; type=&#34;video/ogg&#34; /&gt;&lt;source src=&#34;http://www.csslab.cl/ejemplos/fx_negativo/westciv.mp4&#34; type=&#34;video/mp4&#34; /&gt;&lt;source src=&#34;http://www.csslab.cl/ejemplos/fx_negativo/westciv.webm&#34; type=&#34;video/webm&#34; /&gt;&lt;/video&gt;
&lt;/div&gt;
&lt;p&gt;Bueno pueden verlo por sus propios ojos &lt;a href=&#34;http://www.westciv.com/style_master/index.html&#34; title=&#34;Enlace externo a &amp;quot;web standards software and learning&amp;quot;&#34; target=&#34;_blank&#34;&gt;desde el sitio original&lt;/a&gt;, sólo tomé el video porque creí que para muchos no sería tan obvio el efecto. La idea es que mediante el &lt;strong&gt;scroll&lt;/strong&gt;, se intercambien 2 imágenes, en este caso una &lt;em&gt;positiva&lt;/em&gt; de una &lt;em&gt;negativa&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Ahora, vamos con la magia. A través de &lt;strong&gt;CSS&lt;/strong&gt; y la propiedad &lt;strong&gt;background-attachment: fixed;&lt;/strong&gt; repetiremos el efecto. Los ingredientes son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 &lt;strong&gt;HTML&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;2 imágenes similares, pero diferentes (positivo y negativo para ser originales).&lt;/li&gt;
&lt;li&gt;1 pizca de &lt;strong&gt;CSS&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El &lt;strong&gt;HTML&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;container&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;header&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h1&amp;gt;CSSLab: efecto negativo&amp;lt;/h1&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;content&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Pellentesque vel dui sed..........&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nada de qué extrañarse. Un contenedor que tiene un encabezado y el contenido. La idea es que el &lt;strong&gt;#container&lt;/strong&gt; tenga la imagen en negativo, escondida detrás del &lt;strong&gt;#header&lt;/strong&gt; que tendrá la imagen en positivo. Ambos con la propiedad &lt;strong&gt;background-attachment: fixed;&lt;/strong&gt; para que no se muevan con el scroll de la ventana, similar a lo que hace &lt;strong&gt;position: fixed;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La pizca de &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#container {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: #333 url(tecla_neg.jpg) no-repeat fixed top;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 600px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 0 auto;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  #header {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: #fff url(tecla_pos.jpg) no-repeat fixed top;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 200px;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  #content {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 200px;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La propiedad &lt;strong&gt;background&lt;/strong&gt; está resumida en una línea, pero desglosada sería de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;background-color: #333;&amp;lt;br /&gt;
background-image: url(tecla_neg.jpg);&amp;lt;br /&gt;
background-repeat: no-repeat;&amp;lt;br /&gt;
background-attachment: fixed;&amp;lt;br /&gt;
background-position: top;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Un detalle. No, mejor dos. No hubo caso de utilizar algún tributo de posicionamiento horizontal junto con &lt;strong&gt;background-attachment&lt;/strong&gt;, o sea, sólo pude utilizar &lt;strong&gt;top&lt;/strong&gt; o &lt;strong&gt;bottom&lt;/strong&gt;, nada &lt;strong&gt;left&lt;/strong&gt; ni &lt;strong&gt;right&lt;/strong&gt;, y menos aún juntos. No me explico el porqué. Si quieren ponerlo hacia un lado, tendrían que hacer un &lt;strong&gt;background&lt;/strong&gt; bien ancho cosa que lo cubra por completo en la horizontal. Segundo detalle… sí, oh sí. &lt;strong&gt;No funciona en IE6&lt;/strong&gt;. ¡Qué maravilla!&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/fx_negativo/index.html&#34;&gt;http://www.csslab.cl/ejemplos/fx_negativo/index.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab para ver ejemplo &amp;ldquo;Efecto Negativo&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Centrando texto verticalmente</title>
      <link>https://csslab.cl/2008/03/19/centrando-texto-verticalmente/</link>
      <pubDate>Wed, 19 Mar 2008 14:02:16 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/03/19/centrando-texto-verticalmente/</guid>
      <description>&lt;p&gt;Una vez más vengo con una técnica que de tan simple dan ganas de llorar por no habérsenos ocurrido antes. Lo que mostraré ahora, es cómo lograr centrar verticalmente un texto a través de su contenedor. Esta es la clave, ya que se suele pensar que el texto mismo es el que debe tener la propiedad de alineado vertical pero la idea, al igual que el [artículo anterior de centrado horizontal][1], es que el contenedor permita hacerlo, así cualquier elemento que esté dentro pueda tener esta cualidad.&lt;/p&gt;</description>
      <content>&lt;p&gt;Una vez más vengo con una técnica que de tan simple dan ganas de llorar por no habérsenos ocurrido antes. Lo que mostraré ahora, es cómo lograr centrar verticalmente un texto a través de su contenedor. Esta es la clave, ya que se suele pensar que el texto mismo es el que debe tener la propiedad de alineado vertical pero la idea, al igual que el [artículo anterior de centrado horizontal][1], es que el contenedor permita hacerlo, así cualquier elemento que esté dentro pueda tener esta cualidad.&lt;/p&gt;
&lt;p&gt;La clave: la propiedad &lt;strong&gt;line-height&lt;/strong&gt;. Definiento un alto de línea fijo para el contenedor, podremos lograr que todos sus elementos queden centrados relativos a él, ya que al contrario de &lt;strong&gt;height&lt;/strong&gt;, siempre sus elementos hijos quedarán centrados verticalmente. Esto funciona para cualquier etiqueta bloque: &lt;strong&gt;&lt;td&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;p&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;li&gt;&lt;/strong&gt;, etc.&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;CSS&lt;/strong&gt; es el siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;li, td, p {
   line-height: 100px;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;O sea, si el contenedor es un &lt;strong&gt;&lt;li&gt;&lt;/strong&gt;, un &lt;strong&gt;&lt;td&gt;&lt;/strong&gt; o un &lt;strong&gt;&lt;p&gt;&lt;/strong&gt; (pueden ser muchos otros), defino el alto de éste mediante &lt;strong&gt;line-height&lt;/strong&gt; (en vez de hacerlo mediante &lt;strong&gt;height&lt;/strong&gt;) y todos sus elementos de texto y botones quedarán automáticamente centrados verticalmente.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;El único problema… si… ese mismo… &lt;strong&gt;IE6&lt;/strong&gt; y las etiquetas de botones &lt;strong&gt;&lt;button&gt;&lt;/strong&gt; e &lt;strong&gt;&lt;input /&gt;&lt;/strong&gt;. Como se darán cuenta, no lo hace del todo bien. Lo siguen &lt;strong&gt;IE7&lt;/strong&gt; y &lt;strong&gt;Opera&lt;/strong&gt;. Pero hay una manera de solucionarlo mediante &lt;strong&gt;CSS&lt;/strong&gt; pero sólo para &lt;strong&gt;IE7&lt;/strong&gt; y &lt;strong&gt;Opera&lt;/strong&gt;: definir el alto fijo de los botones mediante &lt;strong&gt;height&lt;/strong&gt;. Pero con &lt;strong&gt;IE6&lt;/strong&gt; no hay caso, no lo soluciona.. Otro detalle es que no funciona con imágenes &lt;strong&gt;&lt;img /&gt;&lt;/strong&gt;. Siento mucho si se decepcionaron leyendo estas últimas palabras… tiene sus limitaciones, pero puede salvar en algunas situaciones.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2008/03/11/esas-botoneras-centrandolas/&#34;&gt;http://www.csslab.cl/2008/03/11/esas-botoneras-centrandolas/&lt;/a&gt; &amp;ldquo;Enlade en CSSLab a &amp;ldquo;Esas botoneras: centrándolas&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/centrado_vertical.html&#34;&gt;http://www.csslab.cl/ejemplos/centrado_vertical.html&lt;/a&gt; &amp;ldquo;Enlade en CSSLab a &amp;ldquo;Ejemplo Centrando Verticalmente&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Esas botoneras: centrándolas</title>
      <link>https://csslab.cl/2008/03/11/esas-botoneras-centrandolas/</link>
      <pubDate>Tue, 11 Mar 2008 15:17:49 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/03/11/esas-botoneras-centrandolas/</guid>
      <description>&lt;p&gt;Uno de los temas más complicados a la hora de estructurar y diagramar un sitio, es cuando existen formularios. Creo que es el más difícil, ya que a pesar de tener [un buen CSS reseter][1] a mano que te ayude a setear esas propiedades en todos los &lt;strong&gt;browsers&lt;/strong&gt;, aún así hay elementos que no obedecen como querríamos que lo hicieran. Algunos trucos se deben usar, y finalmente no queda totalmente exacto en todas las plataformas y navegadores. Imagínate esos formularios gigantescos, donde sobran campos y la usabilidad es nula… un lío.&lt;/p&gt;
&lt;p&gt;Lo que se va a ver aquí, será específicamente cómo abordar la estructuración de una botonera de formularios (o de cualquier otro en realidad), y cómo lograr que se estén siempre centradas a pesar de cuántos botones tengan. El ejemplo gráfico a continuación:&lt;/p&gt;</description>
      <content>&lt;p&gt;Uno de los temas más complicados a la hora de estructurar y diagramar un sitio, es cuando existen formularios. Creo que es el más difícil, ya que a pesar de tener [un buen CSS reseter][1] a mano que te ayude a setear esas propiedades en todos los &lt;strong&gt;browsers&lt;/strong&gt;, aún así hay elementos que no obedecen como querríamos que lo hicieran. Algunos trucos se deben usar, y finalmente no queda totalmente exacto en todas las plataformas y navegadores. Imagínate esos formularios gigantescos, donde sobran campos y la usabilidad es nula… un lío.&lt;/p&gt;
&lt;p&gt;Lo que se va a ver aquí, será específicamente cómo abordar la estructuración de una botonera de formularios (o de cualquier otro en realidad), y cómo lograr que se estén siempre centradas a pesar de cuántos botones tengan. El ejemplo gráfico a continuación:&lt;/p&gt;
&lt;p&gt;![Ejemplo Botonera Centrado en CSSLab][2]&lt;/p&gt;
&lt;p&gt;He visto muchas soluciones a esto, la mayoría de ellas complicadas (mi slogan siempre es &lt;em&gt;facilitar la vida en su máxima expresión&lt;/em&gt;). Por ejemplo, se hacen &lt;strong&gt;class’es&lt;/strong&gt; para cada botón (.boton_aceptar_1, .boton_aceptar_2 etc etc etc) y se posicionan absolutamente. También se hacen &lt;strong&gt;class’es&lt;/strong&gt; a cada botón y se marginan, incluso negativamente (lo que &lt;strong&gt;IE6&lt;/strong&gt; no ve con buenos ojos). Imagínense si son varias páginas de formularios y los botones se repiten (por ejemplo, el &lt;em&gt;‘Aceptar’&lt;/em&gt; o el &lt;em&gt;‘Enviar’&lt;/em&gt; son los más comunes) pero no siempre van de a 2, sino que a veces van solos o de a 3, 4…. enfin. Hacer &lt;strong&gt;class’es&lt;/strong&gt; para cada situación no es la mejor solución, ya que llenaremos la hoja de estilos de propiedades de posicionamiento en vez de aplicar una solución global, independiente de la cantidad de botones que estén involucrados. Bueno, esa es la idea de este artículo.&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Es frecuente que los temas que escribo para &lt;strong&gt;CSSLab&lt;/strong&gt; se den mientras estoy en algún proyecto, y me topo con dificultades que logro solucionar, y luego las muestro y explico aquí cómo se resolvió finalmente. Este es otro de esos casos, sólo que este tema lo había resuelto hacía mucho pero se dió nuevamente a manos de otro profesional web con quien trabajo. Lo ayudé con esto y finalmente me tomo el tiempo de explicarlo aquí para todos quienes tengan la misma situación.&lt;/p&gt;
&lt;p&gt;Vamos a lo que nos reúne. [Construído el lindo formulario][3], con &lt;strong&gt;&lt;fieldset&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;legend&gt;&lt;/strong&gt;, varios &lt;strong&gt;&lt;label&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;input /&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;textarea&gt;&lt;/strong&gt; quizás, llega la hora de poner los botones de &lt;strong&gt;Enviar&lt;/strong&gt; y &lt;strong&gt;No Enviar&lt;/strong&gt; como en el ejemplo gráfico anterior. Mi método implica utilizar listas, ya que me gustan para [contener botones como menúes][4] (aunque puede ser un &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; si quienes, incluso un &lt;strong&gt;&lt;p&gt;&lt;/strong&gt;. Cada uno con su gusto). El &lt;strong&gt;HTML&lt;/strong&gt; de la botonera:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;ul id=&#34;botonera&#34;&amp;gt;&amp;lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;input type=&#34;submit&#34; value=&#34;Enviar&#34; /&amp;gt;&amp;lt;input type=&#34;reset&#34; value=&#34;No Enviar&#34; /&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Como habrán notado, en vez de poner cada botón dentro de un &lt;strong&gt;&lt;li&gt;&lt;/li&gt;&lt;/strong&gt; y flotarlos a la izquierda (como usualmente se usa para los [menúes horizontales][5]), puse todos los botones dentro de un mismo &lt;strong&gt;&lt;li&gt;&lt;/strong&gt;, caso contrario no podrían ser centrados. Entonces, si es sólo un botón, o todos los que sean necesarios, deberán ir consecutivamente uno al lado del otro dentro de un único &lt;strong&gt;&lt;li&gt;&lt;/li&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Ahora, el &lt;strong&gt;CSS&lt;/strong&gt; que hará la magia:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#botonera {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 400px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 20px auto;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#botonera li {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list-style: none;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-align: center;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#botonera input {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin-left: 10px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Bastante simple. Si se han fijado, lo que hace que se centren los elementos dentro del &lt;strong&gt;&lt;li&gt;&lt;/strong&gt; es el &lt;strong&gt;text-align: center;&lt;/strong&gt; ya que como &lt;strong&gt;&lt;input /&gt;&lt;/strong&gt; es una etiqueta lineal, se alineará tal como lo haría un texto cualquiera. Ese es todo el truco. Lo otro es darle al &lt;strong&gt;&lt;input /&gt;&lt;/strong&gt; un &lt;strong&gt;margin-left&lt;/strong&gt; de unos &lt;strong&gt;10px&lt;/strong&gt; para que se separen un poco si son 2 o más botones (he visto usar &lt;strong&gt; &lt;/strong&gt; para ello… no es correcto). Saco 3 conclusiones de esta solución:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No se usa &lt;strong&gt;float&lt;/strong&gt; alguno, lo que no hace el contenedor colapsar así que nos ahorramos un [clearfix][6]. Además que no puedes centrar un &lt;strong&gt;float&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Se puede usar para cualquier botón, no sólo &lt;strong&gt;&lt;input /&gt;&lt;/strong&gt;: &lt;strong&gt;&lt;a&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;button&gt;&lt;/strong&gt; también son soportados. Así que puedes también hacer un menú horizontal centrado con esta misma técnica.&lt;/li&gt;
&lt;li&gt;Es soportado por todos los browsers.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;[Ver Ejemplo][7]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/10/18/css-reseter/&#34;&gt;http://www.csslab.cl/2007/10/18/css-reseter/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;CSS Reseter&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2008/03/ejemplo_1.gif&#34;&gt;http://www.csslab.cl/wp-content/uploads/2008/03/ejemplo_1.gif&lt;/a&gt;
[3]: &lt;a href=&#34;http://www.csslab.cl/2006/10/13/formularios-semanticos-ii/&#34;&gt;http://www.csslab.cl/2006/10/13/formularios-semanticos-ii/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Formularios Semánticos: el regreso&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/2007/12/28/videocast-2-menu-con-listas/&#34;&gt;http://www.csslab.cl/2007/12/28/videocast-2-menu-con-listas/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;quot; Videocast 2: menú con listas&amp;rdquo;&amp;quot;
[5]: &lt;a href=&#34;http://www.csslab.cl/2006/02/20/menu-horizontal-y-algo/&#34;&gt;http://www.csslab.cl/2006/02/20/menu-horizontal-y-algo/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Menú horizontal y algo +&amp;rdquo;&amp;rdquo;
[6]: &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34;&gt;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&lt;/a&gt; &amp;ldquo;Enlace en CSSlab a &amp;ldquo;Flotando en la incertidumbre&amp;rdquo;&amp;rdquo;
[7]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/botonera/index.html&#34;&gt;http://www.csslab.cl/ejemplos/botonera/index.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo Centrando Botonera&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Horror #2</title>
      <link>https://csslab.cl/2008/03/07/horror-2/</link>
      <pubDate>Fri, 07 Mar 2008 19:04:23 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/03/07/horror-2/</guid>
      <description>&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;table width=&#34;539&#34; border=&#34;0&#34; cellspacing=&#34;0&#34; cellpadding=&#34;0&#34;&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tr&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td&amp;gt;&amp;lt;img src=&#34;https://csslab.cl/imgs/&amp;lt;strong&gt;spacer.gif&amp;lt;/strong&gt;&#34; width=&#34;539&#34; height=&#34;12&#34;/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&amp;lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <content>&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;table width=&#34;539&#34; border=&#34;0&#34; cellspacing=&#34;0&#34; cellpadding=&#34;0&#34;&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tr&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td&amp;gt;&amp;lt;img src=&#34;https://csslab.cl/imgs/&amp;lt;strong&gt;spacer.gif&amp;lt;/strong&gt;&#34; width=&#34;539&#34; height=&#34;12&#34;/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&amp;lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;¿Un spacer? No, habían muuuuchos más de donde salió ese. Y lo peor es una tabla entera solo para contener un spacer… Sin comentarios.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Ajax con Mootools</title>
      <link>https://csslab.cl/2008/02/25/ajax-con-mootools/</link>
      <pubDate>Mon, 25 Feb 2008 21:11:51 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/02/25/ajax-con-mootools/</guid>
      <description>&lt;p&gt;Mootools nos permite integrar fácilmente &lt;strong&gt;Ajax&lt;/strong&gt; según nuestras necesidades, ya sea mediante el envio de formularios o, como lo veremos ahora, el rescate de información desde una fuente externa a nuestra página, sin tener que volver a cargar la página. Primero, construiremos un &lt;strong&gt;HTML&lt;/strong&gt; donde estará un lugar delimitado en que se cargará la info desde otro &lt;strong&gt;HTML&lt;/strong&gt; creado también por nosotros (un &lt;em&gt;lorem ipsum&lt;/em&gt; cualquiera). Y claro, un botón que gatillará la acción mediante &lt;strong&gt;Ajax&lt;/strong&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;Mootools nos permite integrar fácilmente &lt;strong&gt;Ajax&lt;/strong&gt; según nuestras necesidades, ya sea mediante el envio de formularios o, como lo veremos ahora, el rescate de información desde una fuente externa a nuestra página, sin tener que volver a cargar la página. Primero, construiremos un &lt;strong&gt;HTML&lt;/strong&gt; donde estará un lugar delimitado en que se cargará la info desde otro &lt;strong&gt;HTML&lt;/strong&gt; creado también por nosotros (un &lt;em&gt;lorem ipsum&lt;/em&gt; cualquiera). Y claro, un botón que gatillará la acción mediante &lt;strong&gt;Ajax&lt;/strong&gt;.&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;a href=&#34;&#34; id=&#34;comienza&#34;&amp;gt;Rescata la info&amp;lt;/a&amp;gt;&amp;lt;br /&gt;
&amp;lt;div id=&#34;traelo_aqui&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Trae aqu&amp;iacute; la info&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Básicamente es un botón que al ser presionado cargará la info [desde una página determinada por nosotros][1] mediante &lt;strong&gt;JS&lt;/strong&gt; hasta el &lt;strong&gt;div&lt;/strong&gt; que definimos. Ahora, mediante &lt;strong&gt;Mootools&lt;/strong&gt; crearemos el evento:&lt;/p&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;$(&#39;boton&#39;).addEvent(&#39;click&#39;, function(e) {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e = new Event(e).stop();&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var url = &#34;http://www.csslab.cl/ejemplos/ajax_mootools/lipsum.html&#34;;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&#39;traelo_aqui&#39;).empty().addClass(&#39;cargando&#39;);&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new Ajax(url, {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;method: &#39;get&#39;,&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;update: $(&#39;traelo_aqui&#39;),&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;onComplete: function() {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&#39;traelo_aqui&#39;).removeClass(&#39;cargando&#39;)&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}).request();&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Al elemento con &lt;strong&gt;id=&amp;ldquo;boton&amp;rdquo;&lt;/strong&gt; (o sea, &lt;strong&gt;&lt;a id=&#34;boton&#34;&gt;&lt;/strong&gt;) le agregamos un evento de &lt;strong&gt;‘click’&lt;/strong&gt; (&lt;strong&gt;addEvent&lt;/strong&gt;). De ahí, comenzamos una función que a través del método &lt;strong&gt;‘get’&lt;/strong&gt;, trae lo que esté en la variable url (&lt;strong&gt;var url&lt;/strong&gt;) y refresca lo que esté adentro del &lt;strong&gt;id=&amp;ldquo;traelo_aqui&amp;rdquo;&lt;/strong&gt; (o sea &lt;strong&gt;&lt;div id=&#34;traelo_aqui&#34;&gt;&lt;/strong&gt;). Además, agregaremos una &lt;strong&gt;class=&amp;ldquo;cargando&amp;rdquo;&lt;/strong&gt; al contenedor mientras se está rescatando la información por si se demora mucho (&lt;strong&gt;addClass(‘cargando’);&lt;/strong&gt;) y cuando termine todo, sacaremos esa class (&lt;strong&gt;removeClass&lt;/strong&gt;). Básicamente esa es la explicación.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/ajax_mootools/lipsum.html&#34;&gt;http://www.csslab.cl/ejemplos/ajax_mootools/lipsum.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;lorem ipsum&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/ajax_mootools/ajax.html&#34;&gt;http://www.csslab.cl/ejemplos/ajax_mootools/ajax.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ver Ejemplo&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Pronto…</title>
      <link>https://csslab.cl/2008/02/22/pronto/</link>
      <pubDate>Fri, 22 Feb 2008 20:06:13 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/02/22/pronto/</guid>
      <description>&lt;p&gt;Luego de unas merecidas 2 semanas de vacaciones, vuelvo a la actividad. O por lo menos trato de no caer en la rutina tan pronto. He estado dedicando esfuerzos en arreglar este &lt;em&gt;template&lt;/em&gt; para que se vea por lo menos decente en &lt;strong&gt;IE6&lt;/strong&gt; [como prometí][1]. Mientras, recopilo algunos artículos antiguos y que siguen vigentes por su contenido.&lt;/p&gt;</description>
      <content>&lt;p&gt;Luego de unas merecidas 2 semanas de vacaciones, vuelvo a la actividad. O por lo menos trato de no caer en la rutina tan pronto. He estado dedicando esfuerzos en arreglar este &lt;em&gt;template&lt;/em&gt; para que se vea por lo menos decente en &lt;strong&gt;IE6&lt;/strong&gt; [como prometí][1]. Mientras, recopilo algunos artículos antiguos y que siguen vigentes por su contenido.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[Posicionando un objeto en el centro][2]
&lt;ul&gt;
&lt;li&gt;[Formulario sin tablas][3]&lt;/li&gt;
&lt;li&gt;[media=&amp;ldquo;print&amp;rdquo;][4]&lt;/li&gt;
&lt;li&gt;[Rápidos rollovers con CSS][5]&lt;/li&gt;
&lt;li&gt;[¿Strict o no Strict?][6]&lt;/li&gt;
&lt;li&gt;[Menú horizontal y algo +][7]&lt;/li&gt;
&lt;li&gt;[CSS para móviles][8]&lt;/li&gt;
&lt;li&gt;[Diseño a oscuras][9]&lt;/li&gt;
&lt;li&gt;[Flotando en la incertidumbre][10]&lt;/li&gt;
&lt;li&gt;[El porqué de no utilizar tablas][11]&lt;/li&gt;
&lt;li&gt;[Image Replacement o cómo reemplazar contenido por imagen][12]&lt;/li&gt;
&lt;li&gt;[Lightbox + SWF][13]&lt;/li&gt;
&lt;li&gt;[Como Caja: el modelo][14]&lt;/li&gt;
&lt;li&gt;[Estilos de botones crossbrowser][15]&lt;/li&gt;
&lt;li&gt;[Absolutamente sí][16]&lt;/li&gt;
&lt;li&gt;[Selectores avanzados de atributos][17]&lt;/li&gt;
&lt;li&gt;[textos_muy_largos_que_quiebran_nuestro_layout][18]&lt;/li&gt;
&lt;li&gt;[100% alto, finalmente para todos][19]&lt;/li&gt;
&lt;li&gt;[Sobre la accesibilidad y sus implicancias][20]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Uff… hay muchos más… pero con esto pueden tener una idea de alguno de los artículos fundamentales de CSSLab. Pronto, leve rediseño del sitio.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2008/02/06/entrevistas-de-trabajo-google/#comment-18324&#34;&gt;http://www.csslab.cl/2008/02/06/entrevistas-de-trabajo-google/#comment-18324&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Comentario personal en Entrevistas de trabajo: Google&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2005/11/07/posicionando-un-objeto-en-el-centro/&#34;&gt;http://www.csslab.cl/2005/11/07/posicionando-un-objeto-en-el-centro/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Posicionando un objeto en el centro&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2005/11/08/formulario-sin-tablas/&#34;&gt;http://www.csslab.cl/2005/11/08/formulario-sin-tablas/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Formulario sin tablas&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/2005/11/15/mediaprint/&#34;&gt;http://www.csslab.cl/2005/11/15/mediaprint/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;media=&amp;ldquo;print&amp;rdquo;&amp;rdquo;&amp;rdquo;
[5]: &lt;a href=&#34;http://www.csslab.cl/2005/11/22/rapidos-rollovers-con-css/&#34;&gt;http://www.csslab.cl/2005/11/22/rapidos-rollovers-con-css/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Rápidos rollovers con CSS&amp;rdquo;&amp;rdquo;
[6]: &lt;a href=&#34;http://www.csslab.cl/2005/11/30/&amp;amp;iquest;strict-o-no-strict/&#34;&gt;http://www.csslab.cl/2005/11/30/&amp;amp;iquest;strict-o-no-strict/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;¿Strict o no Strict?&amp;rdquo;&amp;rdquo;
[7]: &lt;a href=&#34;http://www.csslab.cl/2006/02/20/menu-horizontal-y-algo/&#34;&gt;http://www.csslab.cl/2006/02/20/menu-horizontal-y-algo/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Menú horizontal y algo &amp;quot;&amp;rdquo;
[8]: &lt;a href=&#34;http://www.csslab.cl/2006/03/07/css-para-moviles/&#34;&gt;http://www.csslab.cl/2006/03/07/css-para-moviles/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;CSS para móviles&amp;rdquo;&amp;rdquo;
[9]: &lt;a href=&#34;http://www.csslab.cl/2006/05/23/diseno-a-oscuras/&#34;&gt;http://www.csslab.cl/2006/05/23/diseno-a-oscuras/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Diseño a oscuras&amp;rdquo;&amp;rdquo;
[10]: &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34;&gt;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Flotando en la incertidumbre&amp;rdquo;&amp;rdquo;
[11]: &lt;a href=&#34;http://www.csslab.cl/2006/08/25/el-porque-de-no-utilizar-tablas/&#34;&gt;http://www.csslab.cl/2006/08/25/el-porque-de-no-utilizar-tablas/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;El porqué de no utilizar tablas&amp;rdquo;&amp;rdquo;
[12]: &lt;a href=&#34;http://www.csslab.cl/2006/09/25/image-replacement-o-como-reemplazar-contenido-por-imagen/&#34;&gt;http://www.csslab.cl/2006/09/25/image-replacement-o-como-reemplazar-contenido-por-imagen/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;quot;&amp;rdquo;&amp;rdquo;
[13]: &lt;a href=&#34;http://www.csslab.cl/2006/09/01/lightbox-swf/&#34;&gt;http://www.csslab.cl/2006/09/01/lightbox-swf/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Lightbox + SWF&amp;rdquo;&amp;rdquo;
[14]: &lt;a href=&#34;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&#34;&gt;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Como Caja: el modelo&amp;rdquo;&amp;rdquo;
[15]: &lt;a href=&#34;http://www.csslab.cl/2007/04/23/estilos-de-botones-crossbrowser/&#34;&gt;http://www.csslab.cl/2007/04/23/estilos-de-botones-crossbrowser/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Estilos de botones crossbrowser&amp;rdquo;&amp;rdquo;
[16]: &lt;a href=&#34;http://www.csslab.cl/2007/05/11/absolutamente-si/&#34;&gt;http://www.csslab.cl/2007/05/11/absolutamente-si/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Absolutamente sí&amp;rdquo;&amp;rdquo;
[17]: &lt;a href=&#34;http://www.csslab.cl/2007/06/05/selectores-avanzados-de-atributos/&#34;&gt;http://www.csslab.cl/2007/06/05/selectores-avanzados-de-atributos/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Selectores avanzados de atributos&amp;rdquo;&amp;rdquo;
[18]: &lt;a href=&#34;http://www.csslab.cl/2007/09/10/textos_muy_largos_que_quiebran_nuestro_layout/&#34;&gt;http://www.csslab.cl/2007/09/10/textos_muy_largos_que_quiebran_nuestro_layout/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;textos_muy_largos_que_quiebran_nuestro_layout&amp;rdquo;&amp;rdquo;
[19]: &lt;a href=&#34;http://www.csslab.cl/2007/10/11/100-alto-finalmente-para-todos/&#34;&gt;http://www.csslab.cl/2007/10/11/100-alto-finalmente-para-todos/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;100% alto, finalmente para todos&amp;rdquo;&amp;rdquo;
[20]: &lt;a href=&#34;http://www.csslab.cl/2007/11/27/sobre-la-accesibilidad-y-sus-implicancias/&#34;&gt;http://www.csslab.cl/2007/11/27/sobre-la-accesibilidad-y-sus-implicancias/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Sobre la accesibilidad y sus implicancias&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 25</title>
      <link>https://csslab.cl/2008/02/18/lo-vi-y-me-gusto-25/</link>
      <pubDate>Mon, 18 Feb 2008 12:41:51 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/02/18/lo-vi-y-me-gusto-25/</guid>
      <description>#25 – 30 Enero 2008</description>
      <content>&lt;p&gt;#25 – 30 Enero 2008&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.arsnovadesign.com.ar/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/01/arsnova.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.sygnusdigital.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/01/sygnus.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Mootools: reconociendo el browser</title>
      <link>https://csslab.cl/2008/02/13/mootools-reconociendo-el-browser/</link>
      <pubDate>Thu, 14 Feb 2008 01:20:34 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/02/13/mootools-reconociendo-el-browser/</guid>
      <description>&lt;p&gt;La idea de un &lt;em&gt;framework&lt;/em&gt; es reordenar un lenguaje y entregarnos herramientas para que sea bastante más fácil nuestro desarrollo. Una de ellas, es el reconocimiento del &lt;em&gt;browser&lt;/em&gt; del usuario. En &lt;a href=&#34;http://www.2monos.net/&#34; title=&#34;Enlace externo a &amp;quot;2monos&amp;quot;&#34; target=&#34;_blank&#34;&gt;2monos&lt;/a&gt; quise hacer lo mejor de lo mejor, pero lamentablemente &lt;strong&gt;IE6&lt;/strong&gt; no me acompañó en este camino. En vez de desgastarme tratando de que por lo menos se viera algo decente, o funcione a medias…. preferí abolirlo de una vez por todas. Si entras a &lt;a href=&#34;http://www.2monos.net/&#34; title=&#34;Enlace externo a &amp;quot;2monos&amp;quot;&#34; target=&#34;_blank&#34;&gt;2monos.net&lt;/a&gt; utilizando &lt;strong&gt;IE6&lt;/strong&gt;, una ventana te indicará que mejor bajes &lt;strong&gt;Firefox&lt;/strong&gt;. Lamentablemente esta es una acción que por más que lo deseemos no se puede ejecutar en todos los sitios web en que trabajamos, pero en este caso como este sitio es mío, hago lo que quiero y decidí por discriminar un &lt;em&gt;browser&lt;/em&gt; que nunca debería haber sido una mayoría.&lt;/p&gt;</description>
      <content>&lt;p&gt;La idea de un &lt;em&gt;framework&lt;/em&gt; es reordenar un lenguaje y entregarnos herramientas para que sea bastante más fácil nuestro desarrollo. Una de ellas, es el reconocimiento del &lt;em&gt;browser&lt;/em&gt; del usuario. En &lt;a href=&#34;http://www.2monos.net/&#34; title=&#34;Enlace externo a &amp;quot;2monos&amp;quot;&#34; target=&#34;_blank&#34;&gt;2monos&lt;/a&gt; quise hacer lo mejor de lo mejor, pero lamentablemente &lt;strong&gt;IE6&lt;/strong&gt; no me acompañó en este camino. En vez de desgastarme tratando de que por lo menos se viera algo decente, o funcione a medias…. preferí abolirlo de una vez por todas. Si entras a &lt;a href=&#34;http://www.2monos.net/&#34; title=&#34;Enlace externo a &amp;quot;2monos&amp;quot;&#34; target=&#34;_blank&#34;&gt;2monos.net&lt;/a&gt; utilizando &lt;strong&gt;IE6&lt;/strong&gt;, una ventana te indicará que mejor bajes &lt;strong&gt;Firefox&lt;/strong&gt;. Lamentablemente esta es una acción que por más que lo deseemos no se puede ejecutar en todos los sitios web en que trabajamos, pero en este caso como este sitio es mío, hago lo que quiero y decidí por discriminar un &lt;em&gt;browser&lt;/em&gt; que nunca debería haber sido una mayoría.&lt;/p&gt;
&lt;p&gt;Para esto, con &lt;strong&gt;Mootools&lt;/strong&gt; es extremadamente fácil. Primero, creamos el evento inicial que gatillará la acción cuando los elementos del &lt;strong&gt;HTML&lt;/strong&gt; (&lt;strong&gt;DOM&lt;/strong&gt;) estén cargados. Luego, una codicional (&lt;strong&gt;if/else&lt;/strong&gt;) que me dirá si el &lt;em&gt;browser&lt;/em&gt; es &lt;strong&gt;IE6&lt;/strong&gt;, ejecuta tal acción:&lt;/p&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;window.addEvent(&#39;domready&#39;, function(){&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(window.ie6){&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;commentjs&#34;&gt;// haz algo aqu&amp;iacute;&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;A seguir, una lista de las posibilidades de browsers a ser detectables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;window&lt;/strong&gt;: cualquier browser.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;window.ie&lt;/strong&gt;: cualquier Internet Explorer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;window.ie6&lt;/strong&gt;: sólo IE6.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;window.ie7&lt;/strong&gt;: sólo IE7.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;window.gecko&lt;/strong&gt;: Mozilla Firefox u otro browser que use gecko (Netscape 6+, Flock, Camino, Galeon, Epiphany).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;window.webkit&lt;/strong&gt;: Apple Safari u otro que use Webkit (iCab, Konqueror, Omniweb, Shiira, Sunrise).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;window.webkit419&lt;/strong&gt;: Apple Safari 2.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;window.webkit420&lt;/strong&gt;: Apple Safari 3.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;window.opera&lt;/strong&gt;: sólo Opera.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;link&#34;&gt;Link&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://docs.mootools.net/Core/Core.js#window&#34; title=&#34;Enlace externo a &amp;quot;Mootools Docs: Core&amp;quot;&#34; target=&#34;_blank&#34;&gt;Mootools Docs: Core&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/detect/ie6.html&#34;&gt;http://www.csslab.cl/ejemplos/detect/ie6.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab para &amp;ldquo;ver ejemplo&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Entrevistas de trabajo: Google</title>
      <link>https://csslab.cl/2008/02/06/entrevistas-de-trabajo-google/</link>
      <pubDate>Wed, 06 Feb 2008 21:00:01 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/02/06/entrevistas-de-trabajo-google/</guid>
      <description>Cada día me asombro con lo pequeño que se ve este mundo, cada vez son menores las fronteras digitales. Y cada día es más fácil poder pensar en mejores espectativas laborales, quizás fuera de nuestro país de residencia. El mercado y otros factores nos hacen pensar emigrar, y un mundo globalizado lo permite con mucha facilidad. Depende de cada uno tener el coraje de tomar la iniciativa.
Hace unos meses tuve la oportunidad de tener una entrevista de trabajo para Google, para un puesto en Brasil.</description>
      <content>&lt;p&gt;Cada día me asombro con lo pequeño que se ve este mundo, cada vez son menores las fronteras digitales. Y cada día es más fácil poder pensar en mejores espectativas laborales, quizás fuera de nuestro país de residencia. El mercado y otros factores nos hacen pensar emigrar, y un mundo globalizado lo permite con mucha facilidad. Depende de cada uno tener el coraje de tomar la iniciativa.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2008/01/googlebillboard.jpg&#34; alt=&#34;Gigantograf&amp;iacute;a Empleo Google&#34; width=&#34;250&#34; height=&#34;160&#34; align=&#34;right&#34; style=&#34;padding: 10px;&#34; /&gt; 
&lt;p&gt;Hace unos meses tuve la oportunidad de tener una entrevista de trabajo para &lt;strong&gt;Google&lt;/strong&gt;, para un puesto en Brasil. Con gigantes tecnológicos instalándose en latinoamérica, ya no es imposible pensar en que uno puede tener la oportunidad, o cumplir el sueño de pertenecer a sus filas. Con oficinas en Argentina, Brasil, México, España y todo el mundo, no es insano pensar en que uno puede tener una oportunidad allí. &lt;strong&gt;Yahoo!&lt;/strong&gt; está en Argentina, Brasil y Chile. Y para qué decir de &lt;strong&gt;Apple&lt;/strong&gt;, que está en México, o incluso trabajar en Cupertino, USA. Estas empresas no escatiman recursos, están siempre buscando a los mejores, donde sea que éstos se encuentren.&lt;/p&gt;
&lt;p&gt;Con un correo desde &lt;em&gt;Human Resources&lt;/em&gt; me confirman que necesitan hacerme una entrevista telefónica, que mi entrevistador sería &lt;em&gt;John Fulano de Tal Smith&lt;/em&gt; (diseñador) desde &lt;em&gt;Mountain View&lt;/em&gt; (sus oficinas centrales), y que necesitaban una fecha, hora &lt;em&gt;GMT&lt;/em&gt; y número de teléfono desde donde me llamarían. Además, que en promedio esa entrevista duraría 45 mins. Para tan magno evento, decidí prepararme, y qué mejor que su propio buscador para encontrar algunos consejos. Encontré muchos sitios que daban &lt;em&gt;tips&lt;/em&gt; de quienes también habían pasado por este tipo de entrevistas, la mayoría de ellos informáticos o matemáticos donde suelen hacerles preguntas capciosas. Recopilo algunos consejos que leí, y completo algunos según mi experiencia:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Debes tener un buen inglés (intermedio-avanzado) y manejar un buen lenguaje técnico (según lo que haces, sea diseño, desarrollo o programación en duro). Practícalo si puedes, para no tartamudear o pensar mucho las respuestas.&lt;/li&gt;
&lt;li&gt;Asegúrate que el teléfono que entregues está bueno, y que el aparato tiene buen sonido. Ojalá que no sea inalámbrico para que no se te acabe la batería en medio de la entrevista.&lt;/li&gt;
&lt;li&gt;Siéntate frente a un computador y ponte cómodo. Deberás mostrar algo de tu trabajo (gráfico) y en mi caso tuve que explicar algunos criterios de usabilidad e interacción. Una buena conexión a internet es altamente recomendable (cable).&lt;/li&gt;
&lt;li&gt;Un vaso con agua nunca está de más, hablarás mucho.&lt;/li&gt;
&lt;li&gt;Estudia bien la descripción del puesto al cual postulaste. Los alcances y cuál sería tu aporte a éste. En todo caso el entrevistador te lo volverá a describir al inicio.&lt;/li&gt;
&lt;li&gt;Serás probado con algún test en sitios de &lt;strong&gt;Google&lt;/strong&gt;, por ejemplo, mejorías o sugerencias (dependiendo de puesto al que postulaste). Aquí sólo vale tu buen criterio.&lt;/li&gt;
&lt;li&gt;Trata de estar tranquilo y ser seguro con tus respuestas. Esto vale para cualquier entrevista de trabajo.&lt;/li&gt;
&lt;li&gt;Ten preguntas o dudas preparadas, respecto al puesto o a la empresa misma.&lt;/li&gt;
&lt;li&gt;Finalmente, inventa un buen argumento de porqué querrías trabajar en &lt;strong&gt;Google&lt;/strong&gt;, o en la empresa que sea.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La entrevista telefónica es el primer paso. Si te fue bien y le agradaste al entrevistador, la segunda etapa es la entrevista en persona, donde se te hará llegar los medios para poder asistir si estás lejos. Como mencioné, no escatiman recursos en traerte si les vales la pena. Desde aquí no serán más de 10 candidatos con que competir. Infelizmente no llegué a este punto, pero quizás en una otra oportunidad.&lt;/p&gt;
&lt;p&gt;¿Cuál era mi idea? Primero, entregar consejos, en español, por si alguien tiene la necesidad u oportunidad. Segundo, entregarles confianza en que se crean capaces de trabajar en empresas grandes, globales, mundiales, donde sus trabajos se verán reflejados en millones, pero millones de usuarios. No se pongan límites en su trabajo, dejen que su esfuerzo les muestre hasta dónde pueden llegar.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.google.com/support/jobs/bin/static.py?page=about.html&amp;about=locations&#34; title=&#34;Enlace externo a &amp;quot;Google Jobs&amp;quot;&#34; target=&#34;_blank&#34;&gt;Google Jobs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://careers.yahoo.com/&#34; title=&#34;Enlace externo a &amp;quot;Yahoo! Careers&amp;quot;&#34; target=&#34;_blank&#34;&gt;Yahoo! Careers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.apple.com/jobs/us/index.html&#34; title=&#34;Enlace externo a &amp;quot;Apple - Job Opportunities&amp;quot;&#34; target=&#34;_blank&#34;&gt;Apple – Job Opportunities&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </item>
    
    <item>
      <title>Ventana modal sólo con CSS</title>
      <link>https://csslab.cl/2008/01/30/ventana-modal-solo-con-css/</link>
      <pubDate>Wed, 30 Jan 2008 13:05:01 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/01/30/ventana-modal-solo-con-css/</guid>
      <description>&lt;p&gt;A raíz de mi &lt;a href=&#34;http://www.2monos.net/&#34; title=&#34;Enlace externo a &amp;quot;2monos&amp;quot;&#34; target=&#34;_blank&#34;&gt;proyecto musical&lt;/a&gt; más reciente lanzado, incluyendo el sitio web donde me divertí mucho utilizando &lt;strong&gt;Mootools&lt;/strong&gt; para sus diferentes funcionalidades, iré ampliando los artículos relacionados con este &lt;em&gt;framework de JS&lt;/em&gt; explicando los puntos más importantes de su desarrollo. Pero para comenzar, mostraré un modo de crear &lt;em&gt;ventanas modales&lt;/em&gt; (&lt;strong&gt;lightbox&lt;/strong&gt;, &lt;strong&gt;thickbox&lt;/strong&gt;, &lt;strong&gt;greybox&lt;/strong&gt;, &lt;strong&gt;modalbox&lt;/strong&gt;… son todas ventanas modales) sólo con &lt;strong&gt;CSS&lt;/strong&gt;. Mientras puedo, ahorro en plugins para no recargar los sitios, y en el caso de las ventanas emergentes no-obstructivas utilicé un elegante método donde a través de simple &lt;strong&gt;CSS&lt;/strong&gt; se abren ventanas con mensajes varios. Para gatillarla, utilicé, claro, &lt;strong&gt;Mootools&lt;/strong&gt;. Pero donde &lt;a href=&#34;http://www.emanueleferonato.com/2007/08/22/create-a-lightbox-effect-only-with-css-no-javascript-needed/&#34; title=&#34;Enlace externo a &amp;quot;Create a Lightbox effect only with CSS - no javascript needed&amp;quot;&#34; target=&#34;_blank&#34;&gt;tomé prestado la idea&lt;/a&gt;, utilizaban &lt;strong&gt;Javascript&lt;/strong&gt; puro para ello. Mostraré ambos métodos, a gusto y necesidad del usuario cuál decidir ocupar.&lt;/p&gt;</description>
      <content>&lt;p&gt;A raíz de mi &lt;a href=&#34;http://www.2monos.net/&#34; title=&#34;Enlace externo a &amp;quot;2monos&amp;quot;&#34; target=&#34;_blank&#34;&gt;proyecto musical&lt;/a&gt; más reciente lanzado, incluyendo el sitio web donde me divertí mucho utilizando &lt;strong&gt;Mootools&lt;/strong&gt; para sus diferentes funcionalidades, iré ampliando los artículos relacionados con este &lt;em&gt;framework de JS&lt;/em&gt; explicando los puntos más importantes de su desarrollo. Pero para comenzar, mostraré un modo de crear &lt;em&gt;ventanas modales&lt;/em&gt; (&lt;strong&gt;lightbox&lt;/strong&gt;, &lt;strong&gt;thickbox&lt;/strong&gt;, &lt;strong&gt;greybox&lt;/strong&gt;, &lt;strong&gt;modalbox&lt;/strong&gt;… son todas ventanas modales) sólo con &lt;strong&gt;CSS&lt;/strong&gt;. Mientras puedo, ahorro en plugins para no recargar los sitios, y en el caso de las ventanas emergentes no-obstructivas utilicé un elegante método donde a través de simple &lt;strong&gt;CSS&lt;/strong&gt; se abren ventanas con mensajes varios. Para gatillarla, utilicé, claro, &lt;strong&gt;Mootools&lt;/strong&gt;. Pero donde &lt;a href=&#34;http://www.emanueleferonato.com/2007/08/22/create-a-lightbox-effect-only-with-css-no-javascript-needed/&#34; title=&#34;Enlace externo a &amp;quot;Create a Lightbox effect only with CSS - no javascript needed&amp;quot;&#34; target=&#34;_blank&#34;&gt;tomé prestado la idea&lt;/a&gt;, utilizaban &lt;strong&gt;Javascript&lt;/strong&gt; puro para ello. Mostraré ambos métodos, a gusto y necesidad del usuario cuál decidir ocupar.&lt;/p&gt;
&lt;p&gt;Comenzamos con el marcado &lt;strong&gt;HTML&lt;/strong&gt;. Primero, un &lt;strong&gt;&lt;div class=&#34;overlay&#34;&gt;&lt;/div&gt;&lt;/strong&gt; el que será el fondo semi-transparente que cubrirá la página entera, y albergará la ventana del mensaje. Luego, un &lt;strong&gt;&lt;div class=&#34;modal&#34;&gt;&lt;/strong&gt; que contendrá el mensaje o contenido de nuestra ventana modal. Estas 2 &lt;em&gt;classes&lt;/em&gt;, &lt;strong&gt;.overlay&lt;/strong&gt; y &lt;strong&gt;.modal&lt;/strong&gt;, estarán escondidas desde un principio (&lt;strong&gt;display: none;&lt;/strong&gt;) y serán gatilladas desde algún link (&lt;strong&gt;display: block;&lt;/strong&gt;). Después de ellas, el contenido del resto del sitio web.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;fade&#34; class=&#34;overlay&#34;&amp;gt;&amp;lt;/div&amp;gt;&gt;
  &amp;lt;div id=&#34;light&#34; class=&#34;modal&#34;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Lorem ipsum dolor sit.....&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;p&amp;gt;Texto del sitio web. Con un &amp;lt;a href=&#34;&#34;&amp;gt;link&amp;lt;/a&amp;gt; abriremos la ventana.&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nada de eso nos sirve sin un correcto uso de &lt;strong&gt;CSS&lt;/strong&gt;. Para la base semi-transparente le damos opacidad a través del [método cross-browser][1]:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;.overlay{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: none;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;top: 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;left: 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 100%;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 100%;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: #000;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;z-index:1001;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;opacity:.75;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-moz-opacity: 0.75;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filter: alpha(opacity=75);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y la ventana modal del contenido mismo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;.modal {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: none;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;top: 25%;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;left: 25%;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 50%;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 50%;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 16px;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: #fff;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: #333;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;z-index:1002;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;overflow: auto;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo sólo con CSS][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Ahora, lo echamos a andar. A ambos &lt;strong&gt;div&lt;/strong&gt;‘s debemos darle &lt;strong&gt;id&lt;/strong&gt;‘s únicos, los que nos ayudarán a identificar los elementos que serán mostrados vía &lt;strong&gt;Javascript&lt;/strong&gt;. La orden para ejecutarlos es en &lt;strong&gt;Javascript puro:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;document.getElementById(&#39;light&#39;).style.display=&#39;block&#39;;
document.getElementById(&#39;fade&#39;).style.display=&#39;block&#39;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y a través de &lt;strong&gt;Mootools&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;$(&#39;light&#39;).setStyle(&#39;display&#39;, &#39;block&#39;);
$(&#39;fade&#39;).setStyle(&#39;display&#39;, &#39;block&#39;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lo que dice ahí, en castellano universal es: toma los elementos con el &lt;strong&gt;id&lt;/strong&gt; &lt;strong&gt;light&lt;/strong&gt; y &lt;strong&gt;fade&lt;/strong&gt;, y agrégales estilo &lt;strong&gt;display: block;&lt;/strong&gt; a cada uno. O sea, los hará aparecer desde &lt;strong&gt;display: none&lt;/strong&gt; (oculto) a &lt;strong&gt;display: block;&lt;/strong&gt; (visible).&lt;/p&gt;
&lt;p&gt;[Ver ejemplo funcionando con JS][3]{.verejemplo}&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.emanueleferonato.com/2007/08/22/create-a-lightbox-effect-only-with-css-no-javascript-needed/&#34; title=&#34;Enlace externo a &amp;quot;Create a Lightbox effect only with CSS - no javascript needed&amp;quot;&#34; target=&#34;_blank&#34;&gt;Create a Lightbox effect only with CSS – no javascript needed&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/01/24/transparencias-a-prueba-de-browsers-2/&#34;&gt;http://www.csslab.cl/2007/01/24/transparencias-a-prueba-de-browsers-2/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Transparencias a prueba de browsers&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/modal/solo_css.html&#34;&gt;http://www.csslab.cl/ejemplos/modal/solo_css.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo Modal sólo con CSS&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/modal/modal.html&#34;&gt;http://www.csslab.cl/ejemplos/modal/modal.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo Modal con JS&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Review 1: Origo CSS</title>
      <link>https://csslab.cl/2008/01/28/review-1-origo-css/</link>
      <pubDate>Mon, 28 Jan 2008 15:02:56 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/01/28/review-1-origo-css/</guid>
      <description>&lt;p&gt;Siempre me ha gustado tener el control sobre el código que genero; por lo mismo me gusta escribirlo a mano y no dependo de editores parafernálicos, u otros distractores. Durante el año pasado, ha surgido el concepto de &lt;em&gt;CSS Framework&lt;/em&gt;, lo cual considero imposible cuando se trata de un lenguaje que no es programable (&lt;strong&gt;CSS&lt;/strong&gt; es sólo marcado de estilos así como &lt;strong&gt;HTML&lt;/strong&gt; es marcado de estructura). Quizás han visto a &lt;a href=&#34;http://code.google.com/p/blueprintcss/&#34; title=&#34;Enlace externo a &amp;quot;blueprintcss&amp;quot;&#34; target=&#34;_blank&#34;&gt;Blueprint&lt;/a&gt; o &lt;a href=&#34;http://developer.yahoo.com/yui/grids/&#34; title=&#34;Enlace externo a &amp;quot;YUI Grids CSS&amp;quot;&#34; target=&#34;_blank&#34;&gt;Yahoo! UI&lt;/a&gt;. Para mí, sólo han servido para poder compactar mi propio [CSS Reseter][1], nada más, ya que prefiero mantener mis columnas y estructuras lo más personalizadas posibles.&lt;/p&gt;</description>
      <content>&lt;p&gt;Siempre me ha gustado tener el control sobre el código que genero; por lo mismo me gusta escribirlo a mano y no dependo de editores parafernálicos, u otros distractores. Durante el año pasado, ha surgido el concepto de &lt;em&gt;CSS Framework&lt;/em&gt;, lo cual considero imposible cuando se trata de un lenguaje que no es programable (&lt;strong&gt;CSS&lt;/strong&gt; es sólo marcado de estilos así como &lt;strong&gt;HTML&lt;/strong&gt; es marcado de estructura). Quizás han visto a &lt;a href=&#34;http://code.google.com/p/blueprintcss/&#34; title=&#34;Enlace externo a &amp;quot;blueprintcss&amp;quot;&#34; target=&#34;_blank&#34;&gt;Blueprint&lt;/a&gt; o &lt;a href=&#34;http://developer.yahoo.com/yui/grids/&#34; title=&#34;Enlace externo a &amp;quot;YUI Grids CSS&amp;quot;&#34; target=&#34;_blank&#34;&gt;Yahoo! UI&lt;/a&gt;. Para mí, sólo han servido para poder compactar mi propio [CSS Reseter][1], nada más, ya que prefiero mantener mis columnas y estructuras lo más personalizadas posibles.&lt;/p&gt;
&lt;p&gt;Hasta que me topé con &lt;a href=&#34;http://quiltro.cl/2007/11/11/origo-css/&#34; title=&#34;Enlace externo a &amp;quot;Origo CSS&amp;quot;&#34; target=&#34;_blank&#34;&gt;Origo CSS&lt;/a&gt;. Según su propio autor: &amp;ldquo;&lt;cite&gt;Origo CSS es una base estructural para el diseño de interfaces de usuario web desarrollada en CSS y HTML, que permite definir los cimientos de la organización y distribución de unidades de información.&lt;/cite&gt;&amp;rdquo; En palabras simples: &lt;strong&gt;Origo CSS&lt;/strong&gt; son varias hojas de estilos con propiedades definidas, las que te permiten usarlas para diagramar estructuras de manera fácil para tu sitio web, a través de filas y columnas ya declaradas. Con un poco de tiempo y entrenamiento se puede llegar a acostumbrar a su uso.&lt;/p&gt;
&lt;p&gt;Su aporte es un &lt;a href=&#34;http://www.planseldon.com/blog/hasta-siempre-clearboth/&#34; title=&#34;Enlace externo a &amp;quot;Hasta siempre, clear:both&amp;quot;&#34; target=&#34;_blank&#34;&gt;nuevo método de clearfix&lt;/a&gt;, donde creativamente utiliza un &lt;strong&gt;overflow: hidden;&lt;/strong&gt; para que el contenedor soporte sus elementos flotantes. Un interesante mecanismo que valió la pena el estudio de este proyecto.&lt;/p&gt;
&lt;h4 id=&#34;pros&#34;&gt;Pros:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;fácil uso.&lt;/li&gt;
&lt;li&gt;relativamente liviano para proyectos grandes.&lt;/li&gt;
&lt;li&gt;bien documentado y en castellano.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;contras&#34;&gt;Contras:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;el nuevo método de &lt;em&gt;clearfix&lt;/em&gt; no me convenció del todo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;link&#34;&gt;Link&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;http://quiltro.cl/2007/11/11/origo-css/&#34; title=&#34;Enlace externo a &amp;quot;Origo CSS&amp;quot;&#34; target=&#34;_blank&#34;&gt;Origo CSS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/10/18/css-reseter/&#34;&gt;http://www.csslab.cl/2007/10/18/css-reseter/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;CSS Reseter&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Mootools: introducci&amp;oacute;n</title>
      <link>https://csslab.cl/2008/01/21/mootools-introduccin/</link>
      <pubDate>Mon, 21 Jan 2008 03:52:17 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/01/21/mootools-introduccin/</guid>
      <description>A pedido popular, comenzaré a iniciar a quienes visitan este sitio en algunos de los frameworks Javascript más populares, o por lo menos, que utilizo con más frecuencia. El primero de ellos sería Mootools, con el que más he estado jugando últimamente (y prometo mostrar resultados).
Pero antes, me interesa comenzar con definir framework. Según mi instinto (y ayuda de Wikipedia), los frameworks Javascript (pueden ser de otros tipos) son una arquitectura que modela las relaciones del lenguaje Javascript.</description>
      <content>&lt;p&gt;A pedido popular, comenzaré a iniciar a quienes visitan este sitio en algunos de los &lt;em&gt;frameworks Javascript&lt;/em&gt; más populares, o por lo menos, que utilizo con más frecuencia. El primero de ellos sería &lt;a href=&#34;http://mootools.net/&#34; title=&#34;Enlace externo a &amp;quot;Mootools Javascript Framework&amp;quot;&#34; target=&#34;_blank&#34;&gt;Mootools&lt;/a&gt;, con el que más he estado jugando últimamente (y prometo mostrar resultados).&lt;/p&gt;
&lt;p&gt;Pero antes, me interesa comenzar con definir &lt;strong&gt;framework&lt;/strong&gt;. Según mi instinto (y ayuda de &lt;a href=&#34;http://es.wikipedia.org/wiki/Framework&#34; title=&#34;Enlace externo a &amp;quot;Framework, Wikipedia&amp;quot;&#34; target=&#34;_blank&#34;&gt;Wikipedia&lt;/a&gt;), los &lt;em&gt;frameworks Javascript&lt;/em&gt; (pueden ser de otros tipos) son una arquitectura que modela las relaciones del lenguaje &lt;em&gt;Javascript&lt;/em&gt;. Provee una estructura y principalmente una metodología de trabajo que ayuda a ordenar una sintaxis de trabajo. Son diseñados principalmente para facilitar el desarrollo de sitios y aplicaciones web. Cada framework tiene su orden y estructuras definidos, y no pueden ser mezclados, ya que las reglas son diferentes entre ellos (imagínense sino jugar rugby con reglas de básquetbol… ¡un lío!).&lt;/p&gt;
&lt;p&gt;En este artículo, crearemos unos simples &lt;em&gt;Eventos&lt;/em&gt; donde manipularemos &lt;em&gt;Elementos&lt;/em&gt; vía &lt;em&gt;Javascript&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;cargando&#34;&gt;Cargando&lt;/h3&gt;
&lt;p&gt;Para comenzar a trabajar con &lt;strong&gt;Mootools&lt;/strong&gt; debemos primero llamar la librería, la que &lt;a href=&#34;http://mootools.net/download&#34; title=&#34;Enlace externo a &amp;quot;Download en Mootools.net&amp;quot;&#34; target=&#34;_blank&#34;&gt;puede ser descargada desde su sitio web&lt;/a&gt; ofreciéndonos mucha flexibilidad para bajar una versión optimizada a nuestros requerimientos. Por este detalle, &lt;strong&gt;Mootools&lt;/strong&gt; puede intimidar, ya que quizás algunos &lt;strong&gt;Eventos&lt;/strong&gt; o &lt;strong&gt;Efectos&lt;/strong&gt; no funcionen a la primera (y frustren a quienes esperan prontos resultados), debido a que no han bajado el material necesario para ello. Así, &lt;strong&gt;Mootools&lt;/strong&gt; puede ser considerado como un &lt;em&gt;framework&lt;/em&gt; avanzado, pero prefiero verlo como versátil y liviano. Basta algo de estudio para entender bien y utilizar lo justo y necesario para nuestras necesidades. Resumiendo, para cagarlo se utiliza:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;script type=&#34;text/javascript&#34; src=&#34;ruta_a/mootools.js&#34;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Luego, comenzaremos a escribir lo que queremos realizar vía &lt;em&gt;Javascript&lt;/em&gt;. Para comenzar, debemos crear un &lt;strong&gt;Evento&lt;/strong&gt; que nos diga cuando comenzar a realizar lo que queremos.&lt;/p&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;window.addEvent(&#39;domready&#39;, function() {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// nuestro c&amp;oacute;digo&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Mootools&lt;/strong&gt; nos ofrece más de una opción para comenzar a escribir código:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;domready:&lt;/strong&gt; se ejecuta cuando todos los elementos de la página están listos, pero no espera por las imágenes. Gran aporte de &lt;em&gt;Mootools&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;load:&lt;/strong&gt; se ejecuta cuando toda la página (inclusive imágenes) se carga, lo que se hacía usualmente con &lt;em&gt;Javascript&lt;/em&gt; puro. En algunos casos se demora bastante más.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;escribiendo&#34;&gt;Escribiendo&lt;/h3&gt;
&lt;p&gt;Bien, estamos listos para programar algo con ayuda de &lt;em&gt;Mootools&lt;/em&gt;. Como mencioné, crearemos un &lt;em&gt;Evento&lt;/em&gt; donde manipularemos aspectos de alguna etiqueta (Elemento). Primero, lo que queremos realizar:&lt;/p&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;$(&#39;enlace&#39;).addClass(&#39;grandote&#39;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora diseccionaremos esto: al elemento que tenga un &lt;strong&gt;id=&amp;ldquo;enlace&amp;rdquo;&lt;/strong&gt;, agrega una &lt;strong&gt;class&lt;/strong&gt; que se llame &lt;strong&gt;.grandote&lt;/strong&gt; (que aumentará el tamaño de la tipografía del enlace).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;$&lt;/strong&gt; todos los elementos&lt;br&gt;
&lt;strong&gt;(‘enlace’)&lt;/strong&gt; que tengan el id=&amp;ldquo;enlace&amp;rdquo;&lt;br&gt;
&lt;strong&gt;.addClass&lt;/strong&gt; agrega la class&lt;br&gt;
&lt;strong&gt;(‘grandote’)&lt;/strong&gt; .grandote&lt;/p&gt;
&lt;p&gt;Así de simple. Claro que tienen que tener definida la &lt;strong&gt;class .grandote&lt;/strong&gt; en su hoja de estilos para que vean el resultado.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 1][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Ojalá puedan ver el source desde &lt;a href=&#34;http://www.getfirefox.com/&#34; title=&#34;Enlace externo a &amp;quot;Download Firefox&amp;quot;&#34; target=&#34;_blank&#34;&gt;Firefox&lt;/a&gt; con el plugin &lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/60&#34; title=&#34;Enlace externo a &amp;#038;quotDownload Web Developer Expension;&amp;quot;&#34; target=&#34;_blank&#34;&gt;Web Developer&lt;/a&gt; o &lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/1843&#34; title=&#34;Enlace externo a &amp;quot;Download Firebug Expension&amp;quot;&#34; target=&#34;_blank&#34;&gt;Firebug&lt;/a&gt;, y podrán apreciar la diferencia entre el código fuente y el código generado.&lt;/p&gt;
&lt;p&gt;Ahora, si queremos alcanzar más de un &lt;em&gt;id&lt;/em&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-javascript&#34;&gt;&lt;code&gt;$$([&#39;nombre:id&#39;, &#39;otro_id&#39;]).addClass(&#39;grandote&#39;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 2][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Notaron como cambió la invocación al Elemento? Cuando es más de uno, se usa &lt;strong&gt;$$&lt;/strong&gt; y se agrupan entre corchetes &lt;strong&gt;[]&lt;/strong&gt;. Pequeños detalles que diferencian los &lt;em&gt;Frameworks&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Se pueden hacer muchas cosas más manipulando &lt;em&gt;Elementos&lt;/em&gt; o &lt;em&gt;Selectores&lt;/em&gt; con &lt;em&gt;Mootools&lt;/em&gt;, como por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;$(‘elemento’).remove();&lt;/strong&gt; remueve el elemento, literalmente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$(‘elemento’).removeClass();&lt;/strong&gt; remieve la class que tenga ese elemento.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$(‘elemento’).setStyle();&lt;/strong&gt; agrega estilos CSS que definamos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$(‘elemento’).setOpacity(0.4);&lt;/strong&gt; le da opacidad de 40%;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$(‘elemento’).setText(‘Lorem Ipsum’);&lt;/strong&gt; le inyecta Lorem Ipsum dentro de un elemento, por ejemplo &lt;p&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$(‘elemento’).empty();&lt;/strong&gt; vacía un elemento.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Siendo fiel con el título de este artículo, esta fue una introducción. La documentación de &lt;em&gt;Mootools&lt;/em&gt; es completa pero lamentablemente pobre de aplicaciones reales. En el &lt;a href=&#34;http://dev.mootools.net/&#34; title=&#34;Enlace externo a &amp;#038;quotMootools Code;&amp;quot;&#34; target=&#34;_blank&#34;&gt;foro&lt;/a&gt; pueden encontrar más variedad, pero aún no es bastante satisfactorio.&lt;/p&gt;
&lt;p&gt;Próximamente, artículo dedicado a &lt;strong&gt;JQuery&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/mootools/ejemplo1.html&#34;&gt;http://www.csslab.cl/ejemplos/mootools/ejemplo1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Mootools Ejemplo 1&amp;quot;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/mootools/ejemplo2.html&#34;&gt;http://www.csslab.cl/ejemplos/mootools/ejemplo2.html&lt;/a&gt; &amp;ldquo;Enlace para ver &amp;ldquo;Ejemplo 1&amp;rdquo; en CSSLab&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Medidas en CSS</title>
      <link>https://csslab.cl/2008/01/16/medidas-en-css/</link>
      <pubDate>Wed, 16 Jan 2008 13:40:33 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/01/16/medidas-en-css/</guid>
      <description>&lt;p&gt;Varias son las unidades de medidas que se pueden utilizar en &lt;strong&gt;CSS&lt;/strong&gt; para definir tamaños a elementos y texto. Durante años para tipografías utilizo pixeles, ya que me parecía tener más control en cuanto a cómo lo despliegan los &lt;strong&gt;browsers&lt;/strong&gt; (salvo &lt;strong&gt;IE6&lt;/strong&gt; que siempre es diferente del resto). Pero últimamente le he tomado el gusto a &lt;strong&gt;em&lt;/strong&gt;, y he podido controlarlo.&lt;/p&gt;</description>
      <content>&lt;p&gt;Varias son las unidades de medidas que se pueden utilizar en &lt;strong&gt;CSS&lt;/strong&gt; para definir tamaños a elementos y texto. Durante años para tipografías utilizo pixeles, ya que me parecía tener más control en cuanto a cómo lo despliegan los &lt;strong&gt;browsers&lt;/strong&gt; (salvo &lt;strong&gt;IE6&lt;/strong&gt; que siempre es diferente del resto). Pero últimamente le he tomado el gusto a &lt;strong&gt;em&lt;/strong&gt;, y he podido controlarlo.&lt;/p&gt;
&lt;p&gt;A nuestra disposición, la &lt;strong&gt;W3C&lt;/strong&gt; puso las siguientes unidades de medidas:&lt;/p&gt;
&lt;h3 id=&#34;absolutas&#34;&gt;Absolutas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;in (pulgadas)&lt;/li&gt;
&lt;li&gt;cm (centímetros)&lt;/li&gt;
&lt;li&gt;mm (milímetros)&lt;/li&gt;
&lt;li&gt;pt (puntos)&lt;/li&gt;
&lt;li&gt;pc (picas)&lt;/li&gt;
&lt;li&gt;px (pixeles)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las &lt;strong&gt;unidades absolutas&lt;/strong&gt; permiten un contro exacto de la apariencia de la página, siempre y cuando se visualice en el entorno para la cual fue diseñada. A modo de ejemplo, al utilizar &lt;strong&gt;px&lt;/strong&gt; se visualizará diferente en cada resolución de pantalla y la plataforma del usuario que está desplegando ese contenido. Peor si utilizamos &lt;strong&gt;pt&lt;/strong&gt;, ya que depende del tamaño del punto de la resolución de la pantalla.&lt;/p&gt;
&lt;h3 id=&#34;relativas&#34;&gt;Relativas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;em&lt;/li&gt;
&lt;li&gt;ex&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las &lt;strong&gt;unidades relativas&lt;/strong&gt; dependen de la altura del elemento en el que se usa, aunque en la práctica, es el tamaño de texto definido en las preferencias del browser. Con esto, quien está definiendo estilos mantiene un control relativo ya que depende directamente del tamaño de fuente por defecto del usuario (1em), y a partir de eso, cuanto más grande (1.2em por ej) o menor (0.7em) se visualizará esa letra. Además, permiten su uso en cualquier propiedad de medida (&lt;strong&gt;margin&lt;/strong&gt;, &lt;strong&gt;padding&lt;/strong&gt;) lo que finalmente muestra un diseño proporcionado a la configuración del usuario (por ejemplo, proporcionado entre una pantalla &lt;strong&gt;widescreen&lt;/strong&gt; de 17&amp;quot; y un &lt;strong&gt;iPhone&lt;/strong&gt;).&lt;/p&gt;
&lt;h3 id=&#34;porcentaje&#34;&gt;Porcentaje&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;%&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No recomendado para tipografías, ya que su control no es fácilmente determinado por quien construye los estilos ya que necesita de un elemento de referencia (100%). Sólo recomiendo su uso en cajas de layout, determinados por el ancho de la resolución del usuario.&lt;/p&gt;
&lt;h4 id=&#34;tabla-de-equivalencias&#34;&gt;Tabla de equivalencias&lt;/h4&gt;
&lt;table summary=&#34;Equivalencias en tama&amp;ntilde;os tipogr&amp;aacute;ficos con CSS&#34; style=&#34;width: 50%; margin: 10px auto;&#34;&gt;
  &lt;tr&gt;
    &lt;th scope=&#34;col&#34; style=&#34;width: 25%&#34;&gt;
      Puntos
    &lt;/th&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;th scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 25%&amp;quot;&amp;gt;
  Pixeles
&amp;lt;/th&amp;gt;

&amp;lt;th scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 25%&amp;quot;&amp;gt;
  Em
&amp;lt;/th&amp;gt;

&amp;lt;th scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 25%&amp;quot;&amp;gt;
  %
&amp;lt;/th&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      6pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  8px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  0.5em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  50%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      7pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  9px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  0.55em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  55%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      7.5pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  10px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  0.625em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  62.5%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      8pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  11px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  0.7em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  70%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      9pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  12px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  0.75em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  75%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      10pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  13px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  0.8em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  80%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      10.5pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  14px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  0.875em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  87.5%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      11pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  15px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  0.95em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  95%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      12pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  16px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  1em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  100%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      13pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  17px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  1.05em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  105%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      13.5pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  18px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  1.125em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  112.5%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      14pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  19px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  1.2em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  120%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      14.5pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  20px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  1.25em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  125%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      15pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  21px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  1.3em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  130%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      16pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  22px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  1.4em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  140%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      17pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  23px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  1.45em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  145%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      18pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  24px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  1.5em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  150%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      20pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  26px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  1.6em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  160%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      22pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  29px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  1.8em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  180%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      24pt
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  32px
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  2em
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  200%
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
&lt;/table&gt;</content>
    </item>
    
    <item>
      <title>Siendo espec&amp;iacute;fico</title>
      <link>https://csslab.cl/2008/01/09/siendo-especfico/</link>
      <pubDate>Wed, 09 Jan 2008 18:13:02 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/01/09/siendo-especfico/</guid>
      <description>&lt;p&gt;Este tema debe ser uno de los artículos griales de &lt;strong&gt;CSSLab&lt;/strong&gt;, y podría aportar en la solución de más de algún problema con el maqueteado &lt;strong&gt;CSS&lt;/strong&gt;. La &lt;em&gt;especificidad&lt;/em&gt; es una técnica que debe ser entendida muy a fondo, para que pueda ser abordada sin problemas posteriores, donde lo más común es cuando se escriben estilos para un mismo elemento y el browser no lo despliega como lo estipulamos. En esos momentos, lo más probable (aparte del error de que pueda estar mal escrito) es que haya conflictos de &lt;em&gt;especificidad&lt;/em&gt;. Y mientras más grandes los archivos &lt;strong&gt;CSS&lt;/strong&gt; (grandes me refiero a más de 1000 líneas), más difícil es controlar estos conflictos.&lt;/p&gt;</description>
      <content>&lt;p&gt;Este tema debe ser uno de los artículos griales de &lt;strong&gt;CSSLab&lt;/strong&gt;, y podría aportar en la solución de más de algún problema con el maqueteado &lt;strong&gt;CSS&lt;/strong&gt;. La &lt;em&gt;especificidad&lt;/em&gt; es una técnica que debe ser entendida muy a fondo, para que pueda ser abordada sin problemas posteriores, donde lo más común es cuando se escriben estilos para un mismo elemento y el browser no lo despliega como lo estipulamos. En esos momentos, lo más probable (aparte del error de que pueda estar mal escrito) es que haya conflictos de &lt;em&gt;especificidad&lt;/em&gt;. Y mientras más grandes los archivos &lt;strong&gt;CSS&lt;/strong&gt; (grandes me refiero a más de 1000 líneas), más difícil es controlar estos conflictos.&lt;/p&gt;
&lt;p&gt;Son varias las reglas que implican la especificidad. Comencemos.&lt;/p&gt;
&lt;h3 id=&#34;1&#34;&gt;1.&lt;/h3&gt;
&lt;p&gt;Si los selectores son iguales, entonces el último escrito (el de más abajo en el código, ya que el browser lee los archivos de arriba hacia abajo) es el que toma importancia:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;
p { font-size: 1em; }&amp;lt;br /&gt;
p { font-size: 1.5em; }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Entonces &lt;strong&gt;&lt;p&gt;&lt;/strong&gt; tendrá el tamaño de texto de &lt;strong&gt;1.5em&lt;/strong&gt;. Esto es cuando los selectores son declarados de la misma forma, como en el ejemplo anterior. Vamos con otro:&lt;/p&gt;
&lt;h3 id=&#34;2&#34;&gt;2.&lt;/h3&gt;
&lt;p&gt;Para: &lt;strong&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#34;&#34;&gt;Link&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;
ul li a { color: #f00 }&amp;lt;br /&gt;
a { color: #333 }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si siguiéramos la misma filosofía, el &lt;strong&gt;link&lt;/strong&gt; de una lista tendría color gris oscuro porque fue declarado después. Pero como hemos sido más específico diciendo que el &lt;strong&gt;link&lt;/strong&gt; en un elemento de una lista (&lt;strong&gt;ul li a&lt;/strong&gt;) es rojo, éste gana predominancia y finalmente se muestra rojo, no gris porque hemos sido más específicos con ello. Básicamente, esta regla dice: &lt;strong&gt;mientras más específico el selector, más preferencia tendrá por sobre otros estilos&lt;/strong&gt;. Existen cálculos creados para ayudar a evitar errores en esto:&lt;/p&gt;
&lt;h4 id=&#34;selectores-html-tienen-valor-1&#34;&gt;Selectores HTML tienen valor 1&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;p&lt;/strong&gt; tendrá especificidad &lt;strong&gt;1&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;(p = 1)&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;ul li a&lt;/strong&gt; tendrá especificidad &lt;strong&gt;3&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;(ul+li+a = 1+1+1 =  3)&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt; 
&lt;h4 id=&#34;selectores-de-class-tienen-valor-10&#34;&gt;Selectores de Class tienen valor 10&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;.nombreclass&lt;/strong&gt; tendrá especificidad &lt;strong&gt;10&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;(.nombreclass = 10)&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;div p.nombreclass&lt;/strong&gt; tendrá especificidad &lt;strong&gt;12&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;(div+p+.nombreclass = 1+1+10)&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt; 
&lt;h4 id=&#34;selectores-de-id-tienen-valor-100&#34;&gt;Selectores de ID tienen valor 100&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;#nombreid&lt;/strong&gt; tendrá especificidad &lt;strong&gt;100&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;(#nombreid = 100)&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;body #nombreid .nombreclass p&lt;/strong&gt; tendrá especificidad &lt;strong&gt;112&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;body+#nombreid+.nombreclass+p = 1+100+10+1 = 112&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt; 
&lt;h3 id=&#34;3&#34;&gt;3.&lt;/h3&gt;
&lt;p&gt;Selectores universales tienen especificidad 0, tales como ***** y &lt;strong&gt;body&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;4&#34;&gt;4.&lt;/h3&gt;
&lt;p&gt;Estilos inline (esos que son dados dentro del mismo &lt;strong&gt;HTML&lt;/strong&gt; mediante el atributo &lt;strong&gt;style=&amp;quot;&amp;quot;&lt;/strong&gt;) tienen la mayor especificidad de todas.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;p style=&#34;color: blue;&#34;&amp;gt;Texto en azul&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finalmente, un par de consejos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Trata de evitar [!important][1]. De eso se trata todo esto, entender cómo funciona para que no tengas que parchar utilizando métodos que causan más problemas de los que soluciona.&lt;/li&gt;
&lt;li&gt;– No te vuelvas loco especificando. Sería insano toparse con:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;body div#container div#menu ul li ul.submenu li a&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;– Ahorra especificidad no yendo atrás más que 2 o 3 niveles para evitar conflictos, como por ejemplo:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#menu li a&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.htmldog.com/guides/cssadvanced/specificity/&#34; title=&#34;Enlace externo a &amp;quot;HTML Dog&amp;quot;&#34; target=&#34;_blank&#34;&gt;Specificity | HTML Dog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/&#34; title=&#34;Enlace externo a &amp;quot;Smashing Magazine&amp;quot;&#34; target=&#34;_blank&#34;&gt;CSS Specificity: Things You Should Know&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/06/05/la-verdadera-importancia/&#34;&gt;http://www.csslab.cl/2007/06/05/la-verdadera-importancia/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;La verdadera !importancia&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Un par de preguntas</title>
      <link>https://csslab.cl/2008/01/07/un-par-de-preguntas/</link>
      <pubDate>Mon, 07 Jan 2008 14:31:42 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/01/07/un-par-de-preguntas/</guid>
      <description>&lt;p&gt;Hace un tiempo ya se me contactó a través de este mismo sitio para una breve entrevista para el &lt;a href=&#34;http://luisalarcon.com/blog/&#34; title=&#34;Enlace externo a &amp;quot;Luis Alarc&amp;oacute;n, Blog&amp;quot;&#34; target=&#34;_blank&#34;&gt;blog de Luis Alarcón&lt;/a&gt;, diseñador web de Perú. El motivo fue &amp;ldquo;un estudio acerca del perfil del &lt;em&gt;Diseñador Web&lt;/em&gt; actual y quisiera que compartieras tu experiencia al respecto, respondiendo 2 breves preguntas&amp;rdquo;-según sus propias palabras, y agrega- &amp;ldquo;forma parte de un pequeño estudio que realizo al respecto entre profesionales, estudiantes e instituciones dedicadas diseño web en distintos países&amp;rdquo;. Pues, un honor haber sido considerado y aportar con mi experiencia. Los enlaces a continuación:&lt;/p&gt;</description>
      <content>&lt;p&gt;Hace un tiempo ya se me contactó a través de este mismo sitio para una breve entrevista para el &lt;a href=&#34;http://luisalarcon.com/blog/&#34; title=&#34;Enlace externo a &amp;quot;Luis Alarc&amp;oacute;n, Blog&amp;quot;&#34; target=&#34;_blank&#34;&gt;blog de Luis Alarcón&lt;/a&gt;, diseñador web de Perú. El motivo fue &amp;ldquo;un estudio acerca del perfil del &lt;em&gt;Diseñador Web&lt;/em&gt; actual y quisiera que compartieras tu experiencia al respecto, respondiendo 2 breves preguntas&amp;rdquo;-según sus propias palabras, y agrega- &amp;ldquo;forma parte de un pequeño estudio que realizo al respecto entre profesionales, estudiantes e instituciones dedicadas diseño web en distintos países&amp;rdquo;. Pues, un honor haber sido considerado y aportar con mi experiencia. Los enlaces a continuación:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;http://luisalarcon.com/blog/?p=560&#34; title=&#34;Enlace externo a &amp;quot;El perfil del nuevo dise&amp;ntilde;ador web (Parte I)&amp;quot;&#34; target=&#34;_blank&#34;&gt;El perfil del nuevo diseñador web (Parte I)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://luisalarcon.com/blog/?p=564&#34; title=&#34;Enlace externo a &amp;quot;&amp;iquest;Qu&amp;eacute; debieran aprender los estudiantes de dise&amp;ntilde;o web? (Parte II)&amp;quot;&#34; target=&#34;_blank&#34;&gt;¿Qué debieran aprender los estudiantes de diseño web? (Parte II)&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content>
    </item>
    
    <item>
      <title>Un poco sobre Microformatos</title>
      <link>https://csslab.cl/2008/01/03/un-poco-sobre-microformatos/</link>
      <pubDate>Thu, 03 Jan 2008 15:01:43 +0000</pubDate>
      
      <guid>https://csslab.cl/2008/01/03/un-poco-sobre-microformatos/</guid>
      <description>&lt;p&gt;Un &lt;strong&gt;Microformato&lt;/strong&gt; es una forma de agregar significado semántico a un contenido web que use &lt;strong&gt;HTML&lt;/strong&gt; o &lt;strong&gt;XHTML&lt;/strong&gt;, lo que hace que la información quede indexada. Más específicamente, son porciones de código estándar con el objetivo de insertar contenido semántico aprovechando atributos existentes (como &lt;strong&gt;id&lt;/strong&gt;, &lt;strong&gt;class&lt;/strong&gt; o &lt;strong&gt;rel&lt;/strong&gt;). Para ello se asignan valores a estos atributos que, aparte de darles estilos mediante &lt;strong&gt;CSS&lt;/strong&gt;, puede generar procesos por parte de agentes de usuario (por ejemplo los buscadores).&lt;/p&gt;
&lt;p&gt;Los &lt;strong&gt;Microformatos&lt;/strong&gt; son abiertos para que cualquiera pueda utilizarlos, y permiten información de contacto, relaciones sociales, direcciones, coordenadas, etc.&lt;/p&gt;</description>
      <content>&lt;p&gt;Un &lt;strong&gt;Microformato&lt;/strong&gt; es una forma de agregar significado semántico a un contenido web que use &lt;strong&gt;HTML&lt;/strong&gt; o &lt;strong&gt;XHTML&lt;/strong&gt;, lo que hace que la información quede indexada. Más específicamente, son porciones de código estándar con el objetivo de insertar contenido semántico aprovechando atributos existentes (como &lt;strong&gt;id&lt;/strong&gt;, &lt;strong&gt;class&lt;/strong&gt; o &lt;strong&gt;rel&lt;/strong&gt;). Para ello se asignan valores a estos atributos que, aparte de darles estilos mediante &lt;strong&gt;CSS&lt;/strong&gt;, puede generar procesos por parte de agentes de usuario (por ejemplo los buscadores).&lt;/p&gt;
&lt;p&gt;Los &lt;strong&gt;Microformatos&lt;/strong&gt; son abiertos para que cualquiera pueda utilizarlos, y permiten información de contacto, relaciones sociales, direcciones, coordenadas, etc.&lt;/p&gt;
&lt;p&gt;Un ejemplo práctico. Imagínese que tienes un &lt;strong&gt;blog&lt;/strong&gt; y escribes un artículo sobre un restaurant que visitaste recientemente y te encantó el lugar y la comida. Lo quieres recomendar y escribes tu reseña, para finalmente entregar el nombre del lugar, la dirección y si tiene sitio web probablemente la enlaces. Súper, pero: &lt;em&gt;¿Qué pasa si además, entregas las coordenadas?&lt;/em&gt; Así, a través de &lt;a href=&#34;http://microformats.org/wiki/geo&#34; title=&#34;Enlace externo a &amp;quot;Geo Microformat&amp;quot;&#34; target=&#34;_blank&#34;&gt;geo&lt;/a&gt; puede ser integrado con &lt;a href=&#34;http://maps.google.com/?ie=UTF8&amp;ll=-33.42,-70.61&amp;spn=0.004603,0.007349&amp;t=h&amp;z=17&amp;om=1&#34; title=&#34;Enlace externo a &amp;quot;Google Maps&amp;quot;&#34; target=&#34;_blank&#34;&gt;Google Maps&lt;/a&gt; y poder mostrar gráficamente el camino de cómo llegar al lugar. Así, un lector de tu &lt;strong&gt;blog&lt;/strong&gt; puede leer tu artículo desde su dispositivo móvil favorito, y llegar al restaurant cómodamente siguiendo el mapa directo desde &lt;strong&gt;Google&lt;/strong&gt;, o guardándolo como favorito para consultarlo después.&lt;/p&gt;
&lt;p&gt;Su uso sería de la siguiente forma:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;span class=&#34;geo&#34;&amp;gt;&amp;lt;span class=&#34;latitude&#34;&amp;gt;-33.42&amp;lt;/span&amp;gt;, &amp;lt;span class=&#34;longitude&#34;&amp;gt;-70.61&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se utilizan &lt;strong&gt;class&lt;/strong&gt; que son leídos y entendidos por otras aplicaciones, ya que son estándares por medio de las especificaciones de &lt;a href=&#34;http://microformats.org/wiki/hcard&#34; title=&#34;Enlace externo a &amp;quot;hCard Microformat&amp;quot;&#34; target=&#34;_blank&#34;&gt;hCard&lt;/a&gt; de &lt;a href=&#34;http://microformats.org/wiki/Main_Page&#34; title=&#34;Enlace externo a &amp;quot;Microformats Wiki&amp;quot;&#34; target=&#34;_blank&#34;&gt;Microformats&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;iquesty-queacute-ganamos-con-todo-esto&#34;&gt;¿Y qué ganamos con todo esto?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Microformatos&lt;/strong&gt; permiten que las personas tengan control sobre sus propios datos e informaciones, a través de la estandarización en el marcado &lt;strong&gt;HTML&lt;/strong&gt;. Esto ayuda a que los buscadores indexen y entreguen información cada vez más precisa y correcta, siempre y cuando ésta haya sido bien formatada . Si creías que ya hacías un buen trabajo aplicando semánticamente las etiquetas &lt;strong&gt;HTML&lt;/strong&gt; a tu contenido, con &lt;strong&gt;Microformatos&lt;/strong&gt; te estarías elevando a lo que se especula será la [Web 3.0][1]. Es una iniciativa que aún está en desarrollo, pero que ha dado mucho que hablar y que tiene un futuro promisorio.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://microformats.org/wiki/Main_Page-es&#34; title=&#34;Enlace externo a &amp;quot;Microformats Wiki&amp;quot;&#34; target=&#34;_blank&#34;&gt;Microformats Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://es.wikipedia.org/wiki/Microformatos&#34; title=&#34;Enlace externo a &amp;quot;Microformatos en Wikipedia&amp;quot;&#34; target=&#34;_blank&#34;&gt;Microformatos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.webstandards.org/action/dwtf/microformats/&#34; title=&#34;Enlace externo a &amp;quot;Microformats Extensions for Dreamweaver&amp;quot;&#34; target=&#34;_blank&#34;&gt;Microformats Extensions for Dreamweaver&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/08/30/la-semantica-en-la-web-30/&#34;&gt;http://www.csslab.cl/2007/08/30/la-semantica-en-la-web-30/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;La semántica en la Web 3.0&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Videocast 2: menú con listas</title>
      <link>https://csslab.cl/2007/12/28/videocast-2-menu-con-listas/</link>
      <pubDate>Fri, 28 Dec 2007 19:26:12 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/12/28/videocast-2-menu-con-listas/</guid>
      <description>Fijándome en las estadísticas de CSSLab, me dí cuenta de que un gran número de visitas a este sitio desde buscadores viene desde la consulta css menú horizontal. Este tema es algo que [se ha tocado hace bastante tiempo][1]. Pero nunca está de mas reforzarlo, y ofrecer mejor material a quienes necesitan de este recurso. Además es bueno de que los usuarios hagan esta búsqueda, hace pensar de que tienen interés de aprender la manera correcta de crear menúes.</description>
      <content>&lt;p&gt;Fijándome en las estadísticas de &lt;strong&gt;CSSLab&lt;/strong&gt;, me dí cuenta de que un gran número de visitas a este sitio desde buscadores viene desde la consulta &lt;em&gt;css menú horizontal&lt;/em&gt;. Este tema es algo que [se ha tocado hace bastante tiempo][1]. Pero nunca está de mas reforzarlo, y ofrecer mejor material a quienes necesitan de este recurso. Además es bueno de que los usuarios hagan esta búsqueda, hace pensar de que tienen interés de aprender la manera correcta de crear menúes. Bueno, estoy para ayudar, así que hice un &lt;strong&gt;videocast&lt;/strong&gt; bastante básico y rápido de cómo lograr &lt;strong&gt;menúes con listas, verticales u horizontales&lt;/strong&gt;. Como he aprendido del [videocast anterior][2], esta vez subí 3 versiones para deleite del consumidor. Espero sea de bastante ayuda a quienes necesitan de este método.&lt;/p&gt;
&lt;div class=&#34;video-container&#34;&gt;
&lt;/div&gt;
&lt;p&gt;Como siempre, el [material con el que hice el ejemplo][3] está disponible.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2006/02/20/menu-horizontal-y-algo/&#34;&gt;http://www.csslab.cl/2006/02/20/menu-horizontal-y-algo/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Menú horizontal y algo +&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2007/10/03/videocast-1-layout-compuesto/&#34;&gt;http://www.csslab.cl/2007/10/03/videocast-1-layout-compuesto/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Videocast 1: layout compuesto&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/videocast/3/menu.html&#34;&gt;http://www.csslab.cl/ejemplos/videocast/3/menu.html&lt;/a&gt; &amp;ldquo;Material ejemplo &amp;ldquo;Videocast 2&amp;rdquo; en CSSLab&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Borde interno con CSS</title>
      <link>https://csslab.cl/2007/12/26/borde-interno-con-css/</link>
      <pubDate>Wed, 26 Dec 2007 14:10:22 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/12/26/borde-interno-con-css/</guid>
      <description>&lt;p&gt;Para todos es conocido el [modelo de caja][1] y cómo la propiedad &lt;strong&gt;border&lt;/strong&gt; juega un papel importante en ello. Para los que no, un brevísimo resumen: cualquier borde que definas a través de &lt;strong&gt;CSS&lt;/strong&gt;, te es sumado al ancho y alto de la caja que lo contenga (entre otras propiedades). Si no ha quedado claro aún, insisto que te tomes un tiempo para [leer el artículo sobre ello][1].&lt;/p&gt;
&lt;p&gt;La idea es mostrar una técnica donde a través de una imagen contenida dentro de un link, podamos hacer que el &lt;strong&gt;border&lt;/strong&gt; al momento del :&lt;strong&gt;hover&lt;/strong&gt; no interfiera con la caja contenedora de la imagen. O sea, en vez de ser externo, que se despliegue hacia dentro de la imagen. Primero, un ejemplo de lo que ocurre comúnmente:&lt;/p&gt;</description>
      <content>&lt;p&gt;Para todos es conocido el [modelo de caja][1] y cómo la propiedad &lt;strong&gt;border&lt;/strong&gt; juega un papel importante en ello. Para los que no, un brevísimo resumen: cualquier borde que definas a través de &lt;strong&gt;CSS&lt;/strong&gt;, te es sumado al ancho y alto de la caja que lo contenga (entre otras propiedades). Si no ha quedado claro aún, insisto que te tomes un tiempo para [leer el artículo sobre ello][1].&lt;/p&gt;
&lt;p&gt;La idea es mostrar una técnica donde a través de una imagen contenida dentro de un link, podamos hacer que el &lt;strong&gt;border&lt;/strong&gt; al momento del :&lt;strong&gt;hover&lt;/strong&gt; no interfiera con la caja contenedora de la imagen. O sea, en vez de ser externo, que se despliegue hacia dentro de la imagen. Primero, un ejemplo de lo que ocurre comúnmente:&lt;/p&gt;
&lt;p&gt;[Ver Ejemplo 1][2]{.verejemplo}&lt;/p&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/12/border.gif&#34; alt=&#34;Border Interno en CSSLab&#34; style=&#34;margin-left: 50px;&#34; /&gt; 
&lt;p&gt;Qué sucede. Primero, al tener una imagen linkeada de la manera &lt;strong&gt;&lt;a&gt;&lt;img /&gt;&lt;/a&gt;&lt;/strong&gt; debemos darle &lt;strong&gt;border&lt;/strong&gt; al &lt;strong&gt;&lt;a&gt;&lt;/strong&gt; para que, a través de la &lt;strong&gt;pseudo-class&lt;/strong&gt; &lt;strong&gt;:hover&lt;/strong&gt; me funcione sin problemas. Como verán, la imagen al principio no tenía ese &lt;strong&gt;border&lt;/strong&gt; (el cual exageré para que se notara el problema). ¿Qué solución tendríamos? Bueno, si son acertivos lo solucionarían agregando un border al &lt;strong&gt;a:link&lt;/strong&gt; del mismo color de fondo y del mismo grosor. Así, no se notaría el cambio de instancia (en cuanto a ese movimiento que se produce), y funciona bastante bien. Pero, ¿y si no podemos hacer calzar el color de fondo, ya que tenemos una imagen, un &lt;strong&gt;pattern&lt;/strong&gt; o un gradiente por ejemplo?&lt;/p&gt;
&lt;p&gt;[Ver Ejemplo 2][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Bueno, aqui les tengo una solución más elegante al tema. Simplemente, &lt;strong&gt;en vez de que el border me sume pixeles a la caja que contiene la imagen&lt;/strong&gt;, es mejor que las haga parte, &lt;strong&gt;integrando el border dentro de la imagen&lt;/strong&gt;. La única contra que veo es que puede que tape algo importante que tenga la imagen, pero bueno depende de su criterio como diseñador/desarrollador aplicarlo.&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;HTML&lt;/strong&gt; del ejemplo es demasiado simple:&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;a href=&#34;#&#34;&amp;gt;&amp;lt;img src=&#34;foto.jpg&#34;  /&amp;gt;&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;y con el &lt;strong&gt;CSS&lt;/strong&gt; haremos magia:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;a  {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: block;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;overflow: hidden;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: relative;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 300px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 200px; &amp;lt;br /&gt;
  }&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a img {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: block;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a:hover  {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border: 5px solid red;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 290px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 190px; &amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a:hover img {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: -5px 0 0 -5px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Al &lt;strong&gt;link&lt;/strong&gt; le decimos que sea un elemento bloque (&lt;strong&gt;display: block;&lt;/strong&gt;) y que tenga alto y anchos de la imagen (si no fuera &lt;strong&gt;block&lt;/strong&gt; no lo aplicaría). Luego, al &lt;strong&gt;a:hover&lt;/strong&gt; le definimos el borde que queremos, así como el nuevo ancho y alto restados el borde multiplicado por 2. Me explico. Si tenemos un &lt;strong&gt;border: 10px;&lt;/strong&gt; tenemos que restar &lt;strong&gt;20px&lt;/strong&gt; al alto y ancho ya que lo cubre por completo, según el [modelo de caja][1]. Finalmente, el truco final. Al &lt;strong&gt;a:hover img&lt;/strong&gt; le decimos que la imagen el momento de poner el mouse sobre el link &lt;strong&gt;se va a mover 5px negativos arriba y 5px negativos hacia la izquierda.&lt;/strong&gt; Con esto logramos que la imagen no se note el movimiento con el &lt;strong&gt;:hover&lt;/strong&gt; y vuelva a su posición inicial. Si su borde es de &lt;strong&gt;10px&lt;/strong&gt;, sería &lt;strong&gt;margin: -10px 0 0 -10px;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[Ver Ejemplo Final][4]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&#34;&gt;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Como caja: el modelo&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/border/ej1.html&#34;&gt;http://www.csslab.cl/ejemplos/border/ej1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 1&amp;quot;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/border/ej2.html&#34;&gt;http://www.csslab.cl/ejemplos/border/ej2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo 2&amp;quot;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/border/ej3.html&#34;&gt;http://www.csslab.cl/ejemplos/border/ej3.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Ejemplo Final&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Una nueva dicotom&amp;iacute;a</title>
      <link>https://csslab.cl/2007/12/19/una-nueva-dicotoma/</link>
      <pubDate>Wed, 19 Dec 2007 15:35:14 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/12/19/una-nueva-dicotoma/</guid>
      <description>&lt;p&gt;El tema del nuevo &lt;strong&gt;diseñador/desarrollador&lt;/strong&gt; se viene arrastrando desde hace mucho tiempo y es constantemente nombrado en los artículos de este mismo sitio. Pero bien, ¿cuál de ellos soy, o me considero? ¿Con cuál me identifico, o qué rol practico? Actualmente la línea es delgada, y suele sucederle a muchos profesionales dedicados a la web. Soy diseñador gráfico de papel, pero actualmente lo que menos hago es diseñar. Aunque no programo (salvo algunas líneas de &lt;strong&gt;JS&lt;/strong&gt;) me dedico a hacer marcado &lt;strong&gt;XHTML&lt;/strong&gt; estricto. Y creo que para esto, los profesionales idóneos son los diseñadores, porque suelen tener otra sensibilidad al momento de considerar colores, formas, optimizar imágenes y aspectos de navegabilidad. Y &lt;a href=&#34;http://www.nclud.com/sketchbook/should-web-designers-know-how-to-code&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Should web designers know how to code?&amp;quot;&#34;&gt;leyendo un artículo&lt;/a&gt;, me sumerjo en una nueva pregunta: &lt;strong&gt;¿Deben los diseñadores escribir código?&lt;/strong&gt; Pues la respuesta para la mayoría sería que &lt;em&gt;&amp;ldquo;no, son creativos y tienen otros roles&amp;rdquo;&lt;/em&gt;. Pero es algo que se ha valorado mucho últimamente en las empresas web, y que se puede llevar sin dejar de lado la creatividad, utilizándola para encontrar soluciones diferentes a los problemas que se encuentran a medida que se construye un sitio. Con las hojas de estilos, podemos utilizar lo mejor del buen gusto para realizar buen código. Por lo que creo que mi respuesta debería ser un &lt;strong&gt;sí rotundo&lt;/strong&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;El tema del nuevo &lt;strong&gt;diseñador/desarrollador&lt;/strong&gt; se viene arrastrando desde hace mucho tiempo y es constantemente nombrado en los artículos de este mismo sitio. Pero bien, ¿cuál de ellos soy, o me considero? ¿Con cuál me identifico, o qué rol practico? Actualmente la línea es delgada, y suele sucederle a muchos profesionales dedicados a la web. Soy diseñador gráfico de papel, pero actualmente lo que menos hago es diseñar. Aunque no programo (salvo algunas líneas de &lt;strong&gt;JS&lt;/strong&gt;) me dedico a hacer marcado &lt;strong&gt;XHTML&lt;/strong&gt; estricto. Y creo que para esto, los profesionales idóneos son los diseñadores, porque suelen tener otra sensibilidad al momento de considerar colores, formas, optimizar imágenes y aspectos de navegabilidad. Y &lt;a href=&#34;http://www.nclud.com/sketchbook/should-web-designers-know-how-to-code&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Should web designers know how to code?&amp;quot;&#34;&gt;leyendo un artículo&lt;/a&gt;, me sumerjo en una nueva pregunta: &lt;strong&gt;¿Deben los diseñadores escribir código?&lt;/strong&gt; Pues la respuesta para la mayoría sería que &lt;em&gt;&amp;ldquo;no, son creativos y tienen otros roles&amp;rdquo;&lt;/em&gt;. Pero es algo que se ha valorado mucho últimamente en las empresas web, y que se puede llevar sin dejar de lado la creatividad, utilizándola para encontrar soluciones diferentes a los problemas que se encuentran a medida que se construye un sitio. Con las hojas de estilos, podemos utilizar lo mejor del buen gusto para realizar buen código. Por lo que creo que mi respuesta debería ser un &lt;strong&gt;sí rotundo&lt;/strong&gt;.&lt;/p&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/12/identidad.jpg&#34; alt=&#34;&amp;quot;Una nueva dicotom&amp;iacute;a&amp;quot; en CSSLab&#34; style=&#34;margin-left: 80px;&#34; /&gt; 
&lt;p&gt;Con un diseñador que codifica, estás ganando tiempo e impulsando su habilidad, llevándola a otro campo más allá. En último caso, debería el diseñador conocer y dominar el sustrato al cual su diseño va a tener su función final. Otra cosa es diseñar sabiéndo cómo se va a construir, que recibir un diseño donde uno lo mira y sabe que va a pesar 1mb de tantos efectos que tiene, o que se diseñó un elemento impracticable en la web. Conocer las tipografías que se pueden utilizar y sus implicancias, cómo se puede repetir una imagen para conseguir un menor peso, las resoluciones de los monitores y sus alcances y limitantes. Eso no quiere decir que se deba dedicar a ello (como yo), o que sea el master de los masters escribiendo código que valide. Pero sí creo que debe saber cómo se construye el sitio para saber cómo diseñar para web. Y si quiere profundizarse en ello, bienvenido sea, ya que verán que podrían destacarse rápidamente dentro del medio.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Margen duplicado para IE6</title>
      <link>https://csslab.cl/2007/12/17/margen-duplicado-para-ie6/</link>
      <pubDate>Mon, 17 Dec 2007 16:15:37 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/12/17/margen-duplicado-para-ie6/</guid>
      <description>&lt;p&gt;Anoten un error más de despliegue por parte de &lt;strong&gt;IE6&lt;/strong&gt;, por si no se han convencido de que este browser ha sido uno de los peores de la historia de la informática de todos los tiempos. Este es un problema muy específico pero habitual que involucra cajas flotantes (por eso lo habitual) y la definición de su margen.&lt;/p&gt;
&lt;p&gt;Cuando defines un &lt;strong&gt;float&lt;/strong&gt; para una caja contenedora hacia un lado y luego le das un &lt;strong&gt;margin&lt;/strong&gt; en esa misma dirección, lo que hace &lt;strong&gt;IE6&lt;/strong&gt; es simplemente duplicarla. Así nomás, sin pedir permiso.&lt;/p&gt;</description>
      <content>&lt;p&gt;Anoten un error más de despliegue por parte de &lt;strong&gt;IE6&lt;/strong&gt;, por si no se han convencido de que este browser ha sido uno de los peores de la historia de la informática de todos los tiempos. Este es un problema muy específico pero habitual que involucra cajas flotantes (por eso lo habitual) y la definición de su margen.&lt;/p&gt;
&lt;p&gt;Cuando defines un &lt;strong&gt;float&lt;/strong&gt; para una caja contenedora hacia un lado y luego le das un &lt;strong&gt;margin&lt;/strong&gt; en esa misma dirección, lo que hace &lt;strong&gt;IE6&lt;/strong&gt; es simplemente duplicarla. Así nomás, sin pedir permiso.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo (en IE6).][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Bueno el &lt;strong&gt;HTML&lt;/strong&gt; y &lt;strong&gt;CSS&lt;/strong&gt; para este ejemplo será bastante básico:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;#caja {&amp;lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left;&amp;lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin-left: 100px;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para esta &lt;strong&gt;#caja&lt;/strong&gt;, lo que se hizo fue darle un &lt;strong&gt;float: left&lt;/strong&gt;; y un &lt;strong&gt;margin-left: 100px&lt;/strong&gt;; Pero &lt;strong&gt;IE6&lt;/strong&gt; lo que hace es interpretar &lt;strong&gt;200px&lt;/strong&gt; a esa caja de &lt;strong&gt;margin-left&lt;/strong&gt;. Quién lo entiende…&lt;/p&gt;
&lt;p&gt;Pero bueno, la idea es darle una solución a esa gracia de browser (y no mediante un &lt;em&gt;hack&lt;/em&gt;). Para corregirlo, es sólo agregar un &lt;strong&gt;display: inline&lt;/strong&gt;; a &lt;strong&gt;#caja&lt;/strong&gt; y todo se resuelte.&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;#caja {&amp;lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left;&amp;lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin-left: 100px;&amp;lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: inline;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo final (IE6)][2]{.verejemplo}&lt;/p&gt;
&lt;h4 id=&#34;link&#34;&gt;Link:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.positioniseverything.net/explorer/floatIndent.html&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Position is Everything&amp;quot;&#34;&gt;Floats, Margins and IE&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/float_margin/ej1.html&#34;&gt;http://www.csslab.cl/ejemplos/float_margin/ej1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab para &amp;ldquo;Ver ejemplo 1&amp;quot;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/float_margin/ej2.html&#34;&gt;http://www.csslab.cl/ejemplos/float_margin/ej2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab para &amp;ldquo;Ver ejemplo Final&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Horror</title>
      <link>https://csslab.cl/2007/12/11/horror/</link>
      <pubDate>Tue, 11 Dec 2007 18:28:36 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/12/11/horror/</guid>
      <description>&lt;p&gt;Modificando una página, me encontré con esto.&lt;/p&gt;
&lt;p&gt;Sin comentarios.&lt;/p&gt;</description>
      <content>&lt;p&gt;Modificando una página, me encontré con esto.&lt;/p&gt;
&lt;p&gt;Sin comentarios.&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tr align=&#34;center&#34; valign=&#34;middle&#34;&amp;gt; &amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td class=&#34;cuerpo2&#34;&amp;gt; &amp;lt;div align=&#34;center&#34;&amp;gt;&amp;lt;a href=&#34;entra.asp&#34; target=&#34;_top&#34; class=&#34;menulink Estilo1&#34;&amp;gt;&amp;lt;strong&amp;gt;INICIO&amp;lt;/strong&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/table&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tr align=&#34;left&#34;&amp;gt; &amp;lt;/tr&amp;gt;&amp;lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&amp;lt;br /&gt;
&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!--   This table was automatically created with Macromedia Fireworks   --&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--   http://www.macromedia.com   --&amp;gt;&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/table&amp;gt; &amp;lt;br /&gt;
&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!--========================= STOP COPYING THE HTML HERE =========================--&amp;gt;&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&amp;lt;br /&gt;
&amp;lt;/html&amp;gt; &lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;/blockquote&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 24</title>
      <link>https://csslab.cl/2007/12/10/lo-vi-y-me-gusto-24/</link>
      <pubDate>Mon, 10 Dec 2007 19:21:28 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/12/10/lo-vi-y-me-gusto-24/</guid>
      <description>#24 – 10 Diciembre 2007
Sigue enviando tu sitio construído con estándares. Además, puedes publicarlo en el [nuevo tema de los foros][1], donde pueden opinar todos de tu estilo gráfico, o código generado.



[1]: http://www.csslab.cl/foros/viewforum.php?f=5 &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Foros - Muestra de Sitios&amp;rdquo;&amp;rdquo;</description>
      <content>&lt;p&gt;#24 – 10 Diciembre 2007&lt;/p&gt;
&lt;p&gt;Sigue enviando tu sitio construído con estándares. Además, puedes publicarlo en el [nuevo tema de los foros][1], donde pueden opinar todos de tu estilo gráfico, o código generado.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.leandropontes.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/12/leandropontes.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.mosaiko.com.br/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/12/mosaiko.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://rawnet.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/12/rawnet.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/foros/viewforum.php?f=5&#34;&gt;http://www.csslab.cl/foros/viewforum.php?f=5&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Foros - Muestra de Sitios&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>La descendencia del CSS</title>
      <link>https://csslab.cl/2007/12/06/la-descendencia-del-css/</link>
      <pubDate>Thu, 06 Dec 2007 15:57:17 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/12/06/la-descendencia-del-css/</guid>
      <description>&lt;p&gt;Como verán, hasta las &lt;strong&gt;Hojas de Estilo en Cascada&lt;/strong&gt; tienen descendencia. A través de &lt;strong&gt;CSS&lt;/strong&gt; podemos reconocer las etiquetas que en la estructura &lt;strong&gt;HTML&lt;/strong&gt; pertenecen o están contenidas dentro de otra etiqueta, y aplicarles estilos determinados. En &lt;strong&gt;CSS&lt;/strong&gt; estos se llaman &lt;strong&gt;Selectores Descendentes&lt;/strong&gt;. Pero me gustaría dejar claro desde el principio que 2 de estos selectores no funcionan en &lt;strong&gt;IE6&lt;/strong&gt;. ¿Y para qué sigo escribiendo sobre esto? -podrían preguntarse. Bueno porque es una manera muy útil de manejar estilos, y porque esto refuerza que &lt;strong&gt;IE6&lt;/strong&gt; apesta como browser. Espero algún día que este navegador sea borrado completamente de la faz de la tierra y podamos utilizar todos los estándares habidos y por haber, sin preocuparnos por el soporte. Bueno, hecho los descargos.&lt;/p&gt;</description>
      <content>&lt;p&gt;Como verán, hasta las &lt;strong&gt;Hojas de Estilo en Cascada&lt;/strong&gt; tienen descendencia. A través de &lt;strong&gt;CSS&lt;/strong&gt; podemos reconocer las etiquetas que en la estructura &lt;strong&gt;HTML&lt;/strong&gt; pertenecen o están contenidas dentro de otra etiqueta, y aplicarles estilos determinados. En &lt;strong&gt;CSS&lt;/strong&gt; estos se llaman &lt;strong&gt;Selectores Descendentes&lt;/strong&gt;. Pero me gustaría dejar claro desde el principio que 2 de estos selectores no funcionan en &lt;strong&gt;IE6&lt;/strong&gt;. ¿Y para qué sigo escribiendo sobre esto? -podrían preguntarse. Bueno porque es una manera muy útil de manejar estilos, y porque esto refuerza que &lt;strong&gt;IE6&lt;/strong&gt; apesta como browser. Espero algún día que este navegador sea borrado completamente de la faz de la tierra y podamos utilizar todos los estándares habidos y por haber, sin preocuparnos por el soporte. Bueno, hecho los descargos.&lt;/p&gt;
&lt;h3 id=&#34;selectores-descendentes&#34;&gt;Selectores Descendentes&lt;/h3&gt;
&lt;p&gt;Se ocupan para afectar a todos los elementos que pertenecen (o descenden) de una determinada etiqueta padre. Esto es muy común y hace falta sólo el ejemplo en &lt;strong&gt;CSS&lt;/strong&gt; para que se den cuenta de lo que me refiero:&lt;/p&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/12/descendiente.gif&#34; alt=&#34;Ejemplo Selectores Descendentes&#34; style=&#34;float:right;&#34; /&gt; 
&lt;div style=&#34;width:60%;&#34;&gt;
  &lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;ul a {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: red;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    En el ejemplo anterior, vemos que el color rojo se aplicar&amp;aacute; solamente a los enlaces &lt;strong&gt;&lt;a&gt;&lt;/strong&gt; que est&amp;eacute;n dentro de un &lt;strong&gt;&lt;ul&gt;&lt;/strong&gt;, y no a otros. Si queremos ser m&amp;aacute;s espec&amp;iacute;ficos, podemos definir &lt;strong&gt;id&lt;/strong&gt;&amp;#8216;s o &lt;strong&gt;class&lt;/strong&gt;&amp;#8216;es:
  &lt;/p&gt;
  &lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;.menu a {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: red;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Aquí el color rojo estará en toda etiqueta que tenga una &lt;strong&gt;class=&amp;ldquo;menu&amp;rdquo;&lt;/strong&gt;. Y siendo más específico aún, podemos definir si esa &lt;strong&gt;class&lt;/strong&gt; pertenece a cierta etiqueta:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;ul.menu a {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: red;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aquí sólo se verá el rojo del link si está dentro de un &lt;strong&gt;&lt;ul class=&#34;menu&#34;&gt;&lt;/strong&gt; y no otra etiqueta con esa misma &lt;strong&gt;class&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 1][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Hay que tener cuidado con ser tan específico declarando estilos, ya que suelen haber problemas posteriores de que no se reconoce cierto estilo, siendo que está declarado por diferencias de peso entre éstas. Esta &lt;em&gt;especificidad&lt;/em&gt; pienso abordarlo muy luego, ya que es un problema muy común e importante de conocer. Pero mientras mejor sigo con esto.&lt;/p&gt;
&lt;h3 id=&#34;selectores-hijo-_no-soportado-por-ie6_&#34;&gt;Selectores Hijo &lt;em&gt;(no soportado por IE6)&lt;/em&gt;&lt;/h3&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/12/hijo.gif&#34; alt=&#34;Ejemplo Selectores Hijo&#34; style=&#34;float:right;&#34; /&gt; 
&lt;div style=&#34;width:60%;&#34;&gt;
  &lt;p&gt;
    Se usa para afectar a uno hijo de determinado elemento.
  &lt;/p&gt;
  &lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;ul li &amp;gt; a {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: red;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    Hasta aqu&amp;iacute; suena igual que los selectores descendentes. La diferencia es que con los selectores hijo afectar&amp;aacute;n solamente los links que est&amp;eacute;n dentro del &lt;strong&gt;&lt;li&gt;&lt;/strong&gt;, y no dentro de otra sub etiqueta.
  &lt;/p&gt;
&lt;/div&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;&#34;&amp;gt;Link 1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;em&amp;gt;&amp;lt;a href=&#34;&#34;&amp;gt;Link 1&amp;lt;/a&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Usando el ejemplo anterior, veremos que utilizando los selectores hijos el color rojo se aplicará sólo al &lt;strong&gt;&lt;a&gt;&lt;/strong&gt; contenido dentro del &lt;strong&gt;&lt;li&gt;&lt;/strong&gt;, y no al que está dentro de &lt;strong&gt;&lt;em&gt;&lt;/strong&gt; ya que pasó a ser su hijo y no del &lt;strong&gt;&lt;li&gt;&lt;/strong&gt; (imagina que ahora es su nieto).&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 2][2]{.verejemplo}&lt;/p&gt;
&lt;h3 id=&#34;selectores-hermanos-adyacentes-_no-soportado-por-ie6_&#34;&gt;Selectores Hermanos Adyacentes &lt;em&gt;(no soportado por IE6)&lt;/em&gt;&lt;/h3&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/12/hermano.gif&#34; alt=&#34;Ejemplo Selectores Hermanos Adyacentes&#34; style=&#34;float:right;&#34; /&gt; 
&lt;div style=&#34;width:60%;&#34;&gt;
  &lt;p&gt;
    Son los que comparten la misma etiqueta padre y que se encuentran uno a lado del otro en la estructura &lt;strong&gt;HTML&lt;/strong&gt;. Se identifica con un signo &lt;strong&gt;+&lt;/strong&gt; entre los hermanos, y la etiqueta que tendr&amp;aacute; el estilo ser&amp;aacute; la &amp;uacute;ltima declarada luego de este &lt;strong&gt;+&lt;/strong&gt;.
  &lt;/p&gt;
  &lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;p a+em {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: red;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;
    &lt;a href=&#34;http://www.csslab.cl/ejemplos/descendentes/ejemplo3.html&#34; title=&#34;Enlace en CSSLab para &amp;quot;Ver Ejemplo 3&amp;quot;&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo 3&lt;/a&gt;
  &lt;/p&gt;
  &lt;p&gt;
    Finalmente, &amp;iquest;qu&amp;eacute; uso tienen estos &amp;uacute;ltimos 2 selectores, si no son soportados por &lt;strong&gt;IE6&lt;/strong&gt;? Bien, a trav&amp;eacute;s de tu &lt;em&gt;framework&lt;/em&gt; de &lt;strong&gt;Javascript&lt;/strong&gt; favorito (que suelen ser crossbrowser) puedes darles un gran uso, por ejemplo manipulando &lt;strong&gt;classes&lt;/strong&gt; para tablas, que suelen tener muchos elementos anidados (para una simple celda tienes que escribir &lt;strong&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/strong&gt;).
  &lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/descendentes/ejemplo1.html&#34;&gt;http://www.csslab.cl/ejemplos/descendentes/ejemplo1.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab para &amp;ldquo;Ver Ejemplo 1&amp;quot;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/descendentes/ejemplo2.html&#34;&gt;http://www.csslab.cl/ejemplos/descendentes/ejemplo2.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab para &amp;ldquo;Ver Ejemplo 2&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>&amp;Iacute;conos para mejor usabilidad</title>
      <link>https://csslab.cl/2007/12/03/conos-para-mejor-usabilidad/</link>
      <pubDate>Mon, 03 Dec 2007 20:13:11 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/12/03/conos-para-mejor-usabilidad/</guid>
      <description>&lt;p&gt;Relativo a un proyecto en que estoy y del cual han [salido][1] [otros][2] [interesantes][3] [artículos][4] [anteriores][5], creé un plugin de &lt;a href=&#34;http://jquery.com/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;jQuery JavaScript library&amp;quot;&#34;&gt;jQuery&lt;/a&gt; para agregar íconos a los links que sean relativos a descargas de diferentes tipos de documentos, a links externos (&lt;strong&gt;target=&amp;quot;_blank&amp;quot;&lt;/strong&gt;), a direcciones de e-mail (&lt;strong&gt;&amp;ldquo;mailto:&amp;rdquo;&lt;/strong&gt;) y a links de impresión (&lt;strong&gt;&amp;ldquo;window.print&amp;rdquo;&lt;/strong&gt;). Como surgió la necesidad, y no encontré ninguno que hiciera eso en la página de &lt;a href=&#34;http://jquery.com/plugins/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;jQuery plugins index&amp;quot;&#34;&gt;plugins de jQuery&lt;/a&gt;, me puse a hacer el mio propio.&lt;/p&gt;</description>
      <content>&lt;p&gt;Relativo a un proyecto en que estoy y del cual han [salido][1] [otros][2] [interesantes][3] [artículos][4] [anteriores][5], creé un plugin de &lt;a href=&#34;http://jquery.com/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;jQuery JavaScript library&amp;quot;&#34;&gt;jQuery&lt;/a&gt; para agregar íconos a los links que sean relativos a descargas de diferentes tipos de documentos, a links externos (&lt;strong&gt;target=&amp;quot;_blank&amp;quot;&lt;/strong&gt;), a direcciones de e-mail (&lt;strong&gt;&amp;ldquo;mailto:&amp;rdquo;&lt;/strong&gt;) y a links de impresión (&lt;strong&gt;&amp;ldquo;window.print&amp;rdquo;&lt;/strong&gt;). Como surgió la necesidad, y no encontré ninguno que hiciera eso en la página de &lt;a href=&#34;http://jquery.com/plugins/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;jQuery plugins index&amp;quot;&#34;&gt;plugins de jQuery&lt;/a&gt;, me puse a hacer el mio propio.&lt;/p&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/12/usableicons_ej.gif&#34; alt=&#34;UsableIcons v1.0 plugin for jQuery&#34; style=&#34;margin-left: 150px;&#34; /&gt; 
&lt;p&gt;No es nada del otro mundo de complejo; en realidad es bastante simple. Lo que hace es leer las etiquetas &lt;strong&gt;&lt;a&gt;&lt;/strong&gt; buscando por sus atributos &lt;strong&gt;href&lt;/strong&gt; y &lt;strong&gt;target&lt;/strong&gt; por las extensiones anteriormente nombradas y si las encuentra, agrega una &lt;strong&gt;class&lt;/strong&gt; respectiva que tiene ese ícono. Lo bueno es que puedes configurar en qué &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; aplicarlo a través de un &lt;strong&gt;id&lt;/strong&gt; o &lt;strong&gt;class&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Es la versión 1.0 y se esperan mejoras, dependiendo del feedback.&lt;/p&gt;
&lt;p&gt;[Página oficial][6]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[Ver demo][7]{.verejemplo}&lt;/p&gt;
&lt;h3 id=&#34;bajar-jqueryusableicons-plugin-v10-zip8&#34;&gt;[Bajar jquery.usableicons plugin v1.0 (.zip)][8]&lt;/h3&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/10/03/videocast-1-layout-compuesto/&#34;&gt;http://www.csslab.cl/2007/10/03/videocast-1-layout-compuesto/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Videocast 1: layout compuesto&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2007/10/05/alto-minimos-para-ie6-y-el-resto-claro/&#34;&gt;http://www.csslab.cl/2007/10/05/alto-minimos-para-ie6-y-el-resto-claro/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Altos minimos para IE6&amp;quot;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2007/10/18/css-reseter/&#34;&gt;http://www.csslab.cl/2007/10/18/css-reseter/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;CSS Reseter&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/2007/10/11/100-alto-finalmente-para-todos/&#34;&gt;http://www.csslab.cl/2007/10/11/100-alto-finalmente-para-todos/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;100% alto para todos&amp;rdquo;&amp;rdquo;
[5]: &lt;a href=&#34;http://www.csslab.cl/2007/11/08/el-orden-ante-todo/&#34;&gt;http://www.csslab.cl/2007/11/08/el-orden-ante-todo/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;El orden ante todo&amp;rdquo;&amp;rdquo;
[6]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/usableicons/&#34;&gt;http://www.csslab.cl/ejemplos/usableicons/&lt;/a&gt; &amp;ldquo;Enlace a &amp;ldquo;Improving Usability through jQuery&amp;rdquo;&amp;rdquo;
[7]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/usableicons/usableicons_v1/usableicons.html&#34;&gt;http://www.csslab.cl/ejemplos/usableicons/usableicons_v1/usableicons.html&lt;/a&gt; &amp;ldquo;Enlace a &amp;ldquo;jQuery usableicons demo&amp;rdquo;&amp;rdquo;
[8]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/usableicons/usableicons_v1.zip&#34;&gt;http://www.csslab.cl/ejemplos/usableicons/usableicons_v1.zip&lt;/a&gt; &amp;ldquo;Enlace externo a &amp;ldquo;Download: Usable Icons for jQuery v1.0&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Modernizando los &lt;em&gt;drop caps&lt;/em&gt;</title>
      <link>https://csslab.cl/2007/11/29/modernizando-los-drop-caps/</link>
      <pubDate>Thu, 29 Nov 2007 15:24:29 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/11/29/modernizando-los-drop-caps/</guid>
      <description>&lt;p&gt;Para quien no los conoce, los &lt;strong&gt;drop caps&lt;/strong&gt; son recursos gráficos utilizados desde hace siglos, a modo de adornos de letras iniciales de los bloques de texto. Esta letra inicial es la primera de un trabajo, capítulo o parágrafo, la que tiene la característica de ser mayor que las otras. Suele ocupar varias de las líneas de texto de ese parágrafo, y antiguamente era muy ornamentada, destacándose por sobre el contenido del texto.&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/dropcap.jpg&#34; alt=&#34;Ejemplo de Drop Cap&#34; style=&#34;float: left; margin: 0 10px 10px 0;&#34; /&gt; 
&lt;p&gt;Bueno, este recurso gráfico puede ser logrado a través de &lt;strong&gt;CSS&lt;/strong&gt; sin trucos, ya que existe una pseudo-class &lt;strong&gt;:first-letter&lt;/strong&gt; que, milagrosamente, es reconocida por todos los browsers importantes, por lo que podemos colgarnos de él para lograr este efecto. Algunos recordarán que utilizamos esta misma &lt;strong&gt;pseudo-class&lt;/strong&gt; para lograr [bloques de texto con estilo][1]. Bueno, esa vez fue una técnica; ahora la utilizaremos para el propósito con que fue creada.&lt;/p&gt;</description>
      <content>&lt;p&gt;Para quien no los conoce, los &lt;strong&gt;drop caps&lt;/strong&gt; son recursos gráficos utilizados desde hace siglos, a modo de adornos de letras iniciales de los bloques de texto. Esta letra inicial es la primera de un trabajo, capítulo o parágrafo, la que tiene la característica de ser mayor que las otras. Suele ocupar varias de las líneas de texto de ese parágrafo, y antiguamente era muy ornamentada, destacándose por sobre el contenido del texto.&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/dropcap.jpg&#34; alt=&#34;Ejemplo de Drop Cap&#34; style=&#34;float: left; margin: 0 10px 10px 0;&#34; /&gt; 
&lt;p&gt;Bueno, este recurso gráfico puede ser logrado a través de &lt;strong&gt;CSS&lt;/strong&gt; sin trucos, ya que existe una pseudo-class &lt;strong&gt;:first-letter&lt;/strong&gt; que, milagrosamente, es reconocida por todos los browsers importantes, por lo que podemos colgarnos de él para lograr este efecto. Algunos recordarán que utilizamos esta misma &lt;strong&gt;pseudo-class&lt;/strong&gt; para lograr [bloques de texto con estilo][1]. Bueno, esa vez fue una técnica; ahora la utilizaremos para el propósito con que fue creada.&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;HTML&lt;/strong&gt; que utilizaremos no será más que un bloque de texto con &lt;a href=&#34;http://www.lipsum.net/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Lipsum generator&amp;quot;&#34;&gt;Lorem Ipsum&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;p&amp;gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi commodo....&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con &lt;strong&gt;CSS&lt;/strong&gt; haremos que la primera letra crezca y que ocupe su lugar al rincón izquierdo superior, incluyendo las líneas de texto necesarias para ello a través de &lt;strong&gt;float&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;p:first-letter {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size:100px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: -10px 5px -15px 0;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float:left;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tuve que implementar &lt;strong&gt;margin&lt;/strong&gt; negativo para que pudiera ubicarse bien dentro del espacio que le corresponde, lo que no fue muy bien aceptado por &lt;strong&gt;IE6&lt;/strong&gt;. Pero bueno, hay que encontrar un concenso en este aspecto entre &lt;strong&gt;browsers&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo 1][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Ahora, esto no quita que podamos hacerlo más bonito, reemplazando la letra en sí por una imagen que crearemos y aplicando la [técnica de image replacement][3] que más les acomode. Eso sí, en este caso no podemos utilizar &lt;strong&gt;:first-letter&lt;/strong&gt; ya que no soporta &lt;strong&gt;text-indent&lt;/strong&gt; para hacer la primera letra desaparecer, y menos definir un &lt;strong&gt;width&lt;/strong&gt; y &lt;strong&gt;height&lt;/strong&gt; (aunque sólo &lt;strong&gt;Safari&lt;/strong&gt; lo soportó en mis tests). Para esto, tendremos que crear una &lt;strong&gt;class&lt;/strong&gt; y aplicárselo a un &lt;strong&gt;&lt;span&gt;&lt;/strong&gt; que rodee la primera letra.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;p&amp;gt;&amp;lt;span class=&#34;dropcap&#34;&amp;gt;L&amp;lt;/span&amp;gt;orem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi commodo....&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;.dropcap {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(l_cap.gif) no-repeat;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 106px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 100px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 5px 5px 0 0;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float:left;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: block;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-indent: -9999px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;overflow: hidden;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 2][4]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/07/31/bloques-de-texto-con-estilo/&#34;&gt;http://www.csslab.cl/2007/07/31/bloques-de-texto-con-estilo/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Bloques de texto con estilo&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/dropcap/ejemplo1.html&#34;&gt;http://www.csslab.cl/ejemplos/dropcap/ejemplo1.html&lt;/a&gt; &amp;ldquo;Enlace  para &amp;ldquo;Ver Ejemplo 1&amp;quot;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2006/09/25/image-replacement-o-como-reemplazar-contenido-por-imagen/&#34;&gt;http://www.csslab.cl/2006/09/25/image-replacement-o-como-reemplazar-contenido-por-imagen/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Image Replacement o cómo reemplazar contenido por imagen&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/dropcap/ejemplo2.html&#34;&gt;http://www.csslab.cl/ejemplos/dropcap/ejemplo2.html&lt;/a&gt; &amp;ldquo;Enlace  para &amp;ldquo;Ver Ejemplo 2&amp;quot;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Sobre la accesibilidad y sus implicancias</title>
      <link>https://csslab.cl/2007/11/27/sobre-la-accesibilidad-y-sus-implicancias/</link>
      <pubDate>Tue, 27 Nov 2007 14:17:46 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/11/27/sobre-la-accesibilidad-y-sus-implicancias/</guid>
      <description>&lt;p&gt;Continuando con el tema de la accesibilidad y su implementación en todos los medios web, me gustaría profundizarlo para que no queden dudas sobre sus alcances. Existen muchos argumentos a favor y en contra para su aplicación en un proyecto web. En mi experiencia, es un tema esencial y que no debe siquiera ser discutido su consideración, ya que es tarea nuestra quienes realizamos los sitios de estudiarlo, conocerlo y aplicarlo.&lt;/p&gt;
&lt;p&gt;Leyendo un artículo de &lt;a href=&#34;http://acessodigital.net/quem_somos.html#leda&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Quem Somos: L&amp;ecirc;da Lucia Spelta&amp;quot;&#34;&gt;Lêda Spelta&lt;/a&gt; (psicóloga de Brasil experta en accesibilidad) me tomo la molestia de citarla, traducir y completar parte de su interesante artículo: &lt;a href=&#34;http://acessodigital.net/art_acessibilidade-web-7-mitos-e-um-equivoco.html&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Acessibilidade web: 7 mitos e um equ&amp;iacute;voco&amp;quot;&#34;&gt;Accesibilidad web: 7 mitos y un equívoco&lt;/a&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;Continuando con el tema de la accesibilidad y su implementación en todos los medios web, me gustaría profundizarlo para que no queden dudas sobre sus alcances. Existen muchos argumentos a favor y en contra para su aplicación en un proyecto web. En mi experiencia, es un tema esencial y que no debe siquiera ser discutido su consideración, ya que es tarea nuestra quienes realizamos los sitios de estudiarlo, conocerlo y aplicarlo.&lt;/p&gt;
&lt;p&gt;Leyendo un artículo de &lt;a href=&#34;http://acessodigital.net/quem_somos.html#leda&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Quem Somos: L&amp;ecirc;da Lucia Spelta&amp;quot;&#34;&gt;Lêda Spelta&lt;/a&gt; (psicóloga de Brasil experta en accesibilidad) me tomo la molestia de citarla, traducir y completar parte de su interesante artículo: &lt;a href=&#34;http://acessodigital.net/art_acessibilidade-web-7-mitos-e-um-equivoco.html&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Acessibilidade web: 7 mitos e um equ&amp;iacute;voco&amp;quot;&#34;&gt;Accesibilidad web: 7 mitos y un equívoco&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;mito-1-em-stylefont-size-14px-color-333la-accesibilidad-web-es-soacutelo-para-deficientes-visualesem&#34;&gt;Mito 1: &lt;em style=&#34;font-size: 14px; color: #333;&#34;&gt;&amp;ldquo;La accesibilidad web es sólo para deficientes visuales&amp;rdquo;&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Ellos son sólo una parte de quienes se ven perjudicados con sitios mal construídos. Accesibilidad es para quienes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;no ven la pantalla&lt;/li&gt;
&lt;li&gt;no usan mouse&lt;/li&gt;
&lt;li&gt;no usan teclado&lt;/li&gt;
&lt;li&gt;no leen el texto o no saben leer&lt;/li&gt;
&lt;li&gt;no escuchan el sonido&lt;/li&gt;
&lt;li&gt;usan un browser diferente, o que es minoría&lt;/li&gt;
&lt;li&gt;usa un computador antiguo&lt;/li&gt;
&lt;li&gt;usa un computador demasiado moderno&lt;/li&gt;
&lt;li&gt;tiene una conexión muy lenta&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por supuesto que lo primero que se nos viene a la mente… &lt;em&gt;&amp;quot;¡Cómo cresta lo hago para todos ellos!&amp;quot;&lt;/em&gt;. Pues si te acostumbraras a &lt;strong&gt;escribir código semántico&lt;/strong&gt;, atendiéndote a los estándares ya estás matando 3 pájaros de un tiro. Además si sabes &lt;strong&gt;optimizar bien las imágenes&lt;/strong&gt; y &lt;strong&gt;utilizarlas sólo cuando es estrictamente necesario&lt;/strong&gt;, otros 4 pájaros caen con esa misma bala. Como ves, no es trabajo doble, sólo el mismo que haces pero bien hecho.&lt;/p&gt;
&lt;h3 id=&#34;mito-2-em-stylefont-size-14px-color-333en-la-praacutectica-el-nuacutemero-de-usuarios-beneficiados-con-la-accesibilidad-es-muy-bajoem&#34;&gt;Mito 2: &lt;em style=&#34;font-size: 14px; color: #333;&#34;&gt;&amp;ldquo;En la práctica, el número de usuarios beneficiados con la accesibilidad es muy bajo&amp;rdquo;&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Eso es algo lógico de pensar, pero que no puedes mesurar. La mayoría de los usuarios que conoces probablemente no cumpla con ningún tipo de deficiencia nombrado anteriormente, pero es no dice que todos quienes entren a tu sitio no lo sean. Recuerda que si publicaste algo en Internet, se lo publicas al mundo entero; cualquiera puede entrar y verlo, no sólo quienes conoces. Y cualquiera de ellos son posibles clientes.&lt;/p&gt;
&lt;h3 id=&#34;mito-3-em-stylefont-size-14px-color-333hacer-que-un-sitio-sea-accesible-toma-tiempo-y-cuesta-caroem&#34;&gt;Mito 3: &lt;em style=&#34;font-size: 14px; color: #333;&#34;&gt;&amp;ldquo;Hacer que un sitio sea accesible toma tiempo y cuesta caro&amp;rdquo;&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Aquí se aplican los factores &lt;strong&gt;costo/beneficio&lt;/strong&gt;. Pero, como ya fue mencionado, el diseñador/desarrollador debe estar capacitado para aplicar la accesibilidad en todos sus proyectos, a mediano rango. Este mediano rango sería estructurar un código semántico y utilizando estándares web, siempre cuidando el peso de imágenes y uso de objetos externos. Un rango alto y donde sí se requiere mayor experticia y dominio es un [sitio web totalmente optimizado para ciegos][1], donde se utiliza una hoja de estilos diferente y se aplican otras técnicas. Y es un [deber de grandes empresas][2] (masivas y públicas) proveer este tipo de servicios a sus consumidores.&lt;/p&gt;
&lt;h3 id=&#34;mito-4-em-stylefont-size-14px-color-333es-mejor-hacer-un-sitio-especial-para-deficientes-visualesem&#34;&gt;Mito 4: &lt;em style=&#34;font-size: 14px; color: #333;&#34;&gt;&amp;ldquo;Es mejor hacer un sitio especial para deficientes visuales&amp;rdquo;&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;¿Mejor para quién? El diseñador tendrá doble trabajo, al igual que el mantenedor de esas páginas. Deficientes estarán perjudicados, ya que lo más común es que este &lt;em&gt;sitio especial&lt;/em&gt; esté siempre desactualizado.&lt;/p&gt;
&lt;h3 id=&#34;mito-5-em-stylefont-size-14px-color-333un-sitio-accesible-a-deficientes-visuales-no-es-bonitoem&#34;&gt;Mito 5: &lt;em style=&#34;font-size: 14px; color: #333;&#34;&gt;&amp;ldquo;Un sitio accesible a deficientes visuales no es bonito&amp;rdquo;&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Bueno, hay que ser consecuentes. Las personas ciegas no pueden siquiera ver el diseño que estás aplicando. Pero aún así puedes utilizar fotos, videos, gráficos, audio, etc. Basta con que utilices sus etiquetas y atributos correctamente y los lectores de pantalla podrán leerle al usuario de qué se trata la foto, por ejemplo.&lt;/p&gt;
&lt;h3 id=&#34;mito-6-em-stylefont-size-14px-color-333mejor-ir-por-partes-primero-construiacutemos-el-sitio-luego-lo-hacemos-accesibleem&#34;&gt;Mito 6: &lt;em style=&#34;font-size: 14px; color: #333;&#34;&gt;&amp;ldquo;Mejor ir por partes: Primero construímos el sitio, luego lo hacemos accesible&amp;rdquo;&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Es verdad que no podemos hacer todo al mismo tiempo y debemos priorizar. Aún así, si se construye un edificio con escaleras y luego hay que romperlas para poner rampas para sillas de ruedas es un desperdicio de tiempo y recursos. Y no queda del todo bien. En un sitio web es lo mismo, los parches son a la orden del día.&lt;/p&gt;
&lt;h3 id=&#34;mito-7-em-stylefont-size-14px-color-333no-podemos-hacer-un-sitio-accesible-con-el-tiempo-y-recursos-que-tenemosem&#34;&gt;Mito 7: &lt;em style=&#34;font-size: 14px; color: #333;&#34;&gt;&amp;ldquo;No podemos hacer un sitio accesible con el tiempo y recursos que tenemos&amp;rdquo;&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Como ocurre con cualquier innovación, el primer proyecto demanda tiempo y costo en capacitación, ya que necesitamos enseñar al equipo cómo se hace. Pero luego el aprendizaje queda y se aplica fluidamente en los proyectos venideros, lo que se puede ver como un valor agregado dentro del costo de los mismos.&lt;/p&gt;
&lt;h3 id=&#34;equiacutevoco-em-stylefont-size-14px-color-333mi-sitio-estaacute-enfocado-a-un-puacuteblico-especiacutefico-y-no-me-interesan-otros-gruposem&#34;&gt;Equívoco: &lt;em style=&#34;font-size: 14px; color: #333;&#34;&gt;&amp;ldquo;Mi sitio está enfocado a un público específico, y no me interesan otros grupos&amp;rdquo;&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Normalmente cuando se afirma que un sitio está direccionado a un público específico, nos referimos que el contenido del sitio sólo tiene interés para un determinado porcentaje de usuarios. Pero esto no quiere decir que &lt;strong&gt;podemos alentar el interés de otros usuarios&lt;/strong&gt; diferentes a los que teníamos en mente. Si restringimos el acceso de nuestro sitio al que juzgamos que son nuestro target, estamos en la práctica utilizando Internet para &lt;strong&gt;limitar nuestro público, en vez de ampliarlo&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2006/05/23/diseno-a-oscuras/&#34;&gt;http://www.csslab.cl/2006/05/23/diseno-a-oscuras/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Diseño a oscuras&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2007/11/19/servicios-pblicos-en-la-web/&#34;&gt;http://www.csslab.cl/2007/11/19/servicios-pblicos-en-la-web/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Servicios públicos en la web&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Botones redondos y livianos</title>
      <link>https://csslab.cl/2007/11/22/botones-redondos-y-livianos/</link>
      <pubDate>Thu, 22 Nov 2007 17:08:48 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/11/22/botones-redondos-y-livianos/</guid>
      <description>&lt;p&gt;Cuando uno toma un diseño, o cuando uno mismo lo está haciendo, llegando la hora de comenzar a armar se deben de tomar varias desiciones que pueden llegar a cambiar partes del mismo. Por ejemplo, cómo estructurarlo, cómo las cajas se van a comportar, cómo la interacción de un menú puede llegar a influenciar el contenido, o proponer dónde aplicar javascript que realice tal o cual acción; enfin. Me ha sucedido que cuando veo un menú con un diseño más que extravagante, el diseñador quien lo realizó no me puede argumentar porqué de ese estilo, por lo que le contraargumento que al construirlo lo que pasará es que quedará más pesado que los estilos del contenido mismo, lo que debiera ser lo principal del sitio (fondos degradados, con texturas o patterns, etc). Como soy diseñador, conozco las causas, motivos, razones y prioridades al momento de diseñar un sitio, y espero que mi opinión sea tomada a cuenta; y de hecho así es. Bueno, finalmente se llega a consenso y se cambia el diseño de esos botones redondo con gradiente para mejor optimización de las imágenes del sitio.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/menu.gif&#34; alt=&#34;Men&amp;uacute; de botones redondos&#34; width=&#34;500&#34; height=&#34;31&#34; /&gt;</description>
      <content>&lt;p&gt;Cuando uno toma un diseño, o cuando uno mismo lo está haciendo, llegando la hora de comenzar a armar se deben de tomar varias desiciones que pueden llegar a cambiar partes del mismo. Por ejemplo, cómo estructurarlo, cómo las cajas se van a comportar, cómo la interacción de un menú puede llegar a influenciar el contenido, o proponer dónde aplicar javascript que realice tal o cual acción; enfin. Me ha sucedido que cuando veo un menú con un diseño más que extravagante, el diseñador quien lo realizó no me puede argumentar porqué de ese estilo, por lo que le contraargumento que al construirlo lo que pasará es que quedará más pesado que los estilos del contenido mismo, lo que debiera ser lo principal del sitio (fondos degradados, con texturas o patterns, etc). Como soy diseñador, conozco las causas, motivos, razones y prioridades al momento de diseñar un sitio, y espero que mi opinión sea tomada a cuenta; y de hecho así es. Bueno, finalmente se llega a consenso y se cambia el diseño de esos botones redondo con gradiente para mejor optimización de las imágenes del sitio.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/menu.gif&#34; alt=&#34;Men&amp;uacute; de botones redondos&#34; width=&#34;500&#34; height=&#34;31&#34; /&gt; 
&lt;p&gt;Pero hay momentos en que así deben de ser, y lo mejor es estar precavido y conocer cómo se puede llegar a optimizar la construcción de un menú completo de bordes redondos. La principal es el ancho variable de cada botón, donde lo que muchos novatos harían sería recortar cada fondo de diferentes anchos y aplicarlo con &lt;strong&gt;classes&lt;/strong&gt;. Es lógico hasta cierto sentido, pero si el menú es largo, o tiende a crecer, y si está presente en varias páginas, no queremos que los cargue siempre. Por lo tanto, con sólo 2 imágenes recortadas lo replicaremos a todos los ítems del menú, independiente del texto que contenga.&lt;/p&gt;
&lt;p&gt;La técnica utilizada aquí puede después ser aplicada para muchas otras soluciones, depende de uds. la creatividad de saber dónde y cuándo. Tendremos 2 imágenes: el &lt;strong&gt;lado derecho del botón&lt;/strong&gt; (o comienzo), con el fondo extendido lo bastante para que pueda cubrir todos los anchos de textos, y &lt;strong&gt;el izquierdo&lt;/strong&gt; (o cierre), lo pequeño bastante para cubrir el final del botón.&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt; &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt; &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt; &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt; &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/lado_izq.gif&#34; alt=&#34;Bot&amp;oacute;n lado izquierdo&#34; width=&#34;128&#34; height=&#34;100&#34; /&gt;  
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/lado_der.gif&#34; alt=&#34;Bot&amp;oacute;n lado derecho&#34; width=&#34;78&#34; height=&#34;100&#34; /&gt; 
&lt;p&gt;Lo que haremos es crear un link &lt;strong&gt;&lt;a&gt;&lt;/strong&gt;. En él definiremos el fondo del botón del lado izquierdo, o sea &lt;strong&gt;el comienzo del botón&lt;/strong&gt;. Le damos el alto y ancho del botón. Dentro de este &lt;strong&gt;&lt;a&gt;&lt;/strong&gt; y conteniendo al texto del botón estará un &lt;strong&gt;&lt;span&gt;&lt;/strong&gt;, mediante esta etiqueta le daremos &lt;strong&gt;el cierre al botón&lt;/strong&gt;, el lado derecho, además de otras propiedades como el &lt;strong&gt;padding&lt;/strong&gt;. Traté de ilustrar este método en la siguiente imagen, ojalá sea de ayuda:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/ejemplo.gif&#34; alt=&#34;Ejemplo bot&amp;oacute;n&#34; width=&#34;500&#34; height=&#34;176&#34; /&gt; 
&lt;p&gt;Explicado la técnica, procedo al &lt;strong&gt;HTML&lt;/strong&gt;:&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;a href=&#34;#&#34; class=&#34;btn_grande&#34;&gt;&lt;span&gt;Bot&amp;oacute;n&lt;/span&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Y mediante &lt;strong&gt;CSS&lt;/strong&gt;, como es costumbre, haremos la magia:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  a, a span {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-repeat: no-repeat;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: #fff;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: block;&lt;br /&gt; }&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a.btn_grande {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-image: url(imgs/btn_izq.gif);&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-position: left top;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 125px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-decoration: none;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-shadow: #000 1px 1px 3px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;letter-spacing: -2px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 290px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-align: center;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a.btn_grande span {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-image: url(imgs/btn_der.gif);&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-position: right top;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 100px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding-top: 25px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size: 65px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-weight: bold;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/p&gt;
&lt;p&gt;Para el efecto del &lt;strong&gt;:hover&lt;/strong&gt;, utilizaré la técnica del [rollover rápido][1] mostrado en un artículo muy anterior. Es importante notar que el &lt;strong&gt;:hover&lt;/strong&gt; se debe hacer tanto al link como al &lt;strong&gt;&lt;span&gt;&lt;/strong&gt;, ya que son 2 imagenes diferentes que deben moverse:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  a.btn_grande:hover {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-position: left bottom;&lt;br /&gt; } &lt;br /&gt; a.btn_grande:hover span {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-position: right bottom;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;[Ver ejemplo final del botón más grande del mundo.][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2005/11/22/rapidos-rollovers-con-css/&#34;&gt;http://www.csslab.cl/2005/11/22/rapidos-rollovers-con-css/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Rápidos rollovers con CSS&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/btn/index.html&#34;&gt;http://www.csslab.cl/ejemplos/btn/index.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab para &amp;ldquo;Ver ejemplo final&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Servicios p&amp;uacute;blicos en la web</title>
      <link>https://csslab.cl/2007/11/19/servicios-pblicos-en-la-web/</link>
      <pubDate>Mon, 19 Nov 2007 22:38:12 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/11/19/servicios-pblicos-en-la-web/</guid>
      <description>Tratando de cumplir con mi deber como ciudadano, ingresé a la página web de mi comuna para ver el estado de una multa de tránsito con la mejor de las intenciones. Sorpresa mayúscula encontrarme que al tratar de buscar con mi RUT el botón de Buscar no funciona. Como utilizo Safari 3 por defecto, me cambié de browser (ya que es común que un desarrollo antiguo no funcione en este moderno browser, que se apega bastante bien a los estándares).</description>
      <content>&lt;p&gt;Tratando de cumplir con mi deber como ciudadano, ingresé a la &lt;a href=&#34;http://www.lascondesonline.cl/&#34; target=&#34;_blank&#34;&gt;página web de mi comuna&lt;/a&gt; para ver el estado de una multa de tránsito con la mejor de las intenciones. Sorpresa mayúscula encontrarme que al tratar de buscar con mi &lt;strong&gt;RUT&lt;/strong&gt; el botón de &lt;strong&gt;Buscar&lt;/strong&gt; no funciona. Como utilizo &lt;strong&gt;Safari 3&lt;/strong&gt; por defecto, me cambié de browser (ya que es común que un desarrollo antiguo no funcione en este moderno browser, que se apega bastante bien a los estándares). Voy por &lt;strong&gt;Firefox 2&lt;/strong&gt;. Tampoco funcionó la porquería. &lt;em&gt;Bueno, &lt;strong&gt;Opera&lt;/strong&gt; sí que va&lt;/em&gt; -pensé ingenuamente… ¡tampoco! Horror, tuve que abrir &lt;strong&gt;Crossover&lt;/strong&gt; y luego &lt;strong&gt;IE6&lt;/strong&gt; para poder ingresar y ver el estado de mi multa en ese pésimo sitio, que quedó estancado en el milenio pasado.&lt;/p&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/browsers.gif&#34; alt=&#34;Mis Browsers de Test&#34; class=&#34;alineado_derecha&#34; align=&#34;right&#34; /&gt; 
&lt;p&gt;Eso me recordó esos tristes días de &lt;em&gt;Sitio hecho para Internet Explorer 6&lt;/em&gt;. Pero cómo estos sitios aún existen, más aún sitios públicos que debieran velar por una accesibilidad universal, o por lo menos tratar de hacerlo. Esto me recuerda otro tema, donde quienes hacen estos sitios, o están a cargo de crearlos y desarrollarlos no tienen una pizca de idea de &lt;strong&gt;estándares web&lt;/strong&gt;, &lt;strong&gt;usabilidad&lt;/strong&gt;, &lt;strong&gt;accesibilidad&lt;/strong&gt;, o un mínimo de &lt;strong&gt;buen gusto&lt;/strong&gt;. En muchas empresas, quienes dirigen o son jefes de áreas o de proyectos suelen no conocer sobre estos temas muy importantes. Demasiado importantes. Me ha tocado ver cómo se sobrepasan reglas básicas de accesibilidad, por ignorancia, o por creer que &lt;em&gt;hacen parte de otro desarrollo y no son relevantes&lt;/em&gt;. Suelen creer que &lt;em&gt;hacer un sitio semántico toma más tiempo, por lo tanto es más caro y además no estaba dentro de la cotización&lt;/em&gt;, entre otras burradas. Cuidado que no estoy generalizando, sólo que son casos específicos y lamentablemente muy comunes.&lt;/p&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/btn_discordia.gif&#34; alt=&#34;El bot&amp;oacute;n de la discordia&#34; class=&#34;alineado_derecha&#34; align=&#34;right&#34; /&gt; 
&lt;p&gt;Realmente una vergüenza que sitios tan masivos y que debieran de prestar una ayuda a la comunidad no sean realizados por personas capacitadas para ello.&lt;/p&gt;
&lt;p&gt;My 2 cents.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Volando con Moo</title>
      <link>https://csslab.cl/2007/11/16/volando-con-moo/</link>
      <pubDate>Fri, 16 Nov 2007 16:47:58 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/11/16/volando-con-moo/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Mootools&lt;/strong&gt; es más que un excelente &lt;em&gt;framework&lt;/em&gt;, es tremenda herramienta de desarrollo. Y de efectos. En su &lt;a href=&#34;http://docs.mootools.net/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Documents for Mootools&amp;quot;&#34;&gt;sitio web oficial&lt;/a&gt;, la documentación deja algo que desear, y la falta de ejemplos desglosados impide que quienes no estén acostumbrados a esta herramienta pueda siquiera comenzar a usarla. Un efecto que me gusta mucho y que he utilizado un par de ocasiones es &lt;a href=&#34;http://demos.mootools.net/Fx.Scroll&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Mootools: FX.Scroll&amp;quot;&#34;&gt;FX.Scroll&lt;/a&gt;, donde puedes a través de &lt;strong&gt;id`s&lt;/strong&gt; linkear a secciones dentro de un &lt;strong&gt;div&lt;/strong&gt;, y el script te llevará volando hacia su objetivo, con una suave transición. Para que sepan de lo que hablo, vean el ejemplo final:&lt;/p&gt;</description>
      <content>&lt;p&gt;&lt;strong&gt;Mootools&lt;/strong&gt; es más que un excelente &lt;em&gt;framework&lt;/em&gt;, es tremenda herramienta de desarrollo. Y de efectos. En su &lt;a href=&#34;http://docs.mootools.net/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Documents for Mootools&amp;quot;&#34;&gt;sitio web oficial&lt;/a&gt;, la documentación deja algo que desear, y la falta de ejemplos desglosados impide que quienes no estén acostumbrados a esta herramienta pueda siquiera comenzar a usarla. Un efecto que me gusta mucho y que he utilizado un par de ocasiones es &lt;a href=&#34;http://demos.mootools.net/Fx.Scroll&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Mootools: FX.Scroll&amp;quot;&#34;&gt;FX.Scroll&lt;/a&gt;, donde puedes a través de &lt;strong&gt;id`s&lt;/strong&gt; linkear a secciones dentro de un &lt;strong&gt;div&lt;/strong&gt;, y el script te llevará volando hacia su objetivo, con una suave transición. Para que sepan de lo que hablo, vean el ejemplo final:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/volando/index.html&#34;&gt;Ver ejemplo final&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bueno, la idea es mostrar cómo se hace para que uds. puedan replicarlo según sus necesidades. Comenzaré por el &lt;strong&gt;HTML&lt;/strong&gt; que se constituye de 3 partes: el menú (&lt;strong&gt;#menu&lt;/strong&gt;, que lo pueden hacer cómo se les dé la gana, lo importante son los &lt;strong&gt;id&lt;/strong&gt;‘s de los links), el &lt;strong&gt;div&lt;/strong&gt; que albergará las secciones (&lt;strong&gt;#dentro&lt;/strong&gt;, que están posicionadas absolutamente) y el contenedor que funciona como una ventana que esconde el resto (&lt;strong&gt;#envoltura&lt;/strong&gt; esconde con &lt;strong&gt;overflow: hidden&lt;/strong&gt;):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;ul&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;menu&amp;#34;&lt;/span&gt;&amp;gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;!-- #menu --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;link1&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&amp;gt;Contenido 1&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;link2&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&amp;gt;Contenido 2&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;link3&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&amp;gt;Contenido 3&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;ul&lt;/span&gt;&amp;gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;!-- /#menu --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;envoltura&amp;#34;&lt;/span&gt;&amp;gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;!-- #envoltura --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;dentro&amp;#34;&lt;/span&gt;&amp;gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;!-- #dentro --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;contenido1&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;h1&lt;/span&gt;&amp;gt;1&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;h1&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;contenido2&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;h1&lt;/span&gt;&amp;gt;2&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;h1&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;contenido3&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;h1&lt;/span&gt;&amp;gt;3&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;h1&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;!-- /#dentro --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;!-- /#envoltura --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ya el &lt;strong&gt;CSS&lt;/strong&gt; es lo que ayuda a la magia (obviaré el estilo del &lt;strong&gt;#menu&lt;/strong&gt;):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#envoltura {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;clear&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;both&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;margin&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;auto&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;overflow&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;hidden&lt;/span&gt;; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;height&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;300&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;600&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;border&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;solid&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;#666&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;position&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;relative&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#dentro {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1600&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;height&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1600&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;background&lt;/span&gt;: url(&lt;span style=&#34;color:#e6db74&#34;&gt;imgs/fondo.jpg&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;center&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;center&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;no-repeat&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;position&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;relative&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;h1&lt;/span&gt; { 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;color&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#fff&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;font-size&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;text-shadow&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#000&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  #contenido1 {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;position&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;absolute&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;left&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;250&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;top&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  #contenido2 {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;position&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;absolute&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;left&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;800&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;top&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1200&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  #contenido3 {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;position&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;absolute&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;left&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;900&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;top&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;550&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Y finalmente lo que hace la magia, el &lt;strong&gt;JS&lt;/strong&gt;. Antes que todo se linkea &lt;strong&gt;mootools.js&lt;/strong&gt;, y luego el &lt;strong&gt;script&lt;/strong&gt; que podemos configurar a nuestro gusto:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;window.&lt;span style=&#34;color:#a6e22e&#34;&gt;addEvent&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;domready&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(){
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;scroll&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Fx&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Scroll&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;envoltura&amp;#39;&lt;/span&gt;, {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;wait&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;duration&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;offset&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;x&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;230&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;y&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;transition&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Fx&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Transitions&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Back&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;easeInOut&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;$&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;link1&amp;#39;&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;addEvent&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;click&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;event&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;event&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Event&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;event&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;stop&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;scroll&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;toElement&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;contenido1&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;$&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;link2&amp;#39;&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;addEvent&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;click&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;event&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;event&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Event&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;event&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;stop&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;scroll&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;toElement&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;contenido2&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;$&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;link3&amp;#39;&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;addEvent&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;click&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;event&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;event&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Event&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;event&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;stop&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;scroll&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;toElement&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;contenido3&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  });			
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}); 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bueno, nuevamente les dejo el link al ejemplo final:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/volando/index.html&#34;&gt;Ver ejemplo final&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>C&amp;oacute;mo no usar m&amp;aacute;s iframe</title>
      <link>https://csslab.cl/2007/11/12/como-no-usar-mas/</link>
      <pubDate>Mon, 12 Nov 2007 20:14:28 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/11/12/como-no-usar-mas/</guid>
      <description>&lt;p&gt;Estuvieron de moda. Fueron la sensación. Pero como muchas otras etiquetas, perdieron su reinado dado a que no eran accesibles y mal indexado por los buscadores. Pero no totalmente, ya que suelen ser bastante útiles para refrescar datos dinámicos, sin tener que hacer un &lt;em&gt;reload&lt;/em&gt; del sitio completo. ¿Te suena esta teoría de algún lugar? ¿Quizás de [AJAX][1]? Esa sigla tan de moda y que vende más que detergente o equipo de fútbol holandés, puede utilizar 2 recursos para realizar sus consultas a servidor asincrónicamente. Una, es el objeto &lt;strong&gt;XMLHTTPRequest&lt;/strong&gt; (propietario de &lt;strong&gt;Microsoft&lt;/strong&gt;); la otra, es &lt;strong&gt;IFrame&lt;/strong&gt;. Esas ventanas modales ([lightbox, greybox, thickbox][2]) suelen utilizar &lt;strong&gt;iframe&lt;/strong&gt;‘s para abrir otros contenidos dentro de la misma página, sin tener que volver a cargarla, evitando también el ya obsoleto popup. Así que no estaba tan muerta del todo esta etiqueta…&lt;/p&gt;
&lt;p&gt;Bueno, pero la idea es evitar su uso dentro de contenidos, para así impedir la limitada acccesibilidad que nos entrega (no todos los &lt;em&gt;browsers&lt;/em&gt; lo interpretan) y que sea indexado separadamente por los buscadores (así como ocurre con los &lt;strong&gt;&amp;lt;frame&lt;/strong&gt;&amp;gt;, que tienen la misma lógica). Mediante &lt;strong&gt;CSS&lt;/strong&gt; lograremos el mismo fin, el de poder diagramar un espacio donde el contenido fluya a través de &lt;em&gt;scroll&lt;/em&gt; vertical. Pero todo dentro de la misma página.&lt;/p&gt;</description>
      <content>&lt;p&gt;Estuvieron de moda. Fueron la sensación. Pero como muchas otras etiquetas, perdieron su reinado dado a que no eran accesibles y mal indexado por los buscadores. Pero no totalmente, ya que suelen ser bastante útiles para refrescar datos dinámicos, sin tener que hacer un &lt;em&gt;reload&lt;/em&gt; del sitio completo. ¿Te suena esta teoría de algún lugar? ¿Quizás de [AJAX][1]? Esa sigla tan de moda y que vende más que detergente o equipo de fútbol holandés, puede utilizar 2 recursos para realizar sus consultas a servidor asincrónicamente. Una, es el objeto &lt;strong&gt;XMLHTTPRequest&lt;/strong&gt; (propietario de &lt;strong&gt;Microsoft&lt;/strong&gt;); la otra, es &lt;strong&gt;IFrame&lt;/strong&gt;. Esas ventanas modales ([lightbox, greybox, thickbox][2]) suelen utilizar &lt;strong&gt;iframe&lt;/strong&gt;‘s para abrir otros contenidos dentro de la misma página, sin tener que volver a cargarla, evitando también el ya obsoleto popup. Así que no estaba tan muerta del todo esta etiqueta…&lt;/p&gt;
&lt;p&gt;Bueno, pero la idea es evitar su uso dentro de contenidos, para así impedir la limitada acccesibilidad que nos entrega (no todos los &lt;em&gt;browsers&lt;/em&gt; lo interpretan) y que sea indexado separadamente por los buscadores (así como ocurre con los &lt;strong&gt;&amp;lt;frame&lt;/strong&gt;&amp;gt;, que tienen la misma lógica). Mediante &lt;strong&gt;CSS&lt;/strong&gt; lograremos el mismo fin, el de poder diagramar un espacio donde el contenido fluya a través de &lt;em&gt;scroll&lt;/em&gt; vertical. Pero todo dentro de la misma página.&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;HTML&lt;/strong&gt; no será nada distinto a un bloque de texto cualquiera, soportado por un &lt;strong&gt;&lt;div&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;contenido_scroll&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Morbi non erat non ipsum pharetra....&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Pellentesque habitant morbi tristique.....&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A través de &lt;strong&gt;CSS&lt;/strong&gt; veremos reales cambios. Primero, al igual que en la etiqueta &lt;strong&gt;&lt;iframe&gt;&lt;/strong&gt;, definiremos alto y ancho fijo. Todo lo que se salga de ese alto será absorbido por una elegante barra de &lt;em&gt;scroll&lt;/em&gt;, la que será mostrada mediante la propiedad &lt;strong&gt;overflow: scroll&lt;/strong&gt;;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#contenido_scroll {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 300px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 200px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;overflow: scroll; &amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo 1][3]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Eso es todo. Muy simple. Ahora, existe otra propiedad &lt;strong&gt;CSS&lt;/strong&gt; no muy difundida que es &lt;strong&gt;overflow-x: hidden;&lt;/strong&gt; Con ella, lograremos que desaparezca la barra horizontal de &lt;em&gt;scroll&lt;/em&gt;, o la vertical con &lt;strong&gt;overflow-y: hidden;&lt;/strong&gt; Pero esta propiedad no valida en &lt;strong&gt;CSS2.1&lt;/strong&gt;, sólo lo hará con &lt;strong&gt;CSS3&lt;/strong&gt;, pero felizmente es soportada por todos los browsers importantes exceptuando &lt;strong&gt;Opera&lt;/strong&gt; (que es un muy importante browser). Una lástima, pero la realidad es que ¡sí es soportado por &lt;strong&gt;IE6&lt;/strong&gt;! ¡¡A celebrar!!&lt;/p&gt;
&lt;p&gt;[Ver ejemplo final][4]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2005/11/15/ajax-live/&#34;&gt;http://www.csslab.cl/2005/11/15/ajax-live/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab &amp;ldquo;AJAX live!&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2006/06/23/javascript-toolkit-y-demases/&#34;&gt;http://www.csslab.cl/2006/06/23/javascript-toolkit-y-demases/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab &amp;ldquo;JavaScript, Toolkit y demases&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/iframe/01.html&#34;&gt;http://www.csslab.cl/ejemplos/iframe/01.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;ver ejemplo 1&amp;quot;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/iframe/final.html&#34;&gt;http://www.csslab.cl/ejemplos/iframe/final.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab &amp;ldquo;ver ejemplo final&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 23</title>
      <link>https://csslab.cl/2007/11/12/lo-vi-y-me-gusto-23/</link>
      <pubDate>Mon, 12 Nov 2007 13:47:49 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/11/12/lo-vi-y-me-gusto-23/</guid>
      <description>#23 – 12 Noviembre 2007</description>
      <content>&lt;p&gt;#23 – 12 Noviembre 2007&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://dibusoft.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/dibusoft.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.espiratecnologias.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/espira.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>El orden ante todo</title>
      <link>https://csslab.cl/2007/11/08/el-orden-ante-todo/</link>
      <pubDate>Thu, 08 Nov 2007 18:12:52 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/11/08/el-orden-ante-todo/</guid>
      <description>Me considero una persona bastante ordenada, y eso se refleja tanto en mi vida personal como profesional. Mantengo ordenado (trato) mi escritorio, mi desktop, archivos y por supuesto el código fuente que escribo. Con el tiempo he desarrollado un estándar para los proyectos, tanto para el orden de las carpetas, como para el registro de envío de e-mails entre otros. Es que he perdido tanta información y ha habido tanta desinformación que mejor me hice mi orden propio, y ha funcionado muy bien hasta ahora.</description>
      <content>&lt;p&gt;Me considero una persona bastante ordenada, y eso se refleja tanto en mi vida personal como profesional. Mantengo ordenado (trato) mi escritorio, mi &lt;strong&gt;desktop&lt;/strong&gt;, archivos y por supuesto el código fuente que escribo. Con el tiempo he desarrollado un estándar para los proyectos, tanto para el orden de las carpetas, como para el registro de envío de e-mails entre otros. Es que he perdido tanta información y ha habido tanta desinformación que mejor me hice mi orden propio, y ha funcionado muy bien hasta ahora. Trataré de compartirlo con ustedes, sólo para que tengan una referencia o complementen el suyo. Lo separaré en varios criterios para mejor entendimiento, y ejemplificaré con un proyecto ficticio: &lt;em&gt;Rediseño Be Studios&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;carpetas&#34;&gt;Carpetas&lt;/h3&gt;
&lt;p&gt;No me gusta mucho trabajar en servidores compartidos, ya que suelen ponerse lentas las conexiones y torna el trabajo lento. Mejor trabajo local (o puedes crear un sitio dentro de tu computador) y si lo necesito compartir con otro profesional o un cliente, lo subo al servidor en su momento.&lt;/p&gt;
&lt;p&gt;Comienzo con una carpeta en el &lt;strong&gt;desktop&lt;/strong&gt; con el nombre del dominio:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/carpeta.gif&#34; alt=&#34;Orden de Carpetas&#34;&gt;&lt;/p&gt;
&lt;p&gt;Dentro de ellas, la estructura que trabajaré.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/estructura.gif&#34; alt=&#34;Estructura de Carpetas&#34;&gt;&lt;/p&gt;
&lt;p&gt;En &lt;strong&gt;bocetos&lt;/strong&gt; guardaré todo lo que reciba de diseño para ser construído. En &lt;strong&gt;rscs&lt;/strong&gt;, todo lo que utilice como recurso (&lt;strong&gt;resource&lt;/strong&gt;), ya sean &lt;strong&gt;scripts&lt;/strong&gt; de &lt;strong&gt;JS&lt;/strong&gt;, ejemplos que utilice, enfin, todo lo que me sea útil como recurso para quizás después volver a utilizar. Ahora, las carpetas del proyecto mismo son:&lt;/p&gt;
&lt;h4 id=&#34;estilos&#34;&gt;Estilos&lt;/h4&gt;
&lt;p&gt;Dentro de ella guardaré la o las hojas de estilos y las imágenes que utilice para construir el sitio, o sea, que sean utilizadas como gráfica del sitio y que sean llamadas a través del &lt;strong&gt;CSS&lt;/strong&gt;. Dentro de esta carpeta suelo tener más carpetas:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/estilos.gif&#34; alt=&#34;Carpetas de Estilos&#34;&gt;&lt;/p&gt;
&lt;p&gt;En &lt;strong&gt;bitmaps&lt;/strong&gt; guardo las imágenes (generalmente &lt;strong&gt;gif&lt;/strong&gt;‘s) que generan el estilo gráfico del sitio; ya &lt;strong&gt;master.css&lt;/strong&gt; es creado dependiendo del proyecto. Si éste es grande (más de 90 páginas), &lt;strong&gt;master.css&lt;/strong&gt; será la única hoja de estilos llamada por todas las páginas, y dentro de ella estará llamando otras hojas de estilos que cuidarán de la estructura (&lt;strong&gt;layout.css&lt;/strong&gt;) y del diseño (&lt;strong&gt;design.css&lt;/strong&gt;), u hojas de estilo por secciones: &lt;strong&gt;header.css&lt;/strong&gt;, &lt;strong&gt;body.css&lt;/strong&gt;, &lt;strong&gt;footer.css&lt;/strong&gt; por ejemplo. Esto lo detallaré más adelante, en [Hojas de Estilos: múltiples][4].&lt;/p&gt;
&lt;h4 id=&#34;js&#34;&gt;JS&lt;/h4&gt;
&lt;p&gt;Aquí, claramente, guardaré todos los &lt;strong&gt;.js&lt;/strong&gt; que utilice. Si el proyecto no los necesita, esta carpeta se descarta.&lt;/p&gt;
&lt;h4 id=&#34;medios&#34;&gt;Medios&lt;/h4&gt;
&lt;p&gt;Se guardan los elementos que sean utilizados para el contenido en el &lt;strong&gt;HTML&lt;/strong&gt;, o sea, todas las imágenes que sean utilizadas mediante &lt;strong&gt;&lt;img /&gt;&lt;/strong&gt;, los &lt;strong&gt;.swf&lt;/strong&gt;, &lt;strong&gt;.flv&lt;/strong&gt;, &lt;strong&gt;.pdf&lt;/strong&gt;, etc, etc, etc. Dentro de medios el orden sería así:&lt;/p&gt;
&lt;p&gt;![Carpetas de Medios][5]&lt;/p&gt;
&lt;p&gt;Finalmente, la carpeta principal o raíz contiene los &lt;strong&gt;.html&lt;/strong&gt; comenzando por el &lt;strong&gt;index.html&lt;/strong&gt; y se crean las subcarpetas para la estructura formal del sitio.&lt;/p&gt;
&lt;h3 id=&#34;hojas-de-estilos&#34;&gt;Hojas de Estilos&lt;/h3&gt;
&lt;p&gt;Comenzamos a escribir el código con que nuestro sitio se verá por miles de millones de usuarios en todo el mundo que tenga una conexión a mano.&lt;/p&gt;
&lt;p&gt;&lt;a name=&#34;multiples&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;muacuteltiples&#34;&gt;Múltiples&lt;/h4&gt;
&lt;p&gt;Como mencioné anteriormente, si tenemos un sitio web más o menos grande, la mejor opción sería tener múltiples hojas de estilos. Para esto, cada &lt;strong&gt;HTML&lt;/strong&gt; llama solamente la principal: &lt;strong&gt;master.css&lt;/strong&gt; y dentro de ésta se llaman las siguientes mediante &lt;strong&gt;@import&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@import url(&#34;2008/reseter.css&#34;);&amp;lt;br /&gt;
@import url(&#34;2008/layout.css&#34;);&amp;lt;br /&gt;
@import url(&#34;2008/header.css&#34;);&amp;lt;br /&gt;
@import url(&#34;2008/side.css&#34;);&amp;lt;br /&gt;
@import url(&#34;2008/secondside.css&#34;);&amp;lt;br /&gt;
@import url(&#34;2008/footer.css&#34;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En esta caso, separé cada parte del sitio con su hoja de estilos propia. Así trabajo con cada una por separado y se tiene mayor control sobre cada parte. Primero, &lt;strong&gt;reseter.css&lt;/strong&gt; que [resetea todas las propiedades CSS conflictivas][6] en todos los browsers. Luego, &lt;strong&gt;layout.css&lt;/strong&gt; controla solamente la estructura de todas las secciones juntas (&lt;strong&gt;width&lt;/strong&gt;, &lt;strong&gt;height&lt;/strong&gt;, &lt;strong&gt;float&lt;/strong&gt;, &lt;strong&gt;position&lt;/strong&gt;, &lt;strong&gt;margin&lt;/strong&gt;, etc.). A continuación, las hojas de estilos para cada sección que controlan la gráfica (&lt;strong&gt;font&lt;/strong&gt;, &lt;strong&gt;color&lt;/strong&gt;, &lt;strong&gt;background&lt;/strong&gt;, &lt;strong&gt;padding&lt;/strong&gt;, etc.).&lt;/p&gt;
&lt;h4 id=&#34;escribiendo-coacutedigo&#34;&gt;Escribiendo código&lt;/h4&gt;
&lt;p&gt;Ya dentro de los estilos, recomiendo comenzar con un encabezado que contiene información relativa al proyecto y quién(es) lo está(n) ejecutando.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;&amp;lt;span class=&#34;commentcss&#34;&gt;/* --&amp;lt;br /&gt;
Be Studios&amp;lt;br /&gt;
dise&amp;ntilde;o: Jorge Epu&amp;ntilde;an&amp;lt;br /&gt;
construcci&amp;oacute;n: Jorge Epu&amp;ntilde;an&amp;lt;br /&gt;
fecha: 08/11/07&amp;lt;br /&gt;
mod1: -&amp;lt;br /&gt;
mod2: -&amp;lt;br /&gt;
-- */&amp;lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con esto sabemos, si trabajamos en grupos, quién lo hizo y deshizo, así es más fácil encontrar responsables cuando queda la embarrada… o premiar con vacaciones al glorioso que lo terminó antes del plazo.&lt;/p&gt;
&lt;p&gt;Otro elemento muy importante, es mantener la jerarquía de marcado dentro de los estilos. Con esto me refiero a no tener miedo a utilizar la tecla &lt;strong&gt;tab&lt;/strong&gt; y la tecla &lt;strong&gt;enter&lt;/strong&gt; para separar un poco los estilos:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#container {}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#header {}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#header #nav {}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#content {}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#content #central {}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#footer {}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se darán cuenta que será mucho más fácil encontrar después alguna &lt;strong&gt;class&lt;/strong&gt; creada.&lt;/p&gt;
&lt;h4 id=&#34;comentando&#34;&gt;Comentando&lt;/h4&gt;
&lt;p&gt;Algo primordial para mantener un orden dentro del código mismo. Suelo separar las secciones importantes con comentarios que se noten, y los &lt;strong&gt;id&lt;/strong&gt;‘s principales con comentarios menos vistosos:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;&amp;lt;span class=&#34;commentcss&#34;&gt;/* ==================== #header == */&amp;lt;/span&gt;&amp;lt;br /&gt;
#header {}&amp;lt;br /&gt;
&amp;lt;span class=&#34;commentcss&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&#34;commentcss&#34;&gt;/* ---------  #nav -- */&amp;lt;/span&gt;&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#header #nav {}&amp;lt;br /&gt;
&amp;lt;span class=&#34;commentcss&#34;&gt;/* ==================== #content == */&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#content {}&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/&amp;lt;span class=&#34;commentcss&#34;&gt;* ---------  #central -- */&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#content #central {}&amp;lt;br /&gt;
&amp;lt;span class=&#34;commentcss&#34;&gt;/* ==================== #footer == */&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#footer {}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;html&#34;&gt;HTML&lt;/h3&gt;
&lt;h4 id=&#34;escribiendo-coacutedigo-1&#34;&gt;Escribiendo código&lt;/h4&gt;
&lt;p&gt;Se repite un poco lo que mencioné con las hojas de estilos. Me interesa bastante mantener y aprecio bastante el orden estructural de marcado a medida con que se escriben las secciones, mediante jerarquías. Y repito, no tenerle miedo al &lt;strong&gt;tab&lt;/strong&gt; y al &lt;strong&gt;enter&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;container&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;header&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ul id=&#34;nav&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;content&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;footer&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;comentando-1&#34;&gt;Comentando&lt;/h4&gt;
&lt;p&gt;Con &lt;strong&gt;HTML&lt;/strong&gt;‘s gigantescos, se hace muy difícil después encontrar dónde cresta se cierra el &lt;strong&gt;&lt;div id=&#34;subnav&#34;&gt;&lt;/strong&gt;. El orden de jerarquías anterior facilita la cosa, pero una ayudita es comentando cuando abrimos algún &lt;strong&gt;id&lt;/strong&gt; o &lt;strong&gt;class&lt;/strong&gt; principal y cuando lo cerramos:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;container&#34;&amp;gt;&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- #container --&amp;gt;&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;header&#34;&amp;gt;&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- #header --&amp;gt;&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ul id=&#34;nav&#34;&amp;gt;&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- #nav --&amp;gt;&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ul&amp;gt;&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- /#nav --&amp;gt;&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- /#header --&amp;gt;&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;content&#34;&amp;gt;&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- #content --&amp;gt;&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- /#content --&amp;gt;&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;footer&#34;&amp;gt;&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- #footer --&amp;gt;&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- /#footer --&amp;gt;&amp;lt;/span&gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;span class=&#34;commenthtml&#34;&gt;&amp;lt;!-- /#container --&amp;gt;&amp;lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cuando abrimos un &lt;strong&gt;id&lt;/strong&gt; utilizo &lt;strong&gt;&amp;lt;!– #nombre_id –&amp;gt;&lt;/strong&gt; y cuando lo cierro utilizo &lt;strong&gt;/&lt;/strong&gt; para notarlo: &lt;strong&gt;&amp;lt;!– /#nombre_id –&amp;gt;&lt;/strong&gt; y con &lt;strong&gt;class&lt;/strong&gt; es lo mismo &lt;strong&gt;&amp;lt;!– .nombre_class –&amp;gt;&lt;/strong&gt; y &lt;strong&gt;&amp;lt;!– /.nombre_class –&amp;gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;enviando-e-mails&#34;&gt;Enviando E-mails&lt;/h3&gt;
&lt;p&gt;Ya nos están pidiendo avances. Enviaré lo que tengo por mientras. Para esto, duplico la carpeta que estoy trabajando y le cambio el nombre:&lt;/p&gt;
&lt;p&gt;![Carpeta para envío de E-mail][7]&lt;/p&gt;
&lt;p&gt;Le agrego la fecha en que estoy enviando lo que me piden (&lt;strong&gt;_añomesdia&lt;/strong&gt;). Luego, borro todo lo que no necesita: &lt;strong&gt;bocetos&lt;/strong&gt; y &lt;strong&gt;rscs&lt;/strong&gt; principalmente, o si me pidieron solamente el &lt;em&gt;formulario de contacto&lt;/em&gt; armado por ejemplo, borro la &lt;strong&gt;index&lt;/strong&gt; y las otras páginas que no vienen al caso. Sólo &lt;strong&gt;contacto.html&lt;/strong&gt;, sus &lt;strong&gt;CSS&lt;/strong&gt; y sus &lt;strong&gt;JS&lt;/strong&gt; y quizás &lt;strong&gt;medios&lt;/strong&gt; no aplican así que los borro. Siempre lo vuelvo a revisar por si borré algo que era necesario. Luego, a comprimir y se envía por &lt;strong&gt;e-mail&lt;/strong&gt; o se sube en algún servidor para descarga.&lt;/p&gt;
&lt;h3 id=&#34;registro&#34;&gt;Registro&lt;/h3&gt;
&lt;p&gt;Luego de esto, el archivo comprimido lo guardo siempre en la carpeta &lt;strong&gt;rscs&lt;/strong&gt; que tenía creada. Esto es para mantener un control de las versiones anteriores, y si me equivoco en algo rescato del último archivo comprimido. Toda precaución es poca cuando tiempo es dinero.&lt;/p&gt;
&lt;p&gt;Eso fue todo, quedó bastante completa la explicación. Con el tiempo me acostumbré a todo esto y ni noto lo largo que parece ser el procedimiento. Y ha resultado ser muy efectivo.&lt;/p&gt;
&lt;p&gt;[4]: #multiples &amp;ldquo;Enlace directo a &amp;ldquo;Hojas de Estilos: múltiples&amp;rdquo;&amp;rdquo;
[5]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/medios.gif&#34;&gt;http://www.csslab.cl/wp-content/uploads/2007/11/medios.gif&lt;/a&gt;
[6]: &lt;a href=&#34;http://www.csslab.cl/2007/10/18/css-reseter/&#34;&gt;http://www.csslab.cl/2007/10/18/css-reseter/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab &amp;ldquo;CSS Reseter&amp;rdquo;&amp;rdquo;
[7]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2007/11/email.gif&#34;&gt;http://www.csslab.cl/wp-content/uploads/2007/11/email.gif&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Cumpliendo 3 años (actualizado)</title>
      <link>https://csslab.cl/2007/11/05/cumpliendo-3-anos/</link>
      <pubDate>Mon, 05 Nov 2007 18:33:47 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/11/05/cumpliendo-3-anos/</guid>
      <description>Bueno, he activado el nuevo diseño del sitio. Espero sea un aporte, 1 año con el mismo layout me tenía bastante aburrido ya. Estaré en estos días ajustando algunas cosas aún, principalmente los plugins y los tags. Cualquier notificación de error o comentario constructivo, siempre será bienvenido. Seguiré escribiendo artículos desde ya.
 Ayer domingo 4 de noviembre de 2007, CSSLab cumplió 3 años de exitosa vida. Como estoy de viaje, no pude notificarlo a tiempo, pero antes 1 dia tarde que nunca.</description>
      <content>&lt;p&gt;Bueno, he activado el nuevo diseño del sitio. Espero sea un aporte, 1 año con el mismo layout me tenía bastante aburrido ya. Estaré en estos días ajustando algunas cosas aún, principalmente los plugins y los tags. Cualquier notificación de error o comentario constructivo, siempre será bienvenido. Seguiré escribiendo artículos desde ya.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Ayer domingo 4 de noviembre de 2007, &lt;strong&gt;CSSLab&lt;/strong&gt; cumplió 3 años de exitosa vida. Como estoy de viaje, no pude notificarlo a tiempo, pero antes 1 dia tarde que nunca. En total, han sido 129 artículos y más de 700 comentarios humanos y 18.700 de spam (gracias, Akismet) , y con un promedio de 1200 visitas diarias. Espero estar haciendo las cosas bien, mi intención siempre fue compartir lo que hago y lo que me gusta hacer, no soy egoísta con mis conocimientos y me interesaba ayudar a la comunidad web de habla hispana, con aún poco material sobre el tema de diseño y desarrollo orientado a la web. Bueno, gracias a todos los lectores habitalues, a los nuevos y a los que siempre visitarán a traves de otros sitios que linkean mis artículos. Sigan comentando siempre, ya que de su aporte sale más motivación para seguir siempre entregando mejor material. Pronto activo el nuevo diseño del sitio (activado).&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Clearfix v2.0: el widget</title>
      <link>https://csslab.cl/2007/10/29/clearfix-v20-el-widget/</link>
      <pubDate>Mon, 29 Oct 2007 18:38:15 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/10/29/clearfix-v20-el-widget/</guid>
      <description>Navegando me topé con una &amp;lt;a href=&amp;ldquo;http://www.456bereastreet.com/archive/200603/new_clearing_method_needed_for_ie7/&amp;rdquo; title=&amp;ldquo;Enlace externo a &amp;ldquo;New clearing method needed for IE7?&amp;rdquo;&amp;quot;&amp;gt;reescritura del código de .clearfix para que éste sea interpretado por IE7 correctamente. Y bueno, como no me gustaba la interfaz del &amp;lt;a href=&amp;ldquo;http://www.csslab.cl/2007/03/09/clearfix-el-widget/&amp;quot; title=&amp;ldquo;Enlace en CSSLab a &amp;ldquo;.clearfix: el widget&amp;rdquo;&amp;quot;&amp;gt;widget Clearfix que hice anteriormente, aproveché de rediseñarlo y lanzarlo con este nuevo código que se ve mejor. Nuevamente, lo dejo para libre descarga.
[Download Clearfix v2.</description>
      <content>&lt;p&gt;Navegando me topé con una &amp;lt;a href=&amp;ldquo;&lt;a href=&#34;http://www.456bereastreet.com/archive/200603/new&#34;&gt;http://www.456bereastreet.com/archive/200603/new&lt;/a&gt;_clearing_method_needed_for_ie7/&amp;rdquo; title=&amp;ldquo;Enlace externo a &amp;ldquo;New clearing method needed for IE7?&amp;rdquo;&amp;quot;&amp;gt;reescritura del código de .clearfix&lt;/a&gt; para que éste sea interpretado por IE7 correctamente. Y bueno, como no me gustaba la interfaz del &amp;lt;a href=&amp;ldquo;&lt;a href=&#34;http://www.csslab.cl/2007/03/09/clearfix-el-widget/%22&#34;&gt;http://www.csslab.cl/2007/03/09/clearfix-el-widget/&amp;quot;&lt;/a&gt; title=&amp;ldquo;Enlace en CSSLab a &amp;ldquo;.clearfix: el widget&amp;rdquo;&amp;quot;&amp;gt;widget Clearfix&lt;/a&gt; que hice anteriormente, aproveché de rediseñarlo y lanzarlo con este nuevo código que se ve mejor. Nuevamente, lo dejo para libre descarga.&lt;/p&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/10/widgetphoto_1.png&#34; alt=&#34;.clearfix widget v2.0&#34; align=&#34;center&#34; /&gt; 
&lt;p&gt;[Download Clearfix v2.0][1]{.bajar}&lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&amp;ldquo;&lt;a href=&#34;http://www.apple.com/downloads/dashboard/developer/clearfix.html%22&#34;&gt;http://www.apple.com/downloads/dashboard/developer/clearfix.html&amp;quot;&lt;/a&gt; title=&amp;ldquo;Enlace externo a &amp;ldquo;Mac OSX downloads&amp;rdquo;&amp;quot;&amp;gt;Apple Dashboard Widgets&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requerimientos:&lt;/strong&gt; Mac OSX con 10.4+ y Dashboard habilitado.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/clearfix/clearfix_v2.zip&#34;&gt;http://www.csslab.cl/ejemplos/clearfix/clearfix_v2.zip&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Download Clearfix v2.&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Tablas porque te quiero</title>
      <link>https://csslab.cl/2007/10/23/tablas-porque-te-quiero/</link>
      <pubDate>Tue, 23 Oct 2007 19:50:36 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/10/23/tablas-porque-te-quiero/</guid>
      <description>Siendo un poco justo con , se ha diezmado bastante su personalidad en estos años de incesante impulso semántico. Esta fiel etiqueta ha sido degradado a no más poder por mucho tiempo, y vengo a su rescate.
Como he escrito muchas veces ya a lo largo de este sitio, las tablas son para contener datos tabulados. Sólo para eso, esa información desagradable que suelen acompañar a los gráficos, esos nombres y números que a nadie le gusta.</description>
      <content>&lt;p&gt;Siendo un poco justo con &lt;strong&gt;&lt;table&gt;&lt;/strong&gt;, se ha diezmado bastante su personalidad en estos años de incesante impulso semántico. Esta fiel etiqueta ha sido degradado a no más poder por mucho tiempo, y vengo a su rescate.&lt;/p&gt;
&lt;p&gt;Como he escrito muchas veces ya a lo largo de este sitio, las tablas son para &lt;strong&gt;contener datos tabulados&lt;/strong&gt;. Sólo para eso, esa información desagradable que suelen acompañar a los gráficos, esos nombres y números que a nadie le gusta. Para eso está &lt;strong&gt;&lt;table&gt;&lt;/strong&gt;, para ordenar esos datos y nada más. Y bueno, ahora que ya tiene su función, aprendamos a utilizarlo bien.&lt;/p&gt;
&lt;p&gt;&lt;span id=&#34;more-173&#34;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;table&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;Nombre&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;Edad&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;Tulio&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;36&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;Patana&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;15&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/tablas/ejemplo1.html&#34; title=&#34;Enlace en CSSLab para ver el ejemplo 1&#34;&gt;Ver ejemplo 1&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;Una simple tabla que contiene valores cualesquiera. Ahora, le daremos sentido a sus etiquetas.&lt;/p&gt;
&lt;h3 id=&#34;th&#34;&gt;&lt;th&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Table Header Cell&lt;/strong&gt;, una celda de título de una tabla. La utilizamos cuando tenemos el título de una fila o columna, y tiene propiedades por defecto, por ejemplo, su contenido se despliega en &lt;strong&gt;bold&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Si la aplicamos a nuestra tabla básica de ejemplo, sería de la siguiente manera:&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;table&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;th&gt;Nombre&lt;/th&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;th&gt;Edad&lt;/th&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;Tulio&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;36&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;Patana&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;15&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/tablas/ejemplo2.html&#34; title=&#34;Enlace en CSSLab para ver el ejemplo 2&#34;&gt;Ver ejemplo 2&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;h3 id=&#34;caption&#34;&gt;&lt;caption&gt;&lt;/h3&gt;
&lt;p&gt;Esta etiqueta le da un título a la tabla, como un &lt;strong&gt;&lt;legend&gt;&lt;/strong&gt; lo es para su &lt;strong&gt;&lt;fieldset&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;table&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;caption&gt;Tabla de edades&lt;/caption&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;th&gt;Nombre&lt;/th&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;th&gt;Edad&lt;/th&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;Tulio&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;36&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;Patana&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;15&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &lt;/table&gt;
&lt;/p&gt;
&lt;h3 id=&#34;summary&#34;&gt;summary&lt;/h3&gt;
&lt;p&gt;Atributo de la etiqueta &lt;strong&gt;&lt;table&gt;&lt;/strong&gt;, especial para lectores de pantalla (no-videntes). Aquí, nos explayamos un poco más que en &lt;strong&gt;&lt;caption&gt;&lt;/strong&gt;, explicando extensamente de qué se trata nuestra tabla.&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;table summary=&#34;Tabla donde se muestran nombres de personajes de un programa infantil junto con sus edades hipot&amp;eacute;ticas&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;caption&gt;Tabla de edades&lt;/caption&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;th&gt;Nombre&lt;/th&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;th&gt;Edad&lt;/th&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;Tulio&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;36&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;Patana&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;15&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/tablas/ejemplo3.html&#34; title=&#34;Enlace en CSSLab para ver el ejemplo 3&#34;&gt;Ver ejemplo 3&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;h3 id=&#34;thead-tfoot-tbody&#34;&gt;&lt;thead&gt; &lt;tfoot&gt; &lt;tbody&gt;&lt;/h3&gt;
&lt;p&gt;Filas se pueden agrupar en un encabezado (&lt;strong&gt;&lt;thead&gt;&lt;/strong&gt;), un cuerpo de contenido &lt;strong&gt;(&lt;tbody&gt;&lt;/strong&gt;) y un pie (&lt;strong&gt;&lt;tfoot&gt;&lt;/strong&gt;), pudiendo cada grupo contener una o más filas. Con esto se hace más fácil darle estilos a las secciones de nuestra tabla, así nos ahorramos &lt;strong&gt;classes&lt;/strong&gt; en cada celda. Otra ventaja es en la impresión, si ésta es muy larga en &lt;strong&gt;Firefox&lt;/strong&gt; por ejemplo se imprimirán el encabezado y el pie en cada hoja (independiente si el cuerpo es muy extenso y no cabe en la impresión).&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;table summary=&#34;Tabla donde se muestras nombres de personajes de un programa infantil junto con sus edades hipot&amp;eacute;ticas&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;caption&gt;Tabla de edades&lt;/caption&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;thead&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;th&gt;Nombre&lt;/th&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;th&gt;Edad&lt;/th&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/thead&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tfoot&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;Bajada&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tfoot&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tbody&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;Tulio&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;36&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;Patana&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;td&gt;15&lt;/td&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tr&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tbody&gt;&lt;br /&gt; &lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/tablas/ejemplo4.html&#34; title=&#34;Enlace en CSSLab para ver el ejemplo 4&#34;&gt;Ver ejemplo 4&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;Un detalle es que si usan &lt;strong&gt;&lt;thead&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;tfoot&gt;&lt;/strong&gt;, deben ir juntas y consecutivas, antes de &lt;strong&gt;&lt;tbody&gt;&lt;/strong&gt;. Aún así, &lt;strong&gt;&lt;tfoot&gt;&lt;/strong&gt; se mostrará debajo del contenido de &lt;strong&gt;&lt;tbody&gt;&lt;/strong&gt;. Si no lo necesitan, ocúltenlo con su método favorito.&lt;/p&gt;
&lt;p&gt;Está de más escribir que &lt;strong&gt;bgcolor, height, width, align&lt;/strong&gt; y &lt;strong&gt;nowrap&lt;/strong&gt; están obsoletos y no son soportados en HTML 4.01. Además, no se recomienda el uso de &lt;strong&gt;background&lt;/strong&gt; dentro del &lt;strong&gt;HTML&lt;/strong&gt;, para esto se utlizan hojas de estilos &lt;strong&gt;CSS&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/html401/struct/tables.html&#34; title=&#34;Enlace externo a &amp;quot;W3C Tables&amp;quot;&#34; target=&#34;_blank&#34;&gt;W3C Tables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3schools.com/tags/tag_table.asp&#34; title=&#34;Enlace externo a &amp;quot;W3Schools: table tag&amp;quot;&#34; target=&#34;_blank&#34;&gt;W3Schools: table tag&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </item>
    
    <item>
      <title>CSS Reseter</title>
      <link>https://csslab.cl/2007/10/18/css-reseter/</link>
      <pubDate>Thu, 18 Oct 2007 20:49:11 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/10/18/css-reseter/</guid>
      <description>Este reseter ha sido actualizado, visita la nueva versi&amp;oacute;n. Tercer artículo influenciado directamente del [videocast][1]. En esta ocasión, les presento una hoja de estilos que utilizo para proyectos de gran envergadura (cuando con más de 40 páginas y no son alimentadas a mano, sino mediante un CMS). Se trata de un CSS Reseter, una serie de propiedades CSS que resetean las propiedades a su estado original. Conocido por todos es que por defecto los browsers tienen algunas diferencias de estilos en ciertas etiquetas HTML, principalmente , , , ….</description>
      <content>&lt;p class=&#34;atencion&#34;&gt;
  Este reseter ha sido actualizado, &lt;a href=&#34;http://www.csslab.cl/2010/06/01/css-reseter-v2/&#34;&gt;visita la nueva versi&amp;oacute;n&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Tercer artículo influenciado directamente del [videocast][1]. En esta ocasión, les presento una hoja de estilos que utilizo para proyectos de gran envergadura (cuando con más de 40 páginas y no son alimentadas a mano, sino mediante un CMS). Se trata de un &lt;strong&gt;CSS Reseter&lt;/strong&gt;, una serie de propiedades &lt;strong&gt;CSS&lt;/strong&gt; que resetean las propiedades a su estado original. Conocido por todos es que por defecto los browsers tienen algunas diferencias de estilos en ciertas etiquetas &lt;strong&gt;HTML&lt;/strong&gt;, principalmente &lt;strong&gt;&lt;body&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;iframe&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;h1&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;h2&gt;&lt;/strong&gt;…., &lt;strong&gt;&lt;p&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;blockquote&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;fieldset&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;label&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;legend&gt;&lt;/strong&gt;, etc.&lt;/p&gt;
&lt;p&gt;Influencia directa de 3 fuentes: [Yahoo UI Reset CSS][2], [Eric Meyer’s Reworked Reset][3] y mi experiencia personal para ir adaptándola a mis necesidades.&lt;/p&gt;
&lt;p&gt;Esta hoja de estilos no es para nada de corta, por lo que comentar cada estilo sería eterno. Me gustaría sí mencionar elementos importantes a considerar:&lt;/p&gt;
&lt;p&gt;&lt;span id=&#34;more-172&#34;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  :focus {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;outline: 0;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;Esto ya lo había mencionado en el artículo [El contorno de la discordia][4].&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  a img, iframe {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border: none;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;Las imágenes linkeadas en algunos browsers suelen tener el borde heredado de la propiedad del link. Aquí, lo anulamos definitivamente.&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  input, textarea, select, button {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size: 100%;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-family: inherit;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;Esta hoja se hizo esencial para diagramar formularios, donde la diferencia de estilos entre browsers es crítico. Ahora, se hizo bastante más fácil adaptarlos a todos. En este caso, vemos que obligamos que &lt;strong&gt;&lt;input&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;textarea&gt;&lt;/strong&gt; hereden el &lt;strong&gt;font-family&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  .clearfix:after {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;content: &#34;.&#34;;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: block;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 0;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;clear: both;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visibility: hidden;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;Finalmente, algo como [clearfix][5] que se ha hecho esencial, creo que es el lugar perfecto para dejarlo declarado.&lt;/p&gt;
&lt;p&gt;[Bajar hoja de estilo (.zip)][6]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/10/03/videocast-1-layout-compuesto/&#34;&gt;http://www.csslab.cl/2007/10/03/videocast-1-layout-compuesto/&lt;/a&gt; &amp;ldquo;Enlace al artículo en CSSLab &amp;ldquo;Videocast 1: layout compuesto&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://developer.yahoo.com/yui/reset/#code&#34;&gt;http://developer.yahoo.com/yui/reset/#code&lt;/a&gt; &amp;ldquo;Enlace externo a &amp;ldquo;YUI Reset CSS&amp;rdquo;&amp;rdquo;
[3]: &lt;a href=&#34;http://meyerweb.com/eric/thoughts/2007/04/14/reworked-reset/&#34;&gt;http://meyerweb.com/eric/thoughts/2007/04/14/reworked-reset/&lt;/a&gt; &amp;ldquo;Enlace externo a &amp;ldquo;Reworked Reset&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/2007/05/28/el-contorno-de-la-discordia/&#34;&gt;http://www.csslab.cl/2007/05/28/el-contorno-de-la-discordia/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab &amp;ldquo;El contorno de la discordia&amp;rdquo;&amp;rdquo;
[5]: &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34;&gt;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab &amp;ldquo;Flotando en la incertidumbre &amp;quot;&amp;rdquo;
[6]: &lt;a href=&#34;http://www.csslab.cl/downloads/CSS+Reseter&#34;&gt;http://www.csslab.cl/downloads/CSS+Reseter&lt;/a&gt; &amp;ldquo;Enlace para bajar CSS Reseter&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>100% alto, finalmente para todos</title>
      <link>https://csslab.cl/2007/10/11/100-alto-finalmente-para-todos/</link>
      <pubDate>Thu, 11 Oct 2007 16:38:28 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/10/11/100-alto-finalmente-para-todos/</guid>
      <description>Segunda entrega causa directa del [videocast 1][1]. Esta vez, una muy pero muy buena y útil técnica para lograr altos de columnas de 100% respecto del contenedor. Con esto, se puede lograr que el fondo de una o ambas columnas crezcan de acuerdo a la mayor. Este problema de diseño tenía variadas soluciones anteriormente: que el contenedor tuviera el fondo a modo de una imagen, o a través de Javascript también se podían lograr altos de 100%.</description>
      <content>&lt;p&gt;Segunda entrega causa directa del [videocast 1][1]. Esta vez, una muy pero muy buena y útil técnica para lograr altos de columnas de 100% respecto del contenedor. Con esto, se puede lograr que el fondo de una o ambas columnas crezcan de acuerdo a la mayor. Este problema de diseño tenía variadas soluciones anteriormente: que el contenedor tuviera el fondo a modo de una imagen, o a través de &lt;strong&gt;Javascript&lt;/strong&gt; también se podían lograr altos de 100%.&lt;/p&gt;
&lt;p&gt;![Ejemplo columnas 100% alto][2]&lt;/p&gt;
&lt;p&gt;Bueno, espero ahora sepan de qué escribo. Esta vez nuevamente es una elegante técnica que involucra &lt;strong&gt;overflow&lt;/strong&gt; del contenedor y &lt;strong&gt;padding&lt;/strong&gt; y &lt;strong&gt;margin&lt;/strong&gt; negativo en las columnas. Me gustaría hacer una pausa en estas dos importantes propiedades, sólo para dejar claro lo que involucra.&lt;/p&gt;
&lt;p&gt;&lt;span id=&#34;more-171&#34;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Padding&lt;/strong&gt;: margen interior.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Margin&lt;/strong&gt;: margen exterior.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para más claridad aún, nuevamente una imagen de ejemplo.&lt;/p&gt;
&lt;p&gt;![Ejemplo columnas 100% alto][3]&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt; &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt; &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt; &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt; &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Como pueden leer en el muy muy útil artículo [sobre el modelo de caja][4] (si no lo han leído, háganlo ya que es muy muy útil), el &lt;strong&gt;padding&lt;/strong&gt; sí modifica el ancho de nuestra caja, no así el &lt;strong&gt;margin&lt;/strong&gt;. Otro detalle my importante, y que ahora nos concierne, es que el &lt;strong&gt;margin&lt;/strong&gt; acepta números negativos (y que suele tener problemas de interpretación en IE6, principalmente cuando son links los involucrados), no así &lt;strong&gt;padding&lt;/strong&gt; que sólo permite cantidades positivas.&lt;/p&gt;
&lt;p&gt;Bueno, al grano. Primero, a las columnas (2 o más) deben decirles que tengan un &lt;strong&gt;padding-bottom&lt;/strong&gt; de 30.000 (bien exagerado, aunque el máximo que se permite es de 32768px pero con 30000 basta). Con eso, nuestro &lt;strong&gt;scroll&lt;/strong&gt; vertical se va a marear de tan grande que va a quedar. Este &lt;strong&gt;padding-bottom&lt;/strong&gt; empujará nuestras columnas (y sus estilos de fondo, color o imagen) hasta no más poder, pero luego les damos un &lt;strong&gt;margin-bottom&lt;/strong&gt; negativo con la misma cantidad. Con esto, nuestra caja vuelve donde estaba al comienzo, pero nuestros fondos siguen con el &lt;strong&gt;scroll&lt;/strong&gt; vertical eterno. Finalmente, la caja contenedora debe esconder todo el exceso y por ende ese &lt;strong&gt;scroll&lt;/strong&gt;, por lo que le damos un &lt;strong&gt;overflow: hidden&lt;/strong&gt; y ya (o sea, todo lo que sobre, escóndelo). Bastante lógico.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;div#container {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;overflow: hidden;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
div#izq, div#der {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding-bottom: 30000px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin-bottom: -30000px; &amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Un cuidado que deben tener es que si están flotando las cajas, su contenedor colapsará. Para esto, [.clearfix][5] será la solución ideal.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo final][6]{.verejemplo}&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/10/03/videocast-1-layout-compuesto/&#34;&gt;http://www.csslab.cl/2007/10/03/videocast-1-layout-compuesto/&lt;/a&gt; &amp;ldquo;Enlace al artículo en CSSLab &amp;ldquo;Videocast 1: layout compuesto&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2007/10/ejemplo_100.gif&#34;&gt;http://www.csslab.cl/wp-content/uploads/2007/10/ejemplo_100.gif&lt;/a&gt;
[3]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2007/10/ejemplo_cajas.gif&#34;&gt;http://www.csslab.cl/wp-content/uploads/2007/10/ejemplo_cajas.gif&lt;/a&gt;
[4]: &lt;a href=&#34;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&#34;&gt;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&lt;/a&gt; &amp;ldquo;Enlace al artículo en CSSLab &amp;ldquo;como caja: el modelo&amp;rdquo;&amp;rdquo;
[5]: &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34;&gt;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&lt;/a&gt; &amp;ldquo;Enlace al artículo en CSSLab &amp;ldquo;Flotando en la incertidumbre&amp;rdquo;&amp;rdquo;
[6]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/altos_100.html&#34;&gt;http://www.csslab.cl/ejemplos/altos_100.html&lt;/a&gt; &amp;ldquo;Enlace para ver el ejemplo final&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Alto mínimos para IE6 (y el resto, claro)</title>
      <link>https://csslab.cl/2007/10/05/alto-minimos-para-ie6-y-el-resto-claro/</link>
      <pubDate>Fri, 05 Oct 2007 14:47:02 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/10/05/alto-minimos-para-ie6-y-el-resto-claro/</guid>
      <description>Primer aporte procedente del [videocast][1]. Como prometido, este artículo será un corto pero efectivo método para obtener la propiedad min-height en todos los browsers, especialmente para IE6 que no lo aplica para nada.
Esta propiedad lo que hace es aplicar un alto mínimo a un elemento. Por ejemplo, queremos que una caja tenga un alto de 200px. Como sabemos, los elementos que estén dentro de esta caja se mostrarán hasta que alcancen esos 200 pixeles, y pasado eso si se agregan más elementos la caja no va a crecer, sino que permanecerá fija.</description>
      <content>&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Primer aporte procedente del [videocast][1]. Como prometido, este artículo será un corto pero efectivo método para obtener la propiedad &lt;strong&gt;min-height&lt;/strong&gt; en todos los browsers, especialmente para &lt;strong&gt;IE6&lt;/strong&gt; que no lo aplica para nada.&lt;/p&gt;
&lt;p&gt;Esta propiedad lo que hace es aplicar un alto mínimo a un elemento. Por ejemplo, queremos que una caja tenga un alto de &lt;strong&gt;200px&lt;/strong&gt;. Como sabemos, los elementos que estén dentro de esta caja se mostrarán hasta que alcancen esos 200 pixeles, y pasado eso si se agregan más elementos la caja no va a crecer, sino que permanecerá fija. Con &lt;strong&gt;min-height&lt;/strong&gt; lo que lograremos es que el alto sea de un mínimo de &lt;strong&gt;200px&lt;/strong&gt;, y que puede crecer lo que sea necesario; al contrario de &lt;strong&gt;max-height&lt;/strong&gt;, que lo que hace es dar un tope al alto de la caja (o sea, nuestro contenido puede crecer hasta un alto máximo donde la caja dejará de crecer).&lt;/p&gt;
&lt;p&gt;Bueno, al grano. En este sitio, necesitaba una caja estuviera fija en un alto mínimo, (según el diseño), ya que si el contenido superior a éste creciera, esta caja pudiera moverse nuevamente, pero siempre y cuando alcanzara este alto mínimo.&lt;/p&gt;
&lt;p&gt;Como se puede ver en la &lt;strong&gt;imagen 1&lt;/strong&gt;, se construyó el menu lateral con un &lt;strong&gt;min-height&lt;/strong&gt; de 175 pixeles. Así, la caja del banner se alineaba con un párrafo del texto del contenido (esto es sólo un ejemplo, claro. La idea original era otra.).&lt;/p&gt;
&lt;p&gt;&lt;span id=&#34;more-168&#34;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;![Imagen 1: alto mínimo][2]&lt;/p&gt;
&lt;p&gt;Ahora, &lt;strong&gt;en la imagen 2&lt;/strong&gt; se puede ver qué pasa si este menú tiene subitems desplegables (como en [artículo de árbol de navegación][3], por ejemplo). Si se hubiera dado un &lt;strong&gt;height&lt;/strong&gt; fijo de 175 pixeles a ese menú, lo que hubiera pasado es que la caja no hubiera crecido, y los textos se habrían pasado de largo, mientras que la caja quedaría estática. Con &lt;strong&gt;min-height&lt;/strong&gt;, lo que pasa es que la caja menú se queda fija hasta que sus elementos interiores alcancen ese alto mínimo, y de ahí la caja sigue creciendo.&lt;/p&gt;
&lt;p&gt;![Imagen 2: alto mínimo][4]&lt;/p&gt;
&lt;p&gt;¿Divertido, no?&lt;/p&gt;
&lt;p&gt;Pues no tanto. Como dije, &lt;strong&gt;IE6&lt;/strong&gt; no soporta esta propiedad tan útil (como tantas otras). La solución: un simple truco de &lt;strong&gt;CSS&lt;/strong&gt; que involucra [!important][5] y cómo &lt;strong&gt;IE6&lt;/strong&gt; no lo interpreta como debería.&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  ul#menu {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: auto!important; /* para los browsers buenos */&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 175px; /* para IE5+ */&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min-height: 175px; /* para los browsers buenos */&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;La primera declaración (&lt;strong&gt;height: auto!important&lt;/strong&gt;) no lo leerá &lt;strong&gt;IE5+&lt;/strong&gt; ya que no soporta &lt;strong&gt;!important&lt;/strong&gt;, así que deja de leer esta línea y pasa a la segunda: &lt;strong&gt;height: 175px&lt;/strong&gt;. Los otros browsers pasan en seguida a leer la tercera: &lt;strong&gt;min-height: 175px&lt;/strong&gt; e &lt;strong&gt;IE5+&lt;/strong&gt; no lo interpretará, lo que hará que todos queden felices y contentos con su alto mínimo funcionando.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo][6]{.verejemplo}&lt;/p&gt;
&lt;p&gt;No fue tan corto a fin de cuentas. Pero sí efectivo.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/10/03/videocast-1-layout-compuesto/&#34;&gt;http://www.csslab.cl/2007/10/03/videocast-1-layout-compuesto/&lt;/a&gt; &amp;ldquo;Leer artículo en CSSLab &amp;ldquo;Videocast 1: layout compuesto&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2007/10/min-height.gif&#34;&gt;http://www.csslab.cl/wp-content/uploads/2007/10/min-height.gif&lt;/a&gt;
[3]: &lt;a href=&#34;http://www.csslab.cl/2007/09/25/convirtiendo-listas-en-arboles/&#34;&gt;http://www.csslab.cl/2007/09/25/convirtiendo-listas-en-arboles/&lt;/a&gt; &amp;ldquo;Leer artÍculo en CSSLab &amp;ldquo;Convirtiendo Listas en Árboles&amp;rdquo;&amp;rdquo;
[4]: &lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2007/10/min-height2.gif&#34;&gt;http://www.csslab.cl/wp-content/uploads/2007/10/min-height2.gif&lt;/a&gt;
[5]: &lt;a href=&#34;http://www.csslab.cl/2007/06/05/la-verdadera-importancia/&#34;&gt;http://www.csslab.cl/2007/06/05/la-verdadera-importancia/&lt;/a&gt; &amp;ldquo;Leer artÍculo en CSSLab &amp;ldquo;La verdadera !importancia&amp;rdquo;&amp;rdquo;
[6]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/min-height.html&#34;&gt;http://www.csslab.cl/ejemplos/min-height.html&lt;/a&gt; &amp;ldquo;Ver ejemplo en CSSLab de &amp;ldquo;Alto mínimos para IE6&amp;quot;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Videocast 1: layout compuesto (actualizado)</title>
      <link>https://csslab.cl/2007/10/03/videocast-1-layout-compuesto/</link>
      <pubDate>Wed, 03 Oct 2007 22:04:18 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/10/03/videocast-1-layout-compuesto/</guid>
      <description>En un proyecto en que estoy involucrado actualmente, me tocó participar en la arquitectura y construir el sitio completamente, desde cero. Lo bueno es que lo estoy haciendo solo, por lo que propongo y aplico mis propios métodos, y lo mantengo bastante ordenado (con un código limpio y ordenado), tanto el HTML como las hojas de estilo. A medida en que lo voy desarrollando, aplico algunos métodos bastante simples pero efectivos para determinados problemas que van surgiendo, los que compartiré en este sitio en su momento.</description>
      <content>&lt;p&gt;En un proyecto en que estoy involucrado actualmente, me tocó participar en la arquitectura y construir el sitio completamente, desde cero. Lo bueno es que lo estoy haciendo solo, por lo que propongo y aplico mis propios métodos, y lo mantengo bastante ordenado (con un código limpio y ordenado), tanto el &lt;strong&gt;HTML&lt;/strong&gt; como las hojas de estilo. A medida en que lo voy desarrollando, aplico algunos métodos bastante simples pero efectivos para determinados problemas que van surgiendo, los que compartiré en este sitio en su momento.&lt;/p&gt;
&lt;p&gt;Por ahora, me interesa mostrar a través de este primer &lt;strong&gt;videocast&lt;/strong&gt; (a grandes rasgos) cómo construí el &lt;strong&gt;layout&lt;/strong&gt;, ya que felizmente quedó firmemente estructurado en todos los browsers en los que hago las pruebas. La receta: flotando cajas, un buen css reseter y mucha imaginativa a medida en que se va escribiendo código. Hasta ahora no he utilizado una sola gota de &amp;lt;a href=&amp;ldquo;&lt;a href=&#34;http://www.csslab.cl/2006/07/28/se-viene-ie7-&#34;&gt;http://www.csslab.cl/2006/07/28/se-viene-ie7-&lt;/a&gt;¡huid/&amp;rdquo; title=&amp;ldquo;Enlace al artículo &amp;ldquo;comentario condicional&amp;rdquo; en CSSLab&amp;rdquo;&amp;gt;comentario condicional&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&#39;http://www.csslab.cl/wp-includes/images/smilies/icon_biggrin.gif&#39; alt=&#39;:D&#39; class=&#39;wp-smiley&#39; /&gt; 
&lt;p&gt;Espero sea una buena ayuda a más de alguien, por último para que vean diferentes técnicas de diagramación.&lt;/p&gt;
&lt;p&gt;&lt;span id=&#34;more-165&#34;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Un detalle: trabajé mucho con los &lt;em&gt;pesos de los videos v/s calidad de compresión&lt;/em&gt; y decidí cortarlo en 2 videos al final, ya que el &lt;strong&gt;videocast&lt;/strong&gt; dura 47 minutos en total y quedó bastante pesado. Siento si esto limita a más de alguno, pero en realidad necesitaba abarcar todo el proceso. Creo que quedó bien completo.&lt;/p&gt;
&lt;h4 id=&#34;videocast-parte-1-arquitectura-y-header-small22-minutossmall&#34;&gt;Videocast parte 1: arquitectura y header &lt;small&gt;22 minutos&lt;/small&gt;&lt;/h4&gt;
&lt;div class=&#34;video-container&#34;&gt;
&lt;/div&gt;
&lt;h4 id=&#34;videocast-parte-2-contenido-small26-minutossmall&#34;&gt;Videocast parte 2: contenido &lt;small&gt;26 minutos&lt;/small&gt;&lt;/h4&gt;
&lt;div class=&#34;video-container&#34;&gt;
&lt;/div&gt;
&lt;p&gt;Además, el material utilizado (&lt;strong&gt;html, css, imágenes&lt;/strong&gt;**) está &amp;lt;a href=&amp;ldquo;&lt;a href=&#34;http://www.csslab.cl/ejemplos/videocast/csslab.cl.zip%22&#34;&gt;http://www.csslab.cl/ejemplos/videocast/csslab.cl.zip&amp;quot;&lt;/a&gt; title=&amp;ldquo;Material ZIP del videocast 1 &amp;ldquo;Layout Compuesto&amp;rdquo;&amp;quot;&amp;gt;disponible para descargar&lt;/a&gt;.**&lt;/p&gt;
&lt;p&gt;Provecho!&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Convirtiendo Listas en Árboles</title>
      <link>https://csslab.cl/2007/09/25/convirtiendo-listas-en-arboles/</link>
      <pubDate>Tue, 25 Sep 2007 21:20:04 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/09/25/convirtiendo-listas-en-arboles/</guid>
      <description>Recontra conocidas ya son los [menúes construídos con listas de ítems][1]. Los hay verticales, y muy fácil es transformarlas a horizontales. Gráficamente, existen necesidades que a través de la habilidad del diseñador/desarrollador se pueden solucionar elegantemente con unos trucos de CSS. En este caso, mostraré una manera de crear menúes tipo árboles, utilizando algunos GIF para lograr esos enlaces y nodos.
Bueno, lo primero es el código HTML. Básicamente se compone de una lista con  y algunos  tienen sublistas, como verán en el ejemplo a continuación:</description>
      <content>&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/09/menu_arbol.gif&#34; align=&#34;right&#34; class=&#34;right&#34; /&gt;
&lt;p&gt;Recontra conocidas ya son los [menúes construídos con listas de ítems][1]. Los hay verticales, y muy fácil es transformarlas a horizontales. Gráficamente, existen necesidades que a través de la habilidad del diseñador/desarrollador se pueden solucionar elegantemente con unos trucos de &lt;strong&gt;CSS&lt;/strong&gt;. En este caso, mostraré una manera de crear menúes tipo árboles, utilizando algunos &lt;strong&gt;GIF&lt;/strong&gt; para lograr esos enlaces y nodos.&lt;/p&gt;
&lt;p&gt;Bueno, lo primero es el código &lt;strong&gt;HTML&lt;/strong&gt;. Básicamente se compone de una lista con &lt;strong&gt;&lt;ul&gt;&lt;/strong&gt; y algunos &lt;strong&gt;&lt;li&gt;&lt;/strong&gt; tienen sublistas, como verán en el ejemplo a continuación:&lt;/p&gt;
&lt;p&gt;&lt;span id=&#34;more-164&#34;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;ul id=&#34;menu_arbol&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34; title=&#34;Ver las Cervezas&#34;&amp;gt;Cervezas&amp;lt;/a&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34; title=&#34;Enlace a cerveza Pilsen&#34;&amp;gt;Pilsen&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34; title=&#34;Enlace a cerveza Bock&#34;&amp;gt;Bock&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34; title=&#34;Enlace a cerveza Lager&#34;&amp;gt;Lager&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34; title=&#34;Enlace a cerveza Ale&#34;&amp;gt;Ale&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34; title=&#34;Ver los Vinos&#34;&amp;gt;Vinos&amp;lt;/a&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34; title=&#34;Enlace a Vino Merlot&#34;&amp;gt;Merlot&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34; title=&#34;Enlace a Vino Sirah&#34;&amp;gt;Sirah&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34; title=&#34;Ver los Licores&#34;&amp;gt;Licores&amp;lt;/a&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34; title=&#34;Enlace Licor Ron&#34;&amp;gt;Ron&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34; title=&#34;Enlace a Licor Vodka&#34;&amp;gt;Vodka&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver hasta aquí (1)][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Una simple lista de 3 items donde 2 de ellos tienen subitems. En esta caso será un menú, pero puede ser también sólo una [lista de elementos][3] (ordenados &lt;strong&gt;&lt;ol&gt;&lt;/strong&gt; o desordenados &lt;strong&gt;&lt;ul&gt;&lt;/strong&gt;) sin enlaces. Bueno, a lo nuestro.&lt;/p&gt;
&lt;p&gt;Primero que todo, a través del &lt;strong&gt;CSS&lt;/strong&gt; esconderemos los &lt;strong&gt;bullets&lt;/strong&gt;, ya que los reemplazaremos por una imagen de una línea vertical.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;ul#menu_arbol, ul#menu_arbol ul {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list-style-type: none;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(imagenes/linea_vertical.gif) repeat-y;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
ul#menu_arbol li {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 0 10px;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  ul#menu_arbol ul {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin-left: 5px;&amp;lt;br /&gt;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver hasta aquí (2)][4]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Ahora, conectamos los nodos:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt; ul#menu_arbol li {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 0 10px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(imagenes/nodo.gif) no-repeat;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver hasta aquí (3)][5]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Finalmente, nos queda poner otra imagen donde las listas se cierren. Esto lo tendremos que hacer agregando una &lt;strong&gt;class&lt;/strong&gt; manualmente a los últimos ítems de cada lista:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt; ul#menu_arbol li.cierre {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: #FFF url(imagenes/cierre.gif) left top no-repeat;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Importante fijarse que en este punto se agregó un color de &lt;strong&gt;background&lt;/strong&gt; (blanco) lo que se hizo necesario para tapar la línea vertical que pasa por debajo (dado que esta imagen es un &lt;strong&gt;GIF&lt;/strong&gt; transparente).&lt;/p&gt;
&lt;p&gt;[Ver hasta aquí (4)][6]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Con eso estaríamos, pero hagamos esto bien de una. Podemos automatizar tarea de agregar las &lt;strong&gt;class&lt;/strong&gt;, a través de &lt;strong&gt;Javascript&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt; window.onload = function () {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var tree = document.getElementById(&#34;menu_arbol&#34;);&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var lists = [ menu_arbol ];&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (var i = 0; i &amp;lt; tree.getElementsByTagName(&#34;ul&#34;).length; i++)&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lists[lists.length] = tree.getElementsByTagName(&#34;ul&#34;)[i];&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (var i = 0; i &amp;lt; lists.length; i++) {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var item = lists[i].lastChild;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (!item.tagName || item.tagName.toLowerCase() != &#34;li&#34;)&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;item = item.previousSibling;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;item.className += &#34; cierre&#34;;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;br /&gt;
};&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto lo que hará será primero buscar en todos los &lt;strong&gt;&lt;ul&gt;&lt;/strong&gt; (&lt;strong&gt;getElementsByTagName&lt;/strong&gt;) su último nodo (&lt;strong&gt;lastChild&lt;/strong&gt;) y le agregará la &lt;strong&gt;class=&amp;ldquo;cierre&amp;rdquo;&lt;/strong&gt; que creamos (&lt;strong&gt;className +&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;[Ver hasta aquí (5)][7]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Podemos también agregarle movimiento, un &lt;strong&gt;toggle()&lt;/strong&gt; por ejemplo. Utilicen el &lt;strong&gt;framework&lt;/strong&gt; que más les acomode, en este caso aprovecharé lo liviano de [&lt;strong&gt;Mootools&lt;/strong&gt;][8]:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-javascript&#34;&gt;window.addEvent(&amp;#8217;domready&amp;#8217;, function(){&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var mySlide = new Fx.Slide(&amp;#8217;cervezas&amp;#8217;);&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mySlide.hide()&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&amp;#8217;toggle_c&amp;#8217;).addEvent(&amp;#8217;click&amp;#8217;, function(e){&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e = new Event(e);&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mySlide.toggle();&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.stop();&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;lt;br /&gt;
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Primero, tomamos el &lt;strong&gt;#cervezas&lt;/strong&gt; y lo escondemos &lt;strong&gt;(mySlide.hide()&lt;/strong&gt;); luego, tomamos el &lt;strong&gt;#toggle_c&lt;/strong&gt; (que se lo dí al &lt;strong&gt;&lt;ul&gt;&lt;/strong&gt; del subítem) y le damos la instrucción de mostrarlo o esconderlo cuando le haga un click (&lt;strong&gt;$(’toggle_c’).addEvent(’click’)&lt;/strong&gt; y &lt;strong&gt;mySlide.toggle();&lt;/strong&gt;). Luego, se repite con los otros elementos de la lista.&lt;/p&gt;
&lt;p&gt;[Ver ejemplo final][9]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Por supuesto, todo el código a través de un &lt;em&gt;view source&lt;/em&gt; de los ejemplos.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2006/02/20/menu-horizontal-y-algo/&#34;&gt;http://www.csslab.cl/2006/02/20/menu-horizontal-y-algo/&lt;/a&gt; &amp;ldquo;Leer &amp;ldquo;Menú horizontal y algo +&amp;rdquo;&amp;rdquo;
[2]: /ejemplos/menu_arbol/1.html &amp;ldquo;Ver ejemplo hasta paso 1&amp;rdquo;
[3]: &lt;a href=&#34;http://www.csslab.cl/2007/08/31/listo-para-las-listas/&#34;&gt;http://www.csslab.cl/2007/08/31/listo-para-las-listas/&lt;/a&gt; &amp;ldquo;Listo para las listas&amp;rdquo;
[4]: /ejemplos/menu_arbol/2.html &amp;ldquo;Ver ejemplo hasta paso 2&amp;rdquo;
[5]: /ejemplos/menu_arbol/3.html &amp;ldquo;Ver ejemplo hasta paso 3&amp;rdquo;
[6]: /ejemplos/menu_arbol/4.html &amp;ldquo;Ver ejemplo hasta paso 4&amp;rdquo;
[7]: /ejemplos/menu_arbol/5.html &amp;ldquo;Ver ejemplo hasta paso 5&amp;rdquo;
[8]: &lt;a href=&#34;http://www.csslab.cl/2007/05/18/arrastrando-con-moo/&#34;&gt;http://www.csslab.cl/2007/05/18/arrastrando-con-moo/&lt;/a&gt; &amp;ldquo;Leer &amp;ldquo;Arrastrando con Moo&amp;rdquo;&amp;rdquo;
[9]: /ejemplos/menu_arbol/6.html &amp;ldquo;Ver ejemplo final&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>textos_muy_largos_que_quiebran_nuestro_layout</title>
      <link>https://csslab.cl/2007/09/10/textos_muy_largos_que_quiebran_nuestro_layout/</link>
      <pubDate>Mon, 10 Sep 2007 17:24:58 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/09/10/textos_muy_largos_que_quiebran_nuestro_layout/</guid>
      <description>Son excepciones, pero suceden momentos en que tienes tu layout bien ordenado y estructurado, y por esas cosas de la vida ingresas un texto muy largo (una URL de esas extensas) o en el comentario alguien lo hace, y toda la armonía que tenías en tu diseño se quiebra. No te quita el sueño, pero sí molesta. Las columnas se van a la cresta, enfin. Felizmente para esto existe una solución, y un hack.</description>
      <content>&lt;p&gt;Son excepciones, pero suceden momentos en que tienes tu &lt;em&gt;layout&lt;/em&gt; bien ordenado y estructurado, y por esas cosas de la vida ingresas un texto muy largo (una &lt;strong&gt;URL&lt;/strong&gt; de esas extensas) o en el comentario alguien lo hace, y toda la armonía que tenías en tu diseño se quiebra. No te quita el sueño, pero sí molesta. Las columnas se van a la cresta, enfin. Felizmente para esto existe una solución, y un &lt;em&gt;hack&lt;/em&gt;. Pero, atentos pueden adelantarse, en este caso el &lt;em&gt;hack&lt;/em&gt; no es para &lt;strong&gt;IE&lt;/strong&gt;… Es para &lt;strong&gt;Firefox&lt;/strong&gt; y &lt;strong&gt;Opera&lt;/strong&gt; (¿?).&lt;/p&gt;
&lt;h3 id=&#34;word-wrap&#34;&gt;word-wrap&lt;/h3&gt;
&lt;p&gt;La propiedad &lt;strong&gt;word-wrap&lt;/strong&gt; especifica que la línea de texto debe quebrarse si su longitud excede el especificado por él mismo, y/o la caja que lo contiene. Sus valores son: &lt;strong&gt;normal&lt;/strong&gt; (por defecto, o sea, el texto seguirá siendo largo) y &lt;strong&gt;break-word&lt;/strong&gt; (lo que nos interesa: la mega-palabra se cortará apenas encuentre el final del ancho definido).&lt;/p&gt;
&lt;p&gt;&lt;span id=&#34;more-162&#34;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;p {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;word-wrap: break-word;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Ahora, ¿qué demonios pasa con &lt;strong&gt;Firefox&lt;/strong&gt; y &lt;strong&gt;Opera&lt;/strong&gt;? ¿Porqué nos está dando problemas justo ahora? Bueno, nada es perfecto, pero tenemos que darle algún tipo de solución, o ese maldito &lt;em&gt;scroll&lt;/em&gt; horizontal seguirá molestando. Lo que se me viene a la cabeza en estos momentos (quedo abierto a sugerencias) es que si está demás, escondámoslo.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;p {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;word-wrap: break-word;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;overflow: hidden;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver ejemplo completo][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Notarán que en el primer parágrafo, no tiene estilo alguno y la línea seguirá por siempre en la horizontal. En el parágrafo del medio, tiene la propiedad &lt;strong&gt;word-wrap&lt;/strong&gt; aplicada pero se ve mal en &lt;strong&gt;Firefox&lt;/strong&gt; y &lt;strong&gt;Opera&lt;/strong&gt;. Ya la tercera y última línea de texto agregamos el &lt;strong&gt;overflow: hidden&lt;/strong&gt; para que esconda lo que sobra en estos browsers que no aplican bien esta propiedad &lt;strong&gt;CSS 3&lt;/strong&gt;. Fue la única solución que se me ocurrió para no desarmar el layout (total si es el caso de un link extenso, éste podrá ser clickeado de todas maneras por el área que permanece visible).&lt;/p&gt;
&lt;h3 id=&#34;links&#34;&gt;Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/css3-text/#word-wrap&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;the word-wrap property&amp;quot;&#34;&gt;Force Wrapping: the ‘word-wrap’ property&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: /ejemplos/wordwrap/index.html &amp;ldquo;Enlace a ejemplo de &amp;ldquo;Word-wrap&amp;rdquo;&amp;rdquo;
[2]: /ejemplos/wordwrap/index2.html &amp;ldquo;Enlace a ejemplo 2 de &amp;ldquo;Word-wrap&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>ImageMap: mapeando imágenes en el siglo XX</title>
      <link>https://csslab.cl/2007/09/04/imagemap-mapeando-imagenes-en-el-siglo-xx/</link>
      <pubDate>Tue, 04 Sep 2007 21:38:43 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/09/04/imagemap-mapeando-imagenes-en-el-siglo-xx/</guid>
      <description>Viejos tiempos esos de la etiqueta . Aunque me he deparado más de alguna vez en el presente siglo con sitios donde ponen un GIF y luego lo mapean creando links de navegación. Pésimo. Con Flickr se le dió un nuevo uso al método de agregar zonas sensibles dentro de imágenes con información anexa, lo cual se vió con muy buenos ojos cuando se necesita mostrar detalles de ciertas zonas dentro de las imágenes.</description>
      <content>&lt;p&gt;Viejos tiempos esos de la etiqueta &lt;strong&gt;&lt;map&gt;&lt;/strong&gt;. Aunque me he deparado más de alguna vez en el presente siglo con sitios donde ponen un &lt;strong&gt;GIF&lt;/strong&gt; y luego lo mapean creando links de navegación. Pésimo. Con &lt;a href=&#34;http://www.flickr.com/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a Flickr.com&#34;&gt;Flickr&lt;/a&gt; se le dió un nuevo uso al método de agregar zonas sensibles dentro de imágenes con información anexa, lo cual se vió con muy buenos ojos cuando se necesita &lt;a href=&#34;http://www.flickr.com/photos/mortimer/491248655/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo de ejemplo&#34;&gt;mostrar detalles de ciertas zonas dentro de las imágenes&lt;/a&gt;. Existen un par de técnicas pululando por la web que hacen este trabajo, pero encontré una que se necesita sólo &lt;strong&gt;CSS&lt;/strong&gt; para realizarlo. Funciona perfecto en todos los browsers con los que hice las pruebas, y además aprovecha la [semántica con la que recién estuve escribiendo][1]; precisamente utilizaremos la etiqueta de definición de listas &lt;strong&gt;&lt;dl&gt;&lt;/strong&gt;, con lo que definiremos 2 instancias: con &lt;strong&gt;&lt;dt&gt;&lt;/strong&gt; determinamos el concepto de la zona sensible y con &lt;strong&gt;&lt;dd&gt;&lt;/strong&gt; la definición de esa zona, la que se mostrará sólo cuando posamos el mouse sobre &lt;strong&gt;&lt;dt&gt;&lt;/strong&gt;. La idea es que a través de [posicionamiento absoluto][2], definimos las diferentes zonas que queremos que contengan la información auxiliar y con &lt;strong&gt;&lt;dd&gt;&lt;/strong&gt; escondido (&lt;strong&gt;display: none;&lt;/strong&gt;) tendrá el texto que queremos mostrar luego. Para &lt;strong&gt;IE6&lt;/strong&gt; tendremos la ayuda de &lt;strong&gt;&lt;a&gt;&lt;/strong&gt; para que la &lt;strong&gt;pseudo-class :hover&lt;/strong&gt; funcione como queremos.&lt;/p&gt;
&lt;p&gt;&lt;span id=&#34;more-161&#34;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;El HTML será simple de entender:&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;dl id=&#34;masaje_img&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;dt&gt;Masajista&lt;/dt&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;dd id=&#34;masajista_def&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&#34;#&#34;&gt;&lt;span&gt;Un masajista es&amp;#8230;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/dd&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;dt&gt;Disponibilidad&lt;/dt&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;dd id=&#34;disponible_def&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&#34;#&#34;&gt;&lt;span&gt;Un asiento disponible es&amp;#8230;.&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/dd&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;dt&gt;Concentraci&amp;oacute;n&lt;/dt&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;dd id=&#34;concentracion_def&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&#34;#&#34;&gt;&lt;span&gt;La concentraci&amp;oacute;n es&amp;#8230;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/dd&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;dt&gt;Masajeado&lt;/dt&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;dd id=&#34;masajeado_def&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&#34;#&#34;&gt;&lt;span&gt;Masajeado es&amp;#8230;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/dd&gt;&lt;br /&gt; &lt;/dl&gt;
&lt;/p&gt;
&lt;p&gt;Tenemos definidas 4 zonas sensibles para una imagen. Cada una tiene su término &lt;dt&gt; y la definición de ese término &lt;dd&gt;. (aunque para este motivo sirven estas etiquetas, quizás para el que piensas hacer no sea así; viene de tí encontrar alguna otra etiqueta que las reemplace). Todo eso está contenido por su &lt;dl&gt; como esperado. Ya el CSS traae la magia. Lo explicaré com más cautela:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  dl#masaje_img {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: relative;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(&#34;masaje.jpg&#34;) left top no-repeat;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 500px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 353px;&lt;br /&gt; }&lt;br /&gt; dt {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: none;&lt;br /&gt; }&lt;br /&gt; dd {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;&lt;br /&gt; }
&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;en &lt;strong&gt;dl#masaje_img&lt;/strong&gt; definimos la imagen de fondo y sus propiedades de alto y ancho. Además, tiene posicionamiento relativo ya que contendrá sus términos y definiciones (&lt;strong&gt;dt&lt;/strong&gt; y &lt;strong&gt;dd&lt;/strong&gt;) absolutamente.&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  dd#masajista_def {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;top: 5px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;left: 14px;&lt;br /&gt; }&lt;br /&gt; dd#masajista_def a {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 73px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 69px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-decoration: none;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border: 1px dashed red;&lt;br /&gt; }&lt;br /&gt; dd#masajista_def a span {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: none;&lt;br /&gt; }&lt;br /&gt; dd#masajista_def a:hover {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: transparent;&lt;br /&gt; }&lt;br /&gt; dd#masajista_def a:hover span {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: block;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-indent: 0;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: #CCC;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-weight: bolder;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border: 1px dashed #666;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;left: 100%;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 0;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 5px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 250%;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;En &lt;strong&gt;dd#masajista_def {}&lt;/strong&gt; definimos su posición absoluta respecto al contenedor &lt;strong&gt;&lt;dl&gt;&lt;/strong&gt;. Luego, &lt;strong&gt;dd#masajista_def a {}&lt;/strong&gt; corresponde al cuadrado sensible, el que tiene su ancho y alto. Ya &lt;strong&gt;dd#masajista_def a span {}&lt;/strong&gt; es lo que tendrá el texto que se mostrará cuando el mouse se pose sobre la zona sensible que definimos anteriormente. Importante es &lt;strong&gt;dd#masajista_def a:hover {}&lt;/strong&gt; para &lt;strong&gt;IE6&lt;/strong&gt;, ya que sin él no funciona la &lt;strong&gt;pseudo-class :hover&lt;/strong&gt; (prueben quitándolo). &lt;strong&gt;IE6&lt;/strong&gt; necesita que un link tenga algo dentro de él para mostrar su &lt;strong&gt;pseudo-class&lt;/strong&gt;, entonces qué mejor que definir un &lt;strong&gt;background&lt;/strong&gt; pero transparente. Bien engañado. Finalmente, &lt;strong&gt;dd#masajista_def a:hover span {}&lt;/strong&gt; nos dice que se muestre el texto (junto a algunas propiedades de estilo y posicionamiento).&lt;/p&gt;
&lt;p&gt;Esto se repite para cada una de las zonas que quieras tener dentro de tu imagen, cuidando siempre de crear un &lt;strong&gt;ID&lt;/strong&gt; para cada una. ¿Divertido, no?&lt;/p&gt;
&lt;p&gt;[Ver ejemplo][3]&lt;/p&gt;
&lt;h3 id=&#34;links&#34;&gt;Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://frankmanno.com/ideas/css-imagemap-redux/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;CSS Image Maps, Redux&amp;quot;&#34;&gt;CSS Image Maps, Redux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2007/08/31/listo-para-las-listas/&#34;&gt;http://www.csslab.cl/2007/08/31/listo-para-las-listas/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Listo para las listas&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2007/05/11/absolutamente-si/&#34;&gt;http://www.csslab.cl/2007/05/11/absolutamente-si/&lt;/a&gt; &amp;ldquo;Enlace en CSSLab a &amp;ldquo;Absolutamente sí&amp;rdquo;&amp;rdquo;
[3]: /ejemplos/imagemap/index.html &amp;ldquo;Enlace a ejemplo de &amp;ldquo;Mapeando imagenes&amp;rdquo;&amp;rdquo;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Listo para las listas</title>
      <link>https://csslab.cl/2007/08/31/listo-para-las-listas/</link>
      <pubDate>Fri, 31 Aug 2007 15:21:08 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/08/31/listo-para-las-listas/</guid>
      <description>&lt;p&gt;Últimamente me he puesto a escribir más artículos teóricos que prácticos. Siento desilucionar a algunos quienes entran a &lt;strong&gt;CSSLab&lt;/strong&gt; por soluciones a sus problemas diarios en sus proyectos web, pero me interesa bastante difundir conocimiento, para así prevenir futuros problemas. Siempre es mejor prevenir que remediar.&lt;/p&gt;
&lt;p&gt;Bueno en este caso, volveré a tocar el tema de las queridas listas en &lt;strong&gt;HTML&lt;/strong&gt;. Son bastante útiles, ya que sus propiedades intrínsecas (el que sean elemento bloque y contengan bastante rígido su contenido) las hace muy maleables al momento de estructurar menús, por ejemplo. Pero como ando semántico por estos días, quiero aclarar qué son y cómo utilizar las listas.&lt;/p&gt;
&lt;p&gt;Comencemos por lo básico. Una lista no es lo mismo que una secuencia. Una regla mental básica puede ayudarte a delucidar cuándo una lista es una lista:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Si creamos una lista y le quitamos sus marcadores (bullets o números) con &lt;strong&gt;CSS&lt;/strong&gt;, entonces probablemente no es una lista&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Esto hace ver que nuestro menú con listas no son semánticos. Los elementos de este menú son secuenciales, pero no necesariamente pertenecen a una lista. &lt;a href=&#34;http://www.csslab.cl/2006/11/14/mas-estilos-a-las-listas/&#34; title=&#34;Ir a Más estilos a las Listas en CSSLab&#34;&gt;Les damos estilos&lt;/a&gt;, &lt;a href=&#34;http://www.csslab.cl/2006/02/20/menu-horizontal-y-algo/&#34; title=&#34;Ir a Menú horizontal y algo más en CSSLab&#34;&gt;les ponemos fondos&lt;/a&gt;, cambiamos su color con &lt;strong&gt;:hover&lt;/strong&gt;, pero si le quitamos los estilos, vuelve a ser una lista (ordenada o no) de elementos. No una secuencia. Entonces sí tiene sentido que sea una lista.&lt;/p&gt;
&lt;p&gt;En HTML existen 3 tipos de listas:&lt;/p&gt;</description>
      <content>&lt;p&gt;Últimamente me he puesto a escribir más artículos teóricos que prácticos. Siento desilucionar a algunos quienes entran a &lt;strong&gt;CSSLab&lt;/strong&gt; por soluciones a sus problemas diarios en sus proyectos web, pero me interesa bastante difundir conocimiento, para así prevenir futuros problemas. Siempre es mejor prevenir que remediar.&lt;/p&gt;
&lt;p&gt;Bueno en este caso, volveré a tocar el tema de las queridas listas en &lt;strong&gt;HTML&lt;/strong&gt;. Son bastante útiles, ya que sus propiedades intrínsecas (el que sean elemento bloque y contengan bastante rígido su contenido) las hace muy maleables al momento de estructurar menús, por ejemplo. Pero como ando semántico por estos días, quiero aclarar qué son y cómo utilizar las listas.&lt;/p&gt;
&lt;p&gt;Comencemos por lo básico. Una lista no es lo mismo que una secuencia. Una regla mental básica puede ayudarte a delucidar cuándo una lista es una lista:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Si creamos una lista y le quitamos sus marcadores (bullets o números) con &lt;strong&gt;CSS&lt;/strong&gt;, entonces probablemente no es una lista&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Esto hace ver que nuestro menú con listas no son semánticos. Los elementos de este menú son secuenciales, pero no necesariamente pertenecen a una lista. &lt;a href=&#34;http://www.csslab.cl/2006/11/14/mas-estilos-a-las-listas/&#34; title=&#34;Ir a Más estilos a las Listas en CSSLab&#34;&gt;Les damos estilos&lt;/a&gt;, &lt;a href=&#34;http://www.csslab.cl/2006/02/20/menu-horizontal-y-algo/&#34; title=&#34;Ir a Menú horizontal y algo más en CSSLab&#34;&gt;les ponemos fondos&lt;/a&gt;, cambiamos su color con &lt;strong&gt;:hover&lt;/strong&gt;, pero si le quitamos los estilos, vuelve a ser una lista (ordenada o no) de elementos. No una secuencia. Entonces sí tiene sentido que sea una lista.&lt;/p&gt;
&lt;p&gt;En HTML existen 3 tipos de listas:&lt;/p&gt;
&lt;h3 id=&#34;dl-definition-lists&#34;&gt;&lt;dl&gt; definition lists&lt;/h3&gt;
&lt;p&gt;Las listas de definición corresponden a pares de término y su definición.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;dl&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dt&amp;gt;Beodo&amp;lt;/dt&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dd&amp;gt;Un beodo es un ebrio, borracho.&amp;lt;/dd&amp;gt;&amp;lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;dt&gt;&lt;/strong&gt; corresponde a un &lt;em&gt;definition term&lt;/em&gt;, o en castellano un término a definir. Ya &lt;strong&gt;&lt;dd&gt;&lt;/strong&gt; es la descripción de ese término.&lt;/p&gt;
&lt;h3 id=&#34;ul-unordered-lists&#34;&gt;&lt;ul&gt; unordered lists&lt;/h3&gt;
&lt;p&gt;Listas desordenadas son viejas amigas. Se utilizan cuando no importa el orden de los elementos contenidos. Como por ejemplo, en los ingredientes del vital alimento del beodo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;vaso&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;cerveza&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;sed&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aquí da lo mismo el orden de los factores, el que no alterará el producto final.&lt;/p&gt;
&lt;h3 id=&#34;ol-ordered-lists&#34;&gt;&lt;ol&gt; ordered lists&lt;/h3&gt;
&lt;p&gt;Ya las listas ordenadas sí importa en qué orden las pongamos. Por eso por defecto, &lt;strong&gt;&lt;ol&gt;&lt;/strong&gt; se renderiza con números secuenciales.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;ol&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;Toma la cerveza y ponla a esfriar.&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;Prepara tu sed, en 1 hora y media aproximadamente ya podr&amp;aacute;s saciarla.&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;Vierte la cerveza helada en un vaso y empina tu brazo hacia  tu boca.&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Espero haya quedado claro, y con esto ayude a que sus contenidos tengan más sentido a sus usuarios y principalmente a los buscadores, lo que les asegurará mejores posicionamientos en ellos.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/html401/struct/lists.html&#34; target=&#34;_blank&#34; title=&#34;Leer este enlace externo&#34;&gt;W3.org: Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.autisticcuckoo.net/archive.php?id=2007/08/07/lists&#34; target=&#34;_blank&#34; title=&#34;Leer este enlace externo&#34;&gt;Lists @ The Autistic Cuckoo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>La semántica en la Web 3.0</title>
      <link>https://csslab.cl/2007/08/30/la-semantica-en-la-web-30/</link>
      <pubDate>Thu, 30 Aug 2007 21:43:51 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/08/30/la-semantica-en-la-web-30/</guid>
      <description>&lt;p&gt;Aunque ha estado bastante de moda, me ha sido complicado dar una definición o hacerme parte de alguna sobre la &lt;strong&gt;Web 2.0&lt;/strong&gt;. Creo que por lo mismo, porque ha sido tanto lo que le han dado que me hace ser reticente a unirme a ello. Enfin, más que los [estilos gráficos][1] o una manera diferente de construir sitios webs, me gusta el cambio de comportamiento en el usuario que ha conllevado, pasando de una web empresarial, una vitrina de información, a una web social donde el usuario toma el poder y toma la información como propia. Con la &lt;strong&gt;Web 3.0&lt;/strong&gt; me pasa algo similar, no existe aún un concenso pero sí está la idea: una [web semántica][2] donde se comporta tal como un ecosistema que evoluciona de acuerdo al contenido que alberga. Lo de semántico tiene mucho que ver, ya que lo hace universal, le da un sentido a cada elemento o atributo que contiene y lo potencia en los buscadores, que deberían de procesar todos estos avances y entregárnoslo como resultados más precisos y acertados.&lt;/p&gt;
&lt;p&gt;A raíz de eso, les tengo un reto. A ver si conocían las siguientes etiquetas &lt;strong&gt;HTML&lt;/strong&gt;, y su significado:&lt;/p&gt;</description>
      <content>&lt;p&gt;Aunque ha estado bastante de moda, me ha sido complicado dar una definición o hacerme parte de alguna sobre la &lt;strong&gt;Web 2.0&lt;/strong&gt;. Creo que por lo mismo, porque ha sido tanto lo que le han dado que me hace ser reticente a unirme a ello. Enfin, más que los [estilos gráficos][1] o una manera diferente de construir sitios webs, me gusta el cambio de comportamiento en el usuario que ha conllevado, pasando de una web empresarial, una vitrina de información, a una web social donde el usuario toma el poder y toma la información como propia. Con la &lt;strong&gt;Web 3.0&lt;/strong&gt; me pasa algo similar, no existe aún un concenso pero sí está la idea: una [web semántica][2] donde se comporta tal como un ecosistema que evoluciona de acuerdo al contenido que alberga. Lo de semántico tiene mucho que ver, ya que lo hace universal, le da un sentido a cada elemento o atributo que contiene y lo potencia en los buscadores, que deberían de procesar todos estos avances y entregárnoslo como resultados más precisos y acertados.&lt;/p&gt;
&lt;p&gt;A raíz de eso, les tengo un reto. A ver si conocían las siguientes etiquetas &lt;strong&gt;HTML&lt;/strong&gt;, y su significado:&lt;/p&gt;
&lt;h3 id=&#34;kbd&#34;&gt;&lt;kbd&gt;&lt;/h3&gt;
&lt;p&gt;Con esta etiqueta estamos indicando que el usuario debe utilizar alguna tecla de su teclado para realizar alguna función.&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;p&gt;A ra&amp;iacute;z de esto, debemos presionar &lt;kbd&gt;ESC&lt;/kbd&gt; para salir de la aplicaci&amp;oacute;n.&lt;/p&gt;
&lt;/p&gt;
&lt;h3 id=&#34;var&#34;&gt;&lt;var&gt;&lt;/h3&gt;
&lt;p&gt;Tal como deben de imaginarse, &lt;strong&gt;var&lt;/strong&gt; indica una variable de algún lenguaje de programación. Tiene un estilo por defecto, el cual transforma la tipografía en &lt;em&gt;monospace&lt;/em&gt;.&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;p&gt;En el siguiente c&amp;oacute;digo Javascript, la variable &lt;var&gt;validarCampo&lt;/var&gt; se utiliza precisamente&amp;#8230;..&lt;/p&gt;
&lt;/p&gt;
&lt;h3 id=&#34;dfn&#34;&gt;&lt;dfn&gt;&lt;/h3&gt;
&lt;p&gt;Introduce un término, o una definición a tu texto.&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;p&gt;Y cuando digo &lt;dfn&gt;beodo&lt;/dfn&gt;, me refiero a cuando un ser&amp;#8230;.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;¿Habían utilizado alguna vez alguno de esos?&lt;/p&gt;
&lt;h3 id=&#34;links&#34;&gt;Links:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.sitepoint.com/blogs/2007/04/02/are-you-ready-for-web-30/&#34; target=&#34;_blank&#34; title=&#34;Leer este art&amp;iacute;culo&#34;&gt;Web 3.0&lt;br /&gt; by Jeffrey Zeldman&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.alistapart.com/articles/web3point0&#34; target=&#34;_blank&#34; title=&#34;Leer este art&amp;iacute;culo&#34;&gt;Are You Ready For Web 3.0?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/2006/09/11/diseno-a-lo-20/&#34;&gt;http://www.csslab.cl/2006/09/11/diseno-a-lo-20/&lt;/a&gt; &amp;ldquo;Ir a Diseño a lo &amp;ldquo;2.0&amp;rdquo; en CSSLab&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/2006/04/12/un-paseo-por-la-semantica/&#34;&gt;http://www.csslab.cl/2006/04/12/un-paseo-por-la-semantica/&lt;/a&gt; &amp;ldquo;Ir a Un paseo por la Semántica en CSSLab&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo que se viene: HTML 5</title>
      <link>https://csslab.cl/2007/08/21/lo-que-se-viene-html-5/</link>
      <pubDate>Tue, 21 Aug 2007 22:52:24 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/08/21/lo-que-se-viene-html-5/</guid>
      <description>&lt;p&gt;Por primera vez en este milenio, nuevos elementos son agregados a &lt;strong&gt;HTML&lt;/strong&gt;. Nuevas etiquetas de estructura, nuevos elementos de línea, nuevas maneras de agregar objetos y nuevos elementos interactivos son algunas de sus promisorias bondades.&lt;/p&gt;
&lt;p&gt;El desarrollo de &lt;strong&gt;HTML&lt;/strong&gt; quedó estancado en 1999 con &lt;strong&gt;HTML 4&lt;/strong&gt;. Desde ahí hasta ahora, la guerra de browsers no ha terminado: &lt;strong&gt;IExplorer&lt;/strong&gt; con una gran parte de la cancha cubierta y &lt;strong&gt;Firefox&lt;/strong&gt; y &lt;strong&gt;Opera&lt;/strong&gt; dando la batalla por ganarse su merecido espacio. Desafortunadamente han dejado de lado una buena parte de los consejos de la &lt;strong&gt;W3C&lt;/strong&gt; sobre los estándares, y se han esforzado en ofrecer &lt;strong&gt;tabs&lt;/strong&gt;, &lt;strong&gt;password managers&lt;/strong&gt; y lectores de &lt;strong&gt;RSS&lt;/strong&gt; integrados, aparte de agregar &lt;strong&gt;skins&lt;/strong&gt; y temas customizables. Era hora de hacer algo por el fondo mismo: el código fuente.&lt;/p&gt;
&lt;p&gt;Viendo que nada pasaba por parte de la &lt;strong&gt;W3C&lt;/strong&gt; (quienes siguen enfocados con &lt;strong&gt;SVG&lt;/strong&gt;, &lt;strong&gt;XForms&lt;/strong&gt; y &lt;strong&gt;MathML&lt;/strong&gt;), recientemente, 3 de los mayores fabricantes de browsers: &lt;strong&gt;Apple&lt;/strong&gt;, &lt;strong&gt;Mozilla&lt;/strong&gt; y &lt;strong&gt;Opera&lt;/strong&gt; se unieron para desarrollar una versión mejorada del clásico &lt;strong&gt;HTML&lt;/strong&gt;. Más reciente aún, la &lt;strong&gt;W3C&lt;/strong&gt; despertó y escuchó al grupo y la nueva &lt;strong&gt;HTML 5&lt;/strong&gt; porfin ve una luz.&lt;/p&gt;
&lt;p&gt;Pero no se preocupen, no han reinventado la rueda.&lt;/p&gt;</description>
      <content>&lt;p&gt;Por primera vez en este milenio, nuevos elementos son agregados a &lt;strong&gt;HTML&lt;/strong&gt;. Nuevas etiquetas de estructura, nuevos elementos de línea, nuevas maneras de agregar objetos y nuevos elementos interactivos son algunas de sus promisorias bondades.&lt;/p&gt;
&lt;p&gt;El desarrollo de &lt;strong&gt;HTML&lt;/strong&gt; quedó estancado en 1999 con &lt;strong&gt;HTML 4&lt;/strong&gt;. Desde ahí hasta ahora, la guerra de browsers no ha terminado: &lt;strong&gt;IExplorer&lt;/strong&gt; con una gran parte de la cancha cubierta y &lt;strong&gt;Firefox&lt;/strong&gt; y &lt;strong&gt;Opera&lt;/strong&gt; dando la batalla por ganarse su merecido espacio. Desafortunadamente han dejado de lado una buena parte de los consejos de la &lt;strong&gt;W3C&lt;/strong&gt; sobre los estándares, y se han esforzado en ofrecer &lt;strong&gt;tabs&lt;/strong&gt;, &lt;strong&gt;password managers&lt;/strong&gt; y lectores de &lt;strong&gt;RSS&lt;/strong&gt; integrados, aparte de agregar &lt;strong&gt;skins&lt;/strong&gt; y temas customizables. Era hora de hacer algo por el fondo mismo: el código fuente.&lt;/p&gt;
&lt;p&gt;Viendo que nada pasaba por parte de la &lt;strong&gt;W3C&lt;/strong&gt; (quienes siguen enfocados con &lt;strong&gt;SVG&lt;/strong&gt;, &lt;strong&gt;XForms&lt;/strong&gt; y &lt;strong&gt;MathML&lt;/strong&gt;), recientemente, 3 de los mayores fabricantes de browsers: &lt;strong&gt;Apple&lt;/strong&gt;, &lt;strong&gt;Mozilla&lt;/strong&gt; y &lt;strong&gt;Opera&lt;/strong&gt; se unieron para desarrollar una versión mejorada del clásico &lt;strong&gt;HTML&lt;/strong&gt;. Más reciente aún, la &lt;strong&gt;W3C&lt;/strong&gt; despertó y escuchó al grupo y la nueva &lt;strong&gt;HTML 5&lt;/strong&gt; porfin ve una luz.&lt;/p&gt;
&lt;p&gt;Pero no se preocupen, no han reinventado la rueda.&lt;/p&gt;
&lt;p&gt;Permanecen nuestros viejos amigos &lt;strong&gt;&lt;p&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;strong&gt;&lt;/strong&gt; pero se incluyen nuevas etiquetas que refuerzan la semántica: &lt;strong&gt;&lt;section&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;header&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;footer&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;nav&gt;&lt;/strong&gt;, entre otros. Nada de otro mundo, pero muy útiles. Seguro que te preocupa si &lt;strong&gt;Netscape 4&lt;/strong&gt; aún reconocerá esos nuevos elementos. Pues esto fue pensado para ser degradable, o sea, ser reconocido por versiones antiguas de navegadores. Si no, dificilmente se haría la migración.&lt;/p&gt;
&lt;h3 id=&#34;estructura&#34;&gt;Estructura&lt;/h3&gt;
&lt;p&gt;La idea es que a través de nuevas etiquetas, las que no asustan para nada ya que tienen nombres muy obvios, construímos nuestros sitios antes llenos y colapsados de &lt;strong&gt;div’s&lt;/strong&gt;. Ahorraremos bastantes ahora. Con el siguiente ejemplo, recrearemos lo que usualmente hacemos hasta ahora:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;html&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;head&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;Ejemplo&amp;lt;/title&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/head&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;contenedor&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;encabezado&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h1&amp;gt;Titulo de este ejemplo&amp;lt;/h1&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;contenido&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;menu&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;&#34; title=&#34;Ir a Uno&#34;&amp;gt;Uno&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;&#34; title=&#34;Ir a Dos&#34;&amp;gt;Dos&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;&#34; title=&#34;Ir a Tres&#34;&amp;gt;Tres&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;columna&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Proin at eros non eros.........&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&#34;pie&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;copyleft&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&amp;lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Bastantes &lt;strong&gt;div’s&lt;/strong&gt; para una página simple, con un contenedor donde cabe mi encabezado, mi contenido con un menú con listas y un pie de pagina. A través de &lt;strong&gt;CSS&lt;/strong&gt; se le da luego el posicionamiento y los estilos, pero esto no es importante ahora. Me interesa la estructura, el esqueleto.&lt;/p&gt;
&lt;p&gt;Ahora, cómo sería con &lt;strong&gt;HTML 5&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;html&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;head&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;Ejemplo&amp;lt;/title&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/head&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;header&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h1&amp;gt;Titulo de este ejemplo&amp;lt;/h1&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/header&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;section&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;nav&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;&#34; title=&#34;Ir a Uno&#34;&amp;gt;Uno&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;&#34; title=&#34;Ir a Dos&#34;&amp;gt;Dos&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;a href=&#34;&#34; title=&#34;Ir a Tres&#34;&amp;gt;Tres&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ul&amp;gt; &amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/nav&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;article&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Proin at eros non eros.........&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/article&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/section&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;footer&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;copyleft&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/footer&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&amp;lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ningún &lt;strong&gt;div&lt;/strong&gt;. En vez de utilizarlos (son etiquetas separadoras, lineal, y no tienen significado semántico) estamos reemplazándolas por nuevas etiquetas que sí le dan significado a nuestra estructura. ¿Un acercamiento a la &lt;a href=&#34;http://www.maestrosdelweb.com/editorial/la-web-30-anade-significado/&#34; target=&#34;_blank&#34;&gt;Web 3.0&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;Revisemos estas nuevas etiquetas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;header&gt;&lt;/strong&gt; El encabezado; no confundir con el aún vigente y fiel &lt;head&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;nav&gt;&lt;/strong&gt; Navegación, una colección de links a otras páginas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;section&gt;&lt;/strong&gt; Como un capítulo en un libro, puede albergar uno o varios &lt;article&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;article&gt;&lt;/strong&gt; Un artículo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;footer&gt;&lt;/strong&gt; El pie de pagina, la firma, el email de contacto… enfin.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;media&#34;&gt;Media&lt;/h3&gt;
&lt;p&gt;Video y audio en la web no lo para nadie, pero todo es propietario. &lt;strong&gt;Youtube&lt;/strong&gt; usa &lt;strong&gt;Flash&lt;/strong&gt;, &lt;strong&gt;Microsoft&lt;/strong&gt; usa &lt;strong&gt;Windows Media&lt;/strong&gt; y &lt;strong&gt;Apple&lt;/strong&gt; utiliza &lt;strong&gt;Quicktime&lt;/strong&gt;. Actualmente se utiliza &lt;strong&gt;&lt;embed&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;param&gt;&lt;/strong&gt; al mismo tiempo para insertar un &lt;strong&gt;swf&lt;/strong&gt;, lo que hace no validar el &lt;strong&gt;HTML&lt;/strong&gt;. Pero la promesa viene con una etiqueta de video y otra para audio que permite insertarlos independiente del formato:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;video src=&#34;video.mov&#34; /&amp;gt;&amp;lt;br /&gt;
&amp;lt;audio src=&#34;../musicas/growl.mp3&#34; autoplay=&#34;autoplay&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto es sólo un resumen, se viene mucho más. Ojalá esto permita que se construya una mejor web, para el bien de todos.&lt;/p&gt;
&lt;h3 id=&#34;links&#34;&gt;Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.ibm.com/developerworks/library/x-html5/?ca=dgr-lnxw01NewHTML&#34; target=&#34;_blank&#34;&gt;New elements in HTML 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://dev.w3.org/html5/html4-differences/Overview.html&#34; target=&#34;_blank&#34;&gt;HTML 5 differences from HTML 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.digital-web.com/articles/html5_xhtml2_and_the_future_of_the_web/&#34; target=&#34;_blank&#34;&gt;HTML5, XHTML2, and the Future of the Web&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 22</title>
      <link>https://csslab.cl/2007/08/14/lo-vi-y-me-gusto-22-2/</link>
      <pubDate>Tue, 14 Aug 2007 13:54:31 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/08/14/lo-vi-y-me-gusto-22-2/</guid>
      <description>#22 – 14 Agosto 2007</description>
      <content>&lt;p&gt;#22 – 14 Agosto 2007&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://ac09.net/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/08/ac09.gif&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.be-studios.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/08/be-studios.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Medidor de porcentajes con CSS</title>
      <link>https://csslab.cl/2007/08/13/medidor-de-porcentajes-con-css/</link>
      <pubDate>Mon, 13 Aug 2007 20:44:44 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/08/13/medidor-de-porcentajes-con-css/</guid>
      <description>&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Para muchos, se justifica definitivamente el uso de hojas de estilo para construir sitios web al momento en que se potencia la gráfica con el código generado por el desarrollador. Este es el caso que muestro a continuación, donde con un truco entre imágenes y código &lt;strong&gt;CSS&lt;/strong&gt;, podemos fácilmente generar mostradores gráficos de porcentajes, los que dependiendo de la creatividad se verán muy atractivos. De ninguna manera lograremos medidores dinámicos, donde la barra se mueva indicando alguna actividad. Con esta técnica podremos a través de porcentajes reales y absolutos entregadas mediante &lt;strong&gt;CSS&lt;/strong&gt; crear diferentes &lt;strong&gt;classes&lt;/strong&gt;, cada una con una instancia de porcentaje que queramos mostrar. Para un mejor entendimiento, el ejemplo de lo que se mostrará:&lt;/p&gt;</description>
      <content>&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Para muchos, se justifica definitivamente el uso de hojas de estilo para construir sitios web al momento en que se potencia la gráfica con el código generado por el desarrollador. Este es el caso que muestro a continuación, donde con un truco entre imágenes y código &lt;strong&gt;CSS&lt;/strong&gt;, podemos fácilmente generar mostradores gráficos de porcentajes, los que dependiendo de la creatividad se verán muy atractivos. De ninguna manera lograremos medidores dinámicos, donde la barra se mueva indicando alguna actividad. Con esta técnica podremos a través de porcentajes reales y absolutos entregadas mediante &lt;strong&gt;CSS&lt;/strong&gt; crear diferentes &lt;strong&gt;classes&lt;/strong&gt;, cada una con una instancia de porcentaje que queramos mostrar. Para un mejor entendimiento, el ejemplo de lo que se mostrará:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/porcentaje/index.html&#34; title=&#34;Ver ejemplo en nueva ventana&#34;&gt;Ver ejemplo&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;Primero que nada, las imágenes involucradas. La primera de ellas es la barra de porcentaje, la que tiene 2 partes: lleno y vacío. La segunda es el envoltorio, la que envuelve y deja ver sólo lo que queremos mostrar como cantidad de porcentaje y que será un GIF transparente (el medio de esta imagen es transparente para dejar ver por debajo la barra). Es importante que la barra de porcentaje sea el doble de ancho que su envoltorio, así se mostrará lleno en su 100% y la mitad de esta imagen (el límite entre vacío y lleno) es lo que se moverá dependiendo del porcentaje que entreguemos.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/08/diagrama.gif&#34; alt=&#34;Diagrama composición gráfico con CSS&#34;&gt;&lt;/p&gt;
&lt;p&gt;Para esto se necesita el CSS para la imagen, la que contendrá el envoltorio. Esta imagen estará integrada como &lt;strong&gt;HTML&lt;/strong&gt;, con la etiqueta &lt;strong&gt;&lt;img /&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;img src=&#34;imgs/contenedor_barra.gif&#34; width=&#34;200&#34; height=&#34;20&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, para agregar la barra y que ésta pase por detrás del envoltorio (en el fonddo será un &lt;strong&gt;background&lt;/strong&gt; de ésta), utilizamos &lt;strong&gt;CSS&lt;/strong&gt; para crear un estilo sólo para la etiqueta &lt;strong&gt;&lt;img&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;img {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-image: url(imgs/barra.gif);&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-position: 100% 0;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-repeat: no-repeat;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin-right: 10px;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con este estilo, le diremos a la imagen que tenga como fondo la barra y que esté vacía. Ahora con diferentes &lt;strong&gt;classes&lt;/strong&gt; (tantas como sean necesarias) mostraremos los niveles de porcentajes. &lt;em&gt;Pero hay un pero&lt;/em&gt;. Como en &lt;strong&gt;CSS&lt;/strong&gt;, el &lt;strong&gt;background-position&lt;/strong&gt; se define primero desde lo horizontal (left, right) y luego vertical (top, bottom), y esta propiedad me permite posicionar a través de porcentajes, lo haremos pero a la inversa: si queremos mostrar 10% de nuestra barra, le diremos 90% al &lt;strong&gt;position&lt;/strong&gt;. Es al contrario la cosa, sino el 10% se nos mostrará a la izquierda, y no a la derecha que es la convención occidental a la que estamos acostumbrados. Siguen las &lt;strong&gt;classes&lt;/strong&gt; para varios porcentajes:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;img.sesenta {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-position: 40% 0;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
img.diez {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-position: 90% 0;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
img.cien {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-position: 0% 0;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/porcentaje/index.html&#34; title=&#34;Ver ejemplo en nueva ventana&#34;&gt;Ver nuevamente ejemplo.&lt;/a&gt;{.verejemplo}&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Conditional Comments: el widget</title>
      <link>https://csslab.cl/2007/08/10/conditional-comments-el-widget/</link>
      <pubDate>Fri, 10 Aug 2007 16:52:07 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/08/10/conditional-comments-el-widget/</guid>
      <description>&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/08/widget.gif&#34; align=&#34;right&#34; /&gt;
&lt;p&gt;En mi afán por siempre facilitarme la vida y el trabajo, me tomé el tiempo y la molestia y desarrollé mi segundo &lt;strong&gt;widget&lt;/strong&gt;. El tema esta vez: &lt;a href=&#34;http://www.csslab.cl/2006/07/28/se-viene-ie7-%C2%A1huid/&#34; title=&#34;Se viene IE7…. ¡huid!&#34;&gt;Comentarios Condicionales&lt;/a&gt;. Lo que sucedió es que nunca me aprendí las diferentes maneras de utilizarlos, y como ocurrió con mi &lt;a href=&#34;http://www.csslab.cl/2007/03/09/clearfix-el-widget/&#34; title=&#34;.clearfix: el widget&#34;&gt;widget anterior&lt;/a&gt;, siempre entraba a &lt;a href=&#34;http://www.quirksmode.org/css/condcom.html&#34; title=&#34;Conditional comments from Quirksmode&#34; target=&#34;_blank&#34;&gt;Quirksmode.org&lt;/a&gt; para copiarlo desde ahí. Finalmente, con este &lt;strong&gt;widget&lt;/strong&gt; tienes todas las maneras de utilizar comentarios condicionales en tu proyecto web, a un click de distancia. Una vez más, gracias a &lt;a href=&#34;http://www.apple.com/downloads/dashboard/&#34; title=&#34;Dashboard Widgets&#34; target=&#34;_blank&#34;&gt;Apple&lt;/a&gt; por hacerme la vida más fácil.&lt;/p&gt;</description>
      <content>&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/08/widget.gif&#34; align=&#34;right&#34; /&gt;
&lt;p&gt;En mi afán por siempre facilitarme la vida y el trabajo, me tomé el tiempo y la molestia y desarrollé mi segundo &lt;strong&gt;widget&lt;/strong&gt;. El tema esta vez: &lt;a href=&#34;http://www.csslab.cl/2006/07/28/se-viene-ie7-%C2%A1huid/&#34; title=&#34;Se viene IE7…. ¡huid!&#34;&gt;Comentarios Condicionales&lt;/a&gt;. Lo que sucedió es que nunca me aprendí las diferentes maneras de utilizarlos, y como ocurrió con mi &lt;a href=&#34;http://www.csslab.cl/2007/03/09/clearfix-el-widget/&#34; title=&#34;.clearfix: el widget&#34;&gt;widget anterior&lt;/a&gt;, siempre entraba a &lt;a href=&#34;http://www.quirksmode.org/css/condcom.html&#34; title=&#34;Conditional comments from Quirksmode&#34; target=&#34;_blank&#34;&gt;Quirksmode.org&lt;/a&gt; para copiarlo desde ahí. Finalmente, con este &lt;strong&gt;widget&lt;/strong&gt; tienes todas las maneras de utilizar comentarios condicionales en tu proyecto web, a un click de distancia. Una vez más, gracias a &lt;a href=&#34;http://www.apple.com/downloads/dashboard/&#34; title=&#34;Dashboard Widgets&#34; target=&#34;_blank&#34;&gt;Apple&lt;/a&gt; por hacerme la vida más fácil.&lt;/p&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/08/widget_full.gif&#34; align=&#34;left&#34; /&gt; 
&lt;p&gt;In my effort to always gettting my life and work easyer, once again I took the time and started to develop my second &lt;strong&gt;widget&lt;/strong&gt;. The subject this time: &lt;a href=&#34;http://www.csslab.cl/2006/07/28/se-viene-ie7-%C2%A1huid/&#34; title=&#34;Se viene IE7…. ¡huid!&#34;&gt;Conditional Comments&lt;/a&gt;. What happened this time was that I’ve never memorized the different ways to use the Conditional Comments, and I used to get them directly from &lt;a href=&#34;http://www.quirksmode.org/css/condcom.html&#34; title=&#34;Conditional comments from Quirksmode&#34; target=&#34;_blank&#34;&gt;Quirksmode.org&lt;/a&gt;. Finally, with this &lt;strong&gt;widget&lt;/strong&gt; you have all the ways to use the conditional comments on yout web project, just at a click. One again, thanks to &lt;a href=&#34;http://www.apple.com/downloads/dashboard/&#34; title=&#34;Dashboard Widgets&#34; target=&#34;_blank&#34;&gt;Apple&lt;/a&gt; for making my life easyer.&lt;/p&gt;
&lt;p&gt;Requerimientos: MacOSX con 10.4+ y Dashboard habilitado.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/conditionalcomment/condicionalcomment.zip&#34; title=&#34;Get the Comments Widget now&#34;&gt;Download Conditional Comments Widget&lt;/a&gt;{.bajar}&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>¿Inherit? ¿Ah?</title>
      <link>https://csslab.cl/2007/08/06/%C2%BFinherit-%C2%BFah/</link>
      <pubDate>Mon, 06 Aug 2007 17:07:46 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/08/06/%C2%BFinherit-%C2%BFah/</guid>
      <description>&lt;p&gt;Una palabra algo rara esta del &lt;strong&gt;inherit&lt;/strong&gt;. Y de hecho, algo con el que desde hace poco no habia visto su importancia. Por lo mismo me interesa compartirla en este momento en que por fin sale el sol y calienta algo de este horrible frio.&lt;/p&gt;
&lt;h3 id=&#34;inherit--heredar&#34;&gt;Inherit = heredar.&lt;/h3&gt;
&lt;p&gt;Como sabrán, en &lt;strong&gt;CSS&lt;/strong&gt; existe muchas propiedades que heredan sus características a sus &lt;em&gt;hijos&lt;/em&gt; (child). Por ejemplo, si definimos en el &lt;strong&gt;&lt;body&gt;&lt;/strong&gt; (como suelo hacer) que la familia tipográfica que utilizaremos será &lt;strong&gt;Helvetica&lt;/strong&gt;, esto será heredado por todos los elementos que estén dentro del &lt;strong&gt;&lt;body&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;body {
&amp;nbsp;&amp;nbsp;font-family: Helvetica, Arial, sans-serif;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <content>&lt;p&gt;Una palabra algo rara esta del &lt;strong&gt;inherit&lt;/strong&gt;. Y de hecho, algo con el que desde hace poco no habia visto su importancia. Por lo mismo me interesa compartirla en este momento en que por fin sale el sol y calienta algo de este horrible frio.&lt;/p&gt;
&lt;h3 id=&#34;inherit--heredar&#34;&gt;Inherit = heredar.&lt;/h3&gt;
&lt;p&gt;Como sabrán, en &lt;strong&gt;CSS&lt;/strong&gt; existe muchas propiedades que heredan sus características a sus &lt;em&gt;hijos&lt;/em&gt; (child). Por ejemplo, si definimos en el &lt;strong&gt;&lt;body&gt;&lt;/strong&gt; (como suelo hacer) que la familia tipográfica que utilizaremos será &lt;strong&gt;Helvetica&lt;/strong&gt;, esto será heredado por todos los elementos que estén dentro del &lt;strong&gt;&lt;body&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;body {
&amp;nbsp;&amp;nbsp;font-family: Helvetica, Arial, sans-serif;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;body&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;h1&amp;gt;Esto ser&amp;aacute; mostrado con Helvetica&amp;lt;/h1&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Esto tambien lo hereda&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto sucede con mucha frecuencia con propiedades relacionadas con el texto: &lt;strong&gt;font-family&lt;/strong&gt;, &lt;strong&gt;font-size&lt;/strong&gt;, &lt;strong&gt;color&lt;/strong&gt;, &lt;strong&gt;text-align&lt;/strong&gt;, etc. En los casos de las propiedades que no los heredan automáticamente, podemos forzarlo a que lo hagan, precisamente explicitando &lt;strong&gt;inherit&lt;/strong&gt; en esa definición del hijo, como en el siguiente ejemplo:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;.contenedor {
&amp;nbsp;&amp;nbsp;font-size: 14px;
&amp;nbsp;&amp;nbsp;color: chocolate;
&amp;nbsp;&amp;nbsp;border: 2px solid green;
&amp;nbsp;&amp;nbsp;width: 500px;
}
.contenedor p {
&amp;nbsp;&amp;nbsp;border: inherit;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lo que sucederá en este caso, es que &lt;strong&gt;&lt;p&gt;&lt;/strong&gt; heredará el tamaño de la fuente y su color por defecto ya que estará dentro del &lt;strong&gt;.contenedor&lt;/strong&gt;; pero como también queremos que herede el borde, le decimos &lt;strong&gt;border: inherit;&lt;/strong&gt; para que lo haga.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/inherit.html&#34; title=&#34;Abrir ejemplo&#34;&gt;Ver ejemplo&lt;/a&gt;{.verejemplo}&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Bloques de texto con estilo</title>
      <link>https://csslab.cl/2007/07/31/bloques-de-texto-con-estilo/</link>
      <pubDate>Tue, 31 Jul 2007 22:45:12 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/07/31/bloques-de-texto-con-estilo/</guid>
      <description>&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;La etiqueta &lt;strong&gt;&lt;blockquote&gt;&lt;/strong&gt; corresponde a una cita dentro de un bloque de texto. Ese es su significado semántico. Se usa para definir largos parágrafos donde se citan desde otros sitios web externos. Puede ir acompañado de algunos atributos, como &lt;strong&gt;title&lt;/strong&gt; (define el título de esa cita), &lt;strong&gt;lang&lt;/strong&gt; (define en qué idioma está) y &lt;strong&gt;cite&lt;/strong&gt; (muestra el URL desde dónde se tomó esa cita).&lt;/p&gt;
&lt;p&gt;La idea de esta ocasión, es darle un estilo más gráfico a esas citas a través de un poco de &lt;strong&gt;CSS&lt;/strong&gt;. Como en impresos se suelen utilizar las comillas (&amp;quot;) para describir gráficamente este elemento, lo que haremos es poner al inicio y al final del &lt;strong&gt;blockquote&lt;/strong&gt; 2 comillas a través de 2 imagenes diferentes. Ahora, la dificultad está en que como existe sólo 1 &lt;strong&gt;blockquote&lt;/strong&gt;, CSS 2.1 no me permite tener 2 &lt;strong&gt;background&lt;/strong&gt; simultáneas (lo que sí será soportado con CSS 3). Lo que se hará entonces, será aprovechar la &lt;strong&gt;pseudo-clase&lt;/strong&gt; &lt;strong&gt;:fist-letter&lt;/strong&gt; (le agrega estilo a la primera letra de un párrafo) para ubicar la primera imagen. Milagrosamente, esta &lt;strong&gt;pseudo-clase&lt;/strong&gt; es soportado por IE5.5+, todo un privilegio.&lt;/p&gt;</description>
      <content>&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;La etiqueta &lt;strong&gt;&lt;blockquote&gt;&lt;/strong&gt; corresponde a una cita dentro de un bloque de texto. Ese es su significado semántico. Se usa para definir largos parágrafos donde se citan desde otros sitios web externos. Puede ir acompañado de algunos atributos, como &lt;strong&gt;title&lt;/strong&gt; (define el título de esa cita), &lt;strong&gt;lang&lt;/strong&gt; (define en qué idioma está) y &lt;strong&gt;cite&lt;/strong&gt; (muestra el URL desde dónde se tomó esa cita).&lt;/p&gt;
&lt;p&gt;La idea de esta ocasión, es darle un estilo más gráfico a esas citas a través de un poco de &lt;strong&gt;CSS&lt;/strong&gt;. Como en impresos se suelen utilizar las comillas (&amp;quot;) para describir gráficamente este elemento, lo que haremos es poner al inicio y al final del &lt;strong&gt;blockquote&lt;/strong&gt; 2 comillas a través de 2 imagenes diferentes. Ahora, la dificultad está en que como existe sólo 1 &lt;strong&gt;blockquote&lt;/strong&gt;, CSS 2.1 no me permite tener 2 &lt;strong&gt;background&lt;/strong&gt; simultáneas (lo que sí será soportado con CSS 3). Lo que se hará entonces, será aprovechar la &lt;strong&gt;pseudo-clase&lt;/strong&gt; &lt;strong&gt;:fist-letter&lt;/strong&gt; (le agrega estilo a la primera letra de un párrafo) para ubicar la primera imagen. Milagrosamente, esta &lt;strong&gt;pseudo-clase&lt;/strong&gt; es soportado por IE5.5+, todo un privilegio.&lt;/p&gt;
&lt;p&gt;El HTML, no es gran cosa:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;blockquote&amp;gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi commodo, ipsum sed pharetra gravida..........&amp;lt;/blockquote&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pero a través de CSS, sí veremos cambios:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;blockquote {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(cierra.gif) no-repeat right bottom;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 400px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding-left: 18px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding-right: 18px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-indent: -18px;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
  blockquote:first-letter {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(abre.gif) no-repeat left top;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding-left: 18px;&amp;lt;br /&gt;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/07/ejemplo.gif&#34; alt=&#34;Ejemplo Blockquote&#34; align=&#34;right&#34; /&gt; 
&lt;p&gt;En la etiqueta &lt;strong&gt;&lt;blockquote&gt;&lt;/strong&gt; se dará el &lt;strong&gt;background&lt;/strong&gt; que contiene la esquina inferior derecha (el cierre de la cita). Además, se define el ancho de la misma (si necesario) y un &lt;strong&gt;padding&lt;/strong&gt; a ambos lados horizontales. Fijarse en que se determinó un &lt;strong&gt;text-indent&lt;/strong&gt; negativo, de igual valor que el &lt;strong&gt;padding-left&lt;/strong&gt;. Este es fundamental al determinar el estilo siguiente, de la &lt;strong&gt;pseudo-clase&lt;/strong&gt; &lt;strong&gt;:first-letter&lt;/strong&gt;. Como esta imagen tiene un ancho de 12px, se agrega un &lt;strong&gt;padding&lt;/strong&gt; para que el parágrafo no lo sobrepase, así se hace necesario que este primer caracter retroceda la misma cantidad de pixeles para que esté de acorde con el inicio del párrafo, como se ejemplifica en la siguiente imagen:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/blockquote/index.html&#34; title=&#34;Ver Ejemplo&#34;&gt;Ver Ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si ven el código fuente del ejemplo, notarán que hubo que utilizar &lt;a href=&#34;http://www.csslab.cl/2006/07/28/se-viene-ie7-%C2%A1huid/&#34;&gt;comentario condicional&lt;/a&gt; para un pequeño detalle en los IE’s. El problema era que no se desplegaba bien la comilla que abre (la del &lt;strong&gt;:first-letter&lt;/strong&gt;), por lo que se posicionó unos 5 pixeles hacia abajo. Sólo eso.&lt;/p&gt;
&lt;h3 id=&#34;links&#34;&gt;Links:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.htmlquick.com/reference/tags/blockquote.html&#34; title=&#34;Abrir HTML blockquote tag&#34; target=&#34;_blank&#34;&gt;HTML blockquote tag&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Layout Híbrido</title>
      <link>https://csslab.cl/2007/07/27/layout-hibrido/</link>
      <pubDate>Fri, 27 Jul 2007 17:37:43 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/07/27/layout-hibrido/</guid>
      <description>&lt;p&gt;Conocidos son por todos las técnicas de diagramado de sitios con columnas, tanto flotando como posicionando; cada uno tendrá su favorita. Lo más importante es saber las fortalezas de cada una, para poder controlarlas de mejor manera. Me acostumbré a flotar columnas, a lidar con sus defectos (oh &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34;&gt;clearfix&lt;/a&gt; cuánto de adoro), pero &lt;a href=&#34;http://www.csslab.cl/2007/05/11/absolutamente-si/&#34;&gt;position&lt;/a&gt; también tiene un espacio ganado en mi corazón (y en esta ocasión será el elegido).&lt;/p&gt;
&lt;p&gt;Sitios con columnas de &lt;a href=&#34;http://www.csslab.cl/2006/10/05/layout-fijo-a-elastico-en-solo-4-caracteres/&#34;&gt;anchos fijos&lt;/a&gt; son pan comido ya. Trabajar con porcentajes, tiene cierta dificultad pero se pueden sobrellevar. Imagínense mezclarlos. He visto sitios semi-líquidos, donde una columna crece según el tamaño de la ventana, mientras que la otra al lado se queda fija. Pues recién pude fijarme en cómo fueron construídas, y he podido replicarlas en el mundo real. De eso se trata este artículo, sobre cómo construir un &lt;strong&gt;layout híbrido&lt;/strong&gt;: columnas fijas y columnas líquidas. Muy entretenido, primero que nada el ejemplo gráfico (muevan la ventana y vean de qué hablo).&lt;/p&gt;</description>
      <content>&lt;p&gt;Conocidos son por todos las técnicas de diagramado de sitios con columnas, tanto flotando como posicionando; cada uno tendrá su favorita. Lo más importante es saber las fortalezas de cada una, para poder controlarlas de mejor manera. Me acostumbré a flotar columnas, a lidar con sus defectos (oh &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34;&gt;clearfix&lt;/a&gt; cuánto de adoro), pero &lt;a href=&#34;http://www.csslab.cl/2007/05/11/absolutamente-si/&#34;&gt;position&lt;/a&gt; también tiene un espacio ganado en mi corazón (y en esta ocasión será el elegido).&lt;/p&gt;
&lt;p&gt;Sitios con columnas de &lt;a href=&#34;http://www.csslab.cl/2006/10/05/layout-fijo-a-elastico-en-solo-4-caracteres/&#34;&gt;anchos fijos&lt;/a&gt; son pan comido ya. Trabajar con porcentajes, tiene cierta dificultad pero se pueden sobrellevar. Imagínense mezclarlos. He visto sitios semi-líquidos, donde una columna crece según el tamaño de la ventana, mientras que la otra al lado se queda fija. Pues recién pude fijarme en cómo fueron construídas, y he podido replicarlas en el mundo real. De eso se trata este artículo, sobre cómo construir un &lt;strong&gt;layout híbrido&lt;/strong&gt;: columnas fijas y columnas líquidas. Muy entretenido, primero que nada el ejemplo gráfico (muevan la ventana y vean de qué hablo).&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/hibrido/liquido_izquierda.html&#34;&gt;Ver ejemplo 1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Para lograr esto, se eligió &lt;strong&gt;position&lt;/strong&gt; para lograr poner las columnas donde necesitamos. Esto facilita que la columna que esté fija, quede relegada a un rincón (derecho o izquierdo, da igual. En el ejemplo anterior quedó pegado a la derecha con un &lt;strong&gt;right: 0;&lt;/strong&gt;) Así, la otra colummna (que necesitamos que se haga más ancha o angosta, según el tamaño que adquiera nuestra ventana de browser) queda pegada al otro extremo (&lt;strong&gt;left: 0;&lt;/strong&gt;) y tiene libertad ya que no le definimos width. Por otro lado, sí tiene definido un marginado opuesto considerando ya el espacio fijo que ocupa la columna que no crece. Básicamente ese es el funcionamiento. Como siempre, el &lt;strong&gt;HTML&lt;/strong&gt; muy simple utilizado:&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;div id=&#34;header&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;h1&gt;Encabezado&lt;/h1&gt;&lt;br /&gt; &lt;/div&gt;&lt;br /&gt; &lt;div id=&#34;menu&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;h1&gt;Menu Lateral&lt;/h1&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;ul&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item 1&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item 2&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item 3&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item 4&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/ul&gt;&lt;br /&gt; &lt;/div&gt;&lt;br /&gt; &lt;div id=&#34;content&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;h1&gt;Contenido Principal&lt;/h1&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer &amp;#8230;&amp;#8230;&amp;#8230;.&lt;/p&gt;&lt;br /&gt; &lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Y aquí llega la magia del &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  div#header {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;top: 0; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;left: 0;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 100%;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 80px;&lt;br /&gt; } &lt;br /&gt; div#content {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;top: 100px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;left: 20px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;right: 240px;&lt;br /&gt; } &lt;br /&gt; div#menu {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;top: 100px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;right: 20px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 200px;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/hibrido/liquido_derecha.html&#34;&gt;Ver ejemplo con elasticidad a la derecha&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/hibrido/liquido_izquierda.html&#34;&gt;Ver ejemplo con elasticidad a la izquierda&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>sobre cómo instalé todos los browsers</title>
      <link>https://csslab.cl/2007/07/25/sobre-como-instale-todos-los-browsers/</link>
      <pubDate>Wed, 25 Jul 2007 18:20:04 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/07/25/sobre-como-instale-todos-los-browsers/</guid>
      <description>Como trabajador dedicado a la web, su diseño y desarrollo, es mi karma diario tener que probar mis proyectos en la gran mayoría de browsers habidos y por haber. Aunque uno tiende a confiarse en que se verá bien en IE6 y FireFox, se hace necesario tener simultáneamente IE7 corrriendo. Bueno, yo trabajo con plataforma Mac OSX hace muchos años ya y he tenido la suerte de que donde trabajo, me tienen uno.</description>
      <content>&lt;p&gt;Como trabajador dedicado a la web, su diseño y desarrollo, es mi karma diario tener que probar mis proyectos en la gran mayoría de browsers habidos y por haber. Aunque uno tiende a confiarse en que se verá bien en &lt;strong&gt;IE6&lt;/strong&gt; y &lt;strong&gt;FireFox&lt;/strong&gt;, se hace necesario tener simultáneamente IE7 corrriendo. Bueno, yo trabajo con plataforma Mac OSX hace muchos años ya y he tenido la suerte de que donde trabajo, me tienen uno. Así que mi browser por defecto es &lt;strong&gt;Safari 2&lt;/strong&gt; (me encanta su velocidad), uso &lt;strong&gt;Firefox 2&lt;/strong&gt; para pruebas y para un par de extensiones (&lt;a href=&#34;http://www.bugzilla.org/&#34; target=&#34;_blank&#34;&gt;Buzgilla&lt;/a&gt; y &lt;a href=&#34;http://chrispederick.com/work/web-developer/&#34; target=&#34;_blank&#34;&gt;Web Developer&lt;/a&gt; son muy necesarios) y &lt;strong&gt;Opera&lt;/strong&gt; para pruebas (suele comportarse como IE6). Tenía que pedir prestado algun PC para ver cómo se comportaba en Windows… lo que usualmente mostraba problemas. Así que en casa actualicé mi máquina a un Macbook con Intel y en el trabajo me lo renovaron a un iMac con Intel. Perfecto, ahora podía tener todos los browsers corriendo simultáneos (con 1GB de RAM corre apenas… pero corre).&lt;/p&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/07/browsers.png&#34; align=&#34;right&#34; /&gt; 
&lt;h3 id=&#34;la-receta&#34;&gt;La receta:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;IE6 con &lt;a href=&#34;http://www.codeweavers.com/products/cxmac/&#34; target=&#34;_blank&#34;&gt;Crossover&lt;/a&gt; (liviano, no instala todo Win)&lt;/li&gt;
&lt;li&gt;IE7 con &lt;a href=&#34;http://www.parallels.com/landingpage/mac/&#34; target=&#34;_blank&#34;&gt;Parallels&lt;/a&gt; &lt;a href=&#34;&#34; target=&#34;_blank&#34;&gt;(ver instrucciones)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Safari 2 (nativo)&lt;/li&gt;
&lt;li&gt;Firefox 2&lt;/li&gt;
&lt;li&gt;Opera&lt;/li&gt;
&lt;/ul&gt;
</content>
    </item>
    
    <item>
      <title>Como Caja 2: superando el modelo</title>
      <link>https://csslab.cl/2007/07/19/como-caja-2-superando-el-modelo/</link>
      <pubDate>Thu, 19 Jul 2007 14:49:40 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/07/19/como-caja-2-superando-el-modelo/</guid>
      <description>&lt;p&gt;En el artículo donde explico de qué se trata y &lt;a href=&#34;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&#34;&gt;cómo nos afecta el modelo de caja al construir un layout con CSS&lt;/a&gt;, se pueden sacar algunas conclusiones, las que en realidad dejo bien claro: utilizar el reseteador universal, tratar de no definir anchos a los &lt;strong&gt;div&lt;/strong&gt;‘s y el más importante, no darle &lt;strong&gt;padding&lt;/strong&gt; al &lt;strong&gt;div&lt;/strong&gt; u otro elemento contenedor (para no deformarlo). Con esas 3 simples reglas podemos superar bastante este inconveniente, pero me interesa entregar una recomendación para que se pueda sintetizar un poco nuestro layout y al mismo tiempo ahorrar un poco de código, logrando además más control sobre nuestra diagramación.&lt;/p&gt;
&lt;p&gt;Un &lt;strong&gt;HTML&lt;/strong&gt; con 2 columnas:&lt;/p&gt;</description>
      <content>&lt;p&gt;En el artículo donde explico de qué se trata y &lt;a href=&#34;http://www.csslab.cl/2006/12/14/como-caja-el-modelo/&#34;&gt;cómo nos afecta el modelo de caja al construir un layout con CSS&lt;/a&gt;, se pueden sacar algunas conclusiones, las que en realidad dejo bien claro: utilizar el reseteador universal, tratar de no definir anchos a los &lt;strong&gt;div&lt;/strong&gt;‘s y el más importante, no darle &lt;strong&gt;padding&lt;/strong&gt; al &lt;strong&gt;div&lt;/strong&gt; u otro elemento contenedor (para no deformarlo). Con esas 3 simples reglas podemos superar bastante este inconveniente, pero me interesa entregar una recomendación para que se pueda sintetizar un poco nuestro layout y al mismo tiempo ahorrar un poco de código, logrando además más control sobre nuestra diagramación.&lt;/p&gt;
&lt;p&gt;Un &lt;strong&gt;HTML&lt;/strong&gt; con 2 columnas:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;contenido&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Lorem ipsum dolor sit amet.................&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
  &amp;lt;/div&amp;gt;&amp;lt;br /&gt;
  &amp;lt;div id=&#34;menu&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;Uno&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;Dos&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ul&amp;gt;&amp;lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y el &lt;strong&gt;CSS&lt;/strong&gt; muy primitivo pero funcional:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;div#contenido {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 500px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: #CCC;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  div#menu {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 180px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: #F00;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin-left: 20px;&amp;lt;br /&gt;
  } &amp;lt;br /&gt;
  div#menu ul {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 10px 20px;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  div#contenido, div#menu {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left;&amp;lt;br /&gt;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/comocaja2/index.html&#34;&gt;Ver ejemplo funcionando&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;Como apreciarán, los contenedores encajan y no se desarma nada. Como se predijo funciona perfecto. Ahora, lo que se hará es darle padding al &lt;strong&gt;&lt;p&gt;&lt;/strong&gt; y al &lt;strong&gt;&lt;ul&gt;&lt;/strong&gt; para que se despegara un poco de los bordes, pero esto puede traer inconvenientes: ¿Qué pasa si tenemos más de un &lt;strong&gt;&lt;p&gt;&lt;/strong&gt;? ¿Qué pasa con otros elementos que agreguemos, &lt;strong&gt;&lt;h1&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;img /&gt;&lt;/strong&gt;? ¿Debemos darle el &lt;strong&gt;padding&lt;/strong&gt; a todos siempre? Un lío tras otro… en ese caso, lo que haré será agregar otro &lt;strong&gt;div&lt;/strong&gt; dentro de los contenedores, los que tendrán una &lt;strong&gt;class&lt;/strong&gt; que tendrá solamente el padding que necesitamos. Así, este &lt;strong&gt;div&lt;/strong&gt; rodeará todos los elementos necesarios para dar ese margen interior a nuestras cajas. El &lt;strong&gt;HTML&lt;/strong&gt; modificado:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;contenido&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div class=&#34;marginado&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Lorem ipsum dolor sit amet.................&amp;lt;/p&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
  &amp;lt;/div&amp;gt;&amp;lt;br /&gt;
  &amp;lt;div id=&#34;menu&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div class=&#34;marginado&#34;&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;Uno&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;Dos&amp;lt;/li&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ul&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y el estilo para esa modificación:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;div#contenido {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 500px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: #CCC;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  div#menu {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 180px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: #F00;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin-left: 20px;&amp;lt;br /&gt;
  } &amp;lt;br /&gt;
  div#menu ul {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 10px 20px;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  div#contenido, div#menu {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  div.marginado {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 10px;&amp;lt;br /&gt;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y si en el caso que necesitáramos darle diferentes padding a cada caja, lo especificamos en el &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;div#contenido div.marginado {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 10px;&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
  div#menu div.marginado {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 20px;&amp;lt;br /&gt;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/comocaja2/index_2.html&#34;&gt;Ver ejemplo final&lt;/a&gt;{.verejemplo}&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>HTML y la enseñanza 2</title>
      <link>https://csslab.cl/2007/07/18/html-y-la-ensenanza-2/</link>
      <pubDate>Wed, 18 Jul 2007 22:04:52 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/07/18/html-y-la-ensenanza-2/</guid>
      <description>&lt;p&gt;Ha pasado ya 1 año desde el anterior artículo &lt;a href=&#34;http://www.csslab.cl/2006/07/03/html-y-la-ensenanza/&#34;&gt;HTML y la enseñanza&lt;/a&gt;, donde pregonaba una inquietud sobre cómo se estaba impartiendo la enseñanza del diseño web dentro de las escuelas y universidades existentes, principalmente en Chile (donde conozco de cerca sus realidades). A raíz de ese artículo, comenzó una interesante discusión (leer los comentarios) la que finalmente terminó en mi persona impartiendo clases &lt;a href=&#34;http://www.uniacc.cl/&#34; target=&#34;_blank&#34;&gt;en una universidad&lt;/a&gt; precisamente para enseñar HTML, en la asignatura &lt;em&gt;Tecnologías Web&lt;/em&gt;. Fue todo un reto, durante medio semestre (éramos 2 profesores, yo tomaba la segunda mitad del curso) traté de sacarme ese estigma de ‘impaciente’ y ‘poco tolerante’ que tengo, para tratar de explicarle a un grupo de alumnos lo que sé hacer: diagramar y construir sitios semánticamente con XHTML+CSS. El ritmo era intenso, ya que tuve que rendir simultáneamente en mi trabajo y en las clases (lo que me hizo admirar a la gente que trabaja y estudia de noche… aplausos). Además, la universidad me dió libertad para crear mi programa de curso, lo que me permitió experimentar y entregarle lo último de lo mejor a los alumnos, que estaban recién entrando al mundo universitario (alumnos de primer año) y desde ya iban a aprender a hacer bien sus sitios. En resumen el temario fue:&lt;/p&gt;</description>
      <content>&lt;p&gt;Ha pasado ya 1 año desde el anterior artículo &lt;a href=&#34;http://www.csslab.cl/2006/07/03/html-y-la-ensenanza/&#34;&gt;HTML y la enseñanza&lt;/a&gt;, donde pregonaba una inquietud sobre cómo se estaba impartiendo la enseñanza del diseño web dentro de las escuelas y universidades existentes, principalmente en Chile (donde conozco de cerca sus realidades). A raíz de ese artículo, comenzó una interesante discusión (leer los comentarios) la que finalmente terminó en mi persona impartiendo clases &lt;a href=&#34;http://www.uniacc.cl/&#34; target=&#34;_blank&#34;&gt;en una universidad&lt;/a&gt; precisamente para enseñar HTML, en la asignatura &lt;em&gt;Tecnologías Web&lt;/em&gt;. Fue todo un reto, durante medio semestre (éramos 2 profesores, yo tomaba la segunda mitad del curso) traté de sacarme ese estigma de ‘impaciente’ y ‘poco tolerante’ que tengo, para tratar de explicarle a un grupo de alumnos lo que sé hacer: diagramar y construir sitios semánticamente con XHTML+CSS. El ritmo era intenso, ya que tuve que rendir simultáneamente en mi trabajo y en las clases (lo que me hizo admirar a la gente que trabaja y estudia de noche… aplausos). Además, la universidad me dió libertad para crear mi programa de curso, lo que me permitió experimentar y entregarle lo último de lo mejor a los alumnos, que estaban recién entrando al mundo universitario (alumnos de primer año) y desde ya iban a aprender a hacer bien sus sitios. En resumen el temario fue:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h3 id=&#34;introducción-a-html&#34;&gt;Introducción a HTML&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Construyendo sitios usables&lt;/li&gt;
&lt;li&gt;Web Semántica&lt;/li&gt;
&lt;li&gt;Capas de construcción&lt;/li&gt;
&lt;li&gt;Etiquetas obsoletas&lt;/li&gt;
&lt;li&gt;Formularios Semánticos&lt;/li&gt;
&lt;li&gt;Listas (menu)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3 id=&#34;introducción-a-hojas-de-estilos&#34;&gt;Introducción a Hojas de Estilos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Ventajas del uso&lt;/li&gt;
&lt;li&gt;Class, ID&lt;/li&gt;
&lt;li&gt;Posicionamiento&lt;/li&gt;
&lt;li&gt;Float&lt;/li&gt;
&lt;li&gt;Clearfix: cómo y cuándo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3 id=&#34;introducción-a-javascript&#34;&gt;Introducción a Javascript&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Frameworks&lt;/li&gt;
&lt;li&gt;Librerías de Efectos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;¿Interesante, no? Fue muy entretenido, y les agradezco profundamente a todos mis alumnos: Rodrigo, Tomás, Maximiliano, Javier Jonathan, Felipe, Alvaro, Andrés, Patricia, Nataly, Alfredo, Arturo, José y Joaquín. Sinceramente creo que aprendí mucho más de ustedes que ustedes de mí. Gracias &lt;a href=&#34;http://www.bronx.cl/sergei/&#34; target=&#34;_blank&#34;&gt;Serge&lt;/a&gt; por la invitación, y a la universidad &lt;a href=&#34;http://www.uniacc.cl/&#34; target=&#34;_blank&#34;&gt;UNIACC&lt;/a&gt; por creer que podía hacerlo.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Validando el CSS de Thickbox</title>
      <link>https://csslab.cl/2007/07/09/140/</link>
      <pubDate>Mon, 09 Jul 2007 21:25:53 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/07/09/140/</guid>
      <description>&lt;p&gt;Durante un proyecto en específico se deció utilizar &lt;a href=&#34;http://jquery.com/&#34; target=&#34;_blank&#34;&gt;jQuery&lt;/a&gt; como librería para todo lo que fuera &lt;strong&gt;JavaScript&lt;/strong&gt;. Reticente (ya que en ese entonces me animaba con &lt;strong&gt;Prototype&lt;/strong&gt; y &lt;strong&gt;Script.aculo.us&lt;/strong&gt;), comencé a utilizarlo y me fascinó como tenía grandes prestaciones, al momento de modificar el código &lt;strong&gt;HTML&lt;/strong&gt; antes de ser renderizado. Se podían inyectar &lt;strong&gt;classes&lt;/strong&gt;, &lt;strong&gt;ID&lt;/strong&gt;‘s y otros elementos dentro del código muy facilmente, lo que me hizo encariñarme con él. Para efectos, no se quedaba atrás (aunque en mi opinión, un poco toscos) y determinamos utilizar &lt;a href=&#34;http://jquery.com/demo/thickbox/&#34; target=&#34;_blank&#34;&gt;Thickbox&lt;/a&gt; para evitar los ya obsoletos &lt;strong&gt;pop-ups&lt;/strong&gt; para abrir imagenes y nuevas ventanas dentro de la misma pagina (les había comentado hace mucho de &lt;a href=&#34;http://www.csslab.cl/2006/09/01/lightbox-swf/&#34;&gt;lightbox&lt;/a&gt;, pero éste funciona con &lt;strong&gt;Prototype&lt;/strong&gt;). Enfin, &lt;strong&gt;Thickbox&lt;/strong&gt; es muy bueno para lo que hace, pero teníamos un pequeño gran problema: el cliente requería que todo el &lt;strong&gt;CSS&lt;/strong&gt; validara. Y &lt;strong&gt;Thickbox&lt;/strong&gt; tiene 3 propiedades que de por sí no validan y que son muy importantes: dan la trasparencia a la ventana. Ya las comentamos anteriormente en un &lt;a href=&#34;http://www.csslab.cl/2007/01/24/transparencias-a-prueba-de-browsers-2/&#34;&gt;artículo sobre transparencias&lt;/a&gt;: &lt;strong&gt;opacity&lt;/strong&gt;, &lt;strong&gt;-moz-opacity&lt;/strong&gt; y &lt;strong&gt;filter: alpha()&lt;/strong&gt;. &lt;strong&gt;Opacity&lt;/strong&gt; valida sólo en &lt;strong&gt;CSS3&lt;/strong&gt; (aún en desarrollo), &lt;strong&gt;-moz-opacity&lt;/strong&gt; es propietario de &lt;strong&gt;Mozilla&lt;/strong&gt; y no valida, y &lt;strong&gt;filter: alpha()&lt;/strong&gt; es un invento de &lt;strong&gt;Microsoft&lt;/strong&gt; y menos aún valida.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/07/css_error.gif&#34; alt=&#34;CSS no valida&#34; width=&#34;500&#34; height=&#34;108&#34; /&gt; 
&lt;p&gt;Pequeño gran problema.&lt;/p&gt;</description>
      <content>&lt;p&gt;Durante un proyecto en específico se deció utilizar &lt;a href=&#34;http://jquery.com/&#34; target=&#34;_blank&#34;&gt;jQuery&lt;/a&gt; como librería para todo lo que fuera &lt;strong&gt;JavaScript&lt;/strong&gt;. Reticente (ya que en ese entonces me animaba con &lt;strong&gt;Prototype&lt;/strong&gt; y &lt;strong&gt;Script.aculo.us&lt;/strong&gt;), comencé a utilizarlo y me fascinó como tenía grandes prestaciones, al momento de modificar el código &lt;strong&gt;HTML&lt;/strong&gt; antes de ser renderizado. Se podían inyectar &lt;strong&gt;classes&lt;/strong&gt;, &lt;strong&gt;ID&lt;/strong&gt;‘s y otros elementos dentro del código muy facilmente, lo que me hizo encariñarme con él. Para efectos, no se quedaba atrás (aunque en mi opinión, un poco toscos) y determinamos utilizar &lt;a href=&#34;http://jquery.com/demo/thickbox/&#34; target=&#34;_blank&#34;&gt;Thickbox&lt;/a&gt; para evitar los ya obsoletos &lt;strong&gt;pop-ups&lt;/strong&gt; para abrir imagenes y nuevas ventanas dentro de la misma pagina (les había comentado hace mucho de &lt;a href=&#34;http://www.csslab.cl/2006/09/01/lightbox-swf/&#34;&gt;lightbox&lt;/a&gt;, pero éste funciona con &lt;strong&gt;Prototype&lt;/strong&gt;). Enfin, &lt;strong&gt;Thickbox&lt;/strong&gt; es muy bueno para lo que hace, pero teníamos un pequeño gran problema: el cliente requería que todo el &lt;strong&gt;CSS&lt;/strong&gt; validara. Y &lt;strong&gt;Thickbox&lt;/strong&gt; tiene 3 propiedades que de por sí no validan y que son muy importantes: dan la trasparencia a la ventana. Ya las comentamos anteriormente en un &lt;a href=&#34;http://www.csslab.cl/2007/01/24/transparencias-a-prueba-de-browsers-2/&#34;&gt;artículo sobre transparencias&lt;/a&gt;: &lt;strong&gt;opacity&lt;/strong&gt;, &lt;strong&gt;-moz-opacity&lt;/strong&gt; y &lt;strong&gt;filter: alpha()&lt;/strong&gt;. &lt;strong&gt;Opacity&lt;/strong&gt; valida sólo en &lt;strong&gt;CSS3&lt;/strong&gt; (aún en desarrollo), &lt;strong&gt;-moz-opacity&lt;/strong&gt; es propietario de &lt;strong&gt;Mozilla&lt;/strong&gt; y no valida, y &lt;strong&gt;filter: alpha()&lt;/strong&gt; es un invento de &lt;strong&gt;Microsoft&lt;/strong&gt; y menos aún valida.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/07/css_error.gif&#34; alt=&#34;CSS no valida&#34; width=&#34;500&#34; height=&#34;108&#34; /&gt; 
&lt;p&gt;Pequeño gran problema.&lt;/p&gt;
&lt;p&gt;Bueno a pensar. Googleando, en los &lt;a href=&#34;http://codylindley.com/thickboxforum/search.php?PostBackAction=Search&amp;Keywords=css+validation&amp;Type=Topics&amp;btnSubmit=Search&#34; target=&#34;_blank&#34;&gt;foros de Thickbox ya han posteado&lt;/a&gt; sobre el tema y no existe solución. Miré &lt;a href=&#34;http://www.huddletogether.com/projects/lightbox2/&#34; target=&#34;_blank&#34;&gt;Lightbox&lt;/a&gt; y mi dí cuenta que no tiene esas propiedades en su &lt;strong&gt;CSS&lt;/strong&gt;, y la transparencia es dada a través de &lt;strong&gt;JS&lt;/strong&gt; pero, nuevamente, es através de &lt;strong&gt;Prototype&lt;/strong&gt; y no soy un JS-Master como para hacerlo yo mismo con &lt;strong&gt;Jquery&lt;/strong&gt;. No se me ocurrió nada mejor que sacar esas propiedades del &lt;strong&gt;CSS&lt;/strong&gt; y meterlas dentro del &lt;strong&gt;thickbox.js&lt;/strong&gt;, lo que hace que valide perfectamente el código. Total, cuando renderice el &lt;strong&gt;HTML&lt;/strong&gt; recién aparecerán. Además, saqué un _hack para &lt;strong&gt;IE6&lt;/strong&gt; y lo puse en una nueva hoja de estilo, utilizando por supuesto &lt;a href=&#34;http://www.csslab.cl/2006/07/28/se-viene-ie7-%C2%A1huid/&#34;&gt;comentario condicional&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Voilá. Funcionó.&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #TB_overlay {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;top: 0;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;left: 0;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;z-index:100;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 100%;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 100%;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-color: #000;&lt;br /&gt; &lt;span style=&#34;color: #666;&#34;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211; comentado aqu&amp;iacute; y copiado al thickbox.js&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filter:alpha(opacity=60);&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-moz-opacity: 0.6;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;opacity: 0.6;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;- */&lt;/span&gt;&lt;br /&gt; }
&lt;/p&gt;
&lt;p class=&#34;codejs&#34;&gt;
  .append(&#34;&lt;div id=&amp;#8217;TB_overlay&amp;#8217; style=&amp;#8217;filter:alpha(opacity=60); -moz-opacity: 0.6; opacity: 0.6;&amp;#8217;&gt;&lt;/div&gt;&lt;div id=&amp;#8217;TB_window&amp;#8217;&gt;&lt;/div&gt;&#34;);
&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/07/css_valid.gif&#34; alt=&#34;CSS validando&#34; width=&#34;500&#34; height=&#34;85&#34; /&gt; 
&lt;p&gt;La versión utilizada en ese entonces de &lt;strong&gt;Thickbox&lt;/strong&gt; fue la 2.1. Actualmente está la 3, la que se hace muy difícil validar su &lt;strong&gt;CSS&lt;/strong&gt; ya que rescata comandos &lt;strong&gt;JS&lt;/strong&gt; dentro de las mismas propiedades &lt;strong&gt;CSS&lt;/strong&gt; (principalmente parael alto y ancho de la ventana del browser).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/thickbox/index.html&#34;&gt;Ver ejemplo funcionando.&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/thickbox/thickbox.zip&#34;&gt;Bajar este ejemplo (.zip).&lt;/a&gt;{.bajar}&lt;/p&gt;
&lt;h3 id=&#34;links&#34;&gt;Links:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://docs.jquery.com/Downloading_jQuery&#34; target=&#34;_blank&#34;&gt;Jquery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://jquery.com/demo/thickbox-2.1/&#34; target=&#34;_blank&#34;&gt;Thickbox 2.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://jigsaw.w3.org/css-validator/&#34; target=&#34;_blank&#34;&gt;CSS Validator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Propiedades del olvido 2: clip</title>
      <link>https://csslab.cl/2007/07/06/propiedades-del-olvido-2-clip/</link>
      <pubDate>Fri, 06 Jul 2007 21:15:48 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/07/06/propiedades-del-olvido-2-clip/</guid>
      <description>La propiedad clip determina el área de un elemento. Tal cual, con esta propiedad muy poco utilizada puedes cortar, por ejemplo, una imagen que sea mayor que su contenedor sin tener que recurrir a cambiar su width o height (deformarla) o abrir tu editor gráfico favorito y aplicar el corte a mano. Si prefieren, pueden imaginarla como una máscara, con la que puedes determinar los límites y cubrir sólo lo que quieres que se vea a través de pixeles.</description>
      <content>&lt;p&gt;La propiedad &lt;strong&gt;clip&lt;/strong&gt; determina el área de un elemento. Tal cual, con esta propiedad muy poco utilizada puedes cortar, por ejemplo, una imagen que sea mayor que su contenedor sin tener que recurrir a cambiar su &lt;strong&gt;width&lt;/strong&gt; o &lt;strong&gt;height&lt;/strong&gt; (deformarla) o abrir tu editor gráfico favorito y aplicar el corte a mano. Si prefieren, pueden imaginarla como una máscara, con la que puedes determinar los límites y cubrir sólo lo que quieres que se vea a través de pixeles.&lt;/p&gt;
&lt;p&gt;&amp;lt;img src=&amp;ldquo;&lt;a href=&#34;http://www.csslab.cl/wp-content/uploads/2007/07/ejemplo_clip.jpg%22&#34;&gt;http://www.csslab.cl/wp-content/uploads/2007/07/ejemplo_clip.jpg&amp;quot;&lt;/a&gt; alt=&amp;ldquo;Modo de uso de la propiedad clip&amp;rdquo; align=&amp;ldquo;right&amp;rdquo; style=&amp;ldquo;&amp;ldquo;padding: 0 0 10px 10px; /&amp;gt;&lt;/p&gt;
&lt;h3 id=&#34;uso-recttop-right-bottom-left&#34;&gt;Uso: rect(top right bottom left);&lt;/h3&gt;
&lt;p&gt;No funciona precisamente como margin y padding, creo que por eso se complica su uso. En la siguiente imagen, una demostración gráfica de cómo se utiliza sus parámetros de posicionamiento.&lt;/p&gt;
&lt;p&gt;Puedes ocuparla para, por ejemplo, crear una galería de imágenes donde utilizas la misma imagen grande, pero cortada en un espacio determinado (como un thumbnail). Así, no necesitas cargar 2 imagenes: una imagen principal y otra reducida.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/clip/clip.html&#34;&gt;Ver ejemplo aplicado&lt;/a&gt;{.verejemplo}&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 21</title>
      <link>https://csslab.cl/2007/07/06/lo-vi-y-me-gusto-21/</link>
      <pubDate>Fri, 06 Jul 2007 14:37:17 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/07/06/lo-vi-y-me-gusto-21/</guid>
      <description>#21 – 6 Julio 2007
Envía tu sitio construído en HTML+CSS</description>
      <content>&lt;p&gt;#21 – 6 Julio 2007&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/?page_id=27&#34;&gt;Envía tu sitio&lt;/a&gt; construído en HTML+CSS&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.masomenosuno.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/07/masomenosuno.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://studio.st/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/07/studiost.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Propiedades del olvido: visibility</title>
      <link>https://csslab.cl/2007/06/22/propiedades-del-olvido-visibility/</link>
      <pubDate>Fri, 22 Jun 2007 20:59:26 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/06/22/propiedades-del-olvido-visibility/</guid>
      <description>Comezaré una serie de artículos con propiedades CSS que no son muy utilizadas, pero que mantienen una vigencia en cuanto a su utilidad. Es más que nada para que sepan que existen, sus usos y beneficios para sus proyectos web. En esta ocasión, la propiedad visibility.
Uso: visibility: visible | hidden; Hace prácticamente lo mismo que display: esconde o muestra un elemento. La diferencia radica en que mientras el display: none; esconde el elemento y elimina el espacio que ocupa, visibility: hidden; mantiene ese espacio, escondiendo sólo su contenido.</description>
      <content>&lt;p&gt;Comezaré una serie de artículos con propiedades &lt;strong&gt;CSS&lt;/strong&gt; que no son muy utilizadas, pero que mantienen una vigencia en cuanto a su utilidad. Es más que nada para que sepan que existen, sus usos y beneficios para sus proyectos web. En esta ocasión, la propiedad &lt;strong&gt;visibility&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;uso-visibility-visible--hidden&#34;&gt;Uso: visibility: visible | hidden;&lt;/h3&gt;
&lt;p&gt;Hace prácticamente lo mismo que &lt;strong&gt;display&lt;/strong&gt;: esconde o muestra un elemento. La diferencia radica en que mientras el &lt;strong&gt;display: none;&lt;/strong&gt; esconde el elemento y elimina el espacio que ocupa, &lt;strong&gt;visibility: hidden;&lt;/strong&gt; mantiene ese espacio, escondiendo sólo su contenido.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/visibility.html&#34;&gt;Ver ejemplo práctico (view source para los curiosos).&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>IE7 { css2: auto; }</title>
      <link>https://csslab.cl/2007/06/15/ie7-css2-auto/</link>
      <pubDate>Fri, 15 Jun 2007 21:09:26 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/06/15/ie7-css2-auto/</guid>
      <description>IE7 es una librería JavaScript que hace que Internet Explorer se comporte como debe ser: interpretar correctamente los estándares web. Algunas de sus bondades:
Soporta los siguientes selectores:
 parent &amp;gt; child [attr], [attr=»value»], [attr~=»value»] :hover, :active, :focus (for all elements) :first-child, :last-child, only-child, nth-child, nth-last-child :before/:after/content: :lang() does not alter the document structure supports the W3C box model in both standards and quirks mode supports fixed positioning supports overflow:visible supports min/max-width/height standardies forms behavior supports PNG alpha transparency works for Microsoft Internet Explorer 5+ (Windows only)  Aún está en alpha, y personalmente no lo he probado.</description>
      <content>&lt;p&gt;IE7 es una librería &lt;strong&gt;JavaScript&lt;/strong&gt; que hace que Internet Explorer se comporte como debe ser: interpretar correctamente los estándares web. Algunas de sus bondades:&lt;/p&gt;
&lt;p&gt;Soporta los siguientes selectores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;parent &amp;gt; child&lt;/li&gt;
&lt;li&gt;[attr], [attr=»value»], [attr~=»value»]&lt;/li&gt;
&lt;li&gt;:hover, :active, :focus (for all elements)&lt;/li&gt;
&lt;li&gt;:first-child, :last-child, only-child, nth-child, nth-last-child&lt;/li&gt;
&lt;li&gt;:before/:after/content:&lt;/li&gt;
&lt;li&gt;:lang()&lt;/li&gt;
&lt;li&gt;does not alter the document structure&lt;/li&gt;
&lt;li&gt;supports the W3C box model in both standards and quirks mode&lt;/li&gt;
&lt;li&gt;supports fixed positioning&lt;/li&gt;
&lt;li&gt;supports overflow:visible&lt;/li&gt;
&lt;li&gt;supports min/max-width/height&lt;/li&gt;
&lt;li&gt;standardies forms behavior&lt;/li&gt;
&lt;li&gt;supports PNG alpha transparency&lt;/li&gt;
&lt;li&gt;works for Microsoft Internet Explorer 5+ (Windows only)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aún está en alpha, y personalmente no lo he probado. Si alguien lo hace, ruego comentar sus resultados.&lt;/p&gt;
&lt;h3 id=&#34;a-hrefhttpdeanedwardsnameie7-titlever-más-sobre-ie7--css2-auto--target_blankie7--css2-auto-a&#34;&gt;&lt;a href=&#34;http://dean.edwards.name/IE7/&#34; title=&#34;Ver más sobre IE7 { css2: auto; }&#34; target=&#34;_blank&#34;&gt;IE7 { css2: auto; }&lt;/a&gt;&lt;/h3&gt;
</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 20</title>
      <link>https://csslab.cl/2007/06/06/lo-vi-y-me-gusto-20/</link>
      <pubDate>Wed, 06 Jun 2007 15:25:54 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/06/06/lo-vi-y-me-gusto-20/</guid>
      <description>#20 – 6 Junio 2007
Envía tu sitio construído en HTML+CSS</description>
      <content>&lt;p&gt;#20 – 6 Junio 2007&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/?page_id=27&#34;&gt;Envía tu sitio&lt;/a&gt; construído en HTML+CSS&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.futhart.cl/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/06/futhart.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://estupendos.net/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/06/theestupendos.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>La verdadera !importancia</title>
      <link>https://csslab.cl/2007/06/05/la-verdadera-importancia/</link>
      <pubDate>Tue, 05 Jun 2007 22:01:05 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/06/05/la-verdadera-importancia/</guid>
      <description>CSS significa Hojas de Estilo en Cascada. Con cascada, nos referimos que el browser lee esta hoja de estilos en orden descendente (haciendo analogía, una cascada cae de arriba hacia abajo). Así, en el caso de tener dos estilos similares definidos, el que venga en último lugar, o más abajo (orden descendente) tendrá más relevancia. O sea:
h1 { font-size: 22px; }&amp;lt;br / h1 { font-size: 48px; } Ver ejemplo{.verejemplo}</description>
      <content>&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt; significa &lt;em&gt;Hojas de Estilo en Cascada&lt;/em&gt;. Con cascada, nos referimos que el browser lee esta hoja de estilos en orden descendente (haciendo analogía, una cascada cae de arriba hacia abajo). Así, en el caso de tener dos estilos similares definidos, el que venga en último lugar, o más abajo (orden descendente) tendrá más relevancia. O sea:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;h1 { font-size: 22px; }&amp;lt;br /&gt;
h1 { font-size: 48px; }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/important/sin_important.html&#34;&gt;Ver ejemplo&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;En este ejemplo, tenemos definido en nuestra hoja de estilos para &lt;strong&gt;h1&lt;/strong&gt; dos tamaños diferentes, pero se mostrará finalmente el tamaño de &lt;strong&gt;48px&lt;/strong&gt;, ya que tiene más peso que el primero (lo sobreescribe si refieren pensar así).&lt;/p&gt;
&lt;p&gt;Ahora, a través de una simple regla, es posible darle más relevancia a determinadas propiedades sobre todas las otras. Con &lt;strong&gt;!important&lt;/strong&gt;, te aseguras que determinada propiedad sea aplicada sobre todas las otras. Utilizando el ejemplo anterior, tendremos el &lt;strong&gt;h1&lt;/strong&gt; de tamaño &lt;strong&gt;22px&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&#34;language-css&#34;&gt;&lt;code&gt;h1 { font-size: 22px!important; }&amp;lt;br /&gt;
h1 { font-size: 48px; }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/important/important.html&#34;&gt;Ver ejemplo&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;En hojas de estilos muy grandes, suele pasar que uno no se da cuenta y se provocan conflictos entre estilos. Con esta regla, podremos darle relevancia a la que nos interesa.&lt;/p&gt;
&lt;h3 id=&#34;links&#34;&gt;Links:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/REC-CSS2/cascade.html#important-rules&#34;&gt;!important rules&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </item>
    
    <item>
      <title>Selectores avanzados de atributos</title>
      <link>https://csslab.cl/2007/06/05/selectores-avanzados-de-atributos/</link>
      <pubDate>Tue, 05 Jun 2007 14:59:03 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/06/05/selectores-avanzados-de-atributos/</guid>
      <description>&lt;p&gt;Con este artículo les mostraré una manera de cómo &lt;strong&gt;CSS&lt;/strong&gt; realmente potencia la presentación de un sitio, aportando más hacia la accesibilidad y usabilidad que a los &lt;a href=&#34;http://www.csslab.cl/2006/08/25/el-porque-de-no-utilizar-tablas/&#34;&gt;muchos argumentos que hemos entregado&lt;/a&gt; hasta ahora.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSS2&lt;/strong&gt; nos permite aplicar estilos a elementos basándose en los atributos definidos en las etiquetas &lt;strong&gt;HTML&lt;/strong&gt;, incluso a los valores contenidos en esos atributos. Primero que nada, veamos cómo se declara estos selectores avanzados:&lt;/p&gt;</description>
      <content>&lt;p&gt;Con este artículo les mostraré una manera de cómo &lt;strong&gt;CSS&lt;/strong&gt; realmente potencia la presentación de un sitio, aportando más hacia la accesibilidad y usabilidad que a los &lt;a href=&#34;http://www.csslab.cl/2006/08/25/el-porque-de-no-utilizar-tablas/&#34;&gt;muchos argumentos que hemos entregado&lt;/a&gt; hasta ahora.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSS2&lt;/strong&gt; nos permite aplicar estilos a elementos basándose en los atributos definidos en las etiquetas &lt;strong&gt;HTML&lt;/strong&gt;, incluso a los valores contenidos en esos atributos. Primero que nada, veamos cómo se declara estos selectores avanzados:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;a[href=&#34;http://www.csslab.cl/&#34;] {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-weight: bolder;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Como se nota, a diferencia de lo que usualmente se hace, se define el atributo entre corchetes ( &lt;strong&gt;[href]&lt;/strong&gt; ). En este ejemplo, lo que se logrará es que un ejemplo con link a este sitio tenga la fuente en negrita.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/selectores/link.html&#34;&gt;Ver ejemplo&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;Una excelente manera de aportar a la usabilidad, es entregándole al usuario la posibilidad de saber cuándo un link es externo, o cuando quieres q se abra en una ventana nueva (&lt;strong&gt;target=&amp;quot;_blank&amp;quot;&lt;/strong&gt;). Esto se logra agregando un ícono descriptivo luego del enlace, de la siguiente manera:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;a[target=&#39;_blank&#39;] {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(icono_blank.gif) right center no-repeat;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding-left: 20px;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/selectores/blank.html&#34;&gt;Ver ejemplo&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;O si quieres que un enlace a un &lt;strong&gt;.pdf&lt;/strong&gt; tenga un ícono especial:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;a[href $=&#39;.pdf&#39;] {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(icono_pdf.gif) right center no-repeat;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding-left: 25px;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En este ejempo, con el símbolo &lt;strong&gt;$&lt;/strong&gt; indicamos que el atributo &lt;strong&gt;termina con&lt;/strong&gt; un &lt;strong&gt;.pdf&lt;/strong&gt;. Otro más:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;a[href ^= &#34;mailto:&#34;] {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-decoration: overline;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aquí, si un enlace es a un email a través de &lt;strong&gt;mailto&lt;/strong&gt; (&lt;strong&gt;^&lt;/strong&gt; quiere decir &lt;strong&gt;comienza con&lt;/strong&gt;) le damos una línea sobre el texto (&lt;strong&gt;text-decoration: overline;&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/selectores/index.html&#34;&gt;Ver todos los ejemplos&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/camino.gif&#34; alt=&#34;Camino&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Finalmente, y como me imagino que esperaban, tanta maravilla &lt;strong&gt;no funciona en IE6&lt;/strong&gt;. Más un argumento para enterrarlo de una vez por todas.&lt;/p&gt;
&lt;h3 id=&#34;links&#34;&gt;Links:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://webdesign.about.com/cs/css/qt/tipcssattrib.htm&#34; target=&#34;_blank&#34;&gt;Cascading Style Sheets 2 Attribute Selectors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>El contorno de la discordia</title>
      <link>https://csslab.cl/2007/05/28/el-contorno-de-la-discordia/</link>
      <pubDate>Mon, 28 May 2007 19:49:34 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/05/28/el-contorno-de-la-discordia/</guid>
      <description>&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/05/outline_csslab.gif&#34; align=&#34;right&#34; /&gt;
&lt;p&gt;Uno de los pocos detalles que le he visto a &lt;a href=&#34;http://www.getfirefox.com&#34; target=&#34;_blank&#34;&gt;Firefox&lt;/a&gt;, responde a un tema con los links. En realidad, aparece siempre que el foco está sobre un elemento (formularios, enlaces) para llamar la atención y destacarlo por sobre otros. Se dibuja una línea punteada alrededor de nuestro elemento, y lo he notado muy claramente en Firefox, ya que Safari (browser que uso por defecto) no lo despliega si no lo explicito. Otro dato sobre este contorno, o &lt;strong&gt;outline&lt;/strong&gt;: a pesar de que despliega un borde alrededor, no responde al modelo de caja, o sea, no ocupa espacio interior o exterior. O sea, que no debemos de considerarlo al diagramar con cajas, ya que no modifica nuestros anchos o altos.&lt;/p&gt;
&lt;p&gt;Pues con todo esto, a lo que voy es que lo podemos controlar a través de &lt;strong&gt;CSS&lt;/strong&gt;, mediante la propiedad &lt;strong&gt;outline&lt;/strong&gt;. Se declara tal como un borde:&lt;/p&gt;</description>
      <content>&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/05/outline_csslab.gif&#34; align=&#34;right&#34; /&gt;
&lt;p&gt;Uno de los pocos detalles que le he visto a &lt;a href=&#34;http://www.getfirefox.com&#34; target=&#34;_blank&#34;&gt;Firefox&lt;/a&gt;, responde a un tema con los links. En realidad, aparece siempre que el foco está sobre un elemento (formularios, enlaces) para llamar la atención y destacarlo por sobre otros. Se dibuja una línea punteada alrededor de nuestro elemento, y lo he notado muy claramente en Firefox, ya que Safari (browser que uso por defecto) no lo despliega si no lo explicito. Otro dato sobre este contorno, o &lt;strong&gt;outline&lt;/strong&gt;: a pesar de que despliega un borde alrededor, no responde al modelo de caja, o sea, no ocupa espacio interior o exterior. O sea, que no debemos de considerarlo al diagramar con cajas, ya que no modifica nuestros anchos o altos.&lt;/p&gt;
&lt;p&gt;Pues con todo esto, a lo que voy es que lo podemos controlar a través de &lt;strong&gt;CSS&lt;/strong&gt;, mediante la propiedad &lt;strong&gt;outline&lt;/strong&gt;. Se declara tal como un borde:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  a {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;outline: 1px solid black;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;Mi problema es que está declarado por defecto en Firefox en la peudo-clase :hover, lo que me molesta bastante, principalmente cuando el elemento que contiene el link (y por lo tanto el outline) está posicionado con relación al margen. Fíjense en el ejemplo, en el enlace del medio y se darán cuenta a lo que me refiero (hagan click sobre él con Firefox y verán el susodicho &lt;span style=&#34;text-decoration: line-through;&#34;&gt;borde&lt;/span&gt; contorno).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/outline.html&#34;&gt;Ver ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bueno, la solución final reside en quitarlo de raíz. Se declara que para todos los links, en todas las instancias (lo que involucra las 4 pseudo-clases a:link, a:visited, a:hover, a:active) este contorno desaparezca:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  a {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;outline: 0;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/outline.html&#34;&gt;Ver nuevamente ejemplos.&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Arrastrando con Moo</title>
      <link>https://csslab.cl/2007/05/18/arrastrando-con-moo/</link>
      <pubDate>Fri, 18 May 2007 17:51:13 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/05/18/arrastrando-con-moo/</guid>
      <description>&lt;p&gt;Sigo jugando con este gran &lt;em&gt;framework&lt;/em&gt; que ha demostrado ser &lt;a href=&#34;http://mootools.net/&#34; target=&#34;_blank&#34;&gt;mootools&lt;/a&gt;. En esta ocasión, y fusionando lo que se vió recientemente para &lt;a href=&#34;http://www.csslab.cl/2007/05/11/absolutamente-si/&#34;&gt;Absolutamente sí&lt;/a&gt;, una vez más reciclaré ese layout para integrarle un efecto de &lt;strong&gt;moo&lt;/strong&gt;, el que me permite crear ventanas arrastrables fácilmente (en el fondo, esa es la idea). Lo único diferente del &lt;strong&gt;HTML&lt;/strong&gt; anterior, será sacar esa imagen con que jugamos el position (no la necesito ahora), cambiar el &lt;strong&gt;id=&amp;ldquo;contenido&amp;rdquo;&lt;/strong&gt; por una &lt;strong&gt;class=&amp;ldquo;container&amp;rdquo;&lt;/strong&gt; y agregarle una class al &lt;strong&gt;&lt;h1&gt;&lt;/strong&gt; para que a través de éste searrastre nuestra ventana.&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;div class=&#34;container&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;h1 class=&#34;arrastra&#34;&gt;Arr&amp;aacute;strame desde aqu&amp;iacute;&lt;/h1&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer&amp;#8230;&lt;/p&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;Curabitur at sem. Vestibulum vel diam. Proin quis sapien ut leo faucibus eleifend&amp;#8230;&lt;/p&gt;&lt;br /&gt; &lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Además, debemos agregar el llamado a &lt;strong&gt;mootools.js&lt;/strong&gt; y un script que ejecuta el efecto de arrastrado, además de un &lt;strong&gt;fade&lt;/strong&gt; que lo hace más atractivo:&lt;/p&gt;</description>
      <content>&lt;p&gt;Sigo jugando con este gran &lt;em&gt;framework&lt;/em&gt; que ha demostrado ser &lt;a href=&#34;http://mootools.net/&#34; target=&#34;_blank&#34;&gt;mootools&lt;/a&gt;. En esta ocasión, y fusionando lo que se vió recientemente para &lt;a href=&#34;http://www.csslab.cl/2007/05/11/absolutamente-si/&#34;&gt;Absolutamente sí&lt;/a&gt;, una vez más reciclaré ese layout para integrarle un efecto de &lt;strong&gt;moo&lt;/strong&gt;, el que me permite crear ventanas arrastrables fácilmente (en el fondo, esa es la idea). Lo único diferente del &lt;strong&gt;HTML&lt;/strong&gt; anterior, será sacar esa imagen con que jugamos el position (no la necesito ahora), cambiar el &lt;strong&gt;id=&amp;ldquo;contenido&amp;rdquo;&lt;/strong&gt; por una &lt;strong&gt;class=&amp;ldquo;container&amp;rdquo;&lt;/strong&gt; y agregarle una class al &lt;strong&gt;&lt;h1&gt;&lt;/strong&gt; para que a través de éste searrastre nuestra ventana.&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;div class=&#34;container&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;h1 class=&#34;arrastra&#34;&gt;Arr&amp;aacute;strame desde aqu&amp;iacute;&lt;/h1&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer&amp;#8230;&lt;/p&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;Curabitur at sem. Vestibulum vel diam. Proin quis sapien ut leo faucibus eleifend&amp;#8230;&lt;/p&gt;&lt;br /&gt; &lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Además, debemos agregar el llamado a &lt;strong&gt;mootools.js&lt;/strong&gt; y un script que ejecuta el efecto de arrastrado, además de un &lt;strong&gt;fade&lt;/strong&gt; que lo hace más atractivo:&lt;/p&gt;
&lt;p class=&#34;codejs&#34;&gt;
  var indexLevel = 1;&lt;br /&gt; function dragContainerInit(el){&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var fadeIn = new fx.Opacity(el.parentNode, {duration:300});&lt;br /&gt; var dragContainerOptions = {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handle: el, &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;onStart: function(){&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var fadeIn = new fx.Opacity(el.parentNode, {duration:300});&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fadeIn.custom(1,.5);&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;indexLevel++; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;el.parentNode.style.zIndex = indexLevel;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}.bind(this),&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;onComplete: function(){&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var fadeIn = new fx.Opacity(el.parentNode, {duration:300});&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fadeIn.custom(.5,1);&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}.bind(this)&lt;br /&gt; };&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;el.style.cursor = &amp;#8216;move&amp;#8217;;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;el.parentNode.makeDraggable(dragContainerOptions);&lt;br /&gt; }&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window.onload=function() {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var draggables = document.getElementsBySelector(&amp;#8216;.arrastra&amp;#8217;);&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;draggables.each(function(el){dragContainerInit(el);});&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/p&gt;
&lt;p&gt;No viene al caso comentar todo este código, pero lo que sí me interesa es mencionarles donde pueden y deberían modificarlo. Si lo leen, pueden darse cuenta que se puede manejar la opacidad (&lt;strong&gt;fadeIn.custom(.5,1);&lt;/strong&gt;), la duración de la transición de esta opacidad (&lt;strong&gt;{duration:300}&lt;/strong&gt;), el tipo de cursor que se despliega (&lt;strong&gt;el.style.cursor = ‘move’;&lt;/strong&gt;), y finalmente la class del elemento que permite el arrastre (&lt;strong&gt;.arrastra&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/drag/drag.html&#34;&gt;Ver ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La sintaxis de &lt;strong&gt;moo&lt;/strong&gt;, y en general de las &lt;a href=&#34;http://www.csslab.cl/2007/02/13/agregando-movimiento-via-javascript/&#34;&gt;demases librerías javascript&lt;/a&gt; existentes, son muy fáciles de entender y poder modificarlo a tu gusto. Jueguen un poco con ella y se darán cuenta de lo mucho que pueden lograr.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Absolutamente sí</title>
      <link>https://csslab.cl/2007/05/11/absolutamente-si/</link>
      <pubDate>Fri, 11 May 2007 20:55:26 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/05/11/absolutamente-si/</guid>
      <description>&lt;p&gt;Una propiedad muy importante de &lt;strong&gt;CSS&lt;/strong&gt; es &lt;strong&gt;position&lt;/strong&gt;. Con ella, podemos estructurar nuestro sitio web, aunque según mi perspectiva prefiero utilizar &lt;strong&gt;float&lt;/strong&gt; y &lt;strong&gt;display&lt;/strong&gt; para lograr lo mismo. Enfin, cosa de gustos. Algunas veces eso sí se me ha hecho necesario utilizar &lt;strong&gt;position&lt;/strong&gt; para manejar la posición de un elemento por sobre otro, o respecto a mi ventana.&lt;/p&gt;
&lt;p&gt;La propiedad &lt;strong&gt;position&lt;/strong&gt; ubica un elemento en varios estados: &lt;strong&gt;static&lt;/strong&gt;, &lt;strong&gt;relative&lt;/strong&gt;, &lt;strong&gt;absolute&lt;/strong&gt; o &lt;strong&gt;fixed&lt;/strong&gt;. Detallemos:&lt;/p&gt;</description>
      <content>&lt;p&gt;Una propiedad muy importante de &lt;strong&gt;CSS&lt;/strong&gt; es &lt;strong&gt;position&lt;/strong&gt;. Con ella, podemos estructurar nuestro sitio web, aunque según mi perspectiva prefiero utilizar &lt;strong&gt;float&lt;/strong&gt; y &lt;strong&gt;display&lt;/strong&gt; para lograr lo mismo. Enfin, cosa de gustos. Algunas veces eso sí se me ha hecho necesario utilizar &lt;strong&gt;position&lt;/strong&gt; para manejar la posición de un elemento por sobre otro, o respecto a mi ventana.&lt;/p&gt;
&lt;p&gt;La propiedad &lt;strong&gt;position&lt;/strong&gt; ubica un elemento en varios estados: &lt;strong&gt;static&lt;/strong&gt;, &lt;strong&gt;relative&lt;/strong&gt;, &lt;strong&gt;absolute&lt;/strong&gt; o &lt;strong&gt;fixed&lt;/strong&gt;. Detallemos:&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/camino.gif&#34; alt=&#34;Camino&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Static&lt;/strong&gt;: es por defecto en las etiquetas. Un elemento con &lt;strong&gt;position: static;&lt;/strong&gt; siempre tiene la posición normal con que fluye a diagramación de la página.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Relative&lt;/strong&gt;: un elemento con &lt;strong&gt;position: relative;&lt;/strong&gt; se mueve con respecto a su posición normal. Al definirlo, podemos posicionarlo &lt;strong&gt;top: 20px;&lt;/strong&gt; respecto a su posición actual.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Absolute&lt;/strong&gt;: una etiqueta con &lt;strong&gt;position: absolute;&lt;/strong&gt; es posicionado respectivamente a su contenedor bloque, sea éste el &lt;strong&gt;DIV&lt;/strong&gt; padre, o el &lt;strong&gt;BODY&lt;/strong&gt;. Su posición también es especificada por &lt;strong&gt;top&lt;/strong&gt;, &lt;strong&gt;right&lt;/strong&gt;, &lt;strong&gt;bottom&lt;/strong&gt;, &lt;strong&gt;left&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fixed&lt;/strong&gt;: un elemento con &lt;strong&gt;position: fixed;&lt;/strong&gt; queda fijo respectivo a la ventana del browser, no importanto el movimiento de éste o del scroll que produzca. Obedece también a &lt;strong&gt;top&lt;/strong&gt;, &lt;strong&gt;right&lt;/strong&gt;, &lt;strong&gt;bottom&lt;/strong&gt; y &lt;strong&gt;left&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;¿Se fijaron que para position no se ocupa margin-top, o margin-left? Sólo para que lo tengan en cuenta. Ahora, tal como quedó plasmado en el título de este artículo, en este caso mencionaré específicamente la propriedad &lt;strong&gt;position: absolute&lt;/strong&gt;. Esta propiedad es muy útil si quieres ubicar elementos por sobre otros, no importando donde éstos estén ubicados. En esta ocasión, 2 ejemplos gráficos. Comenzaremos con el &lt;strong&gt;HTML&lt;/strong&gt; base que regirá ambos ejemplos:&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;div id=&#34;contenido&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;h1&gt;T&amp;iacute;tulo&lt;/h1&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;Lorem ipsum dolor sit amet,&amp;#8230;&amp;#8230;.&lt;/p&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;Curabitur at sem. Vestibulum vel diam. Proin quis sapien ut leo faucibus eleifend. Phasellus eros. Praesent ac diam&amp;#8230;.&lt;/p&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img src=&#34;csslab.gif&#34; /&gt;&lt;br /&gt; &lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Nada de otro mundo. Un contenedor que tiene un título, y dos párrafos de texto en sus respectivas etiquetas, para finalmente mostrar una imagen. Ahora, a través del &lt;strong&gt;CSS&lt;/strong&gt;, esta página se verá un poco mejor estéticamente. La idea como mencioné es mostrar a través de 2 ejemplos las combinaciones que permiten posicionar en este caso a la imagen respecto a la ventana del browser, y a su etiqueta contenedora.&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #contenido {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 450px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left;&lt;br /&gt; }&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#contenido h1 {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-align: center;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: #F00;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#contenido p {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 10px 10px 10px 15px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size: 12px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;line-height: 140%;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#contenido img {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;position: absolute;&lt;/strong&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 230px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 100px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;top: 0;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;right: 0;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/p&gt;
&lt;p&gt;Como se habrá notado, sólo se definió en la etiqueta &lt;strong&gt;IMG&lt;/strong&gt; que ésta estuviera posicionada absolutamente, arriba y a la derecha (&lt;strong&gt;top: 0; right: 0;&lt;/strong&gt;). Con esto, verán que la imagen estará ubicada en la parte superior derecha de nuestra ventana de browser, y se moverá respecto a su resolución.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/position/absoluto.html&#34;&gt;Ver ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ahora, agregaremos un &lt;strong&gt;position: relative&lt;/strong&gt; al contenedor. Con esto, verán que la imagen nuevamente estará posicionada sobre nuestros elementos, pero en esta ocasión respecto a su contenedor bloque. Con esta propiedad declarada, definimos que &lt;strong&gt;div#contenido&lt;/strong&gt; es su elemento bloque contenedor, y por lo tanto que sujete a &lt;strong&gt;IMG&lt;/strong&gt; dentro de sí.&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #contenido {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 450px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;position: relative;&lt;/strong&gt;&lt;br /&gt; }&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#contenido h1 {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-align: center;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: #F00;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#contenido p {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 10px 10px 10px 15px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size: 12px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;line-height: 140%;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#contenido img {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;position: absolute;&lt;/strong&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 230px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 100px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;top: 0;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;right: 0;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/position/relativo.html&#34;&gt;Ver ejemplo relativo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3schools.com/css/pr_class_position.asp&#34; target=&#34;_blank&#34;&gt;CSS position Property&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.barelyfitz.com/screencast/html-training/css/positioning/&#34; target=&#34;_blank&#34;&gt;Learn CSS Positioning in Ten Steps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Estilos de botones crossbrowser</title>
      <link>https://csslab.cl/2007/04/23/estilos-de-botones-crossbrowser/</link>
      <pubDate>Mon, 23 Apr 2007 17:26:45 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/04/23/estilos-de-botones-crossbrowser/</guid>
      <description>&lt;p&gt;Una de las cosas más difíciles que me toca al armar un sitio, son los formularios. Hacer que queden alineados correctamente, y en todos los browsers, es algo que a ratos me complica. Al terminarlos, está un pequeño botón que gatilla el envío del mismo. Este simple botón también suele ser un dolor de cabeza, ya que darle un estilo al &lt;strong&gt;&lt;input&gt;&lt;/strong&gt; no es correctamente interpretado por todos los browsers. Me topé con este problema hace un tiempo, y encontré la siguiente solución. Por supuesto, la comparto por si más de alguien tiene el mismo inconveniente.&lt;/p&gt;</description>
      <content>&lt;p&gt;Una de las cosas más difíciles que me toca al armar un sitio, son los formularios. Hacer que queden alineados correctamente, y en todos los browsers, es algo que a ratos me complica. Al terminarlos, está un pequeño botón que gatilla el envío del mismo. Este simple botón también suele ser un dolor de cabeza, ya que darle un estilo al &lt;strong&gt;&lt;input&gt;&lt;/strong&gt; no es correctamente interpretado por todos los browsers. Me topé con este problema hace un tiempo, y encontré la siguiente solución. Por supuesto, la comparto por si más de alguien tiene el mismo inconveniente.&lt;/p&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/04/boton_safari.gif&#34; style=&#34;float: right; padding: 0 0 10px 10px;&#34; alt=&#34;Boton Aqua de Safari&#34; /&gt; 
&lt;p&gt;Lo que sucede es que Safari (mi browser favorito) no despliega estilos para &lt;strong&gt;&lt;input&gt;&lt;/strong&gt;; simplemente los ignora. Muestra en vez, su estiloso pero no compatible con mi diseño &lt;em&gt;aqua button&lt;/em&gt;. Lo que quiero es tener mi botón, no otro. Así que la solución es reemplazar &lt;strong&gt;&lt;input&gt;&lt;/strong&gt; por &lt;strong&gt;&lt;button&gt;&lt;/strong&gt;, una etiqueta de botón muy antigua, pero no obsoleta, la que sí permite albergar imagen de fondo, color, margen, borde, etc. Como es una etiqueta algo antigua, requiere de cierre, tal como un link:&lt;/p&gt;
&lt;div class=&#34;pullquote&#34; style=&#34;margin-top: 20px;&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/camino.gif&#34; alt=&#34;Camino&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/flock.gif&#34; alt=&#34;Flock&#34; /&gt;
&lt;/div&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;button&amp;gt;Presi&amp;oacute;name&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;y el CSS para hacerlo más bonito:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;button {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border: 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(button_fondo.gif) left top no-repeat;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 110px;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 40px;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: #FFF;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size: 14px;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-weight: bolder;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-family: Georgia, &#34;Times New Roman&#34;, Times, serif;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-shadow: #333 1px 1px 3px;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-align: center;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cursor: pointer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/04/browsers.gif&#34; style=&#34;float: right; padding: 0 0 10px 10px;&#34; alt=&#34;Despliegue en otros browsers&#34; /&gt; 
&lt;p&gt;Como verán, funciona igual que cualquier otro elemento, al que le damos el estilo que queramos. Importante recalcar 2 líneas: &lt;strong&gt;&lt;button&gt;&lt;/strong&gt; tiene por defecto borde con volumen, así que si no lo necesitamos es mejor poner &lt;strong&gt;border: 0&lt;/strong&gt;. Lo segundo, agregarle el cursor de mano al posar el mouse encima del botón con &lt;strong&gt;cursor: pointer&lt;/strong&gt;. Listo… pero surge un pequeño gran inconveniete: Safari y Opera no muestran nuestro texto centrado verticalmente. Firefox, Camino, Flock, IE, según mis pruebas, lo muestran perfecto. Si agregamos un &lt;strong&gt;padding-top&lt;/strong&gt; de 10px se muestra bien, pero en los otros no. ¿Qué ∞¢“÷®? ¿Debería de importarme? Quizás sí, teniendo en cuenta que ambos browsers pasan el test &lt;a href=&#34;http://www.webstandards.org/action/acid2/&#34; target=&#34;_blank&#34;&gt;Acid2&lt;/a&gt;. Bueno, no quiero complicarme más. La solución radica en agregar el texto del botón en la misma imagen de fondo, y através del &lt;a href=&#34;http://www.csslab.cl/2006/09/25/image-replacement-o-como-reemplazar-contenido-por-imagen/&#34;&gt;método &lt;strong&gt;Phark&lt;/strong&gt;&lt;/a&gt;, ocultar el título del botón:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;button {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border: 0; &amp;lt;em&gt;/*no quiero borde*/&amp;lt;/em&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(button_fondo2.gif) left top no-repeat;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 110px;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 40px;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cursor: pointer; &amp;lt;em&gt;/*muestrame el cursor de mano*/&amp;lt;/em&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-indent: -999px; &amp;lt;em&gt;/*manda el texto leeeeejos*/&amp;lt;/em&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;overflow: hidden; &amp;lt;em&gt;/*esconde cualquier trazo del mismo*/&amp;lt;/em&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/button/index.html&#34; title=&#34;boton con estilo&#34; target=&#34;_blank&#34;&gt;Ver resultado final&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Texto auxiliar con estilo</title>
      <link>https://csslab.cl/2007/04/18/texto-auxiliar-con-estilo/</link>
      <pubDate>Wed, 18 Apr 2007 17:23:51 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/04/18/texto-auxiliar-con-estilo/</guid>
      <description>&lt;p&gt;Pido disculpas por un título tan simple esta vez. No se me ocurrió nada mejor. Enfin, lo que vale es lo que sigue.&lt;/p&gt;
&lt;p&gt;Siguiendo con el desarrollo del nuevo &lt;a href=&#34;http://www.be-studios.com&#34; target=&#34;_blank&#34;&gt;Be Studios&lt;/a&gt;, creé un método donde al posar el mouse sobre una imagen, se desplegara un texto alternativo (no, no es &lt;strong&gt;alt&lt;/strong&gt;) y que fuera auxiliar a la imagen. Esto lo había visto antes, sólo que no recuerdo ningún link en este momento. Entonces, recreé la situación, y la explico a continuación. Antes sí, &lt;a href=&#34;https://csslab.cl/ejemplos/textosobreimagen/index.html&#34;&gt;vean el ejemplo&lt;/a&gt; para que sepan de qué hablo.&lt;/p&gt;
&lt;p&gt;Primero el código &lt;strong&gt;HTML&lt;/strong&gt;. En este caso, es sólo una imagen simple y silvestre. Ella está contenida dentro de un &lt;strong&gt;&lt;div&gt;&lt;/strong&gt;, el cual me entrega más control sobre el manejo de profundidades a través de &lt;strong&gt;z-index&lt;/strong&gt;. Mi texto alternativo se posa sobre un &lt;strong&gt;&lt;span&gt;&lt;/strong&gt; luego después del &lt;strong&gt;&lt;img&gt;&lt;/strong&gt;, el cual a través del &lt;strong&gt;CSS&lt;/strong&gt; se verá dentro, y con un fondo y con transparencia.&lt;/p&gt;</description>
      <content>&lt;p&gt;Pido disculpas por un título tan simple esta vez. No se me ocurrió nada mejor. Enfin, lo que vale es lo que sigue.&lt;/p&gt;
&lt;p&gt;Siguiendo con el desarrollo del nuevo &lt;a href=&#34;http://www.be-studios.com&#34; target=&#34;_blank&#34;&gt;Be Studios&lt;/a&gt;, creé un método donde al posar el mouse sobre una imagen, se desplegara un texto alternativo (no, no es &lt;strong&gt;alt&lt;/strong&gt;) y que fuera auxiliar a la imagen. Esto lo había visto antes, sólo que no recuerdo ningún link en este momento. Entonces, recreé la situación, y la explico a continuación. Antes sí, &lt;a href=&#34;https://csslab.cl/ejemplos/textosobreimagen/index.html&#34;&gt;vean el ejemplo&lt;/a&gt; para que sepan de qué hablo.&lt;/p&gt;
&lt;p&gt;Primero el código &lt;strong&gt;HTML&lt;/strong&gt;. En este caso, es sólo una imagen simple y silvestre. Ella está contenida dentro de un &lt;strong&gt;&lt;div&gt;&lt;/strong&gt;, el cual me entrega más control sobre el manejo de profundidades a través de &lt;strong&gt;z-index&lt;/strong&gt;. Mi texto alternativo se posa sobre un &lt;strong&gt;&lt;span&gt;&lt;/strong&gt; luego después del &lt;strong&gt;&lt;img&gt;&lt;/strong&gt;, el cual a través del &lt;strong&gt;CSS&lt;/strong&gt; se verá dentro, y con un fondo y con transparencia.&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;div id=&#34;ejemplo&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img src=&#34;img.gif&#34; width=&#34;300&#34; height=&#34;100&#34; alt=&#34;CSSLab &amp;#8211; Otro laboratorio de CSS, pero en espa&amp;ntilde;ol&#34; /&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Click para abrir&lt;/span&gt;&lt;br /&gt; &lt;/div&gt;
&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/camino.gif&#34; alt=&#34;Camino&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/flock.gif&#34; alt=&#34;Flock&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Pues ahora viene la magia:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #ejemplo {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;z-index: 0;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 300px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 100px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: relative;&lt;br /&gt; }&lt;br /&gt; #ejemplo img {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;z-index: 1;&lt;br /&gt; }&lt;br /&gt; #ejemplo span {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: none;&lt;br /&gt; }&lt;br /&gt; #ejemplo:hover span {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: block;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position: absolute;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;right: 0;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bottom: 0;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;z-index: 2;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 2px 5px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: #000;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: white;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-weight: bolder;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size: 24px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-shadow: #000 1px 1px 3px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;opacity: 0.4;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-moz-opacity: 0.4;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;Primero, definimos nuestro &lt;strong&gt;&lt;div&gt;&lt;/strong&gt;, como dije con un &lt;strong&gt;z-index&lt;/strong&gt; inferior para dejarlo abajo de nuestro &lt;strong&gt;&lt;span&gt;&lt;/strong&gt; y posicionado relativamente. Esto es muy importante, ya que a continuación nuestro &lt;strong&gt;&lt;span&gt;&lt;/strong&gt; estará posicionado absolutamente en relación al &lt;strong&gt;&lt;div&gt;&lt;/strong&gt;, lo que lo colocará sobre la imagen (que según se muestra tiene &lt;strong&gt;z-index: 1&lt;/strong&gt;, superior al &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; pero inferior al &lt;strong&gt;z-index: 2&lt;/strong&gt; del &lt;strong&gt;&lt;span&gt;&lt;/strong&gt;) Este texto será desplegado con un &lt;strong&gt;:hover&lt;/strong&gt; en el &lt;strong&gt;&lt;div&gt;&lt;/strong&gt;, lo que no hace que funcione en IE6 (ya que este browser no soporta &lt;strong&gt;pseudo-classes&lt;/strong&gt; que no sean links &lt;strong&gt;&lt;a&gt;&lt;/strong&gt;,lo cual para este caso me importa bien poco). El resto, código para que se vea bonito.&lt;/p&gt;
&lt;p&gt;Finalmente la &lt;a href=&#34;http://www.csslab.cl/2007/01/24/transparencias-a-prueba-de-browsers-2/&#34;&gt;transparencia a prueba de browsers&lt;/a&gt;. Si ven el código fuente &lt;a href=&#34;https://csslab.cl/ejemplos/textosobreimagen/index.html&#34;&gt;en el ejemplo&lt;/a&gt;, verán que para IE7 está implementado con &lt;a href=&#34;http://www.csslab.cl/2006/07/28/se-viene-ie7-%C2%A1huid/&#34;&gt;comentario condicional&lt;/a&gt;.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Centrando Horizontalmente (a prueba de IE)</title>
      <link>https://csslab.cl/2007/04/09/centrando-horizontalmente-a-prueba-de-ie/</link>
      <pubDate>Mon, 09 Apr 2007 21:24:38 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/04/09/centrando-horizontalmente-a-prueba-de-ie/</guid>
      <description>&lt;p&gt;Existen 2 maneras para centrar elementos &lt;strong&gt;HTML&lt;/strong&gt;, ambas muy conocidas y difundidas. Con &lt;strong&gt;CSS&lt;/strong&gt;, centrar un elemento depende de sí mismo:&lt;/p&gt;
&lt;h3 id=&#34;elementos-lineales&#34;&gt;Elementos lineales&lt;/h3&gt;
&lt;p&gt;Estos elementos son los que no son en formato bloque, como &lt;strong&gt;&lt;span&gt;&lt;/strong&gt; e imágenes &lt;strong&gt;&lt;img&gt;&lt;/strong&gt;. Para centrarlos, se utiliza la propiedad &lt;strong&gt;text-align&lt;/strong&gt; dentro del contenedor que lo alberga:&lt;/p&gt;</description>
      <content>&lt;p&gt;Existen 2 maneras para centrar elementos &lt;strong&gt;HTML&lt;/strong&gt;, ambas muy conocidas y difundidas. Con &lt;strong&gt;CSS&lt;/strong&gt;, centrar un elemento depende de sí mismo:&lt;/p&gt;
&lt;h3 id=&#34;elementos-lineales&#34;&gt;Elementos lineales&lt;/h3&gt;
&lt;p&gt;Estos elementos son los que no son en formato bloque, como &lt;strong&gt;&lt;span&gt;&lt;/strong&gt; e imágenes &lt;strong&gt;&lt;img&gt;&lt;/strong&gt;. Para centrarlos, se utiliza la propiedad &lt;strong&gt;text-align&lt;/strong&gt; dentro del contenedor que lo alberga:&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;div id=&#34;container&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;Texto centrado&lt;/span&gt;&lt;br /&gt; &lt;/div&gt;
&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #container {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-align: center;&lt;br /&gt; }
&lt;/p&gt;
&lt;h3 id=&#34;elementos-bloque&#34;&gt;Elementos bloque&lt;/h3&gt;
&lt;p&gt;Estas etiquetas son las que por defecto son considerados block, como &lt;strong&gt;&lt;h1&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;div&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;p&gt;&lt;/strong&gt;, etc. Para centrarlos, basta con definir automático en su margen derecho e izquierdo. Para el mismo ejemplo &lt;strong&gt;HTML&lt;/strong&gt; anterior:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #container {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin-left: auto;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin-right: auto;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;o lo que es lo mismo:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #container {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 0 auto;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;Un detalle es que estos elementos bloque por defecto tienen un ancho de 100%, por lo que no se centrarían a menos que definamos un ancho menor que éste, sea porcentual o en pixeles.&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #container {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 0 auto;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 50%;&lt;br /&gt; }
&lt;/p&gt;
&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/camino.gif&#34; alt=&#34;Camino&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/flock.gif&#34; alt=&#34;Flock&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Como nada es perfecto y es de suponerse, IE hace lo que quiere. En &lt;a href=&#34;http://www.csslab.cl/2005/11/30/%C2%BFstrict-o-no-strict/&#34;&gt;doctype&lt;/a&gt; no estricto o estándar, considera los elementos en bloque como elemento línea, con lo que centrarlo con &lt;strong&gt;margin&lt;/strong&gt; no es tomado en cuenta. Lo que se debe hacer es mezclar ambas técnicas, dándole al elemento contenedor (puede ser hasta el mismo &lt;strong&gt;&lt;body&gt;&lt;/strong&gt;) un alineado de texto, además de centrarlo horizontalmente con márgenes automáticos. Pero claro, este alineado central de texto será heredado por todos sus elementos interiores (&lt;strong&gt;#container&lt;/strong&gt;, &lt;strong&gt;&lt;p&gt;&lt;/strong&gt;, etc) por lo que debemos volver a decirle al &lt;strong&gt;div#container&lt;/strong&gt; que vuelva a alinear todo en su interior a la izquierda o justificado. Finalmente:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  body {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-align: center;&lt;br /&gt; }
&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #container {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 0 auto;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 50%;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-align: left;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;Esto debería de solucionarse desarrollando en &lt;strong&gt;XHTML strict&lt;/strong&gt;, incluso &lt;strong&gt;HTML standart&lt;/strong&gt; (y definiéndolo explícitamente en el &lt;strong&gt;&lt;head&gt;&lt;/strong&gt;), pero con 2 líneas de código podemos anticiparnos a posibles errores.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/centrado_horizontal.html&#34;&gt;Ver resultado final&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://dorward.me.uk/www/centre/&#34; target=&#34;_blank&#34;&gt;Centring using CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.quirksmode.org/css/quirksmode.html&#34; target=&#34;_blank&#34;&gt;Quirks mode and strict mode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Nuevo sitio, nuevos métodos</title>
      <link>https://csslab.cl/2007/04/05/nuevo-sitio-nuevos-metodos/</link>
      <pubDate>Thu, 05 Apr 2007 20:26:19 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/04/05/nuevo-sitio-nuevos-metodos/</guid>
      <description>En estos días he estado diseñando y contruyendo el nuevo sitio web para mi proyecto-empresa Be Studios. Es la tercera versión ya, y esta vez no utilizaré ni una pizca de Flash; me aburrió. Así que está siendo construído enteramente sobre XHTML (trataré de que sea estricto y que valide en todo) y he jugado bastante con diferentes efectos javascript. Durante su construcción, me he topado con varios inconvenientes, los que a través de unas técnicas interesantes he podido sobrepasar.</description>
      <content>&lt;p&gt;En estos días he estado diseñando y contruyendo el nuevo sitio web para mi proyecto-empresa &lt;a href=&#34;http://www.be-studios.com&#34; target=&#34;_blank&#34;&gt;Be Studios&lt;/a&gt;. Es la tercera versión ya, y esta vez no utilizaré ni una pizca de Flash; me aburrió. Así que está siendo construído enteramente sobre &lt;strong&gt;XHTML&lt;/strong&gt; (trataré de que sea estricto y que valide en todo) y he jugado bastante con diferentes efectos javascript. Durante su construcción, me he topado con varios inconvenientes, los que a través de unas técnicas interesantes he podido sobrepasar. Algunas de ellas mostraré aquí en una serie de artículos, porque claro más de alguno puede tener la misma inquietud.&lt;/p&gt;
&lt;p&gt;Precisamente me gustaría comentar sobre las librerías javascript con que he estado jugando. Pasé por las más importantes, y perdí unas buenas horas tratando de que funcionen como quiero. La que más me impresionó fue &lt;a href=&#34;http://mootools.net/&#34; target=&#34;_blank&#34;&gt;Mootools&lt;/a&gt;, nunca había trabajado con él y es bastante interesante (no dejen de visitar su sección de &lt;a href=&#34;http://mootools.net/download&#34; target=&#34;_blank&#34;&gt;downloads&lt;/a&gt;, lo que demuestra su potencial). Luego, pasé a &lt;a href=&#34;http://jquery.com/&#34; target=&#34;_blank&#34;&gt;Jquery&lt;/a&gt; con el que había tenido unos roces antes, y sabía que tenía algunos efectos que necesitaba (pero por alguna razón que desconozco hacía que se cayera Safari). Conocí a &lt;a href=&#34;http://interface.eyecon.ro/&#34; target=&#34;_blank&#34;&gt;Interface&lt;/a&gt;, una librería sólo de efectos similar a &lt;a href=&#34;http://script.aculo.us/&#34; target=&#34;_blank&#34;&gt;Script.aculo.us&lt;/a&gt; para &lt;a href=&#34;http://prototypejs.org/&#34; target=&#34;_blank&#34;&gt;Prototype&lt;/a&gt;. Precisamente con ésta me quedé al final, la que más de trabajado y la que más me gusta, por la fácil implementación y configuración de efectos que posee. Los invito a probarr un poco de todas y hacerse de su propia opinión.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>&#43; bordes redondos</title>
      <link>https://csslab.cl/2007/04/02/bordes-redondos/</link>
      <pubDate>Mon, 02 Apr 2007 14:43:49 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/04/02/bordes-redondos/</guid>
      <description>Un interesante recurso utilizado por diseñadores es de utilizar bordes redondeados para delimitar secciones en sus sitios web. En CSS no es tan simple lograrlo, a veces implica utilizar más de un DIV contenedor para abrir y cerrar los bordes, además de que nos impide que éstos sean líquidos (o elásticos). navegando, me encuentro con 2 soluciones que se ven bien prometededores, y son realmente crossbrowser (no como en el que publiqué hace un tiempo, donde al parecer tiene problemas con IE6).</description>
      <content>&lt;div class=&#34;pullquote&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/browsers/safari.gif&#34; alt=&#34;Safari&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ff.gif&#34; alt=&#34;Firefox&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie6.gif&#34; alt=&#34;Internet Explorer 6&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/ie7.gif&#34; alt=&#34;Internet Explorer 7&#34; /&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/browsers/opera.gif&#34; alt=&#34;Opera&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Un interesante recurso utilizado por diseñadores es de utilizar bordes redondeados para delimitar secciones en sus sitios web. En CSS no es tan simple lograrlo, a veces implica utilizar más de un &lt;strong&gt;DIV&lt;/strong&gt; contenedor para abrir y cerrar los bordes, además de que nos impide que éstos sean líquidos (o elásticos). navegando, me encuentro con 2 soluciones que se ven bien prometededores, y son realmente crossbrowser (no como en el que &lt;a href=&#34;http://www.csslab.cl/2006/08/08/bordes-redondos-crossbrowser/&#34; title=&#34;Bordes redondos crossbrowser&#34;&gt;publiqué hace un tiempo&lt;/a&gt;, donde al parecer tiene problemas con IE6).&lt;/p&gt;
&lt;h3 id=&#34;a-hrefhttpwwwspiffycornerscomindexphp-target_blankspiffycornersa&#34;&gt;&lt;a href=&#34;http://www.spiffycorners.com/index.php&#34; target=&#34;_blank&#34;&gt;Spiffycorners&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;a-hrefhttpwwwschillmaniacomprojectsdialog2-target_blankeven-more-rounded-corners-with-cssa&#34;&gt;&lt;a href=&#34;http://www.schillmania.com/projects/dialog2/&#34; target=&#34;_blank&#34;&gt;Even More Rounded Corners With CSS&lt;/a&gt;&lt;/h3&gt;
</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 19</title>
      <link>https://csslab.cl/2007/03/30/lo-vi-y-me-gusto-19/</link>
      <pubDate>Fri, 30 Mar 2007 15:46:12 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/03/30/lo-vi-y-me-gusto-19/</guid>
      <description>#19 – 30 Marzo 2007
Envía tu sitio construído en HTML+CSS</description>
      <content>&lt;p&gt;#19 – 30 Marzo 2007&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/?page_id=27&#34;&gt;Envía tu sitio&lt;/a&gt; construído en HTML+CSS&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://csstinderbox.raykonline.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/03/csstinderbox.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.joshclarkportfolio.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/03/joshclark.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.maxbernardmathieu.fr/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/03/maxbernard.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Diseño para móviles: referencia</title>
      <link>https://csslab.cl/2007/03/19/diseno-para-moviles-referencia/</link>
      <pubDate>Mon, 19 Mar 2007 15:31:34 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/03/19/diseno-para-moviles-referencia/</guid>
      <description>Un gran medio aún por ser explotado en latinoamérica (y que creo que lo será durante este año 2007) es el de la internet para dispositivos móviles. Aunque ya hice un acercamiento en el artículo CSS para móviles, navegando por mis RSS encuentro un link donde Brian Fling se toma la molestia de escribir un manual para diseño web para móviles. Increíble, aplaudo su iniciativa.
Download directo del manual en PDF</description>
      <content>&lt;p&gt;Un gran medio aún por ser explotado en latinoamérica (y que creo que lo será durante este año 2007) es el de la internet para dispositivos móviles. Aunque ya hice un acercamiento en el artículo &lt;a href=&#34;http://www.csslab.cl/2006/03/07/css-para-moviles/&#34;&gt;CSS para móviles&lt;/a&gt;, navegando por mis RSS encuentro un link donde &lt;a href=&#34;http://www.blueflavor.com/blog/mobile/dotmobi_mobile_web_developers_guide.php&#34; target=&#34;_blank&#34;&gt;Brian Fling&lt;/a&gt; se toma la molestia de escribir un manual para diseño web para móviles. Increíble, aplaudo su iniciativa.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://pc.dev.mobi/files/dotMobi%20Mobile%20Web%20Developers%20Guide.pdf&#34;&gt;Download directo del manual en PDF&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>menúes y la class .selected</title>
      <link>https://csslab.cl/2007/03/15/menues-y-la-class-selected/</link>
      <pubDate>Thu, 15 Mar 2007 16:32:28 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/03/15/menues-y-la-class-selected/</guid>
      <description>&lt;p&gt;Por usabilidad, siempre es recomendable dejarle claro al usuario dónde está parado dentro del sitio. Existen varias maneras de hacerlo, desde dejar evidente en el &lt;strong&gt;&lt;title&gt;&lt;/strong&gt; en qué sección se está, pasando por mostrar un pequeño mapa de navegación desde y hasta dónde está ubicado (&lt;em&gt;Inicio &amp;gt; Quiénes Somos &amp;gt; Empleados&lt;/em&gt; por ejemplo) o dejar seleccionado en el menú de navegación dónde uno está parado, con una clase especial. En este caso, en sitios pequeños a medianos, recomiendo utilizar un pequeño y simple truco que involucra &lt;strong&gt;HTML&lt;/strong&gt; y &lt;strong&gt;CSS&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Hagamos un layout muy simple. En este caso, un menú con listas y un contenido sólo para que no esté tan vacío (reciclaré el &lt;strong&gt;HTML&lt;/strong&gt; de un &lt;a href=&#34;http://www.csslab.cl/2007/03/02/columnas-de-igual-alto/&#34;&gt;post anterior&lt;/a&gt;):&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;div id=&#34;menulateral&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;ul&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34; class=&#34;selected1&#34;&gt;Item Uno&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34; class=&#34;selected2&#34;&gt;Item Dos&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34; class=&#34;selected3&#34;&gt;Item Tres&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/ul&gt;&lt;br /&gt; &lt;/div&gt;&lt;br /&gt; &lt;div id=&#34;contenido&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec ut risus hendrerit sem adipisc&amp;hellip;&amp;hellip;&amp;hellip;&lt;/p&gt;&lt;br /&gt; &lt;/div&gt;
&lt;/p&gt;</description>
      <content>&lt;p&gt;Por usabilidad, siempre es recomendable dejarle claro al usuario dónde está parado dentro del sitio. Existen varias maneras de hacerlo, desde dejar evidente en el &lt;strong&gt;&lt;title&gt;&lt;/strong&gt; en qué sección se está, pasando por mostrar un pequeño mapa de navegación desde y hasta dónde está ubicado (&lt;em&gt;Inicio &amp;gt; Quiénes Somos &amp;gt; Empleados&lt;/em&gt; por ejemplo) o dejar seleccionado en el menú de navegación dónde uno está parado, con una clase especial. En este caso, en sitios pequeños a medianos, recomiendo utilizar un pequeño y simple truco que involucra &lt;strong&gt;HTML&lt;/strong&gt; y &lt;strong&gt;CSS&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Hagamos un layout muy simple. En este caso, un menú con listas y un contenido sólo para que no esté tan vacío (reciclaré el &lt;strong&gt;HTML&lt;/strong&gt; de un &lt;a href=&#34;http://www.csslab.cl/2007/03/02/columnas-de-igual-alto/&#34;&gt;post anterior&lt;/a&gt;):&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;div id=&#34;menulateral&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;ul&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34; class=&#34;selected1&#34;&gt;Item Uno&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34; class=&#34;selected2&#34;&gt;Item Dos&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34; class=&#34;selected3&#34;&gt;Item Tres&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/ul&gt;&lt;br /&gt; &lt;/div&gt;&lt;br /&gt; &lt;div id=&#34;contenido&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec ut risus hendrerit sem adipisc&amp;hellip;&amp;hellip;&amp;hellip;&lt;/p&gt;&lt;br /&gt; &lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Como se dieron cuenta, cada ítem del menú tiene una &lt;strong&gt;class=&amp;ldquo;selected&amp;rdquo;&lt;/strong&gt; con diferencias numéricas consecutivas (este es mi criterio, utilicen el que más les convenga) . El truco está en darle al &lt;strong&gt;&lt;body&gt;&lt;/strong&gt; un &lt;strong&gt;ID&lt;/strong&gt; específico, en este caso será uno para cada sección de nuestro menú, en total 3. Con este &lt;strong&gt;ID&lt;/strong&gt;, mediante &lt;strong&gt;CSS&lt;/strong&gt; le daremos un estilo para cada class &lt;strong&gt;selected&lt;/strong&gt;, así si nos encontramos ubicados por ejemplo en el &lt;strong&gt;HTML&lt;/strong&gt; con el &lt;strong&gt;id=&amp;ldquo;item2&amp;rdquo;&lt;/strong&gt;, gatillará que la class &lt;strong&gt;selected2&lt;/strong&gt; de ese &lt;strong&gt;ID&lt;/strong&gt; será desplegada. ¿Se entendió? Mejor sigo con el código &lt;strong&gt;CSS&lt;/strong&gt; para que quede más claro:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  body#item1 a.selected1, body#item2 a.selected2, body#item3 a.selected3 {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-decoration: none;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding-left: 10px;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;Entonces, nuevamente, tenemos 3 páginas &lt;strong&gt;HTML&lt;/strong&gt; cada una con un &lt;strong&gt;ID&lt;/strong&gt; diferente, de acuerdo con la sección en que estamos. Cada &lt;strong&gt;&lt;a&gt;&lt;/strong&gt; del menú tiene una &lt;strong&gt;class&lt;/strong&gt; diferente también, para poder diferenciarlas. La idea es con el &lt;strong&gt;CSS&lt;/strong&gt; poder manejar el estilo para mostrar al usuario que estamos ubicados en esa parte del sitio sin tener que tocar el &lt;strong&gt;HTML&lt;/strong&gt;, basta con dejar las classes siempre puestas, pero con diferentes &lt;strong&gt;ID’s&lt;/strong&gt; en el &lt;strong&gt;&amp;lt; body&amp;gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/menu_selected/1.html&#34;&gt;Ver HTML final&lt;/a&gt; (view source para más detalles)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/menu_selected/test.css&#34;&gt;Ver Hoja de Estilos Final&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>.clearfix: el widget</title>
      <link>https://csslab.cl/2007/03/09/clearfix-el-widget/</link>
      <pubDate>Fri, 09 Mar 2007 16:09:35 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/03/09/clearfix-el-widget/</guid>
      <description>&lt;div align=&#34;right&#34; style=&#34;padding: 0 0 5px 10px; float: right;&#34;&gt;
  &lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/03/clearfix_20070309122259.jpg&#34; alt=&#34;.clearfix Widget&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;«Estaba ya cansado de, cada vez que necesitaba del código del &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34;&gt;.clearfix&lt;/a&gt; para incluirlo en una nueva hoja de estilos &lt;strong&gt;CSS&lt;/strong&gt;, tenía que googlear y copiar-pegar desde &lt;a href=&#34;http://www.positioniseverything.net/easyclearing.html&#34; target=&#34;_blank&#34;&gt;positioniseverything&lt;/a&gt;… Entonces, luego de un día de investigación, ha surgido este widget. Muchas gracias a Apple por hacer la vida de todos más fácil…&lt;/p&gt;
&lt;p&gt;Sólo presiona el botón &lt;strong&gt;copy&lt;/strong&gt; para hacer el código disponible en tu clipboard. Luego, pégalo en tu hoja de estilos favorita.»&lt;/p&gt;
&lt;p&gt;«I was sick and tired of, everytime I needed the &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34;&gt;.clearfix&lt;/a&gt; code to include it to a new &lt;strong&gt;CSS&lt;/strong&gt; stylesheet, I had to google it and copy-paste from &lt;a href=&#34;http://www.positioniseverything.net/easyclearing.html&#34; target=&#34;_blank&#34;&gt;positioniseverything&lt;/a&gt;… So, after one day of investigation, this widget has emerged. Many thanx to Apple for making everyone’s life easier…&lt;/p&gt;
&lt;p&gt;Just press the &lt;strong&gt;copy&lt;/strong&gt; button to make the code available in your clipboard. Then, paste it in your favorite stylesheet.»&lt;/p&gt;</description>
      <content>&lt;div align=&#34;right&#34; style=&#34;padding: 0 0 5px 10px; float: right;&#34;&gt;
  &lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2007/03/clearfix_20070309122259.jpg&#34; alt=&#34;.clearfix Widget&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;«Estaba ya cansado de, cada vez que necesitaba del código del &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34;&gt;.clearfix&lt;/a&gt; para incluirlo en una nueva hoja de estilos &lt;strong&gt;CSS&lt;/strong&gt;, tenía que googlear y copiar-pegar desde &lt;a href=&#34;http://www.positioniseverything.net/easyclearing.html&#34; target=&#34;_blank&#34;&gt;positioniseverything&lt;/a&gt;… Entonces, luego de un día de investigación, ha surgido este widget. Muchas gracias a Apple por hacer la vida de todos más fácil…&lt;/p&gt;
&lt;p&gt;Sólo presiona el botón &lt;strong&gt;copy&lt;/strong&gt; para hacer el código disponible en tu clipboard. Luego, pégalo en tu hoja de estilos favorita.»&lt;/p&gt;
&lt;p&gt;«I was sick and tired of, everytime I needed the &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34;&gt;.clearfix&lt;/a&gt; code to include it to a new &lt;strong&gt;CSS&lt;/strong&gt; stylesheet, I had to google it and copy-paste from &lt;a href=&#34;http://www.positioniseverything.net/easyclearing.html&#34; target=&#34;_blank&#34;&gt;positioniseverything&lt;/a&gt;… So, after one day of investigation, this widget has emerged. Many thanx to Apple for making everyone’s life easier…&lt;/p&gt;
&lt;p&gt;Just press the &lt;strong&gt;copy&lt;/strong&gt; button to make the code available in your clipboard. Then, paste it in your favorite stylesheet.»&lt;/p&gt;
&lt;p&gt;Como creo que mencioné hace algunos artículos, utilizo plataforma Macintosh desde siempre, diseñando y desarrollando web. Con MacOSX y el lanzamiento de &lt;a href=&#34;http://www.apple.com/downloads/dashboard/&#34; target=&#34;_blank&#34;&gt;Dashboard&lt;/a&gt;, fue cosa de tiempo para &lt;a href=&#34;http://developer.apple.com/macosx/dashboard.html&#34; target=&#34;_blank&#34;&gt;hacer un widget&lt;/a&gt; que me facilitara este pequeño problema que tenía con tener siempre a mano el código &lt;strong&gt;CSS&lt;/strong&gt; para &lt;strong&gt;.clearfix&lt;/strong&gt;. Gracias a &lt;a href=&#34;http://www.estadobeta.com/&#34; target=&#34;_blank&#34;&gt;Ismael Celis&lt;/a&gt; por darme una mano sobre el funcionamiento.&lt;/p&gt;
&lt;p&gt;Requerimientos: MacOSX con 10.4+ y &lt;a href=&#34;http://www.apple.com/macosx/features/dashboard/&#34; target=&#34;_blank&#34;&gt;Dashboard&lt;/a&gt; habilitado.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/clearfix/clearfixv1.1.zip&#34;&gt;Download .clearfix v1.1 Widget&lt;/a&gt;{.bajar}&lt;/p&gt;
&lt;p&gt;Este widget ya está incluído en los &lt;a href=&#34;http://www.apple.com/downloads/dashboard/developer/clearfix.html&#34; target=&#34;_blank&#34;&gt;downloads de Apple&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update to v1.1:&lt;/strong&gt; clearfix con IE7 agregado &lt;a href=&#34;http://www.estadobeta.com/2006/12/06/despejando-floats-para-ie7/&#34; target=&#34;_blank&#34;&gt;(estadobeta.com)&lt;/a&gt;.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Columnas de igual alto</title>
      <link>https://csslab.cl/2007/03/02/columnas-de-igual-alto/</link>
      <pubDate>Fri, 02 Mar 2007 19:44:05 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/03/02/columnas-de-igual-alto/</guid>
      <description>&lt;p&gt;Hubo un tiempo en que esto me dió varias horas de preocupación, y muchas más de búsqueda por internet. Necesitaba construir un layout con 2 columnas (pueden ser 3 o más, da igual) pero que todas las columnas tuvieran el mismo alto, o por o menos que simularan tenerlo. Bien, pasado algún tiempo ya me río de la solución, pues ahora la hago en menos de 3 minutos. Con el siguiente ejemplo, aprovecharé de explicar también cómo crear un layout de 2 columnas, y que ambas colunas tengan (aparenten) tener el mismo alto.&lt;/p&gt;
&lt;p&gt;Primero que nada, comencemos a construir nuestro layout de 2 columnas. El &lt;strong&gt;&lt;body&gt;&lt;/strong&gt; tendrá un &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; con id &lt;strong&gt;#menulateral&lt;/strong&gt; y otro &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; con id &lt;strong&gt;#contenido&lt;/strong&gt;. Dentro de cada &lt;strong&gt;&lt;div&gt;&lt;/strong&gt;, los ítems del menú (en &lt;strong&gt;&lt;ul&gt;&lt;/strong&gt;) y los del contenido (en este caso un texto simulado en &lt;strong&gt;&lt;p&gt;&lt;/strong&gt;).&lt;/p&gt;</description>
      <content>&lt;p&gt;Hubo un tiempo en que esto me dió varias horas de preocupación, y muchas más de búsqueda por internet. Necesitaba construir un layout con 2 columnas (pueden ser 3 o más, da igual) pero que todas las columnas tuvieran el mismo alto, o por o menos que simularan tenerlo. Bien, pasado algún tiempo ya me río de la solución, pues ahora la hago en menos de 3 minutos. Con el siguiente ejemplo, aprovecharé de explicar también cómo crear un layout de 2 columnas, y que ambas colunas tengan (aparenten) tener el mismo alto.&lt;/p&gt;
&lt;p&gt;Primero que nada, comencemos a construir nuestro layout de 2 columnas. El &lt;strong&gt;&lt;body&gt;&lt;/strong&gt; tendrá un &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; con id &lt;strong&gt;#menulateral&lt;/strong&gt; y otro &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; con id &lt;strong&gt;#contenido&lt;/strong&gt;. Dentro de cada &lt;strong&gt;&lt;div&gt;&lt;/strong&gt;, los ítems del menú (en &lt;strong&gt;&lt;ul&gt;&lt;/strong&gt;) y los del contenido (en este caso un texto simulado en &lt;strong&gt;&lt;p&gt;&lt;/strong&gt;).&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;div id=&#34;menulateral&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;ul&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Item Uno&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Item Dos&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Item Tres&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/ul&gt;&lt;br /&gt; &lt;/div&gt;&lt;br /&gt; &lt;div id=&#34;contenido&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec ut risus hendrerit sem adipisc&amp;#8230;&amp;#8230;&amp;#8230;&lt;/p&gt;&lt;br /&gt; &lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;La magia ocurre cuando aplicamos estilos a los &lt;strong&gt;&lt;div&gt;&lt;/strong&gt;. Primero que nada, le doy un ancho a cada columna. Luego, estilo a sus elementos y para que se pongan uno al lado del otro, los flotamos ambos al mismo sentido con &lt;strong&gt;float: left&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #menulateral {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 150px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: #F00;&lt;br /&gt; }&lt;br /&gt; #contenido {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 450px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/2columnas/2columnas.html&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Ver este ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bueno, ya tenemos el esqueleto. Pero ahora queremos que el fondo del menu lateral crezca junto con su contenido, para que se vea más uniforme. Para ello, utilizaremos la siguiente técnica: pondremos nuestros 2 &lt;strong&gt;&lt;div&gt;&lt;/strong&gt;‘s en otro &lt;strong&gt;&lt;div&gt;&lt;/strong&gt; llamado &lt;strong&gt;#contenedor&lt;/strong&gt;, el que tendrá un ancho determinado, estará centrado en la horizontal y tendrá como background un &lt;strong&gt;GIF&lt;/strong&gt; con el color que elegimos de fondo para &lt;strong&gt;#menulateral&lt;/strong&gt; (este &lt;strong&gt;GIF&lt;/strong&gt; será de 1px de alto por todo el ancho del &lt;strong&gt;&lt;div&gt; #contenedor&lt;/strong&gt;, y se repetirá hacia abajo con &lt;strong&gt;background-repeat: repeat-y;&lt;/strong&gt;). Así, cuando &lt;strong&gt;#contenido&lt;/strong&gt; crezca lo que tenga adentro, hará crecer todo lo que tenga adentro, incluyendo el &lt;strong&gt;GIF&lt;/strong&gt; con el fondo del &lt;strong&gt;#menulateral&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Sigue el código &lt;strong&gt;HTML&lt;/strong&gt; y luego el &lt;strong&gt;CSS&lt;/strong&gt;:&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;div id=&#34;contenedor&#34; class=&#34;clearfix&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;div id=&#34;menulateral&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;ul&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Item Uno&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Item Dos&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Item Tres&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/ul&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;div id=&#34;contenido&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec ut risus hendrerit sem adipiscing&amp;#8230;&amp;#8230;&amp;#8230;&lt;/p&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt; &lt;br /&gt; &lt;/div&gt;
&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #contenedor {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 600px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(imgs/fondo.gif) left top repeat-y;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border: 1px solid red;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 10px auto;&lt;br /&gt; }&lt;br /&gt; #menulateral {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 150px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left;&lt;br /&gt; }&lt;br /&gt; #contenido {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 450px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float: left;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;Por último, le agregué la class &amp;ldquo;&lt;strong&gt;clearfix&lt;/strong&gt;&amp;rdquo; a &lt;strong&gt;#contenedor&lt;/strong&gt; para que los &lt;strong&gt;&lt;div&gt;&lt;/strong&gt;‘s crezcan junto al contenedor, tal como expliqué en el artículo &lt;a href=&#34;http://www.csslab.cl/2006/07/20/flotando-en-la-incertidumbre/&#34;&gt;Flotando en la Incertidumbre&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/2columnas/igualalto.html&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Ver ejemplo final&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>SEO y la web semántica</title>
      <link>https://csslab.cl/2007/02/23/seo-y-la-web-semantica/</link>
      <pubDate>Fri, 23 Feb 2007 20:06:45 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/02/23/seo-y-la-web-semantica/</guid>
      <description>&lt;p&gt;Muy seguido la gente me pregunta sobre cómo hacer que sus sitios aparezcan en los buscadores en los primeros lugares. &lt;strong&gt;No existe el santo grial&lt;/strong&gt; para esto. No existe un botón que lo haga posible. Cada buscador tiene su lógica de indexar sitios, y de agregarle la relevancia que hace que tu información salga en la página 1 o en la oooooooooooooooooooogle. En Chile por lo menos, Google es el que reina entre los buscadores de contenidos Internet. Y el que la gente tiene más interés por salir bien posicionado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SEO&lt;/strong&gt; (Search Engine Optimization) es una técnica que debieran manejar todos los webmasters, diseñadores y desarrolladores de sitios web. Corresponden a una serie de consejos que mejoran y facilitan que los buscadores indexen nuestros sitios, cataloguen la información y la muestren coorrepondientemente a lo que queremos ser mostrados. ¿Y porqué me tomo el tiempo para escribir sobre esto en &lt;strong&gt;CSSLab&lt;/strong&gt;? Bueno, uno para que me dejen de preguntar. Paso el link y listo. Dos, porque el uso de &lt;strong&gt;XHTML&lt;/strong&gt; y &lt;strong&gt;CSS&lt;/strong&gt; está directamente relacionado, y tiene gran influencia sobre el tema.&lt;/p&gt;</description>
      <content>&lt;p&gt;Muy seguido la gente me pregunta sobre cómo hacer que sus sitios aparezcan en los buscadores en los primeros lugares. &lt;strong&gt;No existe el santo grial&lt;/strong&gt; para esto. No existe un botón que lo haga posible. Cada buscador tiene su lógica de indexar sitios, y de agregarle la relevancia que hace que tu información salga en la página 1 o en la oooooooooooooooooooogle. En Chile por lo menos, Google es el que reina entre los buscadores de contenidos Internet. Y el que la gente tiene más interés por salir bien posicionado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SEO&lt;/strong&gt; (Search Engine Optimization) es una técnica que debieran manejar todos los webmasters, diseñadores y desarrolladores de sitios web. Corresponden a una serie de consejos que mejoran y facilitan que los buscadores indexen nuestros sitios, cataloguen la información y la muestren coorrepondientemente a lo que queremos ser mostrados. ¿Y porqué me tomo el tiempo para escribir sobre esto en &lt;strong&gt;CSSLab&lt;/strong&gt;? Bueno, uno para que me dejen de preguntar. Paso el link y listo. Dos, porque el uso de &lt;strong&gt;XHTML&lt;/strong&gt; y &lt;strong&gt;CSS&lt;/strong&gt; está directamente relacionado, y tiene gran influencia sobre el tema.&lt;/p&gt;
&lt;p&gt;Entendamos cómo funciona en parte el sistema de indexación de Google. La gran revolución que se creó en el medio de búsqueda de contenidos por y para Internet, fue por cómo Google trataba en cuanto a relevancia la información que desplegaba en sus resultados de búsqueda. Mientras Altavista y Yahoo! se esforzaban en mostrar la mayor cantidad de resultados relacionados posible, a Google le interesaba mostrar el mejor y más preciso de acuerdo a los criterios ingresados por el usuario primero. Para esto, utilizaron la lógica que se usa hasta hoy en los textos bibliográficos. Mientras más referencia tenga un libro en otros libros (citas o referencias bibliográficas), eso se traduce en que es un mejor libro sobre el tema que trata. Aplicado a la web, mientras más links externos digiridos a tal o cual sitio, eso quiere decir que la información que se muestra es importante. Si &amp;ldquo;Televidores Plasma Sony&amp;rdquo; está linkeado en (por ejemplo) 1.000.000 de sitios, y &amp;ldquo;Televisores Plasma Sharp&amp;rdquo; en 200.000, Sony aparece primero que en los resultados de búsqueda de Google. Parece muy lógico, ¿no?. Pues bien, con los años los ingenieros de Google han variado bastante sus mecanismos de búsquedas y de indexación de sitios y páginas web. &lt;a href=&#34;http://es.wikipedia.org/wiki/Pagerank&#34; target=&#34;_blank&#34;&gt;PageRank&lt;/a&gt;, que es el algoritmo que maneja estos factores de criterios, ha sido renovado no pocas veces.&lt;/p&gt;
&lt;p&gt;Ahora, a lo nuestro.&lt;/p&gt;
&lt;p&gt;Un criterio importante al momento de ser indexado por los buscadores, se refiere a cómo está construído nuestro sitio web. Un código limpio y semántico, muestra la información ordenada, clara y con los significados que implican cada etiqueta &lt;strong&gt;HTML&lt;/strong&gt;, lo que es leído por los spiders e interpretado correctamente. &lt;strong&gt;CSS&lt;/strong&gt; ayuda a que esta información se presente con un estilo adecuado, atractivo, y aporta algunas técnicas que facilitan la diagramación del sitio web. Otros criterios a tomar en cuenta al construir tu sitio web, responde al uso de un tag &lt;strong&gt;HTML&lt;/strong&gt;: &lt;a href=&#34;http://es.wikipedia.org/wiki/Metatag&#34; target=&#34;_blank&#34;&gt;META&lt;/a&gt;. Esta etiqueta que se ubica en el &lt;strong&gt;&lt;head&gt;&lt;/strong&gt; del código &lt;strong&gt;HTML&lt;/strong&gt;, y aporta una descripción sobre el sitio y palabras claves que relacionadas con nuestra información (entre otras propiedades). A continuación los &lt;strong&gt;META tags&lt;/strong&gt; que debería agregar en &lt;strong&gt;CSSLab&lt;/strong&gt; luego:&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;META NAME=&#34;description&#34; CONTENT=&#34;Un laboratorio de ideas web&#34;&gt;&lt;br /&gt; &lt;META NAME=&#34;keywords&#34; CONTENT=&#34;CSS, XHTML, HTML, sitios web, websites, sem&amp;aacute;ntica, javascript, AJAX, recursos web&#34;&gt;
&lt;/p&gt;
&lt;p&gt;Bien, espero haya quedado claro. Ya saben por dónde comenzar a hacer bien las cosas.&lt;/p&gt;
&lt;p&gt;Link&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.hispamedios.com/articles/id27-pagerank&#34; target=&#34;_blank&#34;&gt;PageRank&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.submit-it.com/subopt.htm&#34; target=&#34;_blank&#34;&gt;Search Engine Optimization Tips&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Agregando movimiento vía JavaScript</title>
      <link>https://csslab.cl/2007/02/13/agregando-movimiento-via-javascript/</link>
      <pubDate>Tue, 13 Feb 2007 21:22:58 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/02/13/agregando-movimiento-via-javascript/</guid>
      <description>&lt;p&gt;Más de alguna vez me han preguntado cómo funciona el menu superior que comanda este sitio. Ese movimiento de la etiqueta que de tan fluído parece ser Flash. Bueno, para eso se utiliza una librería &lt;strong&gt;JavaScript&lt;/strong&gt; gratuita llamada &lt;a href=&#34;http://script.aculo.us/&#34; target=&#34;_blank&#34;&gt;script.aculo.us&lt;/a&gt;, la que a través de un simple comando y fácil configuración permite ese y &lt;a href=&#34;http://wiki.script.aculo.us/scriptaculous/show/CombinationEffectsDemo&#34; target=&#34;_blank&#34;&gt;otros muchos interesantes efectos&lt;/a&gt;. Existen algunas otras librerías, también gratis que hacen lo mismo. Tal es el caso de &lt;a href=&#34;http://mootools.net/&#34; target=&#34;_blank&#34;&gt;mootools&lt;/a&gt;, &lt;a href=&#34;http://jquery.com/&#34; target=&#34;_blank&#34;&gt;jquery&lt;/a&gt; o &lt;a href=&#34;http://simplejs.bleebot.com/&#34;&gt;simpleJs&lt;/a&gt;. Es desición de cada uno cuál utilizar.&lt;/p&gt;</description>
      <content>&lt;p&gt;Más de alguna vez me han preguntado cómo funciona el menu superior que comanda este sitio. Ese movimiento de la etiqueta que de tan fluído parece ser Flash. Bueno, para eso se utiliza una librería &lt;strong&gt;JavaScript&lt;/strong&gt; gratuita llamada &lt;a href=&#34;http://script.aculo.us/&#34; target=&#34;_blank&#34;&gt;script.aculo.us&lt;/a&gt;, la que a través de un simple comando y fácil configuración permite ese y &lt;a href=&#34;http://wiki.script.aculo.us/scriptaculous/show/CombinationEffectsDemo&#34; target=&#34;_blank&#34;&gt;otros muchos interesantes efectos&lt;/a&gt;. Existen algunas otras librerías, también gratis que hacen lo mismo. Tal es el caso de &lt;a href=&#34;http://mootools.net/&#34; target=&#34;_blank&#34;&gt;mootools&lt;/a&gt;, &lt;a href=&#34;http://jquery.com/&#34; target=&#34;_blank&#34;&gt;jquery&lt;/a&gt; o &lt;a href=&#34;http://simplejs.bleebot.com/&#34;&gt;simpleJs&lt;/a&gt;. Es desición de cada uno cuál utilizar.&lt;/p&gt;
&lt;p&gt;Bien, para el ejemplo específico del efecto del menú de este sitio, se utilizó &lt;strong&gt;Effect.toggle()&lt;/strong&gt;, el que permite con un sólo &lt;strong&gt;onclick()&lt;/strong&gt; (en un &lt;a&gt;, &lt;span&gt;, etc) mostrar y esconder el &lt;strong&gt;div&lt;/strong&gt; con el &lt;strong&gt;id&lt;/strong&gt; que necesitamos. En el fondo se trata de eso, tenemos un &lt;strong&gt;div&lt;/strong&gt;, le damos un &lt;strong&gt;id&lt;/strong&gt; específico y único, el que a través del &lt;strong&gt;onclick&lt;/strong&gt; le decimos que muestre ese &lt;strong&gt;div&lt;/strong&gt; si está escondido, o que lo esconda si está visible. Para que el &lt;strong&gt;div&lt;/strong&gt; esté escondido desde un inicio, le damos un &lt;strong&gt;display: none;&lt;/strong&gt; en el mismo HTML o en una hoja de estilos externa, como prefieras. Como la mayoría de las veces, muestro un ejemplo visual y código utilizado explicado. Primero, el código HTML:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;onclick&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;new Effect.toggle($(&amp;#39;#cajatexto&amp;#39;).blind())&amp;#34;&lt;/span&gt;&amp;gt;Mostrar y Esconder Texto&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;cajatexto&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;style&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;display: none;&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;p&lt;/span&gt;&amp;gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris eget ante. Integer sollicitudin urna eget est. Phasellus pharetra rutrum erat. Phasellus non augue et sapien nonummy&amp;amp;#8230;&amp;amp;#8230;&amp;amp;#8230;&amp;amp;#8230;&amp;amp;#8230;..&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Fijarse que al &lt;strong&gt;onclick&lt;/strong&gt; se le agregó el &lt;strong&gt;id&lt;/strong&gt; &lt;strong&gt;cajatexto&lt;/strong&gt;, al igual que el &lt;strong&gt;div&lt;/strong&gt; que queremos que se vea el efecto aplicado.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/scriptaculous/index.html&#34; target=&#34;_blank&#34;&gt;Ver ejemplo &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Debemos agregar 2 scripts a la página que queremos que ocurra el efecto: prototype.js y scriptaculous.js (en ese mismo orden).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;script&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;src&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;include/prototype.js&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;text/javascript&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;script&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;script&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;src&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;include/scriptaculous.js&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;text/javascript&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;script&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Como dije, &lt;a href=&#34;http://script.aculo.us/&#34; target=&#34;_blank&#34;&gt;script.aculo.us&lt;/a&gt; ofrece muchas más funcionalidades, además de efectos. Chequeen su sitio para más información.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 18</title>
      <link>https://csslab.cl/2007/02/12/lo-vi-y-me-gusto-18/</link>
      <pubDate>Mon, 12 Feb 2007 13:39:00 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/02/12/lo-vi-y-me-gusto-18/</guid>
      <description>#18 – 12 Febrero 2007</description>
      <content>&lt;p&gt;#18 – 12 Febrero 2007&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.extendio.ro/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/02/extendio.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://intensify.org/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2007/02/intensify.gif&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Transparencias a prueba de browsers</title>
      <link>https://csslab.cl/2007/01/24/transparencias-a-prueba-de-browsers-2/</link>
      <pubDate>Wed, 24 Jan 2007 17:12:19 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/01/24/transparencias-a-prueba-de-browsers-2/</guid>
      <description>&lt;p&gt;Hasta no hace poco, para lograr transparencias en imágenes para web, el método era exclusivamente hacerlo con un &lt;strong&gt;SWF&lt;/strong&gt;. Con la masificación del &lt;strong&gt;PNG&lt;/strong&gt;, esto se ha hecho más fácil y el resultado es bastante satisfactorio (no como esos horrendos bordes dentados de los eternos &lt;strong&gt;GIF&lt;/strong&gt;), pero lo complementaremos bastante con el uso de &lt;strong&gt;CSS&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;propiedades-del-browser&#34;&gt;Propiedades del browser&lt;/h3&gt;
&lt;p&gt;Cada browser tiene su propio método de aplicar opacidad a las imágenes. &lt;strong&gt;CSS&lt;/strong&gt; ha implementado 3 diferentes propiedades que afectan la transparencia de un elemento:&lt;/p&gt;</description>
      <content>&lt;p&gt;Hasta no hace poco, para lograr transparencias en imágenes para web, el método era exclusivamente hacerlo con un &lt;strong&gt;SWF&lt;/strong&gt;. Con la masificación del &lt;strong&gt;PNG&lt;/strong&gt;, esto se ha hecho más fácil y el resultado es bastante satisfactorio (no como esos horrendos bordes dentados de los eternos &lt;strong&gt;GIF&lt;/strong&gt;), pero lo complementaremos bastante con el uso de &lt;strong&gt;CSS&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;propiedades-del-browser&#34;&gt;Propiedades del browser&lt;/h3&gt;
&lt;p&gt;Cada browser tiene su propio método de aplicar opacidad a las imágenes. &lt;strong&gt;CSS&lt;/strong&gt; ha implementado 3 diferentes propiedades que afectan la transparencia de un elemento:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;opacity:&lt;/strong&gt; con valores decimales entre 0 (invisible) y 1 (sólido). (CSS3)
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;moz-opacity:&lt;/strong&gt; también con valores decimales entre 0 y 1. (Firefox)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;filter:&lt;/strong&gt; es una propiedad de IE (5.5+) el cual trae varios efectos (degradaciones, desenfocado, sombras, etc). Para lograr la transparencia se ocupa el filtro alpha, con valores entre 0 y 100.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Al declarar las 3 propiedades juntas mediante &lt;strong&gt;CSS&lt;/strong&gt; y con el mismo valor de opacidad, podrás tener una transparencia a prueba de browsers:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #elementotransparente {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;opacity: 0.4;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-moz-opacity: 0.4;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filter: alpha(opacity=40);&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;Y utilizando comentario condicional para IE (recomendable):&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  &lt;style type=&amp;ldquo;text/css&amp;rdquo;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#elementotransparente { opacity: 0.4; -moz-opacity: 0.4; }&lt;br /&gt; &lt;/style&gt;&lt;br /&gt; &lt;!&amp;mdash;[if IE]&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;style type=&amp;ldquo;text/css&amp;rdquo;&gt; #elementotransparente { filter: alpha(opacity=40); }&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/style&gt;&lt;br /&gt; &lt;![endif]&amp;mdash;&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/transparencia.html&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Ver ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La transparencia la puedes aplicar en bloques (un &lt;strong&gt;div&lt;/strong&gt; por ejemplo) o a elementos individuales (imágenes, textos). Importante es considerar el nivel de lectura, si quieres darle transparencia a bloques de texto, por ejemplo. Por último, ninguno de estas 3 propiedades validarán por la &lt;a href=&#34;(http://jigsaw.w3.org/css-validator/&#34; target=&#34;_blank&#34;&gt;W3C&lt;/a&gt;. Depende de tí si es importante que tu hoja de estilos valide.&lt;/p&gt;
&lt;p&gt;Probado en: Safari, IE6, IE7, Opera9, FF 1.5.3+&lt;/p&gt;
&lt;h3 id=&#34;links&#34;&gt;Links:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/filter.asp&#34; target=&#34;_blank&#34;&gt;IE Filter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://developer.mozilla.org/en/docs/CSS:-moz-opacity&#34; target=&#34;_blank&#34;&gt;Opacidad de Mozilla&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/css3-color/#transparency&#34; target=&#34;_blank&#34;&gt;Opacidad de CSS3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Centrado Vertical con CSS (actualizado)</title>
      <link>https://csslab.cl/2007/01/12/centrado-vertical-con-css/</link>
      <pubDate>Fri, 12 Jan 2007 20:10:49 +0000</pubDate>
      
      <guid>https://csslab.cl/2007/01/12/centrado-vertical-con-css/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;#actualizado&#34;&gt;(Ver actualización)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una buena razón por lo que muchas personas defienden el uso de tablas para la diagramación de contenidos de un sitio web, es porque éstas permiten el correcto centrado horizontal y vertical de los elementos contenidos dentro de sus celdas. La propiedad &lt;strong&gt;vertical-align&lt;/strong&gt; no es soportada por los browsers actuales, y va a ser lanzada con &lt;strong&gt;&lt;a href=&#34;http://www.w3.org/TR/css3-roadmap/&#34; target=&#34;_blank&#34;&gt;CSS3.0&lt;/a&gt;&lt;/strong&gt; (junto con muchas otras bien interesantes). Pues, a continuación les presentaré un método donde se utiliza efectivamente &lt;strong&gt;vertical-align&lt;/strong&gt;, junto a un atributo poco utilizado de &lt;strong&gt;display&lt;/strong&gt; y un &lt;strong&gt;hack&lt;/strong&gt; para IE, como siempre necesario.&lt;/p&gt;
&lt;p&gt;Antes que nada, necesitamos que nuestra superficie esté definida, en este caso al 100% de la pantalla (sin scroll). Esto lo logramos con &lt;strong&gt;height: 100%&lt;/strong&gt; en 2 partes: el html y el contenedor de lo que queremos mostrar:&lt;/p&gt;</description>
      <content>&lt;p&gt;&lt;a href=&#34;#actualizado&#34;&gt;(Ver actualización)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una buena razón por lo que muchas personas defienden el uso de tablas para la diagramación de contenidos de un sitio web, es porque éstas permiten el correcto centrado horizontal y vertical de los elementos contenidos dentro de sus celdas. La propiedad &lt;strong&gt;vertical-align&lt;/strong&gt; no es soportada por los browsers actuales, y va a ser lanzada con &lt;strong&gt;&lt;a href=&#34;http://www.w3.org/TR/css3-roadmap/&#34; target=&#34;_blank&#34;&gt;CSS3.0&lt;/a&gt;&lt;/strong&gt; (junto con muchas otras bien interesantes). Pues, a continuación les presentaré un método donde se utiliza efectivamente &lt;strong&gt;vertical-align&lt;/strong&gt;, junto a un atributo poco utilizado de &lt;strong&gt;display&lt;/strong&gt; y un &lt;strong&gt;hack&lt;/strong&gt; para IE, como siempre necesario.&lt;/p&gt;
&lt;p&gt;Antes que nada, necesitamos que nuestra superficie esté definida, en este caso al 100% de la pantalla (sin scroll). Esto lo logramos con &lt;strong&gt;height: 100%&lt;/strong&gt; en 2 partes: el html y el contenedor de lo que queremos mostrar:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;html, body {
     margin: 0;
     padding: 0;
     height: 100%;
}&amp;lt;br /&gt;
   #container {
     display: table;
     height: 100%;
     width: 100%;
     margin: 0;
   }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nuestro poco utilizado &lt;strong&gt;display: table;&lt;/strong&gt; lo que hace es dejar nuestro &lt;strong&gt;#container&lt;/strong&gt; compacto, tal como nuesto viejo amigo **&lt;/p&gt;&lt;/p&gt;
&lt;table&gt;
&lt;/table&gt;
&lt;p&gt;&lt;/strong&gt;. Dentro de &lt;strong&gt;#content&lt;/strong&gt; puedes encontrar &lt;strong&gt;display: table-cell;&lt;/strong&gt; que se comporta tal como una celda dentro de una tabla (en este caso, &lt;strong&gt;#content&lt;/strong&gt; sería una celda dentro de la tabla &lt;strong&gt;#container&lt;/strong&gt;). Y es por este comportamiento de tablas que &lt;strong&gt;vertical-align&lt;/strong&gt; entra en acción:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#content {
     display: table-cell;
     vertical-align: middle;
     position: relative;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para finalizar el hack para IE, donde se centra &lt;strong&gt;#container&lt;/strong&gt; pero con porcentajes:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;/* \*/
 * html #content {
     top: 50%;
     left: 0;
     height: 1px;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;* html #content #inner {
     position: relative;
     top: -50%;
}
  /* */&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/verticalalign.html&#34;&gt;Ver código funcionando&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;&lt;a name=&#34;actualizado&#34;&gt;&lt;/p&gt;&lt;/p&gt;
&lt;h3&gt;
  Actualización:
&lt;/h3&gt;
&lt;p&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  Dado la llegada de IE7, a través de comentarios en este artículo (a los cuales les agradezco mucho su preocupación) me hicieron saber que este método de centrado vertical no funcionaba correctamente en este browser. Por lo tanto, investigando, me topé con un mejor método, que con los que he probado funciona a la perfección.
&lt;/p&gt;
&lt;p&gt;
  &lt;a href=&#34;https://csslab.cl/ejemplos/centradovertical2.html&#34; class=&#34;verejemplo&#34;&gt;Ver código 2 funcionando&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  Más sobre display:
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
    &lt;a href=&#34;http://www.quirksmode.org/css/display.html&#34; target=&#34;_blank&#34;&gt;Quirksmode: the display declaration&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&#34;http://www.positioniseverything.net/explorer.html&#34; target=&#34;_blank&#34;&gt;The weird and wonderful world of Internet Explorer &lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  Gracias a &lt;a href=&#34;http://www.456bereastreet.com/lab/&#34; target=&#34;_blank&#34;&gt;456bereastreet&lt;/a&gt;.
&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 17</title>
      <link>https://csslab.cl/2006/12/29/lo-vi-y-me-gusto-17/</link>
      <pubDate>Fri, 29 Dec 2006 15:28:14 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/12/29/lo-vi-y-me-gusto-17/</guid>
      <description>#17 – 29 Diciembre 2006</description>
      <content>&lt;p&gt;#17 – 29 Diciembre 2006&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.hopkingdesign.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2006/12/hopking.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.danielevsilva.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2006/12/daniele.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.ddac.com.ar/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/uploads/2006/12/ddac.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Ahorrando hasta en código</title>
      <link>https://csslab.cl/2006/12/21/ahorrando-hasta-en-codigo/</link>
      <pubDate>Thu, 21 Dec 2006 19:25:24 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/12/21/ahorrando-hasta-en-codigo/</guid>
      <description>En la sintaxis de definiciones de CSS, es posible resumir algunas propiedades (tags), lo que nos da una gran ventaja ahorrándonos líneas de código, lo que a la larga hace que nuestra hoja de estilos pese bastante menos. Con esto también logramos que nuestro código sea más entendible, ya que juntamos en una sóla línea varios parámetros que pueden estar esparcidos en el mismo o varias classes e ID‘s.
El orden y los parámetros de cada propiedad no son obligatorios respetarlos literalmente, pero recomiendo que por lo menos sigan ese mismo orden.</description>
      <content>&lt;p&gt;En la sintaxis de definiciones de &lt;strong&gt;CSS&lt;/strong&gt;, es posible resumir algunas propiedades (tags), lo que nos da una gran ventaja ahorrándonos líneas de código, lo que a la larga hace que nuestra hoja de estilos pese bastante menos. Con esto también logramos que nuestro código sea más entendible, ya que juntamos en una sóla línea varios parámetros que pueden estar esparcidos en el mismo o varias &lt;strong&gt;classes&lt;/strong&gt; e &lt;strong&gt;ID&lt;/strong&gt;‘s.&lt;/p&gt;
&lt;p&gt;El orden y los parámetros de cada propiedad no son obligatorios respetarlos literalmente, pero recomiendo que por lo menos sigan ese mismo orden. Por experiencia propia…&lt;/p&gt;
&lt;h3 id=&#34;font&#34;&gt;Font:&lt;/h3&gt;
&lt;p&gt;font-style || font-variant || font-weight || font-size / line-height || familia de fuente&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  span.destacado {&lt;strong&gt;font: italic normal bold 14pt Verdana, Tahoma, Arial&lt;/strong&gt;;}
&lt;/p&gt;
&lt;h3 id=&#34;background&#34;&gt;Background:&lt;/h3&gt;
&lt;p&gt;background-color || background-image || background-repeat || background-attachment || background-position&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  body {&lt;strong&gt;background: #F00 url(../fondo.gif) repeat-y right left &lt;/strong&gt;;}
&lt;/p&gt;
&lt;h3 id=&#34;margin&#34;&gt;Margin:&lt;/h3&gt;
&lt;p&gt;longitud | porcentaje | auto&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #contenedor {&lt;strong&gt;margin: 15px&lt;/strong&gt;;} /* todos los m&amp;aacute;rgenes con 15px */&lt;br /&gt; p {&lt;strong&gt;margin: 12px 8px&lt;/strong&gt;;} /* m&amp;aacute;rgenes superior e inferior con 12px, m&amp;aacute;rgenes izquierdo y derecho con 8px */&lt;br /&gt; ul {&lt;strong&gt;margin: 5px 2px 0 4px&lt;/strong&gt;;} /* sentiro horario desde arriba: margen superior a 1px, derecha a 2px, abajo con 0px e izquierdo con 4px */
&lt;/p&gt;
&lt;h3 id=&#34;padding&#34;&gt;Padding:&lt;/h3&gt;
&lt;p&gt;longitud | porcentaje | auto&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  div#contenido {&lt;strong&gt;padding: 5em 1em&lt;/strong&gt;;}
&lt;/p&gt;
&lt;h3 id=&#34;border&#34;&gt;Border:&lt;/h3&gt;
&lt;p&gt;border-width || border-style || color&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  h1 {&lt;strong&gt;border: 2px dotted red&lt;/strong&gt;;}
&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Como Caja: el modelo</title>
      <link>https://csslab.cl/2006/12/14/como-caja-el-modelo/</link>
      <pubDate>Thu, 14 Dec 2006 16:46:59 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/12/14/como-caja-el-modelo/</guid>
      <description>&lt;p&gt;Un problemón de quien pretende entender esto del diseño con hojas de estilos, llega al momento de construir el layout y que todos los elementos se queden donde deberían estar, posicionándolos, flotándolos, como mejor se prefiera. &lt;strong&gt;Margin&lt;/strong&gt;, &lt;strong&gt;padding&lt;/strong&gt;, &lt;strong&gt;border&lt;/strong&gt; y &lt;strong&gt;width&lt;/strong&gt; dentro de un &lt;strong&gt;div&lt;/strong&gt; suelen causar grandes conflictos, los que se explican en el &lt;a href=&#34;http://www.w3.org/TR/REC-CSS2/box.html&#34; target=&#34;_blank&#34;&gt;Modelo de Caja de CSS&lt;/a&gt;, al cual describe las cajas rectangulares que son generadas por los elementos de la estructura del documento. Comencemos con esto.&lt;/p&gt;
&lt;h3 id=&#34;dimensiones-de-la-caja&#34;&gt;Dimensiones de la caja:&lt;/h3&gt;
&lt;p&gt;Cada caja tiene un área de contenido (texto, imagen, ambos, ninguno) y las áreas que la circundan, como &lt;strong&gt;padding&lt;/strong&gt;, &lt;strong&gt;margin&lt;/strong&gt; y &lt;strong&gt;border&lt;/strong&gt;; el tamaño de cada propiedad puede ser especificado al momento de construir y darle estilo a esos elementos. En el siguiente dibujo se muestran esas áreas y cómo se comportan.&lt;/p&gt;</description>
      <content>&lt;p&gt;Un problemón de quien pretende entender esto del diseño con hojas de estilos, llega al momento de construir el layout y que todos los elementos se queden donde deberían estar, posicionándolos, flotándolos, como mejor se prefiera. &lt;strong&gt;Margin&lt;/strong&gt;, &lt;strong&gt;padding&lt;/strong&gt;, &lt;strong&gt;border&lt;/strong&gt; y &lt;strong&gt;width&lt;/strong&gt; dentro de un &lt;strong&gt;div&lt;/strong&gt; suelen causar grandes conflictos, los que se explican en el &lt;a href=&#34;http://www.w3.org/TR/REC-CSS2/box.html&#34; target=&#34;_blank&#34;&gt;Modelo de Caja de CSS&lt;/a&gt;, al cual describe las cajas rectangulares que son generadas por los elementos de la estructura del documento. Comencemos con esto.&lt;/p&gt;
&lt;h3 id=&#34;dimensiones-de-la-caja&#34;&gt;Dimensiones de la caja:&lt;/h3&gt;
&lt;p&gt;Cada caja tiene un área de contenido (texto, imagen, ambos, ninguno) y las áreas que la circundan, como &lt;strong&gt;padding&lt;/strong&gt;, &lt;strong&gt;margin&lt;/strong&gt; y &lt;strong&gt;border&lt;/strong&gt;; el tamaño de cada propiedad puede ser especificado al momento de construir y darle estilo a esos elementos. En el siguiente dibujo se muestran esas áreas y cómo se comportan.&lt;/p&gt;
&lt;div align=&#34;center&#34; style=&#34;margin: 10px 0;&#34;&gt;
  &lt;img src=&#34;https://csslab.cl/ejemplos/modelocaja/imgs/modelocaja.gif&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Cuando tenemos un &lt;strong&gt;div&lt;/strong&gt; de ancho fijo, digamos como en el ejemplo de 300px, al agregarle un &lt;strong&gt;padding&lt;/strong&gt; de 10px a ese mismo &lt;strong&gt;div&lt;/strong&gt;, ese &lt;strong&gt;padding&lt;/strong&gt; hace que el &lt;strong&gt;div&lt;/strong&gt; gane 10px más en su ancho (claro que en el alto también, pero en este momento estamos centrándonos en el ancho exclusivamente); nuestro &lt;strong&gt;div&lt;/strong&gt; ahora mide 320px (ganamos 10px por lado). Con el &lt;strong&gt;margin&lt;/strong&gt; ocurre lo mismo, al agregarle 20px de &lt;strong&gt;margin&lt;/strong&gt;, ganamos 40px en nuestro &lt;strong&gt;div&lt;/strong&gt; (20px por lado), el que mide ahora 360px. Si además, nuestro &lt;strong&gt;div&lt;/strong&gt; tiene un &lt;strong&gt;border&lt;/strong&gt; de 1px, ese borde también se suma al ancho de nuestro ya deformado &lt;strong&gt;div&lt;/strong&gt;, midiendo finalmente 362px. Finalmente, podemos afirmar que el ancho (y alto) de la caja está determinado por la suma de márgenes, bordes y rellenos (&lt;strong&gt;padding&lt;/strong&gt;).&lt;/p&gt;
&lt;h3 id=&#34;iquesty-queacute-hacer&#34;&gt;¿Y qué hacer?&lt;/h3&gt;
&lt;p&gt;No es nada del otro mundo, Existen varias fórmulas para enfrentar este pequeño detalle (que no es defecto) de las dimensiones del &lt;strong&gt;div&lt;/strong&gt;. Primero que nada, y como regla, es utilizar el reseteador universal en tu hoja de estilos, antes que nada:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;* {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 0;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 0;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Así, los márgenes y rellenos (así como todos los elementos &lt;strong&gt;HTML&lt;/strong&gt;) tienen por defecto &lt;strong&gt;margin&lt;/strong&gt; y &lt;strong&gt;padding&lt;/strong&gt; 0, anulando la diferencia de esta propiedad entre &lt;strong&gt;browsers&lt;/strong&gt; (IE dista mucho de Firefox, y de Safari, y de Opera), logrando una igualdad.&lt;/p&gt;
&lt;p&gt;Otra, es nunca darle ancho fijo a los &lt;strong&gt;div’s&lt;/strong&gt;, sólo a sus contenedores externos. En el caso de darle un ancho fijo al &lt;strong&gt;div&lt;/strong&gt;, se recomienda no darle &lt;strong&gt;padding&lt;/strong&gt; al &lt;strong&gt;div&lt;/strong&gt;, sino a los elementos que están contenidos dentro de él, por ejemplo, a un &lt;strong&gt;&lt;p&gt;&lt;/strong&gt; o a un &lt;strong&gt;&lt;img&gt;&lt;/strong&gt;. Así, evitamos que nuestro &lt;strong&gt;div&lt;/strong&gt; se deforme sin que lo podamos controlar. Son pequeñas mañas, de las que te acostumbras y que hacen que nuestro diseño se vea igual entre &lt;strong&gt;browsers&lt;/strong&gt; y plataformas.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/modelocaja/index.html&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo en HTML&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Recursos Gráficos</title>
      <link>https://csslab.cl/2006/12/05/recursos-graficos/</link>
      <pubDate>Tue, 05 Dec 2006 15:50:17 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/12/05/recursos-graficos/</guid>
      <description>&lt;p&gt;Llega el momento de diseñar un sitio. Estás todo inspirado. comienzas el layout, Photoshop, Fireworks a mano. Pero luego comienzan las trabas. Necesitas un logo vectorizado, por último un &lt;strong&gt;JPG&lt;/strong&gt;. Y el que tienen en su sitio es un &lt;strong&gt;GIF&lt;/strong&gt; transparente del tamaño de un alfiler. Estás maqueteando, y de repente no tienes una imagen de un edificio, un paisaje, una flor, una familia… Tus &lt;strong&gt;CD’s&lt;/strong&gt; de banco de fotos no dan a basto ya. Para qué hablar de tu catálogo tipográfico. Pero con Internet como co-piloto, tienes muchas chances de encontrar lo que necesites, en poco tiempo y de gran calidad. Entregaré unos links muy útiles para el diseñador al momento de requerir recursos gráficos gratuitos (no queremos infrigir ningún Copyright) y de muy buena calidad. Directo a tus &lt;strong&gt;Bookmarks&lt;/strong&gt;:&lt;/p&gt;
&lt;h3 id=&#34;logos-vectorizados&#34;&gt;Logos Vectorizados:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;En &lt;a href=&#34;http://www.brandsoftheworld.com/&#34; target=&#34;_blank&#34;&gt;Brands of the World&lt;/a&gt; encontrarás una gran cantidad de logotipos, isotipos vectorizados, en formato &lt;strong&gt;EPS&lt;/strong&gt; y por lo tanto de gran calidad.&lt;/li&gt;
&lt;li&gt;Si estás en Chile, &lt;a href=&#34;http://www.logoteca.cl/&#34;&gt;Logoteca&lt;/a&gt; puedes encontrar muchas marcas nacionales y extranjeras, subidas por los mismos usuarios (registro necesario).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tipografiacuteas&#34;&gt;Tipografías:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.dafont.com/&#34; target=&#34;_blank&#34;&gt;Da Font&lt;/a&gt; es un referente al momento de buscar fuentes digitales. Muy bien ordenados y catalogados, este sitio te da la posibilidad de previsualizar la tipografía con el texto que ingreses.&lt;/li&gt;
&lt;li&gt;Si quieres saber qué tipografía corresponde tal o cual isotipo, o con qué tipo escribieron un slogan, &lt;a href=&#34;http://www.myfonts.com/WhatTheFont/&#34; target=&#34;_blank&#34;&gt;What The Font&lt;/a&gt; te permite subir un archivo de imagen con el texto de la discordia, y el sistema trata de adivinar a qué tipo de texto corresponde. Muy útil.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://neatfonts.com/&#34; target=&#34;_blank&#34;&gt;NeatFonts&lt;/a&gt; también te ofrece un amplio catálogo de fuentes para lo que estimes conveniente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;iacuteconos&#34;&gt;Íconos:&lt;/h3&gt;</description>
      <content>&lt;p&gt;Llega el momento de diseñar un sitio. Estás todo inspirado. comienzas el layout, Photoshop, Fireworks a mano. Pero luego comienzan las trabas. Necesitas un logo vectorizado, por último un &lt;strong&gt;JPG&lt;/strong&gt;. Y el que tienen en su sitio es un &lt;strong&gt;GIF&lt;/strong&gt; transparente del tamaño de un alfiler. Estás maqueteando, y de repente no tienes una imagen de un edificio, un paisaje, una flor, una familia… Tus &lt;strong&gt;CD’s&lt;/strong&gt; de banco de fotos no dan a basto ya. Para qué hablar de tu catálogo tipográfico. Pero con Internet como co-piloto, tienes muchas chances de encontrar lo que necesites, en poco tiempo y de gran calidad. Entregaré unos links muy útiles para el diseñador al momento de requerir recursos gráficos gratuitos (no queremos infrigir ningún Copyright) y de muy buena calidad. Directo a tus &lt;strong&gt;Bookmarks&lt;/strong&gt;:&lt;/p&gt;
&lt;h3 id=&#34;logos-vectorizados&#34;&gt;Logos Vectorizados:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;En &lt;a href=&#34;http://www.brandsoftheworld.com/&#34; target=&#34;_blank&#34;&gt;Brands of the World&lt;/a&gt; encontrarás una gran cantidad de logotipos, isotipos vectorizados, en formato &lt;strong&gt;EPS&lt;/strong&gt; y por lo tanto de gran calidad.&lt;/li&gt;
&lt;li&gt;Si estás en Chile, &lt;a href=&#34;http://www.logoteca.cl/&#34;&gt;Logoteca&lt;/a&gt; puedes encontrar muchas marcas nacionales y extranjeras, subidas por los mismos usuarios (registro necesario).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tipografiacuteas&#34;&gt;Tipografías:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.dafont.com/&#34; target=&#34;_blank&#34;&gt;Da Font&lt;/a&gt; es un referente al momento de buscar fuentes digitales. Muy bien ordenados y catalogados, este sitio te da la posibilidad de previsualizar la tipografía con el texto que ingreses.&lt;/li&gt;
&lt;li&gt;Si quieres saber qué tipografía corresponde tal o cual isotipo, o con qué tipo escribieron un slogan, &lt;a href=&#34;http://www.myfonts.com/WhatTheFont/&#34; target=&#34;_blank&#34;&gt;What The Font&lt;/a&gt; te permite subir un archivo de imagen con el texto de la discordia, y el sistema trata de adivinar a qué tipo de texto corresponde. Muy útil.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://neatfonts.com/&#34; target=&#34;_blank&#34;&gt;NeatFonts&lt;/a&gt; también te ofrece un amplio catálogo de fuentes para lo que estimes conveniente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;iacuteconos&#34;&gt;Íconos:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Para qué gastar tiempo haciendo cada ícono, &lt;strong&gt;bullet&lt;/strong&gt; en ese sitio, si ya existen listos, y gratis. &lt;a href=&#34;http://www.famfamfam.com/lab/icons/&#34; target=&#34;_blank&#34;&gt;FAMFAMFAM&lt;/a&gt; ofrece uno de los mejores, junto con el amplio catálogo de &lt;a href=&#34;http://www.maxpower.ca/free-icons/2006/03/05/&#34; target=&#34;_blank&#34;&gt;Max Power&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;lorem-ipsum&#34;&gt;Lorem Ipsum:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Texto simulado para llenar esas cajas de texto, la mejor opción: &lt;a href=&#34;http://www.lipsum.com/&#34;&gt;Lorem Ipsum&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;fotos-gratis&#34;&gt;Fotos Gratis:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;250.000 imágenes en alta resolución, la gran mayoría gratuitas para que puedan ser utilizadas en lo que se te ocurra, sin pagar derechos. &lt;a href=&#34;http://www.sxc.hu/&#34; target=&#34;_blank&#34;&gt;Stock.xchng&lt;/a&gt; es un sitio colaborativo que se construye a través de imágenes subidas por sus mismos usuarios.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;pruebas-en-browsers&#34;&gt;Pruebas en Browsers:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Todo sitio &lt;strong&gt;XHTML&lt;/strong&gt; debería ser probado en la mayor cantidad de browsers disponibles. El problema es que en la mayoría de las veces, no los tenemos a disposición. &lt;a href=&#34;http://browsershots.org/&#34; target=&#34;_blank&#34;&gt;Browser Shots&lt;/a&gt; hace este trabajo por tí, con sólo enviarles la &lt;strong&gt;URL&lt;/strong&gt; donde se aloja tu sitio.&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Ordenando Listas</title>
      <link>https://csslab.cl/2006/11/24/ordenando-listas/</link>
      <pubDate>Fri, 24 Nov 2006 19:11:13 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/11/24/ordenando-listas/</guid>
      <description>&lt;p&gt;Ha resultado ser un extenso tópico el asunto de las listas. Mucho hay de qué hablar, y mucho por complementar. En esta ocasión, desenterraré varias propiedades &lt;strong&gt;HTML&lt;/strong&gt; que se han dejado de utilizar por diferentes razones, pero que aún resultan esenciales para el desarrollo semántico y la presentación de contenidos. En muchas de ellas podremos utilizar &lt;strong&gt;CSS&lt;/strong&gt; para ampliar su configuración.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UL&lt;/strong&gt; es archi-conocido y ampliamente utilizado en este mismo sitio. Por eso, recurriré esta vez a &lt;strong&gt;OL: Ordered Lists&lt;/strong&gt;. Corresponden a listas donde el orden de los elementos se realiza automática y secuencialmente, pero donde tenemos la oportunidad de manejar algunas de ellas a través de un par de atributos. Su forma de construcción es similar a los &lt;strong&gt;UL&lt;/strong&gt; (Unordered Lists):&lt;/p&gt;</description>
      <content>&lt;p&gt;Ha resultado ser un extenso tópico el asunto de las listas. Mucho hay de qué hablar, y mucho por complementar. En esta ocasión, desenterraré varias propiedades &lt;strong&gt;HTML&lt;/strong&gt; que se han dejado de utilizar por diferentes razones, pero que aún resultan esenciales para el desarrollo semántico y la presentación de contenidos. En muchas de ellas podremos utilizar &lt;strong&gt;CSS&lt;/strong&gt; para ampliar su configuración.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UL&lt;/strong&gt; es archi-conocido y ampliamente utilizado en este mismo sitio. Por eso, recurriré esta vez a &lt;strong&gt;OL: Ordered Lists&lt;/strong&gt;. Corresponden a listas donde el orden de los elementos se realiza automática y secuencialmente, pero donde tenemos la oportunidad de manejar algunas de ellas a través de un par de atributos. Su forma de construcción es similar a los &lt;strong&gt;UL&lt;/strong&gt; (Unordered Lists):&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;ol&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item Uno&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item Dos&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item Tres&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item Cuatro&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item Cinco&lt;/li&gt;&lt;br /&gt; &lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/ol/ol.html&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Ver este ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Como podrán ver, automáticamente se agregan antes de cada ítem un número, ordenando los elementos desde el 1 y consecutivamente. Algunas cosas que podemos modificar mediante atributos son:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;type:&lt;/strong&gt; podemos definir si las listas se ordenan por números, letras alfabéticamentes, incluso números romanos (mayúsculas y minúsculas):&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;ol type=&#34;I&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item Uno&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item Dos&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item Tres&lt;/li&gt;&lt;br /&gt; &lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/ol/ol_i.html&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Ver este ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;start:&lt;/strong&gt; este atributo nos permite definir desde qué número se comenzará a contar la lista (lamentablemente, no soportado por Safari 2):&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;ol start=&#34;1354&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item Uno&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item Dos&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;Item Tres&lt;/li&gt;&lt;br /&gt; &lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/ol/ol_1354.html&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Ver este ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bueno, a través del &lt;strong&gt;CSS&lt;/strong&gt; podemos ampliar el abanico de atributos, donde &lt;strong&gt;CSS2.01&lt;/strong&gt; nos entrega varias opciones de desplegar el tipo de bullet que más nos acomode, por mera estética, o por necesidad. Veamos un ejemplo de su aplicación:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  ol {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list-style-type: decimal-leading-zero;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;Aquí, podremos ver cómo los números anteriores a 10 se muestran antecedidos por un 0.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/ol/ol_cero.html&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Ver este ejemplo &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Algunas otras no muy utilizadas (quizas sí en otros continentes) las incluyo &lt;a href=&#34;https://csslab.cl/ejemplos/ol/ol_otros.html&#34; target=&#34;_blank&#34;&gt;en la siguiente página&lt;/a&gt;, junto con su ejemplo gráfico. Quizás no puedan visualizarse en algunos browsers, y algunas plataformas, ya que no disponen de la tipografía necesaria para el idioma específico.&lt;/p&gt;
&lt;p&gt;Recuerdo haber visto tantos sitios construídos con tablas utilizando celdas para hacer esto mismo… Para qué complicarse me pregunto yo.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Más estilos a las listas</title>
      <link>https://csslab.cl/2006/11/14/mas-estilos-a-las-listas/</link>
      <pubDate>Tue, 14 Nov 2006 15:17:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/11/14/mas-estilos-a-las-listas/</guid>
      <description>&lt;p&gt;Listas de elementos suelen ser cansativas, tediosas de leer. Aunque &lt;strong&gt;CSS&lt;/strong&gt; te entrega varios diseños para variar el típico bullet circular, también te entrega la posibilidad de utilizar una imagen (generalmente un &lt;strong&gt;GIF&lt;/strong&gt; muy liviano, no más de un par de KB) para reemplazarla. Pero el ingenio de alguien que tuvo suficiente tiempo también permite que regules, por ejemplo, el &lt;strong&gt;padding&lt;/strong&gt; entre el &lt;strong&gt;bullet&lt;/strong&gt; y el texto soportado por éste. Mostraré 2 técnicas para que reemplaces el &lt;strong&gt;bullet&lt;/strong&gt; por una imagen determinada. Dependerá de tí cuál técnica utilizar:&lt;/p&gt;
&lt;p&gt;Comenzamos con el &lt;strong&gt;HTML&lt;/strong&gt; de una típica lista con unos 5 elementos:&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;ul id=&#34;listacompras&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Arroz&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Az&amp;uacute;car&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Shampoo&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Cerveza&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Hongo Alucin&amp;oacute;geno&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;/ul&gt;
&lt;/p&gt;</description>
      <content>&lt;p&gt;Listas de elementos suelen ser cansativas, tediosas de leer. Aunque &lt;strong&gt;CSS&lt;/strong&gt; te entrega varios diseños para variar el típico bullet circular, también te entrega la posibilidad de utilizar una imagen (generalmente un &lt;strong&gt;GIF&lt;/strong&gt; muy liviano, no más de un par de KB) para reemplazarla. Pero el ingenio de alguien que tuvo suficiente tiempo también permite que regules, por ejemplo, el &lt;strong&gt;padding&lt;/strong&gt; entre el &lt;strong&gt;bullet&lt;/strong&gt; y el texto soportado por éste. Mostraré 2 técnicas para que reemplaces el &lt;strong&gt;bullet&lt;/strong&gt; por una imagen determinada. Dependerá de tí cuál técnica utilizar:&lt;/p&gt;
&lt;p&gt;Comenzamos con el &lt;strong&gt;HTML&lt;/strong&gt; de una típica lista con unos 5 elementos:&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;ul id=&#34;listacompras&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Arroz&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Az&amp;uacute;car&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Shampoo&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Cerveza&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;li&gt;&lt;a href=&#34;#&#34;&gt;Hongo Alucin&amp;oacute;geno&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;/ul&gt;
&lt;/p&gt;
&lt;!--adsense--&gt;
&lt;p&gt;La primera técnica es muy básica y aprovecha la propiedad &lt;strong&gt;CSS&lt;/strong&gt; para listas &lt;strong&gt;list-style-image: url();&lt;/strong&gt; donde linkeas la imagen que hayas creado para esto:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  ul#listacompras1 {&lt;br /&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list-style: none;&lt;br /&gt; }&lt;br /&gt; ul#listacompras1 li {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list-style-image: url(imagenes/bullet_valido.gif);&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;Ya la segunda, la idea al igual que en la anterior es sacar el &lt;strong&gt;bullet&lt;/strong&gt; con &lt;strong&gt;list-style: none;&lt;/strong&gt; para luego agregar la imagen como fondo del ítem de lista (&lt;strong&gt;background-image&lt;/strong&gt;), posicionarla si se requiere (&lt;strong&gt;background-position&lt;/strong&gt;) y algo muy importante, especificar que ese fondo no debe repetirse (&lt;strong&gt;background-repeat: no-repeat;&lt;/strong&gt;). Creo pertinente dejar claro (no recuerdo si lo mencione antes) que, a diferencia de la definición de &lt;strong&gt;margin&lt;/strong&gt; y &lt;strong&gt;padding&lt;/strong&gt;, los valores de &lt;strong&gt;background-position&lt;/strong&gt; comienzan desde la &lt;strong&gt;izquierda-arriba-derecha-abajo&lt;/strong&gt;. Por ejemplo:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  background-position: right top; &lt;em&gt;(se alinear&amp;aacute; a la derecha y arriba)&lt;/em&gt; &lt;br /&gt; background-position: 5px 0; &lt;em&gt;(estar&amp;aacute; a 5px de la izquierda pero pegado al margen superior)&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;Segunda técnica, donde tienes más control en el posicionamiento de la imagen:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #listacompras2 {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding-left: 10px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list-style: none;&lt;br /&gt; }&lt;br /&gt; #listacompras2 li {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding-left: 20px;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-image: url(imagenes/bullet_flecha.gif);&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-repeat: no-repeat;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-position: 0 0;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/bullet/index.html&#34; target=&#34;_blank&#34;&gt;Ver ejemplo de ambas listas&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>¡Aaaaabajo!</title>
      <link>https://csslab.cl/2006/11/06/aaaaabajo/</link>
      <pubDate>Mon, 06 Nov 2006 21:10:13 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/11/06/aaaaabajo/</guid>
      <description>Los pies de página, o footers como prefiero llamarlos, han demostrado ser un importante factor gráfico a la hora de armar sitios web, o más comúnmente, blogs. Puedes dejar estampado los derechos reservados de tu sitio, si valida, si no valida, una firma, una forma, algo importante y que debería siempre estar presente, después de todo el contenido. Existen varias formas de construirlo, aquí demuestro una bastante ingeniosa que no deja de ser interesante tener en cuenta.</description>
      <content>&lt;p&gt;Los pies de página, o &lt;strong&gt;footers&lt;/strong&gt; como prefiero llamarlos, han demostrado ser un importante factor gráfico a la hora de armar sitios web, o más comúnmente, blogs. Puedes dejar estampado los derechos reservados de tu sitio, si valida, si no valida, una firma, una forma, algo importante y que debería siempre estar presente, después de todo el contenido. Existen varias formas de construirlo, aquí demuestro una bastante ingeniosa que no deja de ser interesante tener en cuenta. El código completo podrán digerirlo en la página misma de ejemplo, pero quiero hacer hincapié en 2 elementos importantes y que marcan la diferenciación de esta técnica:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* hacks varios, adivinen para q browser&amp;amp;#8230; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;html&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;body&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; #contenedor {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;min-height&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;; &lt;span style=&#34;color:#75715e&#34;&gt;/* alto minimo FF y Safari */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;height&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;; &lt;span style=&#34;color:#75715e&#34;&gt;/* alto minimo para IE Windows */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;margin&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;padding&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;html&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;body&lt;/span&gt; #contenedor {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;height&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;auto&lt;/span&gt;; &lt;span style=&#34;color:#75715e&#34;&gt;/* con este hack escondemos el min-height de IE*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/* fin hacks varios */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Estos hacks fueron necesarios a la hora de que IE6 hiciera caso al alto de la ventana total del browser, dado que no soporta la propiedad &lt;strong&gt;min-height&lt;/strong&gt;. Es un pequeño truco que resulta para suplir esta falencia. Se supone que estará solucionado en IE7.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#footer {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;position&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;absolute&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;bottom&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;margin-left&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;font-size&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;11&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;font-weight&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;bold&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;color&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#C00&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;text-align&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;center&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Esta es la otra parte crucial del código. Aquí, se le dice al &lt;strong&gt;div footer&lt;/strong&gt; que se quede pegado al borde inferior del browser (&lt;strong&gt;bottom: 0;&lt;/strong&gt;), posicionado absolutamente. El resto, mera estética.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/footer.html&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pueden escalar la ventana de su browser para comprobar que realmente el &lt;strong&gt;footer&lt;/strong&gt; permanece por debajo de todo el contenido.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Probado en IE6, Safari, Firefox, Opera.&lt;/em&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Feliz Aniversario CSSLab</title>
      <link>https://csslab.cl/2006/11/04/feliz-aniversario-csslab/</link>
      <pubDate>Sat, 04 Nov 2006 13:46:15 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/11/04/feliz-aniversario-csslab/</guid>
      <description>Ya va 1 año desde que este proyecto se concretó, y se publicó el primer post. Mucho ha pasado, pero sólo 2 templates han existido (lo que es curioso ya que no suelo quedarme tranquilo con los diseños que hago para mí). Agradezco a todos quienes me han ayudado a que esto salga adelante, a todos quienes leen esto y principalmente quienes comentan ya que lo más importante es su feedback.</description>
      <content>&lt;p&gt;&lt;img src=&#34;http://www.csslab.cl/wp-content/uploads/2006/11/cumple.gif&#34; align=&#34;right&#34; /&gt;Ya va 1 año desde que este proyecto se concretó, y se publicó el &lt;a href=&#34;http://www.csslab.cl/2005/11/04/bienvenidos/&#34;&gt;primer post&lt;/a&gt;. Mucho ha pasado, pero sólo 2 templates han existido (lo que es curioso ya que no suelo quedarme tranquilo con los diseños que hago para mí). Agradezco a todos quienes me han ayudado a que esto salga adelante, a todos quienes leen esto y principalmente quienes comentan ya que lo más importante es su feedback. Últimamente no he tenido mucho tiempo para publicar artículos, lo que pretendo retomar lo antes posible.&lt;/p&gt;
&lt;p&gt;Lo que sí tengo para contarles es que estoy comenzando a escribir un libro, un libro sobre tendencias web y diseño y construcción de sitios web semánticos. El título aún es tentativo, prefiero no darlo aún ya que tengo varias opciones. Estará por supuesto en español dado el escaso contenido bibliográfico de este tema en nuestro idioma. Creo que será un gran apoyo para muchos, además de lo que ya suelo publicar aquí, lo que se verá complementado. Pienso venderlo aquí en este mismo sitio, por capítulos, en un formato a definir (PDF casi seguro) a un precio módico (unos pocos dólares), por capítulos y vía Paypal (así, compras sólo el capítulo que te interesa, o si quieres compras el libro completo también a un precio amigo).&lt;/p&gt;
&lt;p&gt;Felicidades &lt;strong&gt;CSSLab&lt;/strong&gt;!&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Con más clase</title>
      <link>https://csslab.cl/2006/11/03/con-mas-clase/</link>
      <pubDate>Fri, 03 Nov 2006 19:30:51 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/11/03/con-mas-clase/</guid>
      <description>A partir de CSS2, se puede agregar más de una clase a un selector. Basta con separarlos con un espacio dentro del class de esta manera: class=&amp;ldquo;rojo bold&amp;rdquo;. Veamos un ejemplo muuuuuy simple. A continuación, dos estilos para un mismo texto:
 .rojo {&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;color: #F00;&amp;lt;br /&amp;gt; }&amp;lt;br /&amp;gt; .bold {&amp;lt;br /&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;font-weight: bolder;&amp;lt;br /&amp;gt; }  Ver ambas clases en un mismo tag .****
 Un detalle muy importante.</description>
      <content>&lt;p&gt;A partir de &lt;strong&gt;CSS2&lt;/strong&gt;, se puede agregar más de una clase a un selector. Basta con separarlos con un espacio dentro del class de esta manera: &lt;strong&gt;class=&amp;ldquo;rojo bold&amp;rdquo;&lt;/strong&gt;. Veamos un ejemplo muuuuuy simple. A continuación, dos estilos para un mismo texto:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  .&lt;span style=&#34;color:#a6e22e&#34;&gt;rojo&lt;/span&gt; {&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;lt;br&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;/&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;amp;nbsp&lt;/span&gt;;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;amp;nbsp&lt;/span&gt;;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;amp;nbsp&lt;/span&gt;;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;amp;nbsp&lt;/span&gt;;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;amp;nbsp&lt;/span&gt;;&lt;span style=&#34;color:#66d9ef&#34;&gt;color&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;#F00&lt;/span&gt;;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;lt;br&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;/&amp;gt;&lt;/span&gt; }&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;br&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&amp;gt;&lt;/span&gt; .&lt;span style=&#34;color:#a6e22e&#34;&gt;bold&lt;/span&gt; {&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;lt;br&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;/&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;amp;nbsp&lt;/span&gt;;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;amp;nbsp&lt;/span&gt;;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;amp;nbsp&lt;/span&gt;;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;amp;nbsp&lt;/span&gt;;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;amp;nbsp&lt;/span&gt;;&lt;span style=&#34;color:#66d9ef&#34;&gt;font-weight&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;bolder&lt;/span&gt;;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;lt;br&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;/&amp;gt;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/2clases.html&#34; target=&#34;_blank&#34;&gt;Ver ambas clases en un mismo tag &lt;strong&gt;&lt;p&gt;.&lt;/strong&gt;&lt;/a&gt;****&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Un detalle muy importante. Si ambas clases coinciden en uno o más atributos, la última clase mencionada en &lt;strong&gt;class=&amp;quot;&amp;quot;&lt;/strong&gt; es la que primará. Por ejemplo, digamos que ambas clases de &lt;strong&gt;class=&amp;ldquo;grande chico&amp;rdquo;&lt;/strong&gt; tienen &lt;strong&gt;font-size:&lt;/strong&gt; pero &lt;strong&gt;.grande&lt;/strong&gt; es de &lt;strong&gt;24px&lt;/strong&gt; y &lt;strong&gt;.chico 11px;&lt;/strong&gt; en este caso el selector será de 11 pixeles.&lt;/p&gt;
&lt;p&gt;Otro detalle a considerar, es que esto no es muy soportado en browsers antiguos. Pero bueno, mejor que se actualicen.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 16</title>
      <link>https://csslab.cl/2006/10/16/lo-vi-y-me-gusto-16/</link>
      <pubDate>Mon, 16 Oct 2006 18:07:05 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/10/16/lo-vi-y-me-gusto-16/</guid>
      <description>#16 – 16 Octubre 2006</description>
      <content>&lt;p&gt;#16 – 16 Octubre 2006&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.verdurethought.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/verdure.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.aymara.com.br/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/aymara.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Formularios Semánticos: el regreso</title>
      <link>https://csslab.cl/2006/10/13/formularios-semanticos-ii/</link>
      <pubDate>Fri, 13 Oct 2006 18:29:03 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/10/13/formularios-semanticos-ii/</guid>
      <description>&lt;p&gt;En una oportunidad previa, mostré una técnica para &lt;a href=&#34;http://www.csslab.cl/?p=11&#34;&gt;construir formularios tableless&lt;/a&gt;, o sea, sin las famosas tablas que tanto nos ayudaron hace algún tiempo. Sin &lt;strong&gt;div’s&lt;/strong&gt;, solamente &lt;strong&gt;label&lt;/strong&gt; e &lt;strong&gt;input&lt;/strong&gt; fueron necesarios. Bien, en esta ocasión, seguiré con este apasionante e intrigante tema, pero se motrarán 2 variaciones del mismo formulario, pero con diferentes diseños. Dependiendo de tus necesidades, más de alguno puede servirte.&lt;/p&gt;
&lt;p&gt;El concepto de hoy: &lt;a href=&#34;http://www.csslab.cl/?p=49&#34;&gt;construir semánticamente&lt;/a&gt; (hacerlo accesible a los browsers y que sean relevantes para los buscadores, &lt;a href=&#34;http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.10&#34; target=&#34;_blank&#34;&gt;tal como lo recomienda la W3C&lt;/a&gt;). La clave está en 3 tags: &lt;strong&gt;fieldset&lt;/strong&gt;, &lt;strong&gt;legend&lt;/strong&gt; y &lt;strong&gt;label&lt;/strong&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;En una oportunidad previa, mostré una técnica para &lt;a href=&#34;http://www.csslab.cl/?p=11&#34;&gt;construir formularios tableless&lt;/a&gt;, o sea, sin las famosas tablas que tanto nos ayudaron hace algún tiempo. Sin &lt;strong&gt;div’s&lt;/strong&gt;, solamente &lt;strong&gt;label&lt;/strong&gt; e &lt;strong&gt;input&lt;/strong&gt; fueron necesarios. Bien, en esta ocasión, seguiré con este apasionante e intrigante tema, pero se motrarán 2 variaciones del mismo formulario, pero con diferentes diseños. Dependiendo de tus necesidades, más de alguno puede servirte.&lt;/p&gt;
&lt;p&gt;El concepto de hoy: &lt;a href=&#34;http://www.csslab.cl/?p=49&#34;&gt;construir semánticamente&lt;/a&gt; (hacerlo accesible a los browsers y que sean relevantes para los buscadores, &lt;a href=&#34;http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.10&#34; target=&#34;_blank&#34;&gt;tal como lo recomienda la W3C&lt;/a&gt;). La clave está en 3 tags: &lt;strong&gt;fieldset&lt;/strong&gt;, &lt;strong&gt;legend&lt;/strong&gt; y &lt;strong&gt;label&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La etiqueta &lt;strong&gt;fieldset&lt;/strong&gt; permite agrupar controles y etiquetas que estén relacionados, haciendo que el formulario sea más comprensible para los usuarios desde un punto de vista visual y conceptual, a la vez que incrementa la usabilidad y la accesibilidad, ya que estos campos podrían ser utilizados al realizar saltos entre campos con la &lt;em&gt;tecla tab&lt;/em&gt; o interpretados por navegadores que incorporen funciones de generación de voz (recuerden, &lt;a href=&#34;http://www.csslab.cl/?p=54&#34;&gt;accesibilidad a discapacitados&lt;/a&gt;).
&lt;ul&gt;
&lt;li&gt;La etiqueta &lt;strong&gt;legend&lt;/strong&gt; permite asignar un título a un fieldset, aumentando los valores de usabilidad y accesibilidad.&lt;/li&gt;
&lt;li&gt;La etiqueta &lt;strong&gt;label&lt;/strong&gt; sirve para representar el texto asociado a controles que no tienen implícitamente un valor de texto. Los controles que no tienen labels implícitos, como los campos de texto, radios o checkboxes por ejemplo, pueden utilizar etiquetas label para indicar el texto que les corresponde.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La forma de diseñar un formulario correctamente, es la siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;form&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;fieldset&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;legend&amp;gt;T&amp;iacute;tulo del Form&amp;lt;/legend&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;label&amp;gt;Nombre input: &amp;lt;input name=&#34;&#34; type=&#34;&#34;/&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/fieldset&amp;gt;&amp;lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora puedes darle el estilo que quieras a las etiquetas, o tags, logrando el diseño que estimes adecuado para tu proyecto web. Nótese que el &lt;strong&gt;fieldset&lt;/strong&gt;, por defecto, agrupa visualmente todo lo que contiene, con un borde gris contínuo. Esto suele utilizarse con fines estéticos, lo que puede quitarse fácilmente con un &lt;strong&gt;border: none;&lt;/strong&gt; Otro detalle es que si no deseas que tu formulario tenga un título en &lt;strong&gt;legend&lt;/strong&gt;, basta con darle la propiedad &lt;strong&gt;display:none;&lt;/strong&gt; en tu hoja de estilos. Pero es importante tenerla siempre en tu &lt;strong&gt;HTML&lt;/strong&gt; con el texto correspondiente, sólo que no se desplegará.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Formulario Vertical:&lt;/strong&gt; es el clásico formulario encontrado en miles de millones de sitios. Nada de otro mundo, pero esta vez estará bien construído.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/form/formulariosemantico.html&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Ver ejemplo formulario vertical.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Formulario Horizontal:&lt;/strong&gt; este tipo de formulario no es muy común de verse, salvo en barras de logueo horizontales. El botón de &lt;em&gt;Enviar&lt;/em&gt; puede estar al lado de los elementos, o bajo ellos, según se prefiera (basta quitar el &lt;strong&gt;&lt;br /&gt;&lt;/strong&gt; que lo antecede). En este caso, el secreto está en flotar los labels a la izquierda, cosa que cada nuevo campo de texto se vaya poniendo al lado derecho del anterior. Véase el código fuente para hacerse la idea.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/form/formulariosemanticohoriz.html&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Ver ejemplo formulario horizontal.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dudas, consultas y sugerencias, ya saben. Comenten.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Vuelta a la vida</title>
      <link>https://csslab.cl/2006/10/12/vuelta-a-la-vida/</link>
      <pubDate>Thu, 12 Oct 2006 22:22:55 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/10/12/vuelta-a-la-vida/</guid>
      <description>Con nuevo y mejor server, CSSLab vuelve al combate. Aún ajustaré unos plugins y acomodaré unas tablas del DB, pero en general está todo bien, creo. Cualquier problema grave, háganmelo saber en este post.
Gracias!
pd. Los foros no pude volver a instalar Vanilla, pero phpBB está funcionando. lamentablemente se perdieron todo lo que había antes… registros, temas, preguntas y respuestas. Tendrán que volver a registrarse para darle un nuevo uso a los foros.</description>
      <content>&lt;p&gt;Con nuevo y mejor server, &lt;strong&gt;CSSLab&lt;/strong&gt; vuelve al combate. Aún ajustaré unos plugins y acomodaré unas tablas del DB, pero en general está todo bien, creo. Cualquier problema grave, háganmelo saber en este post.&lt;/p&gt;
&lt;p&gt;Gracias!&lt;/p&gt;
&lt;p&gt;pd. Los &lt;a href=&#34;https://csslab.cl/foros/&#34;&gt;foros&lt;/a&gt; no pude volver a instalar Vanilla, pero phpBB está funcionando. lamentablemente se perdieron todo lo que había antes… registros, temas, preguntas y respuestas. Tendrán que volver a &lt;a href=&#34;http://www.csslab.cl/foros/profile.php?mode=register&amp;amp;sid=cd64499bbe5303ce3b81133892d7b9cf&#34;&gt;registrarse&lt;/a&gt; para darle un nuevo uso a los &lt;a href=&#34;https://csslab.cl/foros/&#34;&gt;foros&lt;/a&gt;. Gracias por entender.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Layout fijo a elástico en sólo 4 caracteres</title>
      <link>https://csslab.cl/2006/10/05/layout-fijo-a-elastico-en-solo-4-caracteres/</link>
      <pubDate>Thu, 05 Oct 2006 16:18:07 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/10/05/layout-fijo-a-elastico-en-solo-4-caracteres/</guid>
      <description>&lt;p&gt;Un layout fijo puede ser más fácil de construir para algunos, ya que todos los elementos están ordenadamente dispuestos, cada uno con su ancho fijo. Reseteando el margin y padding al principio de todos los tags, torna más fácil lograr una hegemonía entre browsers:&lt;/p&gt;
&lt;pre class=&#34;codecss&#34;&gt;* {&lt;br /&gt;
     margin: 0;&lt;br /&gt;
     padding: 0; &lt;br /&gt;
}&lt;/pre&gt;
&lt;p&gt;Mostraré una técnica bastante simple de diagramar un sitio utilizando &lt;strong&gt;CSS&lt;/strong&gt;, de manera que hacerlo fijo o elástico (líquido le suelen llamar algunos) sea cosa de cambiar 4 caracteres en tu hoja de estilos. De un principio:&lt;/p&gt;</description>
      <content>&lt;p&gt;Un layout fijo puede ser más fácil de construir para algunos, ya que todos los elementos están ordenadamente dispuestos, cada uno con su ancho fijo. Reseteando el margin y padding al principio de todos los tags, torna más fácil lograr una hegemonía entre browsers:&lt;/p&gt;
&lt;pre class=&#34;codecss&#34;&gt;* {&lt;br /&gt;
     margin: 0;&lt;br /&gt;
     padding: 0; &lt;br /&gt;
}&lt;/pre&gt;
&lt;p&gt;Mostraré una técnica bastante simple de diagramar un sitio utilizando &lt;strong&gt;CSS&lt;/strong&gt;, de manera que hacerlo fijo o elástico (líquido le suelen llamar algunos) sea cosa de cambiar 4 caracteres en tu hoja de estilos. De un principio:&lt;/p&gt;
&lt;p&gt;Comenzaremos a diagramar un sitio de 3 columnas, 2 laterales (menú &lt;strong&gt;izquierdo&lt;/strong&gt; y publicidad &lt;strong&gt;derecha&lt;/strong&gt;) y al &lt;strong&gt;medio&lt;/strong&gt; el contenido; &lt;strong&gt;header&lt;/strong&gt; y &lt;strong&gt;footer&lt;/strong&gt; también van, claro. La manera de hacerlo es siempre comenzar de arriba hacia abajo (header, columnas, contenido, footer) y tener en el &lt;strong&gt;HTML&lt;/strong&gt; primero ambas columnas, antes que el contenido mismo. Así, ambas columnas tendrán un ancho fijo (no queremos que nuestro menú quede flotando si la resolución del computador es mayor, tampoco la publicidad que son usualmente imágenes de ancho fijo, o GoogleAds) y el contenido será el que crezca en el caso de una mayor o menor resolución, al igual que el header y el footer. Para esto hay que tener preparado una imagen de fondo que crezca si es necesario (&lt;strong&gt;background-repeat: repeat-x;&lt;/strong&gt; si este fuera el caso). Todo esto va enmarcado por un &lt;strong&gt;DIV&lt;/strong&gt; contenedor, el que tendrá un &lt;strong&gt;width&lt;/strong&gt; definido en pixeles para el layout fijo (y centrado con &lt;strong&gt;margin: 0 auto;&lt;/strong&gt;), y basta con eliminar este ancho para el sitio verse elástico, o líquido. Recuerda, sólo 4 caracteres para cambiar esta característica.&lt;/p&gt;
&lt;p&gt;Creo que quedó bien explicada la intención, aquí va el &lt;strong&gt;HTML&lt;/strong&gt; primero (resumido):&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;div id=&#34;contenedor&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;div id=&#34;header&#34;&gt;Titulo del Sitio&lt;/div&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;div id=&#34;menu&#34;&gt;Menu Izquierdo&lt;/div&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;div id=&#34;publicidad&#34;&gt;Publicidad&lt;/div&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;div id=&#34;contenido&#34;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque aliquet&amp;#8230;&amp;#8230;&amp;#8230;.&lt;/p&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;div id=&#34;footer&#34;&gt;Copyleft&lt;/div&gt;&lt;br /&gt; &lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;y el &lt;strong&gt;CSS&lt;/strong&gt; que lo mostrará de ancho fijo:&lt;/p&gt;
&lt;pre class=&#34;codecss&#34;&gt;div#contenedor {&lt;br /&gt;
     width: 750px;&lt;br /&gt;
     margin: 0 auto;&lt;br /&gt;
     border: 1px solid #333;&lt;br /&gt;
}&lt;br /&gt;
div#header, div#footer {&lt;br /&gt;
       height: 100px;&lt;br /&gt;
       clear: both;&lt;br /&gt;
       background-color: #333;&lt;br /&gt;
       color: #F90;&lt;br /&gt;
       font-size: 14px;&lt;br /&gt;
       font-weight: bolder;&lt;br /&gt;
}&lt;br /&gt;
div#footer {&lt;br /&gt;
       height: 30px;&lt;br /&gt;
  }&lt;br /&gt;
  div#menu, div#publicidad {&lt;br /&gt;
       width: 160px;&lt;br /&gt;
       border: 1px solid #F90;&lt;br /&gt;
}&lt;br /&gt;
div#menu {&lt;br /&gt;
      float: left;&lt;br /&gt;
}&lt;br /&gt;
div#publicidad {&lt;br /&gt;
       float: right;&lt;br /&gt;
}&lt;br /&gt;
div#contenido {&lt;br /&gt;
       margin: 0 170px;&lt;br /&gt;
}&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/layout/layoutfijo.html&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Ver ejemplo de Layout Fijo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ahora, la idea es no tocar el &lt;strong&gt;HTML&lt;/strong&gt;. Si el cliente se le ocurrió que el sitio debiera adaptarse a la resolución del monitor del usuario, no debieras tener tiempo siquiera para preocuparte. Basta con comentar el &lt;strong&gt;width: 750px;&lt;/strong&gt; y verás de inmediato la transformación:&lt;/p&gt;
&lt;pre class=&#34;codecss&#34;&gt;div#contenedor {&lt;br /&gt;
     &lt;span class=&#34;commentcss&#34;&gt;/* width: 750px; */ &lt;/span&gt;&lt;br /&gt;
     margin: 0 auto;&lt;br /&gt;
     border: 1px solid #333;&lt;br /&gt;
}&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/layout/layoutelastico.html&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Ver ejemplo de Layout Elástico&lt;/a&gt; (view source para ver el HTML y el CSS completo)&lt;/p&gt;
&lt;p&gt;El secreto está en saber cómo diagramar bien un sitio, cómo comenzar a ver la estructura del mismo para que posibles cambios posteriores sean lo menos doloroso, y que quiten el menos tiempo posible. Adelantarse a lo impredecible.&lt;/p&gt;
&lt;p&gt;Espero haya quedado claro.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Image Replacement o cómo reemplazar contenido por imagen</title>
      <link>https://csslab.cl/2006/09/25/image-replacement-o-como-reemplazar-contenido-por-imagen/</link>
      <pubDate>Mon, 25 Sep 2006 16:41:13 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/09/25/image-replacement-o-como-reemplazar-contenido-por-imagen/</guid>
      <description>&lt;p&gt;Con este artículo atacaremos directamente la semántica para mejorar la gráfica de nuestro sitio. O sea, no la atacaremos, trabajaremos en conjunto con ella. Si, así queda mejor. La idea de esto, es (en este caso) reemplazar el tag &lt;strong&gt;H1&lt;/strong&gt; (pueden ser otros, tienes hasta el &lt;strong&gt;H6&lt;/strong&gt;) que sería el título de nuestro sitio (eso es un &lt;strong&gt;H1&lt;/strong&gt;, el título más importante. Así lo entiende Google) por una imagen más atractiva, que destaque más nuestro sitio y que no pierda la importancia o significado del &lt;strong&gt;H1&lt;/strong&gt;. Además de eso, no dejaremos de lado el texto que sería la descripción del &lt;strong&gt;H1&lt;/strong&gt;, así los buscadores sabrán:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Es un titulo importante.&lt;br&gt;
&lt;strong&gt;2.&lt;/strong&gt; El nombre de este título es el que está escrito ahi.&lt;/p&gt;
&lt;p&gt;El punto es que el nombre del &lt;strong&gt;H1 estará escondido, y será reemplazado por la imagen&lt;/strong&gt; más bonita que cada uno diseñará para su sitio. Comencemos:&lt;/p&gt;</description>
      <content>&lt;p&gt;Con este artículo atacaremos directamente la semántica para mejorar la gráfica de nuestro sitio. O sea, no la atacaremos, trabajaremos en conjunto con ella. Si, así queda mejor. La idea de esto, es (en este caso) reemplazar el tag &lt;strong&gt;H1&lt;/strong&gt; (pueden ser otros, tienes hasta el &lt;strong&gt;H6&lt;/strong&gt;) que sería el título de nuestro sitio (eso es un &lt;strong&gt;H1&lt;/strong&gt;, el título más importante. Así lo entiende Google) por una imagen más atractiva, que destaque más nuestro sitio y que no pierda la importancia o significado del &lt;strong&gt;H1&lt;/strong&gt;. Además de eso, no dejaremos de lado el texto que sería la descripción del &lt;strong&gt;H1&lt;/strong&gt;, así los buscadores sabrán:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Es un titulo importante.&lt;br&gt;
&lt;strong&gt;2.&lt;/strong&gt; El nombre de este título es el que está escrito ahi.&lt;/p&gt;
&lt;p&gt;El punto es que el nombre del &lt;strong&gt;H1 estará escondido, y será reemplazado por la imagen&lt;/strong&gt; más bonita que cada uno diseñará para su sitio. Comencemos:&lt;/p&gt;
&lt;p&gt;El código HTML es muy simple y conocido por todos:&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;h1&gt;CSSLab &amp;#8211; otro laboratorio de ideas, pero en espa&amp;ntilde;ol.&lt;/h1&gt;
&lt;/p&gt;
&lt;p&gt;Y la imagen que utilizaremos para reemplazar ese texto es la siguiente:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/ejemplos/header/header_csslab_ch.gif&#34; width=&#34;400&#34; height=&#34;104&#34; /&gt; 
&lt;p&gt;Bien, lo que haremos serán principalmente 2 cosas: primero, le daremos ancho, alto y un &lt;strong&gt;background-image&lt;/strong&gt; (con por supuesto nuestra composición) linkeando adonde esté nuestra imagen. Luego, esconderemos el texto que contiene &lt;strong&gt;H1&lt;/strong&gt;, dándole &lt;strong&gt;text-indent&lt;/strong&gt; de -9999px (text-indent mueve nuestro texto, en este caso negativo llevándolo más allá de nuestros márgenes) y luego escondiéndolo con &lt;strong&gt;overflow: hidden;&lt;/strong&gt; (esto esconde cualquier elemento que no está suscrito dentro de nuestros márgenes, evitando un scrollbar horizontal gigante). Sigue el código CSS:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  h1 {&lt;br /&gt; background-image: url(header_csslab.gif);&lt;br /&gt; background-repeat: no-repeat;&lt;br /&gt; text-indent: -9999px;&lt;br /&gt; width: 500px;&lt;br /&gt; height: 130px;&lt;br /&gt; overflow: hidden;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/header/header.html&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Ver ejemplo final&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bastante simple, no? Embellecemos nuestro sitio y aún así lo hacemos relevante para los buscadores.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Algunas palabras sobre márgenes y demases</title>
      <link>https://csslab.cl/2006/09/14/algunas-palabras-sobre-margenes-y-demases/</link>
      <pubDate>Thu, 14 Sep 2006 15:34:56 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/09/14/algunas-palabras-sobre-margenes-y-demases/</guid>
      <description>Border, margin y padding tienen ciertas mañas dignas de ser conocidas. Cuando uno llega a manejarlas, el código queda más limpio y es bastante más rápido escribirlo y modificarlo. En este post, que será corto, haré ver 3 detalles importantes:
1. Tienen un orden específico: sentido horario, comenzando de arriba, derecha, abajo e izquierda.
margin: 0 10px 5px 2px; 2. Se pueden resumir de dos maneras:
padding: 4px 4px 4px 4px; es igual a padding: 4px; padding: 6px 2px 6px 2px; es igual a padding: 6px 2px; (se agrupan arriba-abajo con derecha-izquierda, si &amp;eacute;stos son iguales).</description>
      <content>&lt;p&gt;&lt;strong&gt;Border&lt;/strong&gt;, &lt;strong&gt;margin&lt;/strong&gt; y &lt;strong&gt;padding&lt;/strong&gt; tienen ciertas mañas dignas de ser conocidas. Cuando uno llega a manejarlas, el código queda más limpio y es bastante más rápido escribirlo y modificarlo. En este post, que será corto, haré ver 3 detalles importantes:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt;. Tienen un orden específico: sentido horario, comenzando de arriba, derecha, abajo e izquierda.&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  margin: 0 10px 5px 2px;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2&lt;/strong&gt;. Se pueden resumir de dos maneras:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  padding: 4px 4px 4px 4px; es igual a padding: 4px;
&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  padding: 6px 2px 6px 2px; es igual a padding: 6px 2px; (se agrupan arriba-abajo con derecha-izquierda, si &amp;eacute;stos son iguales).
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3&lt;/strong&gt;. Se deben especificar sus unidades siempre, menos si éste es 0. 0 es 0, en cualquier unidad, punto.&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  border-width: 2px 0 7em 6px;
&lt;/p&gt;
&lt;p&gt;Listo. Prometí que sería corto. 😀&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Diseño a lo «2.0»</title>
      <link>https://csslab.cl/2006/09/11/diseno-a-lo-20/</link>
      <pubDate>Mon, 11 Sep 2006 17:46:50 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/09/11/diseno-a-lo-20/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/ejemplos/grad/apple-aqua.gif&#34; alt=&#34;Logo Apple a lo Aqua&#34; width=&#34;100&#34; height=&#34;100&#34; align=&#34;right&#34; /&gt;Creo que este es mi primer artículo sobre diseño en sí. ya era hora de entrar de lleno en mi área. Puedes haber notado que han proliferado 2 características principales en cuanto a diseño en los últimos 5 – 6 años. El primero vino con el gran estilo &lt;a href=&#34;http://www.apple.com/macosx/overview/aquauserinterface.html&#34; target=&#34;_blank&#34; title=&#34;Aqua User interface - link externo&#34;&gt;Aqua&lt;/a&gt; creado por &lt;strong&gt;Apple&lt;/strong&gt; para su línea gráfica desde la llegada del sistema operativo Mac OSX (tanto en su sistema operativo, como en sus manuales y su sitio web). El otro son las gradientes de fondo que se han utilizado bastante también en todos lados, inclusive en este mismo sitio. Bueno, no es difícil hacerlas, pero sí necesitan de cierto control para que no lleguen a ser esos &lt;a href=&#34;https://csslab.cl/ejemplos/grad/gradientehorrible.jpg&#34; rel=&#34;lightbox&#34; title=&#34;Gradientes horrible, por favor evitar!&#34;&gt;horribles gradientes&lt;/a&gt; que proliferaban en gráficas hechas por defecto a mediados de los ’90.&lt;/p&gt;
&lt;p&gt;Bueno, en este momento trataré cómo llegar a tener sutiles gradientes, con las que podrán potenciar considerablemente la visual de sus sitios. Con esto ganaremos profundidad, y lograremos destacar ciertas partes de nuestro contenido que estimemos necesario hacerlo.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/ejemplos/grad/imagen1_ch.gif&#34; alt=&#34;Imagen 1: CSSLab&#34; width=&#34;250&#34; height=&#34;221&#34; align=&#34;left&#34; /&gt; Para esto utilizaremos &lt;strong&gt;Adobe Photoshop&lt;/strong&gt;. &lt;a href=&#34;http://www.gimp.org/&#34; target=&#34;_blank&#34;&gt;GIMP&lt;/a&gt; puede actuar de la misma manera. Otros, no lo sé. Primeros crearemos un encabezado para &lt;strong&gt;CSSLab&lt;/strong&gt;, con otra tipografía de la utilizada normalmente aquí (&lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen1.gif&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 1: CSSLab con bold condensado&#34;&gt;ver imagen 1&lt;/a&gt;). Bien, en un nuevo archivo de 300x200px a 72 DPI, escribo el título de nuestro sitio (en un nuevo layer de texto) en una tipografía en bold, y condensada a -50 (&lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen2.gif&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 2: configuraciones de texto&#34;&gt;ver imagen 2 &lt;/a&gt;). Ahora, comenzaremos con darle estilo a la tipografía. Abrimos &lt;strong&gt;Layer Style&lt;/strong&gt; (para el layer de nuestro texto) y primero, le agregamos algo de color (&lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen3.jpg&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 3: Layer Style - Gradient Overlay&#34;&gt;ver imagen 3&lt;/a&gt;). Utilizaremos una degradación de rojos, y he aquí la clave. Se trata de escoger un color y variaciones suaves del mismo (en hexacromía un tono hacia arriba o hacia abajo). En este caso será el rojo &lt;a href=&#34;http://es.wikipedia.org/wiki/Colores_HTML&#34; target=&#34;_blank&#34; title=&#34;Colores HTML - link externo&#34;&gt;WebSafe&lt;/a&gt; #FF0000, y para el otro color, el mismo rojo pero levemente más oscuro, el #CC0000 (&lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen4.jpg&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 4: configuracion de gradientes&#34;&gt;ver imagen 4&lt;/a&gt;). Importante en este caso es tener nuestra gradiente en 90º, así corre desde arriba hacia abajo de nuestra tipografía (&lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen5.jpg&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 5: gradiente a 90 grados&#34;&gt;ver imagen 5&lt;/a&gt;).&lt;/p&gt;</description>
      <content>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/ejemplos/grad/apple-aqua.gif&#34; alt=&#34;Logo Apple a lo Aqua&#34; width=&#34;100&#34; height=&#34;100&#34; align=&#34;right&#34; /&gt;Creo que este es mi primer artículo sobre diseño en sí. ya era hora de entrar de lleno en mi área. Puedes haber notado que han proliferado 2 características principales en cuanto a diseño en los últimos 5 – 6 años. El primero vino con el gran estilo &lt;a href=&#34;http://www.apple.com/macosx/overview/aquauserinterface.html&#34; target=&#34;_blank&#34; title=&#34;Aqua User interface - link externo&#34;&gt;Aqua&lt;/a&gt; creado por &lt;strong&gt;Apple&lt;/strong&gt; para su línea gráfica desde la llegada del sistema operativo Mac OSX (tanto en su sistema operativo, como en sus manuales y su sitio web). El otro son las gradientes de fondo que se han utilizado bastante también en todos lados, inclusive en este mismo sitio. Bueno, no es difícil hacerlas, pero sí necesitan de cierto control para que no lleguen a ser esos &lt;a href=&#34;https://csslab.cl/ejemplos/grad/gradientehorrible.jpg&#34; rel=&#34;lightbox&#34; title=&#34;Gradientes horrible, por favor evitar!&#34;&gt;horribles gradientes&lt;/a&gt; que proliferaban en gráficas hechas por defecto a mediados de los ’90.&lt;/p&gt;
&lt;p&gt;Bueno, en este momento trataré cómo llegar a tener sutiles gradientes, con las que podrán potenciar considerablemente la visual de sus sitios. Con esto ganaremos profundidad, y lograremos destacar ciertas partes de nuestro contenido que estimemos necesario hacerlo.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/ejemplos/grad/imagen1_ch.gif&#34; alt=&#34;Imagen 1: CSSLab&#34; width=&#34;250&#34; height=&#34;221&#34; align=&#34;left&#34; /&gt; Para esto utilizaremos &lt;strong&gt;Adobe Photoshop&lt;/strong&gt;. &lt;a href=&#34;http://www.gimp.org/&#34; target=&#34;_blank&#34;&gt;GIMP&lt;/a&gt; puede actuar de la misma manera. Otros, no lo sé. Primeros crearemos un encabezado para &lt;strong&gt;CSSLab&lt;/strong&gt;, con otra tipografía de la utilizada normalmente aquí (&lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen1.gif&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 1: CSSLab con bold condensado&#34;&gt;ver imagen 1&lt;/a&gt;). Bien, en un nuevo archivo de 300x200px a 72 DPI, escribo el título de nuestro sitio (en un nuevo layer de texto) en una tipografía en bold, y condensada a -50 (&lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen2.gif&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 2: configuraciones de texto&#34;&gt;ver imagen 2 &lt;/a&gt;). Ahora, comenzaremos con darle estilo a la tipografía. Abrimos &lt;strong&gt;Layer Style&lt;/strong&gt; (para el layer de nuestro texto) y primero, le agregamos algo de color (&lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen3.jpg&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 3: Layer Style - Gradient Overlay&#34;&gt;ver imagen 3&lt;/a&gt;). Utilizaremos una degradación de rojos, y he aquí la clave. Se trata de escoger un color y variaciones suaves del mismo (en hexacromía un tono hacia arriba o hacia abajo). En este caso será el rojo &lt;a href=&#34;http://es.wikipedia.org/wiki/Colores_HTML&#34; target=&#34;_blank&#34; title=&#34;Colores HTML - link externo&#34;&gt;WebSafe&lt;/a&gt; #FF0000, y para el otro color, el mismo rojo pero levemente más oscuro, el #CC0000 (&lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen4.jpg&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 4: configuracion de gradientes&#34;&gt;ver imagen 4&lt;/a&gt;). Importante en este caso es tener nuestra gradiente en 90º, así corre desde arriba hacia abajo de nuestra tipografía (&lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen5.jpg&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 5: gradiente a 90 grados&#34;&gt;ver imagen 5&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Bien, ya vimos cuál es el detalle que hace ver estas degradaciones tan ampliamente aceptadas. Se trata de encontrar la combinación de tonos, dentro del mismo color, pero levemente superior o inferior. O sea, si utilizo un gris #66666 para la parte de arriba (recuerda que nuestra gradiente estará en 90º), la de abajo sería #333333 o #999999 (&lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen6.gif&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 6: diferencias de degradaciones&#34;&gt;ver imagen 6&lt;/a&gt;). Otro detalle importante que suele utilizarse para despegar el texto y separarlo del fondo que lo soporta, es un &lt;strong&gt;Drop Shadow&lt;/strong&gt; pero también muy sutil. El que siempre utilizo es el con las configuraciones que muestro en la &lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen7.gif&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 7: configuracion de Drop Shadow&#34;&gt;imagen 7&lt;/a&gt;, color negro, con 5px de radio, 0 de distancia (o sea, la sombra se reflejará a todos lados de la tipografía) y 30% a 40% de transparencia (nuevamente, muy suave como se ve en la &lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen8.gif&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 8: resultado con Drop Shadow&#34;&gt;imagen 8&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Bien hemos avanzado bastante. Ahora, el fondo. Utilizaremos otro gradiente, pero de negro a gris, o gris a negro, de gris a gris; esto queda a criterio del diseñador que existe escondido en todos nosotros. Hay que hacer las propuestas y probar. Me quedo con la que muestro en la &lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen9.gif&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 9: fondo degradado blanco a gris&#34;&gt;imagen 9&lt;/a&gt; (de blanco #FFFFFF a gris #CCCCCC). Pero esperen, aún falta un pequeño trazo blanco alrededor del texto, para que separe el rojo del gris (ya que tienen a vibrar, y para destacar más nuestro logotipo. &lt;a href=&#34;https://csslab.cl/ejemplos/grad/imagen10.gif&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 10: resultado parcial&#34;&gt;Ver el resultado hasta aquí&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Por último, podemos agregar un &lt;strong&gt;Pattern&lt;/strong&gt; al fondo, y fusionarlo con nuestra gradiente. Patterns hay muchas, las más utilizadas son las denominadas &lt;strong&gt;Scanlines&lt;/strong&gt;, o las que son representadas mediante líneas horizontales, verticales, oblícuas o puntos de 1px o más.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/grad/resultadofinal.gif&#34; rel=&#34;lightbox&#34; title=&#34;Imagen 1: resultado final&#34;&gt;Ver resultado final.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.soslogodesign.com/CriteriosParaUnLogo.html&#34; target=&#34;_blank&#34; title=&#34;link externo&#34;&gt;Criterios para un buen diseño de logos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://logopond.com/&#34; target=&#34;_blank&#34; title=&#34;link externo&#34;&gt;LogoPond – identity inspiration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://es.wikipedia.org/wiki/Teor&amp;iacute;a_del_color&#34; target=&#34;_blank&#34; title=&#34;link externo&#34;&gt;Teoría del Color – Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.deviantart.com/deviation/21963688/&#34; target=&#34;_blank&#34;&gt;Scanlines – Photoshop Pattern&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Cargando imágenes con CSS</title>
      <link>https://csslab.cl/2006/09/07/cargando-imagenes-con-css/</link>
      <pubDate>Thu, 07 Sep 2006 19:23:13 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/09/07/cargando-imagenes-con-css/</guid>
      <description>&lt;p&gt;Actualmente ha proliferado el uso de &lt;strong&gt;AJAX&lt;/strong&gt; para cargar contenido sin necesidad de refrescar el browser. Se ha hecho mas fácil con el amplio abanico de &lt;a href=&#34;http://www.csslab.cl/?p=57&#34; title=&#34;Lista de Toolkits en JavaScript en CSSLab&#34;&gt;toolkits&lt;/a&gt; existentes, fáciles de usar e integrar, y gratis. En este momento mostraré un truco para mostrar la carga de una imagen a través de un simple &lt;strong&gt;GIF animado&lt;/strong&gt;; en realidad puede ser cualquier mensaje que estimes conveniente, siempre que sea una imagen liviana (no más de 2KB).&lt;/p&gt;</description>
      <content>&lt;p&gt;Actualmente ha proliferado el uso de &lt;strong&gt;AJAX&lt;/strong&gt; para cargar contenido sin necesidad de refrescar el browser. Se ha hecho mas fácil con el amplio abanico de &lt;a href=&#34;http://www.csslab.cl/?p=57&#34; title=&#34;Lista de Toolkits en JavaScript en CSSLab&#34;&gt;toolkits&lt;/a&gt; existentes, fáciles de usar e integrar, y gratis. En este momento mostraré un truco para mostrar la carga de una imagen a través de un simple &lt;strong&gt;GIF animado&lt;/strong&gt;; en realidad puede ser cualquier mensaje que estimes conveniente, siempre que sea una imagen liviana (no más de 2KB).&lt;/p&gt;
&lt;p&gt;Lo que se hará es crear un estilo para el tag &lt;strong&gt;IMG&lt;/strong&gt;, y dentro de este estilo poner de fondo el &lt;strong&gt;GIF&lt;/strong&gt; que tendrá un cargando. Es importante que todas las imágenes que se carguen sean mayores que el mismo &lt;strong&gt;GIF&lt;/strong&gt;; si no estás seguro de esto, mejor crea una clase para el &lt;strong&gt;IMG&lt;/strong&gt; y utilízado en todas las fotos, por ejemplo (diferenciando fotos de imágenes…. fotos digo a por ejemplo, una galería de fotos). A continuación, el código de lo más simple:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;img.foto {
   border: 1px solid #000;
   background: url(&#34;cargando.gif&#34;) no-repeat center center;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El borde es opcional, se lo puse solamente para delimitar la foto. En el tag &lt;strong&gt;IMG&lt;/strong&gt;, utilicé una class=&amp;ldquo;foto&amp;rdquo; para que el background de la misma sea un GIF animado que emula la progresión de una carga. Esto es útil para fotos pesadas, galerías por ejemplo. Para que este &lt;strong&gt;GIF&lt;/strong&gt; esté centrado, nada más obvio que &lt;strong&gt;center center&lt;/strong&gt; (centrado horizontal y vertical).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/cargando/cargando.html&#34; title=&#34;Abrir en misma ventana&#34;&gt;Ver resultado final.&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;Un interesante link, una página donde &lt;a href=&#34;http://ajaxload.info/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Ajax GIF indicador&amp;quot;&#34;&gt;puedes crear tus propios indicadores en GIF animado&lt;/a&gt;.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 15</title>
      <link>https://csslab.cl/2006/09/05/lo-vi-y-me-gusto-15/</link>
      <pubDate>Tue, 05 Sep 2006 16:19:55 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/09/05/lo-vi-y-me-gusto-15/</guid>
      <description>#15 – 5 Septiembre 2006</description>
      <content>&lt;p&gt;#15 – 5 Septiembre 2006&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://firmatorium.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/firmatorium.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://tz.i2com.de/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/zimmermann.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.maganhoto.arq.br/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/luiz.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Lightbox &#43; SWF</title>
      <link>https://csslab.cl/2006/09/01/lightbox-swf/</link>
      <pubDate>Fri, 01 Sep 2006 22:04:16 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/09/01/lightbox-swf/</guid>
      <description>&lt;p&gt;Nadie niega el boom que ha tenido &lt;em&gt;&lt;a href=&#34;http://www.huddletogether.com/projects/lightbox2/&#34; target=&#34;_blank&#34;&gt;Lightbox&lt;/a&gt;&lt;/em&gt; y todos sus sucedáneos en la manera de desplegar imágenes &lt;em&gt;inline&lt;/em&gt;, sin tener que utilizar popup. Ciertamente una de las mejores aplicaciones &lt;strong&gt;AJAX&lt;/strong&gt; existentes. El problema que surge, es cuando lo utilizamos en conjunto con un &lt;strong&gt;SWF&lt;/strong&gt;: esta película suele ponerse adelante del &lt;em&gt;Lightbox&lt;/em&gt;, y no deja visualizar bien la imagen o el contenido que estamos desplegando (en el caso del &lt;em&gt;&lt;a href=&#34;http://jquery.com/demo/thickbox/&#34; target=&#34;_blank&#34;&gt;Thickbox&lt;/a&gt;&lt;/em&gt;). Bueno, para solucionar esto, se deben hacer 2 cambios fundamentales: uno en el &lt;strong&gt;OBJECT&lt;/strong&gt; que llama el &lt;strong&gt;SWF&lt;/strong&gt; y uno en el &lt;strong&gt;CSS&lt;/strong&gt; del contenedor de este &lt;strong&gt;SWF&lt;/strong&gt;; en el caso de no tenerlo, es preferible crear un &lt;strong&gt;DIV&lt;/strong&gt; que sólo contenga nuestra querida película Flash. Vamos por partes:&lt;/p&gt;
&lt;p&gt;En el &lt;strong&gt;OBJECT&lt;/strong&gt; debemos aplicar un parámetro y un valor para la película Flash: &lt;strong&gt;wmode=&amp;ldquo;opaque&amp;rdquo;&lt;/strong&gt;. Es conocida por muchos el parámetro &lt;strong&gt;wmode=&amp;ldquo;transparent&amp;rdquo;&lt;/strong&gt;, pues ésta nos permite que las zonas que no tienen fondo en la película Flash se transparente, dejando ver el fondo del &lt;strong&gt;HTML&lt;/strong&gt; que lo contiene (sea éste color plano, o una gradiente, o una foto, etc), similar a una película &lt;strong&gt;PNG Transparente&lt;/strong&gt; (precisamente trabajando con el canal de transparencia, el canal alpha). Con opaque, la película Flash se esconderá detrás de cualquier elemento, sea éste &lt;strong&gt;HTML&lt;/strong&gt; o controlado por &lt;em&gt;Javascript&lt;/em&gt;. Por lo tanto, el &lt;strong&gt;HTML&lt;/strong&gt; que llama el &lt;strong&gt;SWF&lt;/strong&gt; sería:&lt;/p&gt;</description>
      <content>&lt;p&gt;Nadie niega el boom que ha tenido &lt;em&gt;&lt;a href=&#34;http://www.huddletogether.com/projects/lightbox2/&#34; target=&#34;_blank&#34;&gt;Lightbox&lt;/a&gt;&lt;/em&gt; y todos sus sucedáneos en la manera de desplegar imágenes &lt;em&gt;inline&lt;/em&gt;, sin tener que utilizar popup. Ciertamente una de las mejores aplicaciones &lt;strong&gt;AJAX&lt;/strong&gt; existentes. El problema que surge, es cuando lo utilizamos en conjunto con un &lt;strong&gt;SWF&lt;/strong&gt;: esta película suele ponerse adelante del &lt;em&gt;Lightbox&lt;/em&gt;, y no deja visualizar bien la imagen o el contenido que estamos desplegando (en el caso del &lt;em&gt;&lt;a href=&#34;http://jquery.com/demo/thickbox/&#34; target=&#34;_blank&#34;&gt;Thickbox&lt;/a&gt;&lt;/em&gt;). Bueno, para solucionar esto, se deben hacer 2 cambios fundamentales: uno en el &lt;strong&gt;OBJECT&lt;/strong&gt; que llama el &lt;strong&gt;SWF&lt;/strong&gt; y uno en el &lt;strong&gt;CSS&lt;/strong&gt; del contenedor de este &lt;strong&gt;SWF&lt;/strong&gt;; en el caso de no tenerlo, es preferible crear un &lt;strong&gt;DIV&lt;/strong&gt; que sólo contenga nuestra querida película Flash. Vamos por partes:&lt;/p&gt;
&lt;p&gt;En el &lt;strong&gt;OBJECT&lt;/strong&gt; debemos aplicar un parámetro y un valor para la película Flash: &lt;strong&gt;wmode=&amp;ldquo;opaque&amp;rdquo;&lt;/strong&gt;. Es conocida por muchos el parámetro &lt;strong&gt;wmode=&amp;ldquo;transparent&amp;rdquo;&lt;/strong&gt;, pues ésta nos permite que las zonas que no tienen fondo en la película Flash se transparente, dejando ver el fondo del &lt;strong&gt;HTML&lt;/strong&gt; que lo contiene (sea éste color plano, o una gradiente, o una foto, etc), similar a una película &lt;strong&gt;PNG Transparente&lt;/strong&gt; (precisamente trabajando con el canal de transparencia, el canal alpha). Con opaque, la película Flash se esconderá detrás de cualquier elemento, sea éste &lt;strong&gt;HTML&lt;/strong&gt; o controlado por &lt;em&gt;Javascript&lt;/em&gt;. Por lo tanto, el &lt;strong&gt;HTML&lt;/strong&gt; que llama el &lt;strong&gt;SWF&lt;/strong&gt; sería:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;object classid=&#34;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&#34; codebase=&#34;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0&#34; width=&#34;300&#34; height=&#34;200&#34;&amp;gt;
&amp;lt;param name=&#34;movie&#34; value=&#34;csslab.swf&#34; /&amp;gt;
&amp;lt;param name=&#34;quality&#34; value=&#34;high&#34; /&amp;gt;
&amp;lt;strong&gt;&amp;lt;param name=&#34;wmode&#34; value=&#34;opaque&#34; /&amp;gt;&amp;lt;/strong&gt;
&amp;lt;embed src=&#34;csslab.swf&#34; width=&#34;300&#34; height=&#34;200&#34; quality=&#34;high&#34; pluginspage=&#34;http://www.macromedia.com/go/getflashplayer&#34; type=&#34;application/x-shockwave-flash&#34; wmode=&#34;opaque&#34;&amp;gt;&amp;lt;/embed&amp;gt;
&amp;lt;/object&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Como mencioné, se creará un &lt;strong&gt;DIV&lt;/strong&gt; que contiene nuestra película Flash. Este &lt;strong&gt;DIV&lt;/strong&gt; contendrá, en este caso, un &lt;strong&gt;z-index=-999;&lt;/strong&gt; Para quienes no conocen, la propiedad &lt;strong&gt;z-index&lt;/strong&gt; determina el orden, o relevancia en que un elemento designado tendrá sobre otro, por ejemplo, cuando una imagen pasa por debajo de un texto (el &lt;strong&gt;&lt;img&gt;&lt;/strong&gt; tiene un z-index inferior al &lt;strong&gt;&lt;p&gt;&lt;/strong&gt; del texto), o si queremos que la imagen pase por encima del texto (el z-index del &lt;strong&gt;&lt;img&gt;&lt;/strong&gt; será superior al z-index del &lt;strong&gt;&lt;p&gt;&lt;/strong&gt; del texto). ¿Se entiende? Ojalá que sí, aquí pueden &lt;a href=&#34;http://www.sidar.org/recur/desdi/mcss/manual/ejemplos/zindex.html&#34; target=&#34;_blank&#34;&gt;ver un ejemplo gráfico&lt;/a&gt; de ello. bueno, lo que haremos entonces es reforzar el wmode=&amp;ldquo;opaque&amp;rdquo; que debería pasar ya detrás del &lt;em&gt;Lightbox&lt;/em&gt;, con el z-index (exagerado) de -999, y el &lt;strong&gt;CSS&lt;/strong&gt; del &lt;em&gt;Lightbox&lt;/em&gt; ya viene con un z-index de 100; El &lt;strong&gt;CSS&lt;/strong&gt; del &lt;strong&gt;DIV&lt;/strong&gt; contenedor del &lt;strong&gt;SWF&lt;/strong&gt; sería:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#flash {
   z-index: -999;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/lightbox/flash.html&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver ejemplo con Lightbox &lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Rediseño</title>
      <link>https://csslab.cl/2006/09/01/rediseno/</link>
      <pubDate>Fri, 01 Sep 2006 16:39:49 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/09/01/rediseno/</guid>
      <description>Espero les guste este nuevo estilo gráfico que intenté darle a CSSLab. A mi gusto, 100% mejor. Estaba cansado ya de esas 2 columnas todo el rato. Además le saque el montón de herramientas que tenía ese sidebar, dejé sólo los necesarios. Errores, sugerencias, hacks, cambios… háganmelo llegar con confianza.
PD. no sé si deba poner el Adsense… creo q ensucia mucho el sitio…. q opinan? Necesito para el server de alguna manera….</description>
      <content>&lt;p&gt;Espero les guste este nuevo estilo gráfico que intenté darle a CSSLab. A mi gusto, 100% mejor. Estaba cansado ya de esas 2 columnas todo el rato. Además le saque el montón de herramientas que tenía ese sidebar, dejé sólo los necesarios. Errores, sugerencias, hacks, cambios… háganmelo llegar con confianza.&lt;/p&gt;
&lt;p&gt;PD. no sé si deba poner el Adsense… creo q ensucia mucho el sitio…. q opinan? Necesito para el server de alguna manera….&lt;/p&gt;
&lt;p&gt;PD2. quienes usen &lt;a href=&#34;http://www.apple.com/macosx/features/safari/&#34;&gt;Safari&lt;/a&gt;, podrán disfrutar de la propiedad &lt;a href=&#34;http://www.css3.info/preview/text-shadow.html&#34;&gt;text-shadow&lt;/a&gt; q usé en varios de los títulos del sitio.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Layout Fijo: resucitando los frames</title>
      <link>https://csslab.cl/2006/08/29/layout-fijo-resucitando-los-frames/</link>
      <pubDate>Tue, 29 Aug 2006 17:24:33 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/08/29/layout-fijo-resucitando-los-frames/</guid>
      <description>&lt;p&gt;Buenos tiempos eran esos donde reinaban los &lt;strong&gt;frames&lt;/strong&gt;… no había que pensar en semántica, preocuparse por compatibilidad… todo se veía en Netscape y Explorer. Eran, como quien dice, browsers &lt;em&gt;carne de perro&lt;/em&gt;. Pero ahora son otros tiempos, hay más conciencia de respetar las reglas para una mejor compatibilidad entre navegadores y plataformas, como se dice: &lt;strong&gt;mayor accesibilidad&lt;/strong&gt;. Bueno, a lo que voy con todo este &lt;em&gt;blablabla&lt;/em&gt; es que mostraré ahora una manera de construir un layout similar a los viejos &lt;strong&gt;frames&lt;/strong&gt;, tan mal mirados actualmente. Puede ser verdaderamente útil, dependiendo del uso que el diseñador / desarrollador estime darle. La clave: &lt;strong&gt;position&lt;/strong&gt; y &lt;strong&gt;overflow&lt;/strong&gt; .&lt;/p&gt;
&lt;p&gt;Comenzaremos por diagramar básicamente el sitio, con un &lt;strong&gt;encabezado&lt;/strong&gt; (header), &lt;strong&gt;cuerpo del contenido&lt;/strong&gt; (container) y un &lt;strong&gt;pie de página&lt;/strong&gt; (footer).&lt;/p&gt;</description>
      <content>&lt;p&gt;Buenos tiempos eran esos donde reinaban los &lt;strong&gt;frames&lt;/strong&gt;… no había que pensar en semántica, preocuparse por compatibilidad… todo se veía en Netscape y Explorer. Eran, como quien dice, browsers &lt;em&gt;carne de perro&lt;/em&gt;. Pero ahora son otros tiempos, hay más conciencia de respetar las reglas para una mejor compatibilidad entre navegadores y plataformas, como se dice: &lt;strong&gt;mayor accesibilidad&lt;/strong&gt;. Bueno, a lo que voy con todo este &lt;em&gt;blablabla&lt;/em&gt; es que mostraré ahora una manera de construir un layout similar a los viejos &lt;strong&gt;frames&lt;/strong&gt;, tan mal mirados actualmente. Puede ser verdaderamente útil, dependiendo del uso que el diseñador / desarrollador estime darle. La clave: &lt;strong&gt;position&lt;/strong&gt; y &lt;strong&gt;overflow&lt;/strong&gt; .&lt;/p&gt;
&lt;p&gt;Comenzaremos por diagramar básicamente el sitio, con un &lt;strong&gt;encabezado&lt;/strong&gt; (header), &lt;strong&gt;cuerpo del contenido&lt;/strong&gt; (container) y un &lt;strong&gt;pie de página&lt;/strong&gt; (footer).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/fixed1.html&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Ver Layout Básico 1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/layout1.css&#34; target=&#34;_blank&#34;&gt;Aquí está la hoja de estilos, nada fuera de lo normal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bien, la clave ahora está en reordenar nuestro layout y aplicar los &lt;strong&gt;position&lt;/strong&gt; de acuerdo a cada parte de nuestro sitio. La lógica es la siguiente: primero en nuestro HTML estará el &lt;strong&gt;#container&lt;/strong&gt;, el &lt;strong&gt;DIV&lt;/strong&gt; que soporta nuestro contenido. Luego, estarán los dos siguientes &lt;strong&gt;DIV’s&lt;/strong&gt;: &lt;strong&gt;#header&lt;/strong&gt; y &lt;strong&gt;#footer&lt;/strong&gt;. Estos dos tienen &lt;strong&gt;position: absolute&lt;/strong&gt;, donde se marcarán sus posiciones a través de top y bottom y no se moverán de ahí. El contenido pasará por detrás de estos dos &lt;strong&gt;DIV’s&lt;/strong&gt; absolutos, y el &lt;strong&gt;#container&lt;/strong&gt; tiene un &lt;strong&gt;position: fixed&lt;/strong&gt;, además de &lt;strong&gt;overflow: auto&lt;/strong&gt; para que su contenido pueda fluir, comportándose como un FRAMESET (incluso con barra de scroll).&lt;/p&gt;
&lt;p&gt;Entonces, los cambios principales en la hoja de estilos fueron:&lt;/p&gt;
&lt;pre class=&#34;codecss&#34;&gt;#header {
   top: 0;&gt;
   left: 0;
   width: 100%;
   height: 100px;
   position: absolute;
   overflow: auto;
   background-color: #C00;
   border-bottom: 5px solid #900;
}&lt;br /&gt;
#container {
   top: 105px;
   left: 0;
   bottom: 50px;
   right: 0;
   position: fixed;
   overflow: auto;
   background-color: #FFF;
   padding: 20px;
}&lt;br /&gt;
#footer {
   bottom: 0; 
   left: 0;
   width: 100%; 
   height: 45px; 
   overflow: auto;
   position: absolute;
   background-color: #C00;
   border-top: 5px solid #900;
}&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/fixed2.html&#34; class=&#34;verejemplo&#34; target=&#34;_blank&#34;&gt;Ver Resultado Final&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/layout2.css&#34; target=&#34;_blank&#34;&gt;Ver Hojas de Estilos&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>El porqué de no utilizar tablas</title>
      <link>https://csslab.cl/2006/08/25/el-porque-de-no-utilizar-tablas/</link>
      <pubDate>Fri, 25 Aug 2006 19:05:51 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/08/25/el-porque-de-no-utilizar-tablas/</guid>
      <description>&lt;p&gt;Este debería de haber sido el primer post de &lt;strong&gt;CSSLab&lt;/strong&gt;, como antes tarde que nunca, traduzco y transcribo 11 misivas que explican porqué no deberías de utilizar tablas para diagramar un sitio. Comencemos:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Porque utilizar tablas es una estupidez:&lt;/strong&gt; Las tablas existen en HTML por un motivo: mostrar datos tabulados. Pero con la disponibilidad del border=&amp;ldquo;0&amp;rdquo;, se hizo posible para los diseñadores tener &lt;em&gt;grillas&lt;/em&gt; para contener su diseño. Aún hoy es la forma más común de diagramar y armar sitios.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Convenciendo al jefe / cliente:&lt;/strong&gt; Algunos buenos motivos para trabajar con web standards:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sus sitios se cargarán más rápido&lt;/li&gt;
&lt;li&gt;los costos de &lt;em&gt;hosting&lt;/em&gt; se reducirán con sitios más livianos&lt;/li&gt;
&lt;li&gt;los rediseños de sitios serán más eficientes y baratos&lt;/li&gt;
&lt;li&gt;será más fácil mantener una consistencia visual entre todas las páginas del sitio&lt;/li&gt;
&lt;li&gt;mejores resultados en buscadores&lt;/li&gt;
&lt;li&gt;su sitio será más accesible para todos los browsers&lt;/li&gt;
&lt;/ul&gt;</description>
      <content>&lt;p&gt;Este debería de haber sido el primer post de &lt;strong&gt;CSSLab&lt;/strong&gt;, como antes tarde que nunca, traduzco y transcribo 11 misivas que explican porqué no deberías de utilizar tablas para diagramar un sitio. Comencemos:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Porque utilizar tablas es una estupidez:&lt;/strong&gt; Las tablas existen en HTML por un motivo: mostrar datos tabulados. Pero con la disponibilidad del border=&amp;ldquo;0&amp;rdquo;, se hizo posible para los diseñadores tener &lt;em&gt;grillas&lt;/em&gt; para contener su diseño. Aún hoy es la forma más común de diagramar y armar sitios.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Convenciendo al jefe / cliente:&lt;/strong&gt; Algunos buenos motivos para trabajar con web standards:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sus sitios se cargarán más rápido&lt;/li&gt;
&lt;li&gt;los costos de &lt;em&gt;hosting&lt;/em&gt; se reducirán con sitios más livianos&lt;/li&gt;
&lt;li&gt;los rediseños de sitios serán más eficientes y baratos&lt;/li&gt;
&lt;li&gt;será más fácil mantener una consistencia visual entre todas las páginas del sitio&lt;/li&gt;
&lt;li&gt;mejores resultados en buscadores&lt;/li&gt;
&lt;li&gt;su sitio será más accesible para todos los browsers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. Asesinos: nested tables y spacers:&lt;/strong&gt; Al principio fueron meras recomendaciones para trabajar ciertas limitaciones de los browsers existentes, y como trabajaban con las especificaciones de la W3C de la época (1995-1997…. Netxcape 2, 3). El problema es que estas recomendaciones aún persisten, cuando los standards han evolucionado bastante. Muchos diseñadores van por el camino facilista de armar sitios web. El problema del uso de tablas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mezclan contenido con formato (dejando el peso de los archivos innecesariamente grandes, cargando los mismos datos d diagramación en cada página que visitan).&lt;/li&gt;
&lt;li&gt;el ancho de banda no es gratis…&lt;/li&gt;
&lt;li&gt;hacen el rediseño lento y caro.&lt;/li&gt;
&lt;li&gt;no hacen el sitio accesible para, por ejemplo, &lt;a href=&#34;http://www.csslab.cl/?p=40&#34;&gt;móviles&lt;/a&gt;, PDA’s y menos aún &lt;a href=&#34;http://www.csslab.cl/?p=54&#34;&gt;discapacitados visuales&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por suerte esto ya está solucionado, los browsers modernos están mucho mejores para renderizar web standards, y pronto esperamos extinguir estos métodos arcaicos de diseño web. Ya no más meter tablas dentro de tablas, llenar celdas vacías con GIF transparentes de 1 pixel…..&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. CSS y la separación del estilo gráfico:&lt;/strong&gt; Utilizando hojas de estilos podemos ahora separar el contenido del estilo gráfico, lo que nos permite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;rediseños más baratos y rápidos: basta con modificar una hoja de estilo para todo el sitio ver los cambios inmediatos.&lt;/li&gt;
&lt;li&gt;se reduce en ancho de banda utilizado para visualizar el sitio. El CSS que controla el layout se queda en el cache del browser.&lt;/li&gt;
&lt;li&gt;es más fácil mantener la consistencia visual del sitio: todas las páginas utilizan la misma familia tipográfica, tamaño de textos, colores, posición de elementos, lo que a la larga fortalece la marca y deja el sitio más usable.&lt;/li&gt;
&lt;li&gt;dejas tu sitio accesible, independiente del dispositivo que lo despliega.&lt;/li&gt;
&lt;li&gt;minimizando el código y utilizando correctamente los tags de texto (H1, H2, P, etc) ayudan a mejorar tu ranking en los buscadores.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;5. Aún puedes seguir utilizando tablas:&lt;/strong&gt; pero no uses tantas. Puedes &lt;a href=&#34;http://www.csslab.cl/?p=45&#34;&gt;darles formatos con CSS&lt;/a&gt;, y no uses más spacers!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. Cambiando la forma en que piensas:&lt;/strong&gt; Esto es probablemente lo que hace más reticentes al cambio a la mayoría de los diseñadores. Algo nuevo, con código, difícil de digerir. Diagramar con CSS requiere una nueva forma de pensar, ahora orientado a la información: títulos con &lt;strong&gt;H1&lt;/strong&gt;, subtítulos con &lt;strong&gt;H2&lt;/strong&gt;, etc. En vez de contener tu texto en una celda, conténla en un &lt;strong&gt;DIV&lt;/strong&gt;. Dale a ese &lt;strong&gt;DIV&lt;/strong&gt; un &lt;strong&gt;ID&lt;/strong&gt; (identificador único) o un &lt;strong&gt;CLASS&lt;/strong&gt; que describirá el contenido en función de la apariencia o posición.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7. Evita &lt;b&gt; y &lt;br&gt;:&lt;/strong&gt; Lo que quieres decir, claro, tiene significado. Si es importante, &lt;strong&gt;&lt;strong&gt;&lt;/strong&gt; (bold). Si quieres hacer énfasis &lt;strong&gt;&lt;em&gt;&lt;/strong&gt; (itálica). &lt;strong&gt;&lt;br&gt;&lt;/strong&gt; aún es soportado de modo transicional, pero ha sigo corregido: &lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;. Esto porque según la regla, todos los tags deben de abrir y cerrarse. (&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;). Como &lt;strong&gt;&lt;br /&gt;&lt;/strong&gt; hace de punto aparte, se abre en sí misma. Por ese el &lt;strong&gt;/&lt;/strong&gt;; y no es el único tag que funciona de esta manera. Puedes utilizar CSS para hacer lo mismo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;.aparte {display:block;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;8. &lt;em&gt;Menuliza&lt;/em&gt; con UL y LI’s:&lt;/strong&gt; Menúes son meras &lt;a href=&#34;http://www.csslab.cl/?p=42&#34;&gt;listas de links&lt;/a&gt;. Entonces, utiliza &lt;strong&gt;UL&lt;/strong&gt; para contenerlos, &lt;a href=&#34;http://www.csslab.cl/?p=37&#34;&gt;horizontal&lt;/a&gt; o verticalmente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;9. Más de una manera para hacer lo mismo:&lt;/strong&gt; con CSS puedes llegar a la misma solución a cierto diseño de diferentes maneras, impulsando la creatividad. Haz la prueba, pregúntale a otra persona cómo posicionaría un elemento respecto a otro, o cómo diagramaría un menú con ancho elástico.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;10. Migrando de &lt;em&gt;tables&lt;/em&gt; a &lt;em&gt;tableless&lt;/em&gt;:&lt;/strong&gt; No es un camino fácil, pero es gratificante ciertamente.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Primero que nada, debes rediseñar el contenido del sitio. Ya que si vamos a meter mano, hagámoslo bien.&lt;/li&gt;
&lt;li&gt;A continuación, deberás despedazar el sitio: encabezado, navegación principal, subnavegación, contenido, información adicional, etc.&lt;/li&gt;
&lt;li&gt;Limpiemos la casa: chao todos esos &lt;strong&gt;&lt;font&gt;&lt;/strong&gt; y spacers. También adiós &lt;strong&gt;&lt;b&gt;&lt;/strong&gt;, &lt;strong&gt;&amp;lt;bgcolor, background&amp;gt;&lt;/strong&gt;, &lt;strong&gt;&lt;center&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Elige un &lt;a href=&#34;http://www.csslab.cl/?p=25&#34;&gt;DOCTYPE&lt;/a&gt; de acuerdo con lo que estás construyendo. &lt;em&gt;Transitional&lt;/em&gt; es lo recomendado aún, pero no está lejos el día en que todos debamos de utilizar &lt;em&gt;Strict&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Divide tu sitio en &lt;strong&gt;DIV&lt;/strong&gt;‘s lógicos; utiliza nombres descriptivos de acuerdo al contenido, no al estilo gráfico (por ejemplo: #menu, #contenido y no #menuderecha o #textorojo).&lt;/li&gt;
&lt;li&gt;Prueba, prueba, prueba! En los browsers y plataformas más variados. Sólo así lograrás llegar bien a todos tus visitantes, y posibles futuros clientes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;11. Nunca dejarás de aprender:&lt;/strong&gt; es un interesante mundo, el que difícilmente dejarás de seguir aprendiendo nuevas técnicas. Aprende, y aprende de los mejores.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>CSS en Flash: sólida pareja</title>
      <link>https://csslab.cl/2006/08/22/css-en-flash-solida-pareja/</link>
      <pubDate>Tue, 22 Aug 2006 20:08:00 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/08/22/css-en-flash-solida-pareja/</guid>
      <description>&lt;p&gt;Desde &lt;strong&gt;Flash MX 2004&lt;/strong&gt; que se permite importar información de hojas de estilo &lt;strong&gt;CSS&lt;/strong&gt; para los campos de texto dinámicos de una película Flash. Lo interesante de esto es la capacidad de manejar externamente el estilo del texto que contiene la película, sin tener que publicarla nuevamente con una nueva, por ejemplo tipografía, o color de texto. Otra ventaja es tener en una misma caja de texto diferentes estilos (recordemos que estamos trabajando con textos dinámicos, y éstos deben tener el mismo tipo de texto para cada campo) sin tener que fraccionar ese bloque en diferentes partes. A continuación veremos cómo cargar una hoja de estilos CSS, manipularla ya lo sabemos pero la implementaremos dentro de una película Flash 7+.&lt;/p&gt;
&lt;p&gt;Necesitas primero un campo de texto dinámico. Esto es lo más fácil, hazla del tamaño que quieras . Luego, un importante ítem a ser seleccionado: en &lt;strong&gt;Properties&lt;/strong&gt;, asegúrate de seleccionar &lt;strong&gt;Multiline no wrap&lt;/strong&gt; y &lt;strong&gt;Render text as HTML&lt;/strong&gt;, como en la imagen siguiente:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/ejemplos/flash/img1.gif&#34; alt=&#34;CSS en Flash&#34; width=&#34;303&#34; height=&#34;52&#34; align=&#34;left&#34; style=&#34;margin: 0 10px 5px 0;&#34; /&gt; 
&lt;p&gt;Ahora, dale un nombre a esa instancia (campo de texto dinámico), en este caso usaré &lt;strong&gt;output&lt;/strong&gt;. Por último, hora de agregar algo de acción. En el primer frame, copia el siguiente código &lt;strong&gt;Actionscript&lt;/strong&gt;:&lt;/p&gt;</description>
      <content>&lt;p&gt;Desde &lt;strong&gt;Flash MX 2004&lt;/strong&gt; que se permite importar información de hojas de estilo &lt;strong&gt;CSS&lt;/strong&gt; para los campos de texto dinámicos de una película Flash. Lo interesante de esto es la capacidad de manejar externamente el estilo del texto que contiene la película, sin tener que publicarla nuevamente con una nueva, por ejemplo tipografía, o color de texto. Otra ventaja es tener en una misma caja de texto diferentes estilos (recordemos que estamos trabajando con textos dinámicos, y éstos deben tener el mismo tipo de texto para cada campo) sin tener que fraccionar ese bloque en diferentes partes. A continuación veremos cómo cargar una hoja de estilos CSS, manipularla ya lo sabemos pero la implementaremos dentro de una película Flash 7+.&lt;/p&gt;
&lt;p&gt;Necesitas primero un campo de texto dinámico. Esto es lo más fácil, hazla del tamaño que quieras . Luego, un importante ítem a ser seleccionado: en &lt;strong&gt;Properties&lt;/strong&gt;, asegúrate de seleccionar &lt;strong&gt;Multiline no wrap&lt;/strong&gt; y &lt;strong&gt;Render text as HTML&lt;/strong&gt;, como en la imagen siguiente:&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/ejemplos/flash/img1.gif&#34; alt=&#34;CSS en Flash&#34; width=&#34;303&#34; height=&#34;52&#34; align=&#34;left&#34; style=&#34;margin: 0 10px 5px 0;&#34; /&gt; 
&lt;p&gt;Ahora, dale un nombre a esa instancia (campo de texto dinámico), en este caso usaré &lt;strong&gt;output&lt;/strong&gt;. Por último, hora de agregar algo de acción. En el primer frame, copia el siguiente código &lt;strong&gt;Actionscript&lt;/strong&gt;:&lt;/p&gt;
&lt;p class=&#34;codeas&#34;&gt;
  var format = new TextField.StyleSheet();&lt;br /&gt; var path = &#34;http://www.csslab.cl/ejemplos/flash/flash.css&#34;;&lt;br /&gt; var quick = &#34;&lt;br&gt;&lt;p class=&amp;#8217;uno&amp;#8217;&gt;Lorem ipsum dolor sit amet.&lt;/p&gt;&lt;br&gt;&lt;p class=&amp;#8217;dos&amp;#8217;&gt;Lorem ipsum dolor sit amet.&lt;/p&gt;&lt;br&gt;&lt;p class=&amp;#8217;tres&amp;#8217;&gt;Lorem ipsum dolor sit amet.&lt;/p&gt;&lt;br&gt;&lt;p class=&amp;#8217;cuatro&amp;#8217;&gt;Lorem ipsum dolor sit amet.&lt;/p&gt;&#34;;&lt;br /&gt; format.load(path);&lt;br /&gt; format.onLoad = function(loaded) {&lt;br /&gt; if (loaded) {&lt;br /&gt; output.styleSheet = format;&lt;br /&gt; output.text = quick;&lt;br /&gt; } else {&lt;br /&gt; output.text = &#34;Error cargando archivo CSS&#34;;&lt;br /&gt; }&lt;br /&gt; };
&lt;/p&gt;
&lt;p&gt;Lo que hace el anterior código, es primero que nada crear un objeto que controle el flujo del CSS, y decir dónde está el archivo CSS, en este caso desde el mismo servidor en que está alojado &lt;strong&gt;CSSLab&lt;/strong&gt;, mejor si es absoluto. Luego el texto a ser desplegado, en &lt;strong&gt;HTML&lt;/strong&gt;, con sus respectivas clases. Por último, carga el CSS (onLoad) y lo aplica al campo de texto dinámico que creamos, llamado &lt;strong&gt;output&lt;/strong&gt;. Ahora, el archivo CSS:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  .uno {&lt;br /&gt; font-family: Arial, Helvetica, sans-serif;&lt;br /&gt; font-size: 10px;&lt;br /&gt; font-weight: bolder;&lt;br /&gt; color: #FF0099;&lt;br /&gt; }&lt;br /&gt; .dos {&lt;br /&gt; font-family: Arial, Helvetica, sans-serif;&lt;br /&gt; font-size: 14px;&lt;br /&gt; font-weight: bolder;&lt;br /&gt; color: #333333;&lt;br /&gt; }&lt;br /&gt; .tres {&lt;br /&gt; font-family: Arial, Helvetica, sans-serif;&lt;br /&gt; font-size: 18px;&lt;br /&gt; font-weight: normal;&lt;br /&gt; color: #FF9900;&lt;br /&gt; }&lt;br /&gt; .cuatro {&lt;br /&gt; font-family: Arial, Helvetica, sans-serif;&lt;br /&gt; font-size: 24px;&lt;br /&gt; font-weight: normal;&lt;br /&gt; color: #000000;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;Aún la implementación de CSS en Flash es limitado. Son soportados gran parte de las propiedades de &lt;strong&gt;CSS1&lt;/strong&gt;, y en Flash 8 aseguran que este número aumentó: text-align, font-size, text-decoration, margin-left, margin-right, font-weight, font-style, letter-spacing, text-indent, font-family, color.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/flash/cssflash.html&#34; target=&#34;_blank&#34;&gt;Ver resultado final &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00001447.html&#34; target=&#34;_blank&#34;&gt;&lt;span style=&#34;text-decoration: line-through&#34;&gt;Macromedia&lt;/span&gt; Adobe LiveDocs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.kirupa.com/developer/mx2004/css.htm&#34; target=&#34;_blank&#34;&gt;Kirupa&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>PNG’s transparentes en IE6</title>
      <link>https://csslab.cl/2006/08/14/pngs-transparentes-en-ie6/</link>
      <pubDate>Mon, 14 Aug 2006 14:04:32 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/08/14/pngs-transparentes-en-ie6/</guid>
      <description>&lt;p&gt;Es indiscutible las bondades que ha traído la inclusión de Unisys del formato &lt;a href=&#34;http://es.wikipedia.org/wiki/PNG&#34;&gt;PNG&lt;/a&gt;{.blank}. Lo mejor de él, es la mayor profundidad de colores (miles, aún comprimido) y la facilidad de uso de su canal alfa. Su uso en web aún es limitado, ya que como no será sorpresa, Microsoft Internet Explorer no lo soporta ni siquiera en su versión 6 (al parecer sí en la v7). Mozilla Firefox, Apple Safari, Opera y otros no tienen problemas con visualizarlo.&lt;/p&gt;
&lt;p&gt;La idea de este post es crear un &lt;strong&gt;PNG transparente&lt;/strong&gt; con un drop shadow (sombra) negro para que se note su ventaja con respecto al ultrapasado, pero nunca mal ponderado GIF transparente. Existen muchos códigos que permiten utilizarlo, con JavaScript o &lt;a href=&#34;http://www.webreference.com/js/column68/&#34;&gt;filtros de IE&lt;/a&gt;{.blank}, pero ninguno funciona correctamente sobre CSS.&lt;/p&gt;
&lt;p&gt;Sigue el estilo utilizado:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #imagen {&lt;br /&gt; width: 400px;&lt;br /&gt; height: 219px;&lt;br /&gt; background-image: url(«pildora.png») !important;&lt;br /&gt; background-image: none;&lt;br /&gt; filter: none !important;&lt;br /&gt; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&amp;#8217;imagen/pildora.png&amp;#8217;);&lt;br /&gt; }
&lt;/p&gt;</description>
      <content>&lt;p&gt;Es indiscutible las bondades que ha traído la inclusión de Unisys del formato &lt;a href=&#34;http://es.wikipedia.org/wiki/PNG&#34;&gt;PNG&lt;/a&gt;{.blank}. Lo mejor de él, es la mayor profundidad de colores (miles, aún comprimido) y la facilidad de uso de su canal alfa. Su uso en web aún es limitado, ya que como no será sorpresa, Microsoft Internet Explorer no lo soporta ni siquiera en su versión 6 (al parecer sí en la v7). Mozilla Firefox, Apple Safari, Opera y otros no tienen problemas con visualizarlo.&lt;/p&gt;
&lt;p&gt;La idea de este post es crear un &lt;strong&gt;PNG transparente&lt;/strong&gt; con un drop shadow (sombra) negro para que se note su ventaja con respecto al ultrapasado, pero nunca mal ponderado GIF transparente. Existen muchos códigos que permiten utilizarlo, con JavaScript o &lt;a href=&#34;http://www.webreference.com/js/column68/&#34;&gt;filtros de IE&lt;/a&gt;{.blank}, pero ninguno funciona correctamente sobre CSS.&lt;/p&gt;
&lt;p&gt;Sigue el estilo utilizado:&lt;/p&gt;
&lt;p class=&#34;codecss&#34;&gt;
  #imagen {&lt;br /&gt; width: 400px;&lt;br /&gt; height: 219px;&lt;br /&gt; background-image: url(«pildora.png») !important;&lt;br /&gt; background-image: none;&lt;br /&gt; filter: none !important;&lt;br /&gt; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&amp;#8217;imagen/pildora.png&amp;#8217;);&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Explico:&lt;/strong&gt; el ancho y alto son para establecer un área y que todos los browsers abran la imagen del mismo tamaño. El problema que se tiene con los filter, radica en que funciona para IE pero no para Firefox, y si agregamos el &lt;em&gt;background&lt;/em&gt;, funciona en Firefox pero no en IE. La solución es agregar &lt;strong&gt;!important&lt;/strong&gt;, para que Firefox tome ciertos elementos, y otros no. Además aún así el código XHTML valida según W3C, no el CSS ya que filter es de Microsoft y no de W3C (corregido).&lt;/p&gt;
&lt;p&gt;La solución es utilizar un &lt;em&gt;background&lt;/em&gt; normal para Firefox con un &lt;em&gt;!important&lt;/em&gt; y justo debajo un background vacío (&lt;em&gt;none&lt;/em&gt;), ya que IE no reconoce &lt;em&gt;!important&lt;/em&gt; y tomará como referencia el inmediatamente siguiente. Luego de esto, viene el filter vacío (&lt;em&gt;none&lt;/em&gt; nuevamente) y una cláusula &lt;em&gt;!important&lt;/em&gt; para Firefox y el consiguiente &lt;em&gt;filter&lt;/em&gt; AlphaImageLoader para que IE reconozca el alfa sobre los PNG’s.&lt;/p&gt;
&lt;p&gt;Un detalle que puede que hayan notado: en el &lt;em&gt;filter&lt;/em&gt; de IE se especifica la ruta de la imagen en un nivel diferente que la de IE. Esto porque la imagen se debe de especificar no desde la ruta del CSS (como ocurre con el &lt;em&gt;background&lt;/em&gt;), sino con dirección de la raíz de la página web (no del sitio, me refiero a llamarla de forma relativa, no absoluta).&lt;/p&gt;
&lt;p&gt;&lt;a title=&#34;PNG transparente en IE&#34; href=&#34;http://www.csslab.cl/ejemplos/png/index.html&#34; target=&#34;_blank&#34;&gt;Ver resultado&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Suerte y a disfrutar del buen diseño con los PNG transparentes.&lt;/p&gt;
&lt;p&gt;PD: gracias por sus comentarios para hacerme ver el error de validación del CSS.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Bordes redondos crossbrowser</title>
      <link>https://csslab.cl/2006/08/08/bordes-redondos-crossbrowser/</link>
      <pubDate>Tue, 08 Aug 2006 16:12:47 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/08/08/bordes-redondos-crossbrowser/</guid>
      <description>&lt;p&gt;Mucho se usa en el diseño web el recurso de los bordes redondeados, principalmente en formas que soportan cajas de texto. Esto se hacía fácilmente utilizando una tabla y varias celdas, y éstas se adaptaban fácilmente al tamaño del contenido. Ahora, son otros tiempos. El mundo cambia, y existen varios métodos para lograrlo sin las desprestigiadas tablas. Estos métodos incluyen imágenes (&lt;strong&gt;GIF&lt;/strong&gt;), &lt;strong&gt;JavaScript&lt;/strong&gt; con &lt;strong&gt;CSS&lt;/strong&gt; o sólo &lt;strong&gt;CSS&lt;/strong&gt;. En esta ocasión, mostrare un método que utiliza sólo &lt;strong&gt;CSS&lt;/strong&gt; para su diseño, lo que nos ahorra unos cuantos bytes de peso y se adapta fácilmente a lo que contiene, sean imágenes o sólo texto. Además, te sacas la lata de andar cortando esos bordecitos en Photoshop y que calcen unos con otros.&lt;/p&gt;</description>
      <content>&lt;p&gt;Mucho se usa en el diseño web el recurso de los bordes redondeados, principalmente en formas que soportan cajas de texto. Esto se hacía fácilmente utilizando una tabla y varias celdas, y éstas se adaptaban fácilmente al tamaño del contenido. Ahora, son otros tiempos. El mundo cambia, y existen varios métodos para lograrlo sin las desprestigiadas tablas. Estos métodos incluyen imágenes (&lt;strong&gt;GIF&lt;/strong&gt;), &lt;strong&gt;JavaScript&lt;/strong&gt; con &lt;strong&gt;CSS&lt;/strong&gt; o sólo &lt;strong&gt;CSS&lt;/strong&gt;. En esta ocasión, mostrare un método que utiliza sólo &lt;strong&gt;CSS&lt;/strong&gt; para su diseño, lo que nos ahorra unos cuantos bytes de peso y se adapta fácilmente a lo que contiene, sean imágenes o sólo texto. Además, te sacas la lata de andar cortando esos bordecitos en Photoshop y que calcen unos con otros.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El Método&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Explico esto para que se acostumbren a saber cómo funcionan las cosas, y no sólo corten-peguen. Así, si necesitan modificar algo, ya saben por dónde comenzar a buscar. Usaremos un cuadrado de 20 x 20 px con el fondo del sitio. Luego, usaremos un &lt;strong&gt;bullet&lt;/strong&gt; con el color de la caja. Para este ejemplo, usaremos el fondo rojo #C00 y la caja gris #CCC.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El HTML:&lt;/strong&gt; En el ejemplo puedes disfrutar del código, presionando &lt;strong&gt;View Source&lt;/strong&gt; en tu browser favorito.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/redondo.html&#34; target=&#34;_blank&#34;&gt;Ver Ejemplo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Link: &lt;a href=&#34;http://www.fireandknowledge.org/archives/2004/05/22/rounded-corners-without-images-part-1&#34; target=&#34;_blank&#34;&gt;Rounded Corners Without Images&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;PD. Probado en: &lt;strong&gt;Mac&lt;/strong&gt; [Safari, Firefox, Opera, Flock, SunriseBrowser, Camino; &lt;strong&gt;Windows&lt;/strong&gt; [Firefox]. Si alguien ve algun detalle en IE de Win, que trate de ver que es.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 14</title>
      <link>https://csslab.cl/2006/08/01/lo-vi-y-me-gusto-14/</link>
      <pubDate>Tue, 01 Aug 2006 18:18:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/08/01/lo-vi-y-me-gusto-14/</guid>
      <description>#14 – 1 Agosto 2006</description>
      <content>&lt;p&gt;#14 – 1 Agosto 2006&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://blog.be-studios.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/beblog.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.glasdach.biz/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/glass.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.intrigue.ie/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/intrigue.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Se viene IE7…. ¡huid! (actualizado)</title>
      <link>https://csslab.cl/2006/07/28/se-viene-ie7-%C2%A1huid/</link>
      <pubDate>Fri, 28 Jul 2006 18:07:13 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/07/28/se-viene-ie7-%C2%A1huid/</guid>
      <description>&lt;p&gt;Para todos quienes hemos peleado con IE5, 5.5 y 6, nuestras pesadillas están lejos de terminar… Con el inminente lanzamiento de IE7, Microsoft ha llamado a los desarrolladores a &lt;a href=&#34;http://blogs.msdn.com/ie/archive/2005/10/12/480242.aspx&#34; target=&#34;_blank&#34;&gt;eliminar los &lt;em&gt;hacks&lt;/em&gt;&lt;/a&gt; creados durante años, ya que supuestamente estarán arreglados con el advenimiento de este nuevo browser. En ese entonces, todos nos asustamos, ya que un nuevo dolor de cabeza se nos venía en frente. Recientemente, Microsoft hace otro anuncio, donde expresa que obligará a sus usuarios a &lt;a href=&#34;http://news.com.com/Microsoft+tags+IE+7+high+priority+update/2100-7350_3-6098500.html?tag=nefd.lede&#34; target=&#34;_blank&#34;&gt;actualizarse a la última versión&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ahora, qué es lo que sugiere Microsoft: «Utilicen &lt;strong&gt;comentarios condicionales&lt;/strong&gt; (conditional comments)». Este método no se considera como un &lt;em&gt;hack&lt;/em&gt; propiamente tal, y se desarrolló con IE5, así que por lo menos hay soporte en cuanto a browsers antiguos (por no decir viejos). Estos comentarios condicionales corresponden a una sintaxis especifica para escribir comentarios en documentos &lt;strong&gt;XHTML&lt;/strong&gt;, los que son interpretados solamente por Internet Explorer, permitiendo que especifiquemos una condición necesaria, por ejemplo, una versión especifica del browser, y establecer la solución para una o más &lt;em&gt;detalles&lt;/em&gt; de ese browser.&lt;/p&gt;</description>
      <content>&lt;p&gt;Para todos quienes hemos peleado con IE5, 5.5 y 6, nuestras pesadillas están lejos de terminar… Con el inminente lanzamiento de IE7, Microsoft ha llamado a los desarrolladores a &lt;a href=&#34;http://blogs.msdn.com/ie/archive/2005/10/12/480242.aspx&#34; target=&#34;_blank&#34;&gt;eliminar los &lt;em&gt;hacks&lt;/em&gt;&lt;/a&gt; creados durante años, ya que supuestamente estarán arreglados con el advenimiento de este nuevo browser. En ese entonces, todos nos asustamos, ya que un nuevo dolor de cabeza se nos venía en frente. Recientemente, Microsoft hace otro anuncio, donde expresa que obligará a sus usuarios a &lt;a href=&#34;http://news.com.com/Microsoft+tags+IE+7+high+priority+update/2100-7350_3-6098500.html?tag=nefd.lede&#34; target=&#34;_blank&#34;&gt;actualizarse a la última versión&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ahora, qué es lo que sugiere Microsoft: «Utilicen &lt;strong&gt;comentarios condicionales&lt;/strong&gt; (conditional comments)». Este método no se considera como un &lt;em&gt;hack&lt;/em&gt; propiamente tal, y se desarrolló con IE5, así que por lo menos hay soporte en cuanto a browsers antiguos (por no decir viejos). Estos comentarios condicionales corresponden a una sintaxis especifica para escribir comentarios en documentos &lt;strong&gt;XHTML&lt;/strong&gt;, los que son interpretados solamente por Internet Explorer, permitiendo que especifiquemos una condición necesaria, por ejemplo, una versión especifica del browser, y establecer la solución para una o más &lt;em&gt;detalles&lt;/em&gt; de ese browser.&lt;/p&gt;
&lt;p&gt;A pesar de ser código propietario de Microsoft, estos comentarios quedan visibles para todos el resto de los browsers, pero no son interpretados, sino que leídos como simples comentarios.&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;!--[if IE 6]&amp;gt;&amp;lt;br /&gt;
&amp;lt;link href=&#34;http://www.url.net/ie6.css&#34; rel=&#34;stylesheet&#34; type=&#34;text/css&#34; /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&gt;
&amp;lt; ![endif]--&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y para Internet Explorer 7 (actualizado):&lt;/p&gt;
&lt;pre class=&#34;language-markup&#34;&gt;&lt;code&gt;&amp;lt;!--[if lte IE 7.0]&amp;gt;&amp;lt;br /&gt;
&amp;lt;link href=&#34;http://www.url.net/ie7.css&#34; rel=&#34;stylesheet&#34; type=&#34;text/css&#34; /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&gt;
&amp;lt; ![endif]--&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Importante es declarar este comentario condicional luego de haber llamado la hoja de estilos principal, o sea, la buena. Esto porque esta hoja podría sobreponer sus propiedades encima de la hoja de estilos principal, lo que continuaría con los errores.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt; con esto, se agrupan todos los estilos &lt;em&gt;corregidos&lt;/em&gt; en una sola hoja, dejando la principal limpia de &lt;em&gt;hacks&lt;/em&gt;. Si algún día dejan de existir estos browsers llenos de errores, solamente tendríamos que quitar este comentario condicional. Fácil. De eso se trata, facilitar la vida.&lt;/p&gt;
&lt;p&gt;Link: &lt;a href=&#34;http://webinsider.uol.com.br/index.php/2006/07/27/prepare-seu-site-para-o-internet-explorer-7/&#34; target=&#34;_blank&#34;&gt;Webinsider&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>XHTML: un interesante camino</title>
      <link>https://csslab.cl/2006/07/25/xhtml-un-interesante-camino/</link>
      <pubDate>Tue, 25 Jul 2006 20:55:37 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/07/25/xhtml-un-interesante-camino/</guid>
      <description>En un blog al que estoy suscrito via RSS, y el cual recomiendo por el interesante contenido que siempre entregan, surge este interesante artículo, donde se muestra objetivamente (aunque faltan detallles, no deja de ser buena referencia) la evolución que ha tenido el HTML y el diseño y desarrollo web desde sus comienzos. Destaco las siguientes líneas, para mí un excelente desenlace:
 Bueno, y ¿todo esto es importante, o se trata sólo de pajas mentales de los informáticos?</description>
      <content>&lt;p&gt;&lt;a href=&#34;http://malaciencia.blogspot.com/&#34; target=&#34;_blank&#34;&gt;En un blog&lt;/a&gt; al que estoy suscrito via RSS, y el cual recomiendo por el interesante contenido que siempre entregan, surge este interesante artículo, donde se muestra objetivamente (aunque faltan detallles, no deja de ser buena referencia) la evolución que ha tenido el HTML y el diseño y desarrollo web desde sus comienzos. Destaco las siguientes líneas, para mí un excelente desenlace:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bueno, y ¿todo esto es importante, o se trata sólo de pajas mentales de los informáticos? Pues sí es importante. Los estándares se hacen para ser utilizados y respetados. Uno de los pilares de la Web es poder acceder a la información, independientemente del navegador, del sistema operativo, e incluso de la máquina (y no estoy pensando sólo en ordenadores). La situación de hace varios años, con diferencias abismales entre el Internet Explorer y el Netscape Navigator, degeneraba en ocasiones en tener que hacer dos versiones de cada página, o en condenar a los usuarios de uno de los navegadores a no poder verlas. ¿Os imagináis que existieran canales de televisión que sólo pudieran ser vistos por una determinada marca de aparato? Afortunadamente, esa etapa parece haber sido superada, aunque hay quien se empeña (tal vez por desconocimiento) en hacer páginas pensando únicamente en un sólo navegador (normalmente Explorer). Si al crear nuestra página, nos ceñimos rígidamente a los estándares del W3C, tendremos bastante seguridad de que se verá en la mayoría de los navegadores. Y si no, siempre podemos excusarnos diciendo que si no se ve bien, es problema del navegador, que no cumple el estándar.&lt;/p&gt;
&lt;p&gt;Por otro lado, separar el contenido de la forma de presentarlo, nos ayudará a modificar posteriormente la apariencia de nuestras páginas, o mejor aún, facilitará su proceso por parte de software especializado para discapacitados, como sitnetizadores de voz o lectores braile. O incluso podemos especificar diferentes hojas de estilo, de forma que el usuario escoja cuál utilizar.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Link: &lt;a href=&#34;http://malaciencia.blogspot.com/2006/07/xhtml-en-blogger.html&#34; target=&#34;_blank&#34;&gt;Malaciencia: XHTML en Blogger&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Flotando en la incertidumbre</title>
      <link>https://csslab.cl/2006/07/20/flotando-en-la-incertidumbre/</link>
      <pubDate>Thu, 20 Jul 2006 21:03:44 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/07/20/flotando-en-la-incertidumbre/</guid>
      <description>&lt;p&gt;Seguro uno de los temas más complicados al momento de construir un sitio &lt;em&gt;tableless&lt;/em&gt;, se refiere a los &lt;strong&gt;float&lt;/strong&gt;. Entenderlo y saber utilizarlo es un lío. Esto se complica más al momento de hacer que el sitio se vea bien en los browsers, un dolor de cabeza (Firefox es muy sensible en problemas con floats). Para ayudar en esto, existen varios &lt;em&gt;hacks&lt;/em&gt;, o mejor, &lt;em&gt;tips&lt;/em&gt; que facilitan la vida. Lo siguiente es una manera de manejar los &lt;strong&gt;floats&lt;/strong&gt;, principalmente cuando existen varios elementos dentro de un mismo &lt;strong&gt;div&lt;/strong&gt;. Juntos, suelen comportarse de manera extraña.&lt;/p&gt;
&lt;h3 id=&#34;a-la-antigua&#34;&gt;A la antigua.&lt;/h3&gt;
&lt;p&gt;Cuando un &lt;strong&gt;float&lt;/strong&gt; está contenido dentro de otro contenedor (burp, redundancia….. pero se entiende) que tiene borde o fondo visible (para que se note el problema, ver &lt;em&gt;img1&lt;/em&gt;), el float no fuerza automáticamente el borde inferior del contenedor principal a medida q este &lt;strong&gt;float&lt;/strong&gt; se agranda. A su vez, el &lt;strong&gt;float&lt;/strong&gt; es ignorado por el contenedor y se verá colgado del borde superior (esto no pasaba con las tablas…. maldición!). Para esto, la W3C sugiere usar un elemento &lt;strong&gt;clear&lt;/strong&gt; al final de la caja contenedora, forzándolo a despejar este elemento incluído. Lo que hará, por ejemplo, un &lt;strong&gt;{ clear: both; }&lt;/strong&gt; al final del contenedor, será extender el margen inferior hasta que se ‘despeje’ (&lt;strong&gt;clear&lt;/strong&gt;) hasta el final del &lt;strong&gt;float&lt;/strong&gt;.&lt;/p&gt;
&lt;div align=&#34;center&#34;&gt;
  &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/float1.gif&#34; alt=&#34;Float a la antigua&#34; width=&#34;401&#34; height=&#34;156&#34; style=&#34;border: 0;&#34; /&gt;
&lt;/div&gt;</description>
      <content>&lt;p&gt;Seguro uno de los temas más complicados al momento de construir un sitio &lt;em&gt;tableless&lt;/em&gt;, se refiere a los &lt;strong&gt;float&lt;/strong&gt;. Entenderlo y saber utilizarlo es un lío. Esto se complica más al momento de hacer que el sitio se vea bien en los browsers, un dolor de cabeza (Firefox es muy sensible en problemas con floats). Para ayudar en esto, existen varios &lt;em&gt;hacks&lt;/em&gt;, o mejor, &lt;em&gt;tips&lt;/em&gt; que facilitan la vida. Lo siguiente es una manera de manejar los &lt;strong&gt;floats&lt;/strong&gt;, principalmente cuando existen varios elementos dentro de un mismo &lt;strong&gt;div&lt;/strong&gt;. Juntos, suelen comportarse de manera extraña.&lt;/p&gt;
&lt;h3 id=&#34;a-la-antigua&#34;&gt;A la antigua.&lt;/h3&gt;
&lt;p&gt;Cuando un &lt;strong&gt;float&lt;/strong&gt; está contenido dentro de otro contenedor (burp, redundancia….. pero se entiende) que tiene borde o fondo visible (para que se note el problema, ver &lt;em&gt;img1&lt;/em&gt;), el float no fuerza automáticamente el borde inferior del contenedor principal a medida q este &lt;strong&gt;float&lt;/strong&gt; se agranda. A su vez, el &lt;strong&gt;float&lt;/strong&gt; es ignorado por el contenedor y se verá colgado del borde superior (esto no pasaba con las tablas…. maldición!). Para esto, la W3C sugiere usar un elemento &lt;strong&gt;clear&lt;/strong&gt; al final de la caja contenedora, forzándolo a despejar este elemento incluído. Lo que hará, por ejemplo, un &lt;strong&gt;{ clear: both; }&lt;/strong&gt; al final del contenedor, será extender el margen inferior hasta que se ‘despeje’ (&lt;strong&gt;clear&lt;/strong&gt;) hasta el final del &lt;strong&gt;float&lt;/strong&gt;.&lt;/p&gt;
&lt;div align=&#34;center&#34;&gt;
  &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/float1.gif&#34; alt=&#34;Float a la antigua&#34; width=&#34;401&#34; height=&#34;156&#34; style=&#34;border: 0;&#34; /&gt;
&lt;/div&gt;
&lt;h3 id=&#34;a-la-moderna&#34;&gt;A la moderna.&lt;/h3&gt;
&lt;p&gt;Un nuevo método ha irrumpido hace algún tiempo ya en el mundo del desarrollo web: &lt;strong&gt;clearfix&lt;/strong&gt;. Elementos de despeje &lt;strong&gt;‘clear’&lt;/strong&gt; no son utilizados. En cambio, se usa una propiedad CSS2 &lt;strong onMouseOver=&#34;toolTip(&#39;Pseudoclase que inserta contenido despues de un elemento&#39;, 200, 70)&#34; onMouseOut=&#34;toolTip()&#34;&gt;:after&lt;/strong&gt;. Esta propiedad permite que se agregue nuevo contenido al final de un elemento a través del CSS. Esto significa que no se requiere modificar el HTML. El contenido es especificado dentro de la hoja de estilos, y aparece en la página web como un elemento HTML real que ha sido insertado siguiendo el normal contenido. Contenido generado con &lt;strong&gt;:after&lt;/strong&gt; no puede recibir algunas propiedades CSS, como &lt;strong&gt;position&lt;/strong&gt; o &lt;strong&gt;float&lt;/strong&gt;, pero &lt;strong&gt;clear&lt;/strong&gt; sí es permitido. Imagina que usamos &lt;strong&gt;:after&lt;/strong&gt; para insertar un simple caracter, un punto. A este punto se le despeja con &lt;strong&gt;{ clear: both; }&lt;/strong&gt;. Eso es todo. Pero no queremos que ese punto se vea, menos que se note. Por ello. utilizamos &lt;strong&gt;{ height: 0; }&lt;/strong&gt; y &lt;strong&gt;{visibility: hidden;}&lt;/strong&gt; para esconderlo. Primitivamente, el código es el siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;.clearfix:after {&amp;lt;br /&gt;
  content: &#34;.&#34;; &amp;lt;br /&gt;
  display: block; &amp;lt;br /&gt;
  height: 0; &amp;lt;br /&gt;
  clear: both; &amp;lt;br /&gt;
  visibility: hidden;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, como nada es simple en la vida, hay que hacer algunas modificaciones aún para que todos los browsers permitan un uniforme despliegue del float. Un simple &lt;em&gt;hack&lt;/em&gt; para IE es necesario, ya que este browser no soporta &lt;strong&gt;:after&lt;/strong&gt;. Pero posee un efecto de autodespeje, y es precisamente de él que nos colgaremos para este caso. Le diremos a IE/Win que vea un alto de 1% del contenedor.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;/* Esconde de IE-mac \*/&amp;lt;br /&gt;
  * html .clearfix {height: 1%;}&amp;lt;br /&gt;
/* Fin esconde de IE-mac */&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Queda un detalle aún. Sí, nuevamente IE, pero para Macintosh. Son los menos, los restantes de un relegado a tercer plano, pero quedan. Existe otro &lt;em&gt;hack&lt;/em&gt; que ayuda a este navegador con este mismo problema, pero utilizando &lt;strong&gt;{ display: inline-table; }&lt;/strong&gt; a la clase &lt;strong&gt;.clearfix&lt;/strong&gt;, y escondiéndolo de todos los otros browsers. Finalmente, el código completo es el siguiente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;.clearfix:after {&amp;lt;br /&gt;
  content: &#34;.&#34;; &amp;lt;br /&gt;
  display: block; &amp;lt;br /&gt;
  height: 0; &amp;lt;br /&gt;
  clear: both; &amp;lt;br /&gt;
  visibility: hidden;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
.clearfix {display: inline-table;}&amp;lt;br /&gt;
/* Hides from IE-mac \*/&amp;lt;br /&gt;
* html .clearfix {height: 1%;}&amp;lt;br /&gt;
.clearfix {display: block;}&amp;lt;br /&gt;
/* End hide from IE-mac */&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sólo debes agregar esta clase &lt;strong&gt;.clearfix&lt;/strong&gt; al contenedor principal (class=&amp;ldquo;clearfix&amp;rdquo;). Algunos acostumbran a agregar este &lt;strong&gt;clearfix&lt;/strong&gt; a todas sus hojas de estilo. No debería de causar ningún problema con los otros elementos del sitio web.&lt;/p&gt;
&lt;div align=&#34;center&#34;&gt;
  &lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/float2.gif&#34; alt=&#34;Float con clearfix&#34; width=&#34;401&#34; height=&#34;156&#34; style=&#34;border: 0;&#34; /&gt;
&lt;/div&gt;
&lt;p&gt;Ojalá haya despejado más de una duda y un float.&lt;/p&gt;
&lt;p&gt;Link: &lt;a href=&#34;http://www.positioniseverything.net/easyclearing.html&#34; target=&#34;_blank&#34;&gt;Position is Everything &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; como comentó acertadamente &lt;a href=&#34;#comments&#34;&gt;newdisco&lt;/a&gt;, se acerca estrepitosamente una gran actualización de los 2 principales browsers actuales: IE7 y Firefox 2. Y no podemos dejarlos al margen, ya que, por lo menos en el caso de IE7, será un gran y temible paso en cuanto al desarrollo web y cómo arreglar todos los hacks habidos y por haber. Leyendo por la web, investigué cómo se comporta &lt;strong&gt;clearfix&lt;/strong&gt; con estos 2 navegadores, y desde ya se pueden encontrar soluciones, ya que ambos programas están en sus fases finales de desarrollo y pruebas y están cerrados sus soportes respecto a CSS. Vamos por parte:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IE7:&lt;/strong&gt; El más problemático por lejos, y como se predice, lo será siendo. Microsoft ha llamado a que se deje de hacer hacks para IE6, ya que &lt;a href=&#34;http://blogs.msdn.com/ie/archive/2006/02/02/523679.aspx&#34; target=&#34;_blank&#34;&gt;en IE7 estarán solucionados estos problemas&lt;/a&gt;. Pero, obviamente, no todos los usuarios se cambiarán al instante a este nuevo navegador. Seguro pasarán años, o hasta que saquen IE8 y aún así habrán muchos usuarios con IE5.5 e IE6. Enfin, más líos. Respecto al &lt;strong&gt;clearfix&lt;/strong&gt;, IE7 continuará no soportanto &lt;em&gt;pseudoclases&lt;/em&gt; (&lt;strong&gt;:after&lt;/strong&gt;), por lo que el problema continúa. Se ha descubierto un truco que relaciona &lt;strong&gt;{ display:inline-block; }&lt;/strong&gt; seguido de un &lt;strong&gt;{ display:block; }&lt;/strong&gt; para la regla de despeje original. Luego, claro, para IE6 la clase con su &lt;strong&gt;{ height: 1%; }&lt;/strong&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;.clearfix:after {&amp;lt;br /&gt;
  content:&#34;.&#34;; &amp;lt;br /&gt;
  display:block; &amp;lt;br /&gt;
  height:0; &amp;lt;br /&gt;
  clear:both; &amp;lt;br /&gt;
  visibility:hidden;&amp;lt;br /&gt;
}
.clearfix {&amp;lt;br /&gt;
  display:inline-block;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
.clearfix {&amp;lt;br /&gt;
  display:block;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
* html .clearfix {&amp;lt;br /&gt;
  height:1px;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El problema es que al parecer el &lt;em&gt;HollyHack&lt;/em&gt; (*** html**) no será soportado más, o mejor dicho, serán solucionados los bugs q permitían esos &lt;em&gt;hacks&lt;/em&gt;. Por ello, se discute esta variación en el &lt;strong&gt;clearfix&lt;/strong&gt; para IE7, donde se aprovecha la propiedad &lt;em&gt;zoom&lt;/em&gt; de MS:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;!--[if lt IE 7]&amp;gt;&amp;lt;style&amp;gt;&amp;lt;br /&gt;
  /* style for IE 6 + IE5.5 + IE5.0 */&amp;lt;br /&gt;
  .gainlayout { height: 0; }&amp;lt;br /&gt;
  &amp;lt;/style&amp;gt;&amp;lt;![endif]--&amp;gt;&amp;lt;br /&gt;
  &amp;lt;!--[if IE 7]&amp;gt;&amp;lt;style&amp;gt;&amp;lt;br /&gt;
  .gainlayout { zoom: 1;}&amp;lt;br /&gt;
&amp;lt;/style&amp;gt;&amp;lt;![endif]--&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto por ahora. Como el browser aún está en desarrollo, y es de Microsoft, podemos esperar cualquier cosa.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Firefox 2:&lt;/strong&gt; aún estoy investigando sobre ello…&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.456bereastreet.com/archive/200603/new_clearing_method_needed_for_ie7/#comment22&#34; target=&#34;_blank&#34;&gt;456bereastreet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.tanfa.co.uk/archives/show.asp?var=300&#34; target=&#34;_blank&#34;&gt;tanfa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.satzansatz.de/cssd/onhavinglayout.html&#34; target=&#34;_blank&#34;&gt;satzansatz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 13</title>
      <link>https://csslab.cl/2006/07/11/lo-vi-y-me-gusto-13/</link>
      <pubDate>Tue, 11 Jul 2006 16:45:00 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/07/11/lo-vi-y-me-gusto-13/</guid>
      <description>#13 – 11 Julio 2006
Debido a la gran cantidad de sitios enviados, aumenté la cuota de sitios en esta edición de Lo ví y me gustó.</description>
      <content>&lt;p&gt;#13 – 11 Julio 2006&lt;/p&gt;
&lt;p&gt;Debido a la gran cantidad de sitios enviados, aumenté la cuota de sitios en esta edición de Lo ví y me gustó.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.ndesign-studio.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/ndesign.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.darkamy.net/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/darkarmy.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://myphilosophy.netsons.org/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/alakazama.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.polvo.com.br/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/polvo.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.intuitivedesigns.net/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/intuitive.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.svplace.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/smallville.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>HTML y la enseñanza</title>
      <link>https://csslab.cl/2006/07/03/html-y-la-ensenanza/</link>
      <pubDate>Mon, 03 Jul 2006 15:05:08 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/07/03/html-y-la-ensenanza/</guid>
      <description>Conversando con una diseñadora recientemente, me contaba que aprendió a diseñar web usando Dreamweaver 4, y que aún lo utiliza con esos mismos propósitos. Por mi parte, mi curiosidad me llevó a desmenuzar sitios web enteros para aprender de qué servían esos extraños tags &amp;lt;b&amp;gt;, &amp;lt;body&amp;gt;, &amp;lt;a href&amp;gt; y muchos otros. View Source Code de Netscape era mi mejor amigo en esos años. Destruía más que construía sitios, tratando de entender la lógica por detrás.</description>
      <content>&lt;p&gt;Conversando con una diseñadora recientemente, me contaba que aprendió a &lt;em&gt;diseñar&lt;/em&gt; web usando Dreamweaver 4, y que aún lo utiliza con esos mismos propósitos. Por mi parte, mi curiosidad me llevó a &lt;em&gt;desmenuzar&lt;/em&gt; sitios web enteros para aprender de qué servían esos extraños tags &lt;strong&gt;&amp;lt;b&amp;gt;&lt;/strong&gt;, &lt;strong&gt;&amp;lt;body&amp;gt;&lt;/strong&gt;, &lt;strong&gt;&amp;lt;a href&amp;gt;&lt;/strong&gt; y muchos otros. &lt;em&gt;View Source Code&lt;/em&gt; de Netscape era mi mejor amigo en esos años. Destruía más que construía sitios, tratando de entender la lógica por detrás. Y no fue muy difícil, ya que HTML es bastante primitivo en este aspecto y su forma de constituirse es my simple. Claro, después llegó Macromedia Dreamweaver 1 y Microsoft Frontpage 1, los que me irritaron por lo fácil que hacían construir un sitio.Y rápido. rehaciente, luego caí y comencé a utilizar estos editores &lt;a href=&#34;http://es.wikipedia.org/wiki/WYSIWYG&#34; target=&#34;_blank&#34;&gt;WYSIWYG&lt;/a&gt;, pero nunca dejé de echarle una mirada al codigo. Algo que muchos no hacen.&lt;/p&gt;
&lt;p&gt;Enfin, sigamos con la historia. Esta diseñadora me comentaba que les complicada a ella y sus compañeros de clases utilizar tablas. &lt;strong&gt;Rowspan&lt;/strong&gt;, &lt;strong&gt;colspan&lt;/strong&gt;, &lt;strong&gt;&amp;lt;td&amp;gt;&lt;/strong&gt;, &lt;strong&gt;&amp;lt;tr&amp;gt;&lt;/strong&gt;, &lt;strong&gt;&amp;lt;th&amp;gt;&lt;/strong&gt; etc. Está bien, al principio cuesta imaginarse cómo a medida que se escribe una &lt;strong&gt;&amp;lt;table&amp;gt;&lt;/strong&gt; se arma mentalmente esa estructura. Pero es costumbre, después se hacen como avión. Lo que más me preocupó fue que se enseñara a construir sitios en una universidad utilizando tablas. Y no fue hace mucho tiempo atrás. Me pregunto yo: ¿Se sigue enseñando a construir sitios en universidades latinoamericanas, por globalizar el tema y no enmarcarlo sólo en Chile, mediante el uso de tablas?&lt;/p&gt;
&lt;p&gt;Me intriga conocer la situación actual. Quienes sepan, exprésense en los comentarios.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>JavaScript, Toolkit y demases</title>
      <link>https://csslab.cl/2006/06/23/javascript-toolkit-y-demases/</link>
      <pubDate>Fri, 23 Jun 2006 17:03:28 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/06/23/javascript-toolkit-y-demases/</guid>
      <description>&lt;p&gt;Desde hace ya un tiempo se vienen desarrollando cada vez con más frecuencia aplicaciones web dejando de lado la hegemonía que por años tenía Flash, como herramienta de diseño web. Claro, a los clientes les gusta que sus sitios tengan harto movimiento, así que no los culpo por preferir sitios construídos enteros en esta plataforma vectorial. Con la importancia del posicionamiento en buscadores, se ha hecho necesario un retroceso en pro del uso de DHTML para un mejor acercamiento y entendimiento con los estándares web. Con ello, se ha vuelto a desarrollar con la ayuda de JavaScript, ahora ya no solamente utilizado como un mero &lt;em&gt;script&lt;/em&gt;, sino que orientado a objetos. Y con el movimiento &lt;a href=&#34;http://es.wikipedia.org/wiki/Open_source&#34; target=&#34;_blank&#34;&gt;OpenSouce&lt;/a&gt;, &lt;a href=&#34;http://es.wikipedia.org/wiki/Copyleft&#34; target=&#34;_blank&#34;&gt;CopyLeft&lt;/a&gt;, &lt;a href=&#34;http://es.wikipedia.org/wiki/Creative_commons&#34;&gt;Creative Commons&lt;/a&gt;, etc su uso es público y lo mejor para nosotros diseñadores/desarrolladores: GRATIS. Bastantes son las ventajas que obtenemos a simple vista: efectos de movimiento, de formas, de colores. Y la mecánica por detrás (lo que no se ve) también gana, con menor uso de recursos y flexible construcción de aplicaciones autónomas.&lt;/p&gt;</description>
      <content>&lt;p&gt;Desde hace ya un tiempo se vienen desarrollando cada vez con más frecuencia aplicaciones web dejando de lado la hegemonía que por años tenía Flash, como herramienta de diseño web. Claro, a los clientes les gusta que sus sitios tengan harto movimiento, así que no los culpo por preferir sitios construídos enteros en esta plataforma vectorial. Con la importancia del posicionamiento en buscadores, se ha hecho necesario un retroceso en pro del uso de DHTML para un mejor acercamiento y entendimiento con los estándares web. Con ello, se ha vuelto a desarrollar con la ayuda de JavaScript, ahora ya no solamente utilizado como un mero &lt;em&gt;script&lt;/em&gt;, sino que orientado a objetos. Y con el movimiento &lt;a href=&#34;http://es.wikipedia.org/wiki/Open_source&#34; target=&#34;_blank&#34;&gt;OpenSouce&lt;/a&gt;, &lt;a href=&#34;http://es.wikipedia.org/wiki/Copyleft&#34; target=&#34;_blank&#34;&gt;CopyLeft&lt;/a&gt;, &lt;a href=&#34;http://es.wikipedia.org/wiki/Creative_commons&#34;&gt;Creative Commons&lt;/a&gt;, etc su uso es público y lo mejor para nosotros diseñadores/desarrolladores: GRATIS. Bastantes son las ventajas que obtenemos a simple vista: efectos de movimiento, de formas, de colores. Y la mecánica por detrás (lo que no se ve) también gana, con menor uso de recursos y flexible construcción de aplicaciones autónomas.&lt;/p&gt;
&lt;p&gt;Últimamente he utilizado bastante algunos de estos recursos. Claro, a nivel estético, funcional. A continuación menciono los más importantes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://dojotoolkit.org/&#34; target=&#34;_blank&#34;&gt;Dojo&lt;/a&gt;: open-source JavaScript &lt;em onMouseOver=&#34;toolTip(&#39;set de herramientas&#39;, 200, 70)&#34; onMouseOut=&#34;toolTip()&#34;&gt;toolkit&lt;/em&gt; que facilitan el desarrollo web. Efectos y más.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://moofx.mad4milk.net/&#34; target=&#34;_blank&#34;&gt;moo.fx&lt;/a&gt;: &amp;ldquo;superliviana, ultrapequeña, megachica librería de efectos JavaScript escrito con &lt;a href=&#34;http://prototype.conio.net/&#34; target=&#34;_blank&#34;&gt;Prototype&lt;/a&gt;&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.mochikit.com/&#34; target=&#34;_blank&#34;&gt;MochiKit&lt;/a&gt;: suite de librerías JavaScript altamente &lt;a href=&#34;http://www.mochikit.com/demos.html&#34; target=&#34;_blank&#34;  onMouseOver=&#34;toolTip(&#39;crossbrowser&#39;, 140, 70)&#34; onMouseOut=&#34;toolTip()&#34;&gt;compatible&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://openrico.org/&#34; target=&#34;_blank&#34;&gt;OpenRico&lt;/a&gt;: librería JavaScript open-source para crear contenidos ricos para la web. Soporte para &lt;a href=&#34;http://es.wikipedia.org/wiki/AJAX&#34; target=&#34;_blank&#34;&gt;AJAX&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://script.aculo.us/&#34; target=&#34;_blank&#34;&gt;script.aculo.us&lt;/a&gt;: la más conocida de todas las librerías JavaScript. Fácil de usar, compatible y con &lt;a href=&#34;http://wiki.script.aculo.us/scriptaculous/show/CombinationEffectsDemo&#34; target=&#34;_blank&#34;&gt;atractivos efectos&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://swat.silverorange.com/Swat&#34; target=&#34;_blank&#34;&gt;Swat&lt;/a&gt;: toolkit construído con PHP5.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.huddletogether.com/projects/lightbox/&#34; target=&#34;_blank&#34;&gt;Lightbox&lt;/a&gt;: &amp;ldquo;simple, &lt;em&gt;unobstructivo&lt;/em&gt; script utilizado para sobreponer imágenes en el mismo documento&amp;rdquo;. ¡Adios al popup, al fin!&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.huddletogether.com/projects/lightbox2/&#34; target=&#34;_blank&#34;&gt;Lightbox 2&lt;/a&gt;: idem, pero con mejoras sustanciales.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://jquery.com/demo/thickbox/&#34; target=&#34;_blank&#34;&gt;Thickbox&lt;/a&gt;: con el mismo proncipio anterior, pero ahora puedes abrir contenidos y hasta formularios además de imágenes.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.ryanjlowe.com/?p=9&#34; target=&#34;_blank&#34;&gt;LITBox&lt;/a&gt;: idem pero con mejoras respecto a ThickBox.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://tooltip.crtx.org/index.php?page=Demos&#34; target=&#34;_blank&#34;&gt;Tooltip.js&lt;/a&gt;: tooltip es un útil &lt;em&gt;elemento&lt;/em&gt; que aparece siguiendo el mouse cuando una acción es establecida (por ejemplo, encima de un link). Se puede customizar fácilmente con CSS y se ha transformado en una útil herramienta.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://codylindley.com/Javascript/264/jtip-a-jquery-tool-tip&#34; target=&#34;_blank&#34;&gt;jTip&lt;/a&gt;: otro Tooltip, pero con mejoras en cuanto a la carga y despliegue de mayor contenido.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://cow.neondragon.net/stuff/reflection/&#34; target=&#34;_blank&#34;&gt;reflection.js&lt;/a&gt;: agrega reflejos a tus imágenes rápido y fácil con este efecto JavaScript. Sólo 5KB!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Seguro hay muchos más. Y espero sigan desarrollándose, para un mejor y más compatible desarrollo web. ¿Cuál les gusta más?&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 12</title>
      <link>https://csslab.cl/2006/06/20/lo-vi-y-me-gusto-12/</link>
      <pubDate>Tue, 20 Jun 2006 13:33:05 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/06/20/lo-vi-y-me-gusto-12/</guid>
      <description>#12 – 20 Junio 2006</description>
      <content>&lt;p&gt;#12 – 20 Junio 2006&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.jp33.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/jp33.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.allcusco.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/allcuzco.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.ironmould.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/ironmould.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Podcast 01</title>
      <link>https://csslab.cl/2006/06/06/podcast-01/</link>
      <pubDate>Tue, 06 Jun 2006 14:53:08 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/06/06/podcast-01/</guid>
      <description>Presentando el primer podcast para CSSLab, conmigo mismo como locutor. Un entretenido y estimulante monólogo sobre 3 puntos principales:
 Semántica Aumento de Visitas Muestra en Galerías  Aunque lo grabé hace un par de semanas, creo q aún no está obsoleto. Espero sus comentarios, sugerencias, opiniones, etc.
Descargar Podcast 01 (17mb .zip){.bajar}</description>
      <content>&lt;p&gt;Presentando el primer podcast para CSSLab, conmigo mismo como locutor. Un entretenido y estimulante monólogo sobre 3 puntos principales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Semántica&lt;/li&gt;
&lt;li&gt;Aumento de Visitas&lt;/li&gt;
&lt;li&gt;Muestra en Galerías&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aunque lo grabé hace un par de semanas, creo q aún no está obsoleto. Espero sus comentarios, sugerencias, opiniones, etc.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/podcast/podcast01.zip&#34; title=&#34;Podcast 01&#34;&gt;Descargar Podcast 01 (17mb .zip)&lt;/a&gt;{.bajar}&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Diseño a oscuras</title>
      <link>https://csslab.cl/2006/05/23/diseno-a-oscuras/</link>
      <pubDate>Tue, 23 May 2006 21:46:25 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/05/23/diseno-a-oscuras/</guid>
      <description>&lt;p&gt;La hoja de estilos &lt;em&gt;aural&lt;/em&gt; es comúnmente utilizado por comunidades no-videntes o deficientes visuales, la cual combina sintetizadores de voz e íconos ‘audibles’. Esto se realiza convirtiendo el documento a texto plano, el cual alimenta a un lector de pantalllas (hardware o software), el que simplemente lee todos los caracteres de la pantalla. Esto resulta en una presentación menos efectiva del contenido, pero no menos importante, dado la relevancia de proporcionar accesibilidad a todos los usuarios por igual. Este medio ha funcionado muy bien con archivos de texto (Word), pero su uso en la web ha sido bastante accidentado.&lt;/p&gt;
&lt;p&gt;Además del obvio beneficio a las personas con problemas visuales o de lectura, otros mercados permiten la difusión de este medio: navegadores en automóviles, sistemas de documentación industrial y médica, entretenimento del hogar, o simplemente ayudar a personas con dificultad a aprender a leer.&lt;/p&gt;</description>
      <content>&lt;p&gt;La hoja de estilos &lt;em&gt;aural&lt;/em&gt; es comúnmente utilizado por comunidades no-videntes o deficientes visuales, la cual combina sintetizadores de voz e íconos ‘audibles’. Esto se realiza convirtiendo el documento a texto plano, el cual alimenta a un lector de pantalllas (hardware o software), el que simplemente lee todos los caracteres de la pantalla. Esto resulta en una presentación menos efectiva del contenido, pero no menos importante, dado la relevancia de proporcionar accesibilidad a todos los usuarios por igual. Este medio ha funcionado muy bien con archivos de texto (Word), pero su uso en la web ha sido bastante accidentado.&lt;/p&gt;
&lt;p&gt;Además del obvio beneficio a las personas con problemas visuales o de lectura, otros mercados permiten la difusión de este medio: navegadores en automóviles, sistemas de documentación industrial y médica, entretenimento del hogar, o simplemente ayudar a personas con dificultad a aprender a leer.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;&amp;lt;link href=&#34;aural.css&#34; rel=&#34;stylesheet&#34; type=&#34;text/css&#34; media=&#34;aural&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para utilizar las propiedades aural para la web, se necesitan de 3 dimensiones, las 2 usualmente usadas (X, Y) y la inclusión y manejo del sonido. Propiedades CSS permiten variar la calidad de la voz sintetizada, frecuencia, volumen, etc. Una hoja de estilos aural se vería de la siguiente forma:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;H1, H2 {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;voice-family: male;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;richness: 80;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;cue-before: url(&#34;beep.aiff&#34;);&amp;lt;br /&gt;
 }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para una completa lista de las propiedades y sus usos, &lt;a href=&#34;http://www.knowsystems.com/markup/html/css/aural.html&#34; target=&#34;_blank&#34;&gt;este enlace&lt;/a&gt; es de gran ayuda.&lt;/p&gt;
&lt;h3 id=&#34;iquestpor-queacute-iquesty-para-queacute&#34;&gt;¿Por qué? ¿Y para qué?&lt;/h3&gt;
&lt;p&gt;Son 2 muy buenas preguntas. Y una tercera, mejor aún: ¿Cuánto? Porque desarrollar sitios para ciegos o discapacitados visuales no es fácil, correspondería la creación de una nueva hoja de estilos, simplificar muchos elementos, seleccionar contenido… es un costo que no muchos, de hecho muy pocos están dispuestos a costear. Creo que podemos comenzar por crear una conciencia al respecto, aportar un grano de arena, conociendo y utilizando correctamente los elementos constituitivos del XHTML, como escribí en un &lt;a href=&#34;http://www.csslab.cl/?p=49&#34;&gt;post anterior&lt;/a&gt;, estudiar un poco y saber utilizar la semántica aplicada a la web. Son pequeños pasos que nos ayudarán a construir una web accesible a todos, no sólo a los diferentes browsers, tampoco a las plataformas. A todos quienes tienen el derecho de acceder a la información de Internet. Aún es muy común que diseñadores y desarrolladores incluyan, por ejemplo, imagenes que no sirven más que para soporte (spacer.gif). Esto dificulta la lectura por parte de los lectores de pantalla. Dejar de utilizar &lt;strong&gt;&lt;b&gt;&lt;/strong&gt; para marcar una negrita, ya que este elemento no tiene valor semántico (al igual q &lt;strong&gt;&lt;span&gt;&lt;/strong&gt;); en su lugar se usa &lt;strong&gt;&lt;strong&gt;&lt;/strong&gt; q hace precisamente eso, elevar el tono de la voz (auditivo) y demarcarlo con negrita (visual). &lt;strong&gt;Title&lt;/strong&gt; aporta información extra sobre un elemento. Lectores de pantalla no están obligados a leerlos, pero es ampliamente aceptado y útil, principalmente en links e imágenes.&lt;/p&gt;
&lt;p&gt;Infelizmente el desarrollo de los lectores de pantalla también es lento y no muy acabados, pero es una gran herramienta para quienes no tienen otro medio de contacto con el mundo visual. Por el momento creo que aportar escribiendo código limpio, simple, de fácil lectura (lo que invariablemente nos ayudará en una fluída renderización en los diferentes browsers, así que no se pierde nada con eso) y correcto con los estándares web, son ya un gran paso. El esfuerzo no es mucho, simplemente hacer las cosas bien.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/REC-CSS2/aural.html&#34; target=&#34;_blank&#34;&gt;CSS2 – Aural&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/css3-speech/&#34; target=&#34;_blank&#34;&gt;CSS3 – Speech&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.knowsystems.com/markup/html/css/aural.html&#34; target=&#34;_blank&#34;&gt;Aural Media&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3schools.com/css/css_ref_aural.asp&#34; target=&#34;_blank&#34;&gt;CSS2 Aural Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.ilovejackdaniels.com/design/screen-readers-suck/&#34; target=&#34;_blank&#34;&gt;Screen Readers Sucks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.cuartoderecha.com/?p=206&#34; target=&#34;_blank&#34;&gt;Navegar a ciegas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.tawdis.net/taw3/cms/es&#34; target=&#34;_blank&#34;&gt;Test de Accesibilidad&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 11</title>
      <link>https://csslab.cl/2006/05/11/lo-vi-y-me-gusto-11-2/</link>
      <pubDate>Thu, 11 May 2006 16:50:18 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/05/11/lo-vi-y-me-gusto-11-2/</guid>
      <description>#11 – 11 Mayo 2006</description>
      <content>&lt;p&gt;#11 – 11 Mayo 2006&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.werksentwurf.de/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/werksentwurf.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.honeyjazz.net/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/honeyjazz.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://kimmo.takatalvi.net/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/kimmo.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://fortress.homelinux.com:81/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/fortress.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Desactualización</title>
      <link>https://csslab.cl/2006/05/10/desactualizacion/</link>
      <pubDate>Wed, 10 May 2006 21:12:27 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/05/10/desactualizacion/</guid>
      <description>Quería dejar constancia que estoy bastante consciente de la desactualización que ha tenido este sitio, esto se debe más que nada a la enorme cantidad de proyectos simultáneos en los que estoy en estos momentos, muchos relacionados con la web, otras ideas q estan constantemente en mi cabeza y trato de darles una solución de alguna manera. El más importante es la actualización de mi sitio web ‘corporativo’ Be Studios, donde con 3 otros amigos reunimos nuestros talentos para dar soluciones gráficas a los problemas de los clientes.</description>
      <content>&lt;p&gt;Quería dejar constancia que estoy bastante consciente de la desactualización que ha tenido este sitio, esto se debe más que nada a la enorme cantidad de proyectos simultáneos en los que estoy en estos momentos, muchos relacionados con la web, otras ideas q estan constantemente en mi cabeza y trato de darles una solución de alguna manera. El más importante es la actualización de mi sitio web ‘corporativo’ &lt;strong&gt;Be Studios&lt;/strong&gt;, donde con 3 otros amigos reunimos nuestros talentos para dar soluciones gráficas a los problemas de los clientes. Luego de 5 diferentes versiones y nunca decidirme a terminarlo. estoy prestes a hacerlo, estén atentos.&lt;/p&gt;
&lt;p&gt;Luego más artículos. Gracias por su comprensión.&lt;/p&gt;
&lt;p&gt;Link: &lt;a href=&#34;http://www.be-studios.com/&#34; target=&#34;_blank&#34;&gt;Be Studios&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Inspirando</title>
      <link>https://csslab.cl/2006/04/26/inspirando/</link>
      <pubDate>Wed, 26 Apr 2006 22:23:10 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/04/26/inspirando/</guid>
      <description>Quisiera tomarme un espacio entre los posts de contenidos, para agradecer a los sitios, quienes se han tomado la molestia de incluirme en sus galerías de muestra de sitios construídos con CSS. Es realmente un halago que un trabajo de diseño mío sea dado como ejemplo de buen gusto en cuanto a las formas utilizadas, los colores y un correcto uso de los códigos.
Saludos a todos los webmasters, y gracias nuevamente.</description>
      <content>&lt;p&gt;Quisiera tomarme un espacio entre los posts de contenidos, para agradecer a los sitios, quienes se han tomado la molestia de incluirme en sus galerías de muestra de sitios construídos con CSS. Es realmente un halago que un trabajo de diseño mío sea dado como ejemplo de buen gusto en cuanto a las formas utilizadas, los colores y un correcto uso de los códigos.&lt;/p&gt;
&lt;p&gt;Saludos a todos los webmasters, y gracias nuevamente.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.catalizado.com/?p=14&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/wp-content/catalizado.gif&#34; alt=&#34;Catalizado.com&#34; width=&#34;200&#34; height=&#34;50&#34; border=&#34;0&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://smoothoperator.strund.jp/archives/03personal/css_lab.php&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/wp-content/css_smooth.gif&#34; alt=&#34;CSS Smooth Operator&#34; width=&#34;200&#34; height=&#34;50&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;http://screenspire.com/view/www.csslab.cl/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/wp-content/screninsspire.gif&#34; alt=&#34;ScreenInspire&#34; width=&#34;200&#34; height=&#34;50&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;a href=&#34;http://tom.ma/screenblog/www.csslab.cl&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://csslab.cl/wp-content/tomma.gif&#34; alt=&#34;Tom.Ma&#34; width=&#34;200&#34; height=&#34;50&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Un paseo por la Semántica</title>
      <link>https://csslab.cl/2006/04/12/un-paseo-por-la-semantica/</link>
      <pubDate>Wed, 12 Apr 2006 16:34:55 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/04/12/un-paseo-por-la-semantica/</guid>
      <description>&lt;p&gt;Es la palabra de moda hoy por hoy en la web. Va de la mano con &lt;strong&gt;Web 2.0&lt;/strong&gt; y &lt;strong&gt;AJAX&lt;/strong&gt;. Tratemos de entender esto un poco:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Semántica = estudio del significado de los signos lingüísticos y de sus combinaciones&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;….parecen clases de castellano… Enfin, esto aplicado a la web, se refiere a darle un mayor significado a los elementos constituyentes de la web. Es una web extendida y universal, apoyándose de lenguajes universales y predefinidos. Aclaro: &lt;strong&gt;HTML&lt;/strong&gt; está definido por elementos desde sus inicios. &lt;strong&gt;H1, H3, P, DIV, STRONG, UL&lt;/strong&gt;… todos ellos tienen una razón de ser, y una función específica. Esta función debe ser entendida tanto por el humano (desarrollador) como por la máquina (servidor, softwares). La semántica se trata de saber usar correctamente todos los tags &lt;strong&gt;HTML&lt;/strong&gt;, pasa así evitar sobrecarga de información y hegemoneidad entre ella.&lt;/p&gt;</description>
      <content>&lt;p&gt;Es la palabra de moda hoy por hoy en la web. Va de la mano con &lt;strong&gt;Web 2.0&lt;/strong&gt; y &lt;strong&gt;AJAX&lt;/strong&gt;. Tratemos de entender esto un poco:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Semántica = estudio del significado de los signos lingüísticos y de sus combinaciones&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;….parecen clases de castellano… Enfin, esto aplicado a la web, se refiere a darle un mayor significado a los elementos constituyentes de la web. Es una web extendida y universal, apoyándose de lenguajes universales y predefinidos. Aclaro: &lt;strong&gt;HTML&lt;/strong&gt; está definido por elementos desde sus inicios. &lt;strong&gt;H1, H3, P, DIV, STRONG, UL&lt;/strong&gt;… todos ellos tienen una razón de ser, y una función específica. Esta función debe ser entendida tanto por el humano (desarrollador) como por la máquina (servidor, softwares). La semántica se trata de saber usar correctamente todos los tags &lt;strong&gt;HTML&lt;/strong&gt;, pasa así evitar sobrecarga de información y hegemoneidad entre ella.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;La Web Semántica ayuda a resolver estos dos importantes problemas permitiendo a los usuarios delegar tareas en software. Gracias a la semántica en la Web, el software es capaz de procesar su contenido, razonar con este, combinarlo y realizar deducciones lógicas para resolver problemas cotidianos automáticamente.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;El principal resultado que se palpa con este uso difundido de la web semántica, ayudado del diseño sin tablas y evitando Flash en contenidos, es en la incorporación y posicionamiento en buscadores, principalmente Google. Los spiders que recorren la web y catalogan la información, enviándola devuelta a los servidores respectivos, toman primeramente lo contenido de &lt;strong&gt;&lt;title&gt;, &lt;h1&gt; , &lt;meta&gt;&lt;/strong&gt;, etc. Con ello recopila la mayoría de la información primaria contenida en ese sitio, o página, para después entrar de lleno en &lt;strong&gt;&lt;p&gt;, &lt;strong&gt;, &lt;em&gt;&lt;/strong&gt;, entre otros criterios. Por ello es importante saber de qué se trata cada elemento constituyente del &lt;strong&gt;HTML&lt;/strong&gt;, cuál es su relevancia para los buscadores y cómo utilizarlos correctamente. De esto se trata todo el alarde semántico.&lt;/p&gt;
&lt;p&gt;Manos a la obra, a estudiar un poco más (para eso tienen la mayor biblioteca disponible: Internet) y a hacer sitios más usables.&lt;/p&gt;
&lt;p&gt;Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://es.wikipedia.org/wiki/Web_sem&amp;aacute;ntica&#34; target=&#34;_blank&#34;&gt;Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3c.es/Divulgacion/Guiasbreves/WebSemantica&#34; target=&#34;_blank&#34;&gt;W3C Schools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.dcc.uchile.cl/~cgutierr/websemantica/&#34; target=&#34;_blank&#34;&gt;U. de Chile&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 10</title>
      <link>https://csslab.cl/2006/04/12/lo-vi-y-me-gusto-10/</link>
      <pubDate>Wed, 12 Apr 2006 15:07:24 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/04/12/lo-vi-y-me-gusto-10/</guid>
      <description>#10 – 12 Abril 2006 /* Todos enviados por sus webmasters. Gracias! */</description>
      <content>&lt;p&gt;#10 – 12 Abril 2006 /* Todos enviados por sus webmasters. Gracias! */&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.criaturacreativa.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/ccs.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.elconventodetorrejon.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/torrejon.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://mbuddha.mundoserver.org/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/zensure.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www40.brinkster.com/textident/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/textident.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Posicionando: ejemplos prácticos</title>
      <link>https://csslab.cl/2006/03/30/posicionando-ejemplos-practicos/</link>
      <pubDate>Thu, 30 Mar 2006 13:48:04 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/03/30/posicionando-ejemplos-practicos/</guid>
      <description>Un gran lío en esto de entender el CSS es el tema del posicionamiento: static, absolute, fixed e incluso float son usados para diagramar un sitio y su contenido. En el siguiente link se muestra con ejemplos prácticos cómo se comporta cada uno de estas propiedades, incluso juntas.
link: Learn CSS Positioning in Ten Steps</description>
      <content>&lt;p&gt;Un gran lío en esto de entender el CSS es el tema del posicionamiento: &lt;strong&gt;static&lt;/strong&gt;, &lt;strong&gt;absolute&lt;/strong&gt;, &lt;strong&gt;fixed&lt;/strong&gt; e incluso &lt;strong&gt;float&lt;/strong&gt; son usados para diagramar un sitio y su contenido. En el &lt;a href=&#34;http://barelyfitz.com/screencast/html-training/css/positioning/&#34; target=&#34;_blank&#34;&gt;siguiente link&lt;/a&gt; se muestra con ejemplos prácticos cómo se comporta cada uno de estas propiedades, incluso juntas.&lt;/p&gt;
&lt;p&gt;link: &lt;a href=&#34;http://barelyfitz.com/screencast/html-training/css/positioning/&#34; target=&#34;_blank&#34;&gt;Learn CSS Positioning in Ten Steps&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>CSS Table Gallery</title>
      <link>https://csslab.cl/2006/03/27/css-table-gallery/</link>
      <pubDate>Mon, 27 Mar 2006 21:57:22 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/03/27/css-table-gallery/</guid>
      <description>Envié un estilo para tablas hace no muchos días, y hoy gratamente me doy cuenta que fue bien recibido y publicado en CSS Table Gallery. De ahí mismo se puede echar una mirada al código CSS. Muchas gracias, gente de icant.co.uk!
link: CSS Table Gallery</description>
      <content>&lt;p&gt;Envié un estilo para tablas hace no muchos días, y hoy gratamente me doy cuenta que fue bien recibido y publicado en &lt;a href=&#34;http://icant.co.uk/csstablegallery/index.php?css=72#r72&#34; target=&#34;_blank&#34;&gt;CSS Table Gallery&lt;/a&gt;. De ahí mismo se puede echar una mirada al código CSS. Muchas gracias, gente de icant.co.uk!&lt;/p&gt;
&lt;p&gt;link: &lt;a href=&#34;http://icant.co.uk/csstablegallery/index.php?css=72#r72&#34; target=&#34;_blank&#34;&gt;CSS Table Gallery&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 9</title>
      <link>https://csslab.cl/2006/03/27/lo-vi-y-me-gusto-9/</link>
      <pubDate>Mon, 27 Mar 2006 13:39:31 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/03/27/lo-vi-y-me-gusto-9/</guid>
      <description>#9 – 27 Marzo 2006</description>
      <content>&lt;p&gt;#9 – 27 Marzo 2006&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.lignanoweb.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/lignano.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.cynaskyweb.it/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/cynasky.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.openyourweb.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/openyourweb.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Consejos para un desarrollo web exitoso</title>
      <link>https://csslab.cl/2006/03/21/15-consejos-para-un-desarrollo-web-exitoso/</link>
      <pubDate>Tue, 21 Mar 2006 15:42:11 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/03/21/15-consejos-para-un-desarrollo-web-exitoso/</guid>
      <description>&lt;p&gt;Tras años de diseño y desarrollo web para diferentes clientes e incluso para mí mismo, hasta no hace mucho que se ha creado una conciencia global en cuanto a regirse por las normas que impone ciertas organizaciones que como la &lt;a href=&#34;http://www.w3c.org/&#34; target=&#34;_blank&#34;&gt;W3C&lt;/a&gt;, hacen precisamente eso: marcar la cancha en cuanto a lo que de semántica se trata. Desde el boom de Google, que la gente, los empresarios, han valorado lo que significa estar bien posicionado en un buscador. Aparecer antes que todos, significa ventas. Y si de dinero se trata, vale la pena pagar un poco más por un sitio mejor hecho y que sea amigable para los &lt;a href=&#34;http://es.wikipedia.org/wiki/Motor_de_b&amp;uacute;squeda&#34; target=&#34;_blank&#34;&gt;spiders&lt;/a&gt; que lo visitan cada cuanto. Así que &lt;a href=&#34;http://www.alvit.de/blog/article/20-rules-of-smart-and-successful-web-development-and-web-design&#34; target=&#34;_blank&#34;&gt;leyendo un artículo&lt;/a&gt;, me propuse a traducir y completar unos cuantos tips para el diseño y desarrollo web exitoso:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Respeta tus visitantes:&lt;/strong&gt; no trates de obligarlos a leer el contenido de tu sitio web. Déjalos escojer y decidir lo que quieren leer. Si tienes algo que decir, encontrarás a quienes te lean. Es increíble que el tema más absurdo, bizzarro, irracional, tiene llegada en cualquier parte del mundo. Porque hay que pensar global. De aquí viene la siguiente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Piensa global:&lt;/strong&gt; si estás en Internet, estás para el mundo. En lo posible, trata de poner tu sitio en más de un idioma, dependiendo del target que tienes pesado para tu sitio. No pienses que sólo necesitas contactar a los de tu ciudad, también de tu país, o a todos los hispanohablantes. Un error típico en &lt;em&gt;Contacto&lt;/em&gt;, es poner el número de teléfono sin el código de ciudad o de país. De ahí nadie sabe dónde estás localizado. Y más enccima tienes un .com …..&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <content>&lt;p&gt;Tras años de diseño y desarrollo web para diferentes clientes e incluso para mí mismo, hasta no hace mucho que se ha creado una conciencia global en cuanto a regirse por las normas que impone ciertas organizaciones que como la &lt;a href=&#34;http://www.w3c.org/&#34; target=&#34;_blank&#34;&gt;W3C&lt;/a&gt;, hacen precisamente eso: marcar la cancha en cuanto a lo que de semántica se trata. Desde el boom de Google, que la gente, los empresarios, han valorado lo que significa estar bien posicionado en un buscador. Aparecer antes que todos, significa ventas. Y si de dinero se trata, vale la pena pagar un poco más por un sitio mejor hecho y que sea amigable para los &lt;a href=&#34;http://es.wikipedia.org/wiki/Motor_de_b&amp;uacute;squeda&#34; target=&#34;_blank&#34;&gt;spiders&lt;/a&gt; que lo visitan cada cuanto. Así que &lt;a href=&#34;http://www.alvit.de/blog/article/20-rules-of-smart-and-successful-web-development-and-web-design&#34; target=&#34;_blank&#34;&gt;leyendo un artículo&lt;/a&gt;, me propuse a traducir y completar unos cuantos tips para el diseño y desarrollo web exitoso:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Respeta tus visitantes:&lt;/strong&gt; no trates de obligarlos a leer el contenido de tu sitio web. Déjalos escojer y decidir lo que quieren leer. Si tienes algo que decir, encontrarás a quienes te lean. Es increíble que el tema más absurdo, bizzarro, irracional, tiene llegada en cualquier parte del mundo. Porque hay que pensar global. De aquí viene la siguiente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Piensa global:&lt;/strong&gt; si estás en Internet, estás para el mundo. En lo posible, trata de poner tu sitio en más de un idioma, dependiendo del target que tienes pesado para tu sitio. No pienses que sólo necesitas contactar a los de tu ciudad, también de tu país, o a todos los hispanohablantes. Un error típico en &lt;em&gt;Contacto&lt;/em&gt;, es poner el número de teléfono sin el código de ciudad o de país. De ahí nadie sabe dónde estás localizado. Y más enccima tienes un .com …..&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mala publicidad es mala:&lt;/strong&gt; popups y layers invasivos ya están pasados de moda, si es que algún día lo estuvieron. Dedicarle espacios específicos y claros en el sitio para la publicidad es lo recomendable. Tratar de fusionarlos con el contenido, para así persuadir y lograr algunos centavos más con &lt;a href=&#34;https://www.google.com/adsense/?hl=es&#34; target=&#34;_blank&#34;&gt;AdSense&lt;/a&gt; se usa mucho en estos días.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Desarrolla tu propio estilo:&lt;/strong&gt; inspírate, navega mucho, pero trata de no copiar. Diseños atractivos hay por montones, y copias de los mismos son exponenciales. Te destacarás más si es algo original y propio. Y atraerás más variedad de visitantes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Respeta los standarts:&lt;/strong&gt; es el tema que está en boga. Y no es para menos: siguiendo las reglas y recomendaciones normadas, lograremos una &lt;em&gt;sociedad web&lt;/em&gt; que fluya en sincronía. Tarde o temprano, todos se subirán a este tren. Y si tu código es bien hecho, lograrás buena visualización con los browsers venideros. Títulos con &lt;strong&gt;&lt;h1&gt;&lt;/strong&gt;, párrrafos con &lt;strong&gt;&lt;p&gt;&lt;/strong&gt;, links con &lt;strong&gt;title=&amp;quot;&amp;quot;&lt;/strong&gt; entre muchas otras. Sáquense el estigma del ‘programador’ y aprendan del buen &lt;strong&gt;XHTML&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Odia IE, pero no ignores sus usuarios:&lt;/strong&gt; todos saben el mal trabajo que han hecho en Microsoft con su browser &lt;em&gt;estrella a la fuerza&lt;/em&gt;. Si tienes un código bien estructurado, no tendrás muchos problemas con IE. Trata de evitar los hacks, usándolos sólo si es la última opción. Al parecer van a acertar con IE7, pero nosé que pasará con todos los sitios modificados para verse en IE6 e incluso IE5….&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Preocúpate del contenido:&lt;/strong&gt; trata de hacer tu sitio informativo, que tenga buena &lt;a href=&#34;http://es.wikipedia.org/wiki/Accesibilidad&#34; target=&#34;_blank&#34;&gt;accesibilidad&lt;/a&gt;, lectura y &lt;a href=&#34;http://es.wikipedia.org/wiki/Usabilidad&#34; target=&#34;_blank&#34;&gt;usabilidad&lt;/a&gt;. Tus visitantes recordarán que algo interesante leyeron ahí, y volverán por ello. Mostrar lo que quieren ver es esencial.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;No te desesperes por posicionarte:&lt;/strong&gt; es importante tener un código limpio y ordenado, así los buscadores sabrán cómo y dónde encontrarte. &lt;strong&gt;META&lt;/strong&gt; tag’s son importantes, pero más aún es tener contenido relevante, artículos importantes que destaquen. Esos durarán mientras tu sitio exista, y es el mejor posicionador en buscadores. Si es posible, llama a los lectores que comenten. Crear un diálogo es lo que falta en este mundo, aunque sea cibernético.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Contacta, pero no bombardees:&lt;/strong&gt; deja que quienes están interesados se preocupen por tu contenido. Primero define tu potencial clientela. Luego observa quiénes estarían interesados en tu producto. Luego contáctalos, describiendo las ventajas de tu servicio / producto. Ofrece algo útil y llamativo, no satures la paciencia y el tiempo de tu potencial cliente. Sólo lograrás alejarlo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;No tengas miedo a preguntar:&lt;/strong&gt; no creas que lo sabes todo. Siempre se puede seguir aprendiendo, y hay mucha gente dispuesta a compartir sus conocimientos. Imagínate que no eres el único con la misma duda. Tienes a toda una biblioteca para consultar, busca en Google, visita foros, haz notar tu inquietud.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Contesta tus e-mails de inmediato:&lt;/strong&gt; no te demores en contestar las dudas de tus visitantes, por más burda que sean. Sé amable, es algo que falta en la sociedad web. Trata de evitar las respuestas automáticas. La gente ya no quiere hablar con máquinas, quiere contacto con humanos. Piensa que han gastado tiempo en buscarte, leerte y escribirte. Dedica algo de tu tiempo a lo mismo, causando una impresión positiva.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Haz vida social:&lt;/strong&gt; hay un montón de sitios que manejan bookmarks online, y no puedes perder la oportunidad de mostrarte en ellos. &lt;a href=&#34;http://www.digg.com&#34; target=&#34;_blank&#34;&gt;Digg&lt;/a&gt;, &lt;a href=&#34;http://www.reddit.com&#34; target=&#34;_blank&#34;&gt;Reddit&lt;/a&gt;, &lt;a href=&#34;http://www.furl.net&#34; target=&#34;_blank&#34;&gt;Furl&lt;/a&gt;, &lt;a href=&#34;http://del.icio.us/&#34; target=&#34;_blank&#34;&gt;del.icio.us&lt;/a&gt;, &lt;a href=&#34;http://ma.gnolia.com/&#34; target=&#34;_blank&#34;&gt;Ma.gnolia&lt;/a&gt; son sólo algunos de ellos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Haz conexiones:&lt;/strong&gt; diseñadores creativos son siempre mostrados. Si crees que tu trabajo vale la pena exhibirlo, hay varias galerías de webdesign: &lt;a href=&#34;http://www.cssimport.com/&#34; target=&#34;_blank&#34;&gt;CSS Import&lt;/a&gt;, &lt;a href=&#34;http://www.webcreme.com/&#34; target=&#34;_blank&#34;&gt;WebCreme&lt;/a&gt;, &lt;a href=&#34;http://www.catalizado.com&#34; target=&#34;_blank&#34;&gt;Catalizado&lt;/a&gt;, &lt;a href=&#34;http://www.pixelmakers.net&#34; target=&#34;_blank&#34;&gt;Pixelmakers&lt;/a&gt; son sólo algunos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;No linkees cada palabra en tu artículo:&lt;/strong&gt; esto es para los blogs. &lt;a href=&#34;&#34;&gt;Tratan&lt;/a&gt; de &lt;a href=&#34;&#34;&gt;linkear&lt;/a&gt; &lt;a href=&#34;&#34;&gt;cada&lt;/a&gt; palabra a una &lt;a href=&#34;&#34;&gt;referencia&lt;/a&gt; &lt;a href=&#34;&#34;&gt;externa&lt;/a&gt;, y al &lt;a href=&#34;&#34;&gt;final&lt;/a&gt; queda &lt;a href=&#34;&#34;&gt;un arcoiris&lt;/a&gt; de &lt;a href=&#34;&#34;&gt;texto&lt;/a&gt;, dependiendo de la hoja de estilos del sitio. Escoge ideas, frases, términos que crees son importantes de dar una segunda vuelta. Busca en Wikipedia, o relaciónalos con artículos que realmente aportan a lo que quieres expresar.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cree en lo que estás haciendo:&lt;/strong&gt; nada de lo escrito hasta aquí ayudará si no crees en lo que haces, si no te gusta lo que diseñas o desarrollas. Trata de que siempre sea un aporte. Y si hay sitios similares, diferénciate y destácate en algo.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Ejemplos de menúes con listas</title>
      <link>https://csslab.cl/2006/03/09/ejemplos-de-menues-con-listas/</link>
      <pubDate>Thu, 09 Mar 2006 13:05:47 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/03/09/ejemplos-de-menues-con-listas/</guid>
      <description>Listamatic, un excelente link donde se muestran variados ejemplos de menúes construídos con ‘s: verticales, horizontales, tabbed, experimentales…. con código incluído. Para aprender, y para sacar de aprietos.</description>
      <content>&lt;p&gt;&lt;a href=&#34;http://css.maxdesign.com.au/listamatic/&#34; target=&#34;_blank&#34;&gt;Listamatic&lt;/a&gt;, un excelente link donde se muestran variados ejemplos de menúes construídos con &lt;strong&gt;&lt;li&gt;&lt;/strong&gt;‘s: verticales, horizontales, tabbed, experimentales…. con código incluído. Para aprender, y para sacar de aprietos.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>CSS para móviles</title>
      <link>https://csslab.cl/2006/03/07/css-para-moviles/</link>
      <pubDate>Tue, 07 Mar 2006 19:41:58 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/03/07/css-para-moviles/</guid>
      <description>&lt;p&gt;Un gran mercado que en Chile está despegando, lentamente dado en parte por el alto costo de la tecnología y los teléfonos móviles que la soportan, es el del &lt;strong&gt;webdesign para móviles&lt;/strong&gt;. En general, del diseño de multimedios orientado para dispositivos móviles: teléfonos, PDA’s, etc. Por ello, es imprescindible que los diseñadores sepan que existe esta posibilidad, que está abierta a ser utilizada y que no es nada del otro mundo implementarla. Si ya tienes tu sitio &lt;a href=&#34;http://en.wikipedia.org/wiki/Tableless&#34; target=&#34;_blank&#34;&gt;tableless&lt;/a&gt;, es cosa de ‘esconder’ algunos &lt;strong&gt;div&lt;/strong&gt;‘s para que no sean desplegados, y formatar algunos espacios para el ancho de pantalla del móvil.&lt;/p&gt;
&lt;h3 id=&#34;tamantildeos-de-pantallas&#34;&gt;Tamaños de pantallas:&lt;/h3&gt;
&lt;p&gt;Aquí comienzan los problemas. Claro, nada es perfecto. La mayoría de las pantallas son verticales; las menos apaisadas, y menos aún las que puedes escoger entre ellas. El tamaño más común hoy en dia corresponden a 176 x 208px. Algunos más antigos tienden al cuadrado (128 x 128px y 120 x 144px). PDA’s usualmente usan VGA (480 x 640px). Otros tamaños comunes son de 200 x 640px y 320 x 640px.&lt;/p&gt;</description>
      <content>&lt;p&gt;Un gran mercado que en Chile está despegando, lentamente dado en parte por el alto costo de la tecnología y los teléfonos móviles que la soportan, es el del &lt;strong&gt;webdesign para móviles&lt;/strong&gt;. En general, del diseño de multimedios orientado para dispositivos móviles: teléfonos, PDA’s, etc. Por ello, es imprescindible que los diseñadores sepan que existe esta posibilidad, que está abierta a ser utilizada y que no es nada del otro mundo implementarla. Si ya tienes tu sitio &lt;a href=&#34;http://en.wikipedia.org/wiki/Tableless&#34; target=&#34;_blank&#34;&gt;tableless&lt;/a&gt;, es cosa de ‘esconder’ algunos &lt;strong&gt;div&lt;/strong&gt;‘s para que no sean desplegados, y formatar algunos espacios para el ancho de pantalla del móvil.&lt;/p&gt;
&lt;h3 id=&#34;tamantildeos-de-pantallas&#34;&gt;Tamaños de pantallas:&lt;/h3&gt;
&lt;p&gt;Aquí comienzan los problemas. Claro, nada es perfecto. La mayoría de las pantallas son verticales; las menos apaisadas, y menos aún las que puedes escoger entre ellas. El tamaño más común hoy en dia corresponden a 176 x 208px. Algunos más antigos tienden al cuadrado (128 x 128px y 120 x 144px). PDA’s usualmente usan VGA (480 x 640px). Otros tamaños comunes son de 200 x 640px y 320 x 640px.&lt;/p&gt;
&lt;h3 id=&#34;peso-de-imaacutegenes&#34;&gt;Peso de imágenes:&lt;/h3&gt;
&lt;p&gt;La mayoría de los móviles no soportan millones de colores, como las pantallas. así que usar GIF en 32 colores, bien manejados, será suficiente. Simplificar al máximo los tonos utilizados será importante, ya que la pequeña pantalla y las condiciones en que el sitio será visto (en oscuro, a contraluz, caminando, acostado, etc.) no serán las mismas que en un computador, donde lo que se pretende es tener la mejor orientación posible del monitor.&lt;/p&gt;
&lt;h3 id=&#34;browsers&#34;&gt;Browsers:&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;http://www.opera.com/products/mobile/products/&#34; target=&#34;_blank&#34;&gt;Opera&lt;/a&gt; lleva la delantera. Sus browsers v7 han destacado por su simplicidad, y se presentan con gran cobertura en sus diferentes soportes: &lt;a href=&#34;http://en.wikipedia.org/wiki/Symbian&#34; target=&#34;_blank&#34;&gt;Symbian&lt;/a&gt;, &lt;a href=&#34;http://msdn.microsoft.com/embedded/windowsce/default.aspx&#34; target=&#34;_blank&#34;&gt;Windows CE&lt;/a&gt;. Además, tiene buen soporte y renderizado de CSS 2.&lt;/p&gt;
&lt;h3 id=&#34;adaptando-tu-sitio&#34;&gt;Adaptando tu sitio:&lt;/h3&gt;
&lt;p&gt;Tan fácil como crear una nueva hoja de estilos. Aquí, deberás simplificar el contenido, mostrando sólo lo importante y esencial que quieres que el usuario vea. Nada de parafernalia. Importante es darle la propiedad al HTML que pertenezca a esta nueva hoja de estilo. A continuación:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Screen:&lt;/strong&gt; para desktops&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt; &amp;lt;link rel=&amp;rdquo;stylesheet&amp;rdquo; type=&amp;rdquo;text/css&amp;rdquo; href=&amp;rdquo;pantalla.css&amp;rdquo; media=&amp;rdquo;screen&amp;rdquo; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;HandHelds:&lt;/strong&gt; para celulares, PDA´s, etc&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt; &amp;lt;link rel=&amp;rdquo;stylesheet&amp;rdquo; type=&amp;rdquo;text/css&amp;rdquo; href=&amp;rdquo;moviles.css&amp;rdquo; media=&amp;rdquo;handheld&amp;rdquo; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;display: none;&lt;/strong&gt; es lo que usarás para ocultar &lt;strong&gt;div&lt;/strong&gt;, &lt;strong&gt;p&lt;/strong&gt; o lo que sea necesario. Mejor dicho, no necesario. Por ejemplo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#super_imagen {&amp;lt;br /&gt;
   display: none;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No necesitamos que una imagen gigante se van en nuestro celular. No lo queremos tampoco.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;width: 240px;&lt;/strong&gt; será necesario formatear el ancho al deseado. &lt;strong&gt;max-width: 208px;&lt;/strong&gt; también es importante, ya que permite que la columna o el contenedor no se pase de ese ancho.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;body {&amp;lt;br /&gt;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;max-width: 208px;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;probaacutendolo&#34;&gt;Probándolo:&lt;/h3&gt;
&lt;p&gt;No necesitas utilizar un celular para ello. &lt;a href=&#34;http://www.opera.com/products/mobile/dev/multiple/&#34; target=&#34;_blank&#34;&gt;Opera&lt;/a&gt; trae una opción llamada &lt;em&gt;Small Screen&lt;/em&gt;, donde te permite visualizar tu sitio con el &lt;strong&gt;media=&amp;ldquo;handheld&amp;rdquo;&lt;/strong&gt;. Muy útil.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://my.opera.com/community/dev/device/writing/&#34; target=&#34;_blank&#34;&gt;&lt;a href=&#34;http://my.opera.com/community/dev/device/writing/&#34;&gt;http://my.opera.com/community/dev/device/writing/&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.opera.com/products/mobile/dev/multiple/&#34; target=&#34;_blank&#34;&gt;&lt;a href=&#34;http://www.opera.com/products/mobile/dev/multiple/&#34;&gt;http://www.opera.com/products/mobile/dev/multiple/&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 8</title>
      <link>https://csslab.cl/2006/03/06/lo-vi-y-me-gusto-8/</link>
      <pubDate>Mon, 06 Mar 2006 19:21:48 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/03/06/lo-vi-y-me-gusto-8/</guid>
      <description>#8 – 06 Marzo 2006</description>
      <content>&lt;p&gt;#8 – 06 Marzo 2006&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.carloscabrera.com.ar/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/carloscabrera.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.tclo.be/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/tennisclub.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://regularworld.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/regulars.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Usa cualquier Fuente con CSS</title>
      <link>https://csslab.cl/2006/02/24/usa-cualquier-con-css/</link>
      <pubDate>Fri, 24 Feb 2006 17:19:03 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/02/24/usa-cualquier-con-css/</guid>
      <description>&lt;p&gt;¿Cansado de usar las mismas tipografías por defecto? Tuviste que cambiarte a &lt;a href=&#34;http://www.macromedia.com/software/flash/flashpro/&#34; target=&#34;_blank&#34;&gt;Flash&lt;/a&gt; por este motivo? Pues hay un antiguo método para que puedas utilizar cualquier fuente &lt;a href=&#34;http://en.wikipedia.org/wiki/Truetype&#34; target=&#34;_blank&#34;&gt;TrueType&lt;/a&gt; en un sitio construído en HTML. Es bastante simple, pero necesita de algunos pasos previos y ciertos conocimientos. Démosle:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Porqué encrustar una fuente?&lt;/strong&gt;&lt;br&gt;
Una tipografía es un recurso del sistema operativo, no del browser. Si diseñas y construyen un sitio web localmente, en tu computador, utilizando una fuente no típica, por ejemplo, &lt;a href=&#34;http://upload.wikimedia.org/wikipedia/en/9/9f/Futura_proper.png&#34; target=&#34;_blank&#34;&gt;Futura&lt;/a&gt;, la podrás visualizar sin problemas. Pero no quien la visita y no la tiene instalada. Aquí comienzan los problemas. &lt;a href=&#34;http://www.macromedia.com/software/flash/flashpro/&#34; target=&#34;_blank&#34;&gt;Flash&lt;/a&gt; fue durante mucho tiempo muy utilizado por esto, ya que permite ‘incrustar’ la fuente en al ingresarla como &lt;em&gt;Static Text&lt;/em&gt;, y en el caso de la caja de texto ser dinámica, permite incluirla entera, o ciertos caracteres (lo que aliviana el peso del &lt;a href=&#34;http://en.wikipedia.org/wiki/Swf&#34; target=&#34;_blank&#34;&gt;&lt;em&gt;swf&lt;/em&gt;&lt;/a&gt; final). Pero con el crecimiento del uso de CSS en la web, se puede percibir claramente que se puede construir todo lo que hace &lt;a href=&#34;http://www.macromedia.com/software/flash/flashpro/&#34; target=&#34;_blank&#34;&gt;Flash&lt;/a&gt; (bueno, casi todo) con &lt;strong&gt;AJAX&lt;/strong&gt; y otros trucos. Y esto mucho más liviano, quizás algo más difícil. Lo que hace el uso de &lt;em&gt;Javascript&lt;/em&gt; aún exclusivo para desarrolladores, y no tan divulgado entre diseñadores. Pero bueno, esto es materia para otro artículo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Porqué no incluir una fuente?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Esto sólo funciona en &lt;strong&gt;IE 4+&lt;/strong&gt; y &lt;strong&gt;Netscape 5+&lt;/strong&gt;. Si cierto &lt;em&gt;browser&lt;/em&gt; no la reconoce, ignoran el código.&lt;/li&gt;
&lt;li&gt;Aumenta el peso del sitio, ya que al incluir la tipografía, dependiendo de ella pueden ser desde 20kb hasta 500kb cada una. Si no sabes optimizar la cantidad de caracteres necesarios a ser utilizados, mejor olvídate de esto.&lt;/li&gt;
&lt;li&gt;Es inseguro. Por lo menos eso es lo que creen los browsers, al tener que bajar una fuente para visualizar un sitio el browser lo encontrará inseguro y advertirá de ello. Un usuario común suele tener miedo a estos mensajes de advertencia, más aún por la moda actual de ataques de &lt;a href=&#34;http://es.wikipedia.org/wiki/Spam&#34; target=&#34;_blank&#34;&gt;spamware&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Es necesario el uso de un software especial para convertir una fuente &lt;a href=&#34;http://en.wikipedia.org/wiki/Truetype&#34; target=&#34;_blank&#34;&gt;TrueType&lt;/a&gt; .ttf en &lt;a href=&#34;http://msdn.microsoft.com/workshop/author/fontembed/font_embed.asp#Embedded_Font_Techno&#34; target=&#34;_blank&#34;&gt;Embeddable Open Type&lt;/a&gt; .eot.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Me preocupan más los contras que los pro, así que para mí no es una opción. Sólo si necesito un caracter muy especial y no puedo utilizar un gif. Así que en este artículo mi intención es sólo mostrar que existe esta posibilidad y cómo se hace. No explicaré más allá, o paso a paso.&lt;/p&gt;</description>
      <content>&lt;p&gt;¿Cansado de usar las mismas tipografías por defecto? Tuviste que cambiarte a &lt;a href=&#34;http://www.macromedia.com/software/flash/flashpro/&#34; target=&#34;_blank&#34;&gt;Flash&lt;/a&gt; por este motivo? Pues hay un antiguo método para que puedas utilizar cualquier fuente &lt;a href=&#34;http://en.wikipedia.org/wiki/Truetype&#34; target=&#34;_blank&#34;&gt;TrueType&lt;/a&gt; en un sitio construído en HTML. Es bastante simple, pero necesita de algunos pasos previos y ciertos conocimientos. Démosle:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Porqué encrustar una fuente?&lt;/strong&gt;&lt;br&gt;
Una tipografía es un recurso del sistema operativo, no del browser. Si diseñas y construyen un sitio web localmente, en tu computador, utilizando una fuente no típica, por ejemplo, &lt;a href=&#34;http://upload.wikimedia.org/wikipedia/en/9/9f/Futura_proper.png&#34; target=&#34;_blank&#34;&gt;Futura&lt;/a&gt;, la podrás visualizar sin problemas. Pero no quien la visita y no la tiene instalada. Aquí comienzan los problemas. &lt;a href=&#34;http://www.macromedia.com/software/flash/flashpro/&#34; target=&#34;_blank&#34;&gt;Flash&lt;/a&gt; fue durante mucho tiempo muy utilizado por esto, ya que permite ‘incrustar’ la fuente en al ingresarla como &lt;em&gt;Static Text&lt;/em&gt;, y en el caso de la caja de texto ser dinámica, permite incluirla entera, o ciertos caracteres (lo que aliviana el peso del &lt;a href=&#34;http://en.wikipedia.org/wiki/Swf&#34; target=&#34;_blank&#34;&gt;&lt;em&gt;swf&lt;/em&gt;&lt;/a&gt; final). Pero con el crecimiento del uso de CSS en la web, se puede percibir claramente que se puede construir todo lo que hace &lt;a href=&#34;http://www.macromedia.com/software/flash/flashpro/&#34; target=&#34;_blank&#34;&gt;Flash&lt;/a&gt; (bueno, casi todo) con &lt;strong&gt;AJAX&lt;/strong&gt; y otros trucos. Y esto mucho más liviano, quizás algo más difícil. Lo que hace el uso de &lt;em&gt;Javascript&lt;/em&gt; aún exclusivo para desarrolladores, y no tan divulgado entre diseñadores. Pero bueno, esto es materia para otro artículo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Porqué no incluir una fuente?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Esto sólo funciona en &lt;strong&gt;IE 4+&lt;/strong&gt; y &lt;strong&gt;Netscape 5+&lt;/strong&gt;. Si cierto &lt;em&gt;browser&lt;/em&gt; no la reconoce, ignoran el código.&lt;/li&gt;
&lt;li&gt;Aumenta el peso del sitio, ya que al incluir la tipografía, dependiendo de ella pueden ser desde 20kb hasta 500kb cada una. Si no sabes optimizar la cantidad de caracteres necesarios a ser utilizados, mejor olvídate de esto.&lt;/li&gt;
&lt;li&gt;Es inseguro. Por lo menos eso es lo que creen los browsers, al tener que bajar una fuente para visualizar un sitio el browser lo encontrará inseguro y advertirá de ello. Un usuario común suele tener miedo a estos mensajes de advertencia, más aún por la moda actual de ataques de &lt;a href=&#34;http://es.wikipedia.org/wiki/Spam&#34; target=&#34;_blank&#34;&gt;spamware&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Es necesario el uso de un software especial para convertir una fuente &lt;a href=&#34;http://en.wikipedia.org/wiki/Truetype&#34; target=&#34;_blank&#34;&gt;TrueType&lt;/a&gt; .ttf en &lt;a href=&#34;http://msdn.microsoft.com/workshop/author/fontembed/font_embed.asp#Embedded_Font_Techno&#34; target=&#34;_blank&#34;&gt;Embeddable Open Type&lt;/a&gt; .eot.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Me preocupan más los contras que los pro, así que para mí no es una opción. Sólo si necesito un caracter muy especial y no puedo utilizar un gif. Así que en este artículo mi intención es sólo mostrar que existe esta posibilidad y cómo se hace. No explicaré más allá, o paso a paso.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conversión de la tipografía:&lt;/strong&gt;&lt;br&gt;
El estándart es propio de Microsoft (más un motivo para no utilizarlo). El software &lt;a href=&#34;http://www.microsoft.com/typography/web/embedding/weft3/default.htm&#34; target=&#34;_blank&#34;&gt;WEFT&lt;/a&gt; convierte la tipografía en un .eot, lo que permite ser bajado y leído por IE.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Código: agregando la fuente:&lt;/strong&gt;&lt;br&gt;
El CSS utilizado quí es bastante simple, por lo que no debería dar mayores problemas:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;@font-face {&amp;lt;br /&gt;
  font-family: &#34;LaMiaOriginal&#34;;&amp;lt;br /&gt;
  src: url(LaMiaOriginal.eot);&amp;lt;br /&gt;
  }&amp;lt;br /&gt;
H1 {&amp;lt;br /&gt;
  font-family: &#34;LaMiaOriginal&#34;, &#34;Verdana&#34;, sans-serif;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Siempre es bueno además agragar una tipografía estándart en &lt;strong&gt;font-family&lt;/strong&gt;, ya que en caso de error en la tipografía que estás incrustando, se depliega la que más se parezca, definido por el diseñador.&lt;/p&gt;
&lt;p&gt;El resto queda por cuenta de cada diseño.&lt;/p&gt;
&lt;p&gt;Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://msdn.microsoft.com/workshop/author/fontembed/font_embed.asp#Embedded_Font_Techno&#34; target=&#34;_blank&#34;&gt;Microsoft: About Font Embedding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.microsoft.com/typography/web/embedding/weft3/default.htm&#34; target=&#34;_blank&#34;&gt;WEFT 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Menú horizontal y algo &#43;</title>
      <link>https://csslab.cl/2006/02/20/menu-horizontal-y-algo/</link>
      <pubDate>Mon, 20 Feb 2006 21:35:03 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/02/20/menu-horizontal-y-algo/</guid>
      <description>&lt;p&gt;Debido al pedido del público fiel lector de &lt;strong&gt;CSSLab&lt;/strong&gt;, me puse las pilas y anoto un artículo más con una vieja pero nunca mal ponderada técnica para construir menús de listas horizontal (usando &lt;strong&gt;&lt;ul&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;li&gt;&lt;/strong&gt;), pero en esta oportunidad le agregaremos un &lt;em&gt;rollover&lt;/em&gt;, ya q he recibido la inquietud de parte de &lt;a href=&#34;http://www.escritorasyescrituras.com/&#34; target=&#34;_blank&#34;&gt;Bane&lt;/a&gt; de cómo aplicar el artículo anterior ‘&lt;a href=&#34;http://www.csslab.cl/?p=19&#34; target=&#34;_blank&#34;&gt;Rápidos rollovers con CSS&lt;/a&gt;‘ en este tipo de despliegue. Vayamos al grano:&lt;/p&gt;
&lt;p&gt;Lo primero es lo primero: creamos el menú con 1 &lt;strong&gt;&lt;div&gt;&lt;/strong&gt;, 1 &lt;strong&gt;&lt;ul&gt;&lt;/strong&gt; y varios &lt;strong&gt;&lt;li&gt;&lt;/strong&gt;‘s:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;menu&#34;&amp;gt;
   &amp;lt;ul&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;M&amp;aacute;s Izquierda&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Izquierda&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Derecha&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;M&amp;aacute;s derecha&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
   &amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Le vamos a dar color y forma a esto. Agregando estilo a &lt;strong&gt;#menu&lt;/strong&gt;:&lt;/p&gt;</description>
      <content>&lt;p&gt;Debido al pedido del público fiel lector de &lt;strong&gt;CSSLab&lt;/strong&gt;, me puse las pilas y anoto un artículo más con una vieja pero nunca mal ponderada técnica para construir menús de listas horizontal (usando &lt;strong&gt;&lt;ul&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;li&gt;&lt;/strong&gt;), pero en esta oportunidad le agregaremos un &lt;em&gt;rollover&lt;/em&gt;, ya q he recibido la inquietud de parte de &lt;a href=&#34;http://www.escritorasyescrituras.com/&#34; target=&#34;_blank&#34;&gt;Bane&lt;/a&gt; de cómo aplicar el artículo anterior ‘&lt;a href=&#34;http://www.csslab.cl/?p=19&#34; target=&#34;_blank&#34;&gt;Rápidos rollovers con CSS&lt;/a&gt;‘ en este tipo de despliegue. Vayamos al grano:&lt;/p&gt;
&lt;p&gt;Lo primero es lo primero: creamos el menú con 1 &lt;strong&gt;&lt;div&gt;&lt;/strong&gt;, 1 &lt;strong&gt;&lt;ul&gt;&lt;/strong&gt; y varios &lt;strong&gt;&lt;li&gt;&lt;/strong&gt;‘s:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;menu&#34;&amp;gt;
   &amp;lt;ul&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;M&amp;aacute;s Izquierda&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Izquierda&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;Derecha&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&#34;#&#34;&amp;gt;M&amp;aacute;s derecha&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
   &amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Le vamos a dar color y forma a esto. Agregando estilo a &lt;strong&gt;#menu&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#menu ul {
   padding: 0px;
   margin: 0px;
   background-color: #333;
   list-style: none;
   font-size: 14px;
   font-weight: bold;
   width: 100%;
   height: 30px;
   float: left;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;y el punto clave: horizontalizando a través de &lt;strong&gt;display: inline;&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#menu ul li {
   display: inline;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hasta aquí, nada fuera de lo común. Nos falta agregar algo bonito para que se vea bien en un &lt;em&gt;rollover&lt;/em&gt;, algo simple. Un cambio de color:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#menu ul li a:link, #menu ul li a:visited {
   background-color: #333;
   color: #FFF;
   padding: 5px 15px;
   float: left;
   text-decoration: none;
}&amp;lt;br /&gt;
   #menu ul li a:hover, #menu ul li a:active{
      color: #F30;
      background-color: #CCC;
      height: 20px;
   }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver resultado parcial.][1]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Nuestro menú básico horizontal está hecho y funciona de maravilla. Ahora agreguémosle un &lt;em&gt;rollover&lt;/em&gt; con imagen de fondo (&lt;strong&gt;background-image&lt;/strong&gt; en vez de &lt;strong&gt;background-color&lt;/strong&gt;) y que las instancias estén en un mismo &lt;strong&gt;gif&lt;/strong&gt;:&lt;/p&gt;
&lt;h3 id=&#34;gif-del-alink-y-ahover&#34;&gt;Gif del a:link y a:hover&lt;/h3&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/ejemplos/fondo_menu.gif&#34; alt=&#34;CSSLab - link&#34; width=&#34;101&#34; height=&#34;60&#34; /&gt; 
&lt;p&gt;Solamente reemplazaremos donde antes habíamos seteado los parámetros relacionados con el fondo (&lt;strong&gt;background-image&lt;/strong&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#menu ul {
   padding: 0;
   margin: 0;
   background-image: url(&#34;fondo_menu.gif&#34;);
   background-repeat: repeat;
   background-position: 0 0;
   background-color: #333;
   list-style: none;
   font-size: 14px;
   font-weight: bold;
   width: 100%;
   height: 30px;
   float: left;
}&amp;lt;br /&gt;
   #menu ul li a:link, #menu ul li a:visited {
      background-image: url(&#34;fondo_menu.gif&#34;);
      background-repeat: repeat;
      background-position: 0 0;
      color: #fff;
      padding: 5px 15px;
      float: left;
      text-decoration: none;
   }&amp;lt;br /&gt;
   #menu ul li a:hover, #menu ul li a:active{
      color: #900;
      background-position: 0 -30px;
      background-color: #ccc;
      height: 20px;
   }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;[Ver resultado final.][2]{.verejemplo}&lt;/p&gt;
&lt;p&gt;Una aclaración: en vez de resumir el &lt;strong&gt;background&lt;/strong&gt; colocando aquí todos los parámetros (url, posición, repetición), preferí hacerlo cada uno en su respectivo atributo. Con esto, &lt;a href=&#34;http://www.apple.com/macosx/features/safari/&#34; target=&#34;_blank&#34;&gt;Safari&lt;/a&gt; lo puede leer fluído y no deja errores al desplegar el fondo. Además no me gusta resumir mucho. Otra aclaración: a diferencia del &lt;a href=&#34;http://www.csslab.cl/?p=19&#34; target=&#34;_blank&#34;&gt;otro tutorial&lt;/a&gt; donde se explica lo mismo pero en un menú vertical, aquí el cambio de posición para mostrar la posición del fondo_menu.gif es de manera vertical, no horizontal: &lt;strong&gt;background-position: 0 -30px;&lt;/strong&gt; donde fije el alto de la botonera en &lt;strong&gt;30 pixeles&lt;/strong&gt; para un despliegue exacto de las instancias de los botones.&lt;/p&gt;
&lt;p&gt;Disculpa &lt;a href=&#34;http://www.escritorasyescrituras.com/&#34; target=&#34;_blank&#34;&gt;Bane&lt;/a&gt; por el retraso en la respuesta a tu inquietud. Espero ahora te resulte.&lt;/p&gt;
&lt;p&gt;[1]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/menu_list.html&#34;&gt;http://www.csslab.cl/ejemplos/menu_list.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Resultado parcial de Menú Horizontal&amp;rdquo;&amp;rdquo;
[2]: &lt;a href=&#34;http://www.csslab.cl/ejemplos/menu_hover.html&#34;&gt;http://www.csslab.cl/ejemplos/menu_hover.html&lt;/a&gt; &amp;ldquo;Enlace en CSSLab.cl a &amp;ldquo;Resultado final de Menú Horizontal&amp;rdquo;&amp;rdquo;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 7</title>
      <link>https://csslab.cl/2006/02/16/lo-vi-y-me-gusto-7/</link>
      <pubDate>Thu, 16 Feb 2006 12:34:55 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/02/16/lo-vi-y-me-gusto-7/</guid>
      <description>Lo ví y me gustó
#7 – 16 Febrero 2006</description>
      <content>&lt;p&gt;Lo ví y me gustó&lt;/p&gt;
&lt;p&gt;#7 – 16 Febrero 2006&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.property-investment-network.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/property_investment.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.cabanadigital.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/cabana.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.threepoles.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/threepoles.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 6</title>
      <link>https://csslab.cl/2006/01/13/lo-vi-y-me-gusto-6/</link>
      <pubDate>Fri, 13 Jan 2006 18:10:39 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/01/13/lo-vi-y-me-gusto-6/</guid>
      <description>Lo ví y me gustó
#6 – 13 Enero 2006</description>
      <content>&lt;p&gt;Lo ví y me gustó&lt;/p&gt;
&lt;p&gt;#6 – 13 Enero 2006&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.davyvandenbremt.be/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/davy.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.braziltour.com/site/en/home/index.php&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/brasiltour.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.circodeliaproducciones.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/circodelia.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Usando tablas… o no?</title>
      <link>https://csslab.cl/2006/01/09/usando-tablas-o-no/</link>
      <pubDate>Mon, 09 Jan 2006 13:05:42 +0000</pubDate>
      
      <guid>https://csslab.cl/2006/01/09/usando-tablas-o-no/</guid>
      <description>La corriente actual nos dice: «no uses tablas al diagramar un sitio web…» Pero si están bien utilizadas, siguen siendo de gran ayuda, ya que su compatibilidad con browsers es por años y por versiones comprobadas. En el siguiente link, se muestra la forma correcta de utilizarlas. Si quieres seguir utilizando tablas, en esta galería se muestran buenos estilos que se pueden integrar a un tabla. Atrévete y envía el tuyo.</description>
      <content>&lt;p&gt;La corriente actual nos dice: «no uses tablas al diagramar un sitio web…» Pero si están bien utilizadas, siguen siendo de gran ayuda, ya que su compatibilidad con browsers es por años y por versiones comprobadas. En el &lt;a href=&#34;http://www.456bereastreet.com/archive/200410/bring_on_the_tables/&#34; target=&#34;_blank&#34;&gt;siguiente link&lt;/a&gt;, se muestra la forma correcta de utilizarlas. Si quieres seguir utilizando tablas, en &lt;a href=&#34;http://icant.co.uk/csstablegallery/index.php&#34; target=&#34;_blank&#34;&gt;esta galería&lt;/a&gt; se muestran buenos estilos que se pueden integrar a un tabla. Atrévete y envía el tuyo.&lt;/p&gt;
&lt;p&gt;Feliz año atrasado a todos.&lt;/p&gt;
&lt;p&gt;link:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.456bereastreet.com/archive/200410/bring_on_the_tables/&#34; target=&#34;_blank&#34;&gt;Bring on the tables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://icant.co.uk/csstablegallery/index.php&#34; target=&#34;_blank&#34;&gt;CSS Table Gallery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 5</title>
      <link>https://csslab.cl/2005/12/16/lo-vi-y-me-gusto-5/</link>
      <pubDate>Fri, 16 Dec 2005 20:01:49 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/12/16/lo-vi-y-me-gusto-5/</guid>
      <description>#5 – 16 Diciembre 2005
Gracias a todos los aportes en ‘Envía tu Sitio’. El criterio que ocupo al revisar un sitio, es que primero, sea construído en CSS (aunque no completamente); que gráficamente sea atractivo, y que se vea bien en diferentes browsers y plataformas (no importa q sea o no válido por W3C).</description>
      <content>&lt;p&gt;#5 – 16 Diciembre 2005&lt;/p&gt;
&lt;p&gt;Gracias a todos los aportes en ‘Envía tu Sitio’. El criterio que ocupo al revisar un sitio, es que primero, sea construído en CSS (aunque no completamente); que gráficamente sea atractivo, y que se vea bien en diferentes browsers y plataformas (no importa q sea o no válido por W3C).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.mayflower-school.co.uk/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/mayflower.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.revolucao.etc.br/css/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/revolucao.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.kutztown.edu/acad/commdes/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/kutztown.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 4</title>
      <link>https://csslab.cl/2005/12/02/lo-vi-y-me-gusto-4/</link>
      <pubDate>Fri, 02 Dec 2005 15:15:06 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/12/02/lo-vi-y-me-gusto-4/</guid>
      <description>#4 – 2 Diciembre 2005</description>
      <content>&lt;p&gt;#4 – 2 Diciembre 2005&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://web.burza.hr/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/buzra.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.camiseteria.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/camiseteria.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.una-terra.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/unaterra.jpg&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>¿Strict o no Strict?</title>
      <link>https://csslab.cl/2005/11/30/%C2%BFstrict-o-no-strict/</link>
      <pubDate>Wed, 30 Nov 2005 19:49:55 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/11/30/%C2%BFstrict-o-no-strict/</guid>
      <description>&lt;p&gt;Cuando creamos un nuevo documento &lt;strong&gt;HTML&lt;/strong&gt; en nuestro editor favorito, no nos fijamos que se agregan un par de líneas de código que por ignorancia desconocemos, pero tienen gran importancia a la hora de renderizar la página y validar su estructura. En este momento, nos referiremos al &lt;strong&gt;DOCTYPE&lt;/strong&gt; y los &lt;strong&gt;DTD&lt;/strong&gt;.&lt;/p&gt;</description>
      <content>&lt;p&gt;Cuando creamos un nuevo documento &lt;strong&gt;HTML&lt;/strong&gt; en nuestro editor favorito, no nos fijamos que se agregan un par de líneas de código que por ignorancia desconocemos, pero tienen gran importancia a la hora de renderizar la página y validar su estructura. En este momento, nos referiremos al &lt;strong&gt;DOCTYPE&lt;/strong&gt; y los &lt;strong&gt;DTD&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;DOCTYPE&lt;/strong&gt;: declaración que indica qué versión de &lt;strong&gt;HTML&lt;/strong&gt; o &lt;strong&gt;XHTML&lt;/strong&gt; se está usando en determinado sitio. Esto ayuda a que los browsers y las aplicaciones que se necesitan para visualizar la página sepan de forma correcta cómo abordarlo, además de la sintaxis y la gramática utilizada, logrando compatibilidad y accesibilidad.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;DTD&lt;/strong&gt; (Document Type Definition): se definen los elementos necesarios para la correcta elaboración del documento. El &lt;strong&gt;DTD&lt;/strong&gt; indica cómo y dónde realizar la validación, generalmente vía &lt;strong&gt;&lt;a href=&#34;http://www.w3.org/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;W3 Consortium&amp;quot;&#34;&gt;W3C&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!--more--&gt;
&lt;p&gt;En &lt;strong&gt;HTML&lt;/strong&gt; es posible establecer tres tipos diferentes de documento:&lt;/p&gt;
&lt;h4 id=&#34;strict&#34;&gt;Strict&lt;/h4&gt;
&lt;p&gt;El documento debe estar regido por el HTML 4.0 o XHTML 1.0 de forma estricta, sin falla alguna. Se olvidan tags caducados, como &lt;strong&gt;&lt;center&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;font&gt;&lt;/strong&gt; y otros del mismo bando. Aquí la separación de la estructura y del contenido es clave, por lo que el CSS prima.&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Strict//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&#34;&gt;
&lt;/p&gt;
&lt;h4 id=&#34;transitional&#34;&gt;Transitional&lt;/h4&gt;
&lt;p&gt;Es la más común, ya que mezcla la &lt;strong&gt;Strict&lt;/strong&gt; con los antiguos tags que conocemos de &lt;strong&gt;HTML&lt;/strong&gt; y que están ya en desuso por el consorcio que regula esto. Es un &lt;strong&gt;doctype&lt;/strong&gt; transitorio, donde se supone debería caducar y dar paso a un masivo Strict. Con él se entrega apoyo a browsers que soportan mal las hojas de estilos (IE) y disponemos de flexibilidad a la hora de escribir el código de nuestra página, a costa de no entrar de lleno en el estándar y de perder un poco de accesibilidad.&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#34;&gt;
&lt;/p&gt;
&lt;h4 id=&#34;frameset&#34;&gt;Frameset&lt;/h4&gt;
&lt;p&gt;Este todos lo hemos utilizado alguna vez, sin saber que se está aplicando aquí. &lt;strong&gt;Frameset&lt;/strong&gt; se utiliza cuando trabajamos con frames, o múltiples páginas contenidas y estructuradas dentro de otra ‘madre’. Esta última contiene el tipo &lt;strong&gt;FRAMESET&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&#34;codehtml&#34;&gt;
  &lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Frameset//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd&#34;&gt;
&lt;/p&gt;
&lt;h3 id=&#34;iquesthtml-40-o-xhtml-11&#34;&gt;¿HTML 4.0 o XHTML 1.1?&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;http://www.w3.org/TR/xhtml1/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;XHTML definition by W3C&amp;quot;&#34;&gt;XHTML&lt;/a&gt; es una reformulación de &lt;strong&gt;HTML&lt;/strong&gt; que normaliza y modulariza este antiguo lenguaje. &lt;strong&gt;XHTML&lt;/strong&gt; está basado en &lt;strong&gt;XML&lt;/strong&gt; y por lo tanto puede funcionar con aplicaciones hechas para &lt;strong&gt;XML&lt;/strong&gt;. Su finalidad es ser usado como lenguaje de contenidos que es a su vez conforme a &lt;strong&gt;XML&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Algunas mejoras que pueden ser percibidas para quienes migran a XHTML 1.0 son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los documentos XHTML son conformes a XML. Como tales son fácilmente visualizados, editados y validados con herramientas XML estándar.&lt;/li&gt;
&lt;li&gt;Los documentos XHTML pueden escribirse para que funcionen igual o mejor que lo hacían antes, tanto en los agentes de usuarios conformes a HTML 4.0 como en los nuevos agentes conformes a XHTML 1.0.&lt;/li&gt;
&lt;li&gt;Los documentos XHTML pueden usar aplicaciones (scripts y applets) que se basen ya sea en el Modelo del Objeto de Documento (DOM) de HTML o XML.&lt;/li&gt;
&lt;li&gt;A medida que la familia XHTML evolucione, los documentos conformes a XHTML 1.0 estarán más preparados para interactuar dentro de y entre los distintos entornos XHTML.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Algunas diferencias entre &lt;strong&gt;XHTML&lt;/strong&gt; y &lt;strong&gt;HTML&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;Se eliminan elementos no semánticos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Desaparecen las etiquetas de HTML &lt;strong&gt;&lt;font&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;center&gt;&lt;/strong&gt; entre otras&lt;/li&gt;
&lt;li&gt;Desaparecen varios atributos de formato como &lt;strong&gt;valign=»»&lt;/strong&gt; y &lt;strong&gt;bgcolor=»»&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;El aspecto del documento se describe únicamente a través de hojas de estilo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Al ser XML, se exige:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Incluir siempre la etiqueta &lt;strong&gt;&amp;ldquo;doctype&amp;rdquo;&lt;/strong&gt; apropiada.&lt;/li&gt;
&lt;li&gt;Todas las etiquetas deben cerrarse, aunque sea poniendo una barra &amp;ldquo;/&amp;rdquo; (&lt;strong&gt;&lt;br&gt;&lt;/strong&gt; pasa a ser &lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Sólo pueden incluirse datos en formatos admitidos por &lt;strong&gt;XML&lt;/strong&gt;. Esto da problemas para incluir &lt;strong&gt;Javascript&lt;/strong&gt; en los documentos directamente.&lt;/li&gt;
&lt;li&gt;Los nombres y atributos de todas las etiquetas deben estar en minúsculas.&lt;/li&gt;
&lt;li&gt;Todos los atributos deben tener un valor, y estar entre comillas (&lt;strong&gt;&lt;IMG Alt=nombre imagen&gt;&lt;/strong&gt; ahora es &lt;img alt=&#34;Nombre imagen&#34;&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;y-ahora8230-iquestqueacute-elijo&#34;&gt;Y ahora… ¿Qué elijo?&lt;/h3&gt;
&lt;p&gt;Depende de ti y del proyecto en que estás trabajando. Tarde o temprano tendremos que migrar al &lt;strong&gt;XHTML 1.1&lt;/strong&gt;, por las buenas (lentamente, de acuerdo a lo que los que hacen los browsers permitan una correcta visualización del layout) o por las malas (nos enojamos, hacemos boicot y exigimos cambios, dado el exceso de canas y la ingesta de &lt;a href=&#34;http://www.farmaciasahumada.cl/stores/fasa/html/MFT/PRODUCTO/P1501.HTM&#34; target=&#34;_blank&#34;&gt;Armonyl&lt;/a&gt; tratando de hacer compatibles los sitios con los browsers). Si tienes habilidad, puedes empezar a escribir código en &lt;strong&gt;XHTML&lt;/strong&gt; y probar suerte (con Mozilla, Opera y Safari). ¿Y qué pasa con los &lt;strong&gt;doctypes&lt;/strong&gt;? Lo mismo, &lt;strong&gt;strict&lt;/strong&gt; es lo que deberíamos anhelar, pero dado lo masivo de IE en los usuarios, es difícil hacer con que un código bien elaborado sea bien renderizado en IE 5+. Lo mejor es esperar un poco, usar &lt;strong&gt;transitional&lt;/strong&gt; por mientras y anhelar que algún día las cosas cambien. En mi humilde opinión, claro.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://es.wikipedia.org/wiki/XHTML&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;XHTML definition by W3C&amp;quot;&#34;&gt;Wikipedia: XHTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.tejedoresdelweb.com/307/article-10152.html&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;quot;Tejedores del Web&amp;quot;&#34;&gt;Tejedores del Web&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Cambiando la apariencia</title>
      <link>https://csslab.cl/2005/11/29/cambiando-la-apariencia/</link>
      <pubDate>Tue, 29 Nov 2005 18:35:21 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/11/29/cambiando-la-apariencia/</guid>
      <description>&lt;p&gt;Un buen uso al CSS en un sitio web, es teniendo múltiples hojas de estilo con diferentes apariencias; así el usuario puede escoger el que más le plazca, según su ánimo, o como sea. A esto se le puede agregar en un JavaScript que cambie según la hora (día, noche), estación (verano, invierno), etc. Las posibilidades son muchas. Vamos al grano.&lt;/p&gt;
&lt;p&gt;Primero, se necesita llamar las 2 hojas de estilo: la principal (stylesheet) y la opcional (alternate stylesheet).&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;link rel=&#34;stylesheet&#34;   type=&#34;text/css&#34; href=&#34;normal.css&#34;   title=&#34;normal&#34;&amp;gt;&amp;lt;br /&gt;
&amp;lt;link rel=&#34;alternate stylesheet&#34;   type=&#34;text/css&#34; href=&#34;oscuro.css&#34; title=&#34;oscuro&#34;&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <content>&lt;p&gt;Un buen uso al CSS en un sitio web, es teniendo múltiples hojas de estilo con diferentes apariencias; así el usuario puede escoger el que más le plazca, según su ánimo, o como sea. A esto se le puede agregar en un JavaScript que cambie según la hora (día, noche), estación (verano, invierno), etc. Las posibilidades son muchas. Vamos al grano.&lt;/p&gt;
&lt;p&gt;Primero, se necesita llamar las 2 hojas de estilo: la principal (stylesheet) y la opcional (alternate stylesheet).&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;link rel=&#34;stylesheet&#34;   type=&#34;text/css&#34; href=&#34;normal.css&#34;   title=&#34;normal&#34;&amp;gt;&amp;lt;br /&gt;
&amp;lt;link rel=&#34;alternate stylesheet&#34;   type=&#34;text/css&#34; href=&#34;oscuro.css&#34; title=&#34;oscuro&#34;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El secreto está en la denominación de &lt;strong&gt;rel=&amp;quot;&amp;quot;&lt;/strong&gt;, y en el &lt;strong&gt;title=&amp;quot;&amp;quot;&lt;/strong&gt; para luego llamarla. El browser va a cargar ambas al principio, pero solamente habilitará la que se contiene en &lt;strong&gt;rel=&amp;ldquo;stylesheet&amp;rdquo;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ahora viene la magia. Con un JavaScript facilitado por A List Apart, que funciona de maravilla, se habilita la posibilidad de hacer el cambio casi instantáneo. El link, para bajarlo: &lt;a href=&#34;http://www.alistapart.com/d/alternate/styleswitcher.js&#34; target=&#34;_blank&#34;&gt;styleswitcher.js&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Agrégalo entre tus &lt;strong&gt;&lt;head&gt;&lt;/head&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;script type=&#34;text/javascript&#34;   src=&#34;styleswitcher.js&#34;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finalmente, resta incluir el llamado en el HTML de la función del cambio de estilos en un botón. Usaremos onclick=&amp;quot;&amp;quot; para esto:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;a href=&#34;#&#34; onclick=&#34;setActiveStyleSheet(&#39;normal&#39;);   return false;&#34;&amp;gt;Normal&amp;lt;/a&amp;gt;&amp;lt;br /&gt;
&amp;lt;a href=&#34;#&#34; onclick=&#34;setActiveStyleSheet(&#39;oscuro&#39;);   return false;&#34;&amp;gt;Oscuro&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vale mencionar que ese &lt;strong&gt;styleswitcher.js&lt;/strong&gt; hace más que eso: puede identificar cual está activa y guardar la hoja de estilos actual en una cookie para que permanezca posteriormente, entre otras cosas.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.csslab.cl/ejemplos/cambio_estilo.html&#34; target=&#34;_blank&#34;&gt;Ver ejemplo.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.alistapart.com/articles/alternate/&#34; target=&#34;_blank&#34;&gt;A List Apart: Alternative Style&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>CSS &amp; Tipografía… el dilema</title>
      <link>https://csslab.cl/2005/11/28/css-tipografia-el-dilema/</link>
      <pubDate>Mon, 28 Nov 2005 20:27:01 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/11/28/css-tipografia-el-dilema/</guid>
      <description>&lt;p&gt;Al diseñar para la web, cada uno tiene sus mañas y sus costumbres. Actualmente, el mayor uso que se le da a la hoja de estilos, es para estilizar textos, dado el temor de diseñadores en meterse en este estraño mundo de códigos desconocidos, y que se sabe, que no es simple de implementarse. Un &lt;strong&gt;gotoAndPlay();&lt;/strong&gt; es el mismo desde Flash Player 5 a 8, Win o Mac; &lt;strong&gt;position: relative;&lt;/strong&gt; puede no funcionar igual en IE, Firefox, Win, Mac… un lío.&lt;/p&gt;
&lt;p&gt;Un tema recurrente e importante de mencionar, se refiere sobre las medidas usadas para referirse a la tipografía desplegada en un sitio web. Algunos usan px, otros em. Incluso pt….. A continuación, una definición de cada uno, sus pros y contras:&lt;/p&gt;</description>
      <content>&lt;p&gt;Al diseñar para la web, cada uno tiene sus mañas y sus costumbres. Actualmente, el mayor uso que se le da a la hoja de estilos, es para estilizar textos, dado el temor de diseñadores en meterse en este estraño mundo de códigos desconocidos, y que se sabe, que no es simple de implementarse. Un &lt;strong&gt;gotoAndPlay();&lt;/strong&gt; es el mismo desde Flash Player 5 a 8, Win o Mac; &lt;strong&gt;position: relative;&lt;/strong&gt; puede no funcionar igual en IE, Firefox, Win, Mac… un lío.&lt;/p&gt;
&lt;p&gt;Un tema recurrente e importante de mencionar, se refiere sobre las medidas usadas para referirse a la tipografía desplegada en un sitio web. Algunos usan px, otros em. Incluso pt….. A continuación, una definición de cada uno, sus pros y contras:&lt;/p&gt;
&lt;p&gt;Existen 2 tipos de unidades: las fijas o absolutas, que tienen un sistema de medida fijo e invariable (teóricamente, porque igual existen diferencias entre browsers y plataformas) y las relativas, que se basan en las anteriores para fijar su tamaño.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Absolutas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;in: &lt;em&gt;inches&lt;/em&gt; o pulgadas – 1 pulgada son 2.54 centímetros.&lt;/li&gt;
&lt;li&gt;cm: centímetros&lt;/li&gt;
&lt;li&gt;mm: milímetros&lt;/li&gt;
&lt;li&gt;pt: &lt;em&gt;points&lt;/em&gt; o puntos – en CSS2 un punto equivale a 1/72 de una pulgada.&lt;/li&gt;
&lt;li&gt;pc: picas – 1 pica son 12 points.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Relativas:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;em: unidad de distancia igual al tamaño de un punto de una fuente.&lt;/li&gt;
&lt;li&gt;ex: &lt;em&gt;x-height&lt;/em&gt; o altura-x. se basa en la altura de un caracter en minúscula.&lt;/li&gt;
&lt;li&gt;px: pixeles, relativo a la plataforma, al browser (soporte) y a la resolución de pantalla del usuario.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La unidad &lt;strong&gt;em&lt;/strong&gt; debería ser la ideal, pero es la más problemática. Es la recomendada por la &lt;a href=&#34;http://www.w3c.com&#34; target=&#34;_blank&#34;&gt;W3C&lt;/a&gt; por ser equivalente a la propiedad &lt;strong&gt;FONT&lt;/strong&gt;, que ya está obsoleta. Pero los problemas surgen cuando se relaciona con algún otro &lt;strong&gt;font-size&lt;/strong&gt; anterior (&lt;em&gt;parent&lt;/em&gt;), ya sea en el &lt;strong&gt;body{}&lt;/strong&gt; o en un &lt;strong&gt;#id{}&lt;/strong&gt;. En este caso, se basará en este de mayor rango para calcular su tamaño. Complicado a veces de entender. Ya los pixeles son familiares, pero depende mucho de la resolución del usuario del sitio, y de la plataforma. Windows suele estar configurado a 96 dpi; Macintosh usa 72 dpi por defecto. Personalmente acostumbro a usar px como unidad, tanto en fuentes como en layout. Estoy acostumbrado a ella, y me manejo bien.&lt;/p&gt;
&lt;p&gt;Ya las unidades absolutas, se recomienda usarlas exclusivamente para medios impresos, por ej. si haces una hoja de estilos exclusiva para impresión. El más utilizado en programas gráficos es el &lt;strong&gt;punto&lt;/strong&gt; (pt). y para layout, cms.&lt;/p&gt;
&lt;p&gt;Links:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.thenoodleincident.com/tutorials/box_lesson/font/browser.html&#34; target=&#34;_blank&#34;&gt;Tabla de tamaños ordenados por browsers.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.elsid.co.za/download/css_fontsizes.htm&#34; target=&#34;_blank&#34;&gt;Ordenados por tipos (absolutas – relativas).&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 3</title>
      <link>https://csslab.cl/2005/11/22/lo-vi-y-me-gusto-3/</link>
      <pubDate>Tue, 22 Nov 2005 20:43:05 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/11/22/lo-vi-y-me-gusto-3/</guid>
      <description>#3 – 22 Noviembre 2005</description>
      <content>&lt;p&gt;#3 – 22 Noviembre 2005&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.infosion.de/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/infosion.jpg&#34; alt=&#34;Infosion&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.juque.cl/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/juque.jpg&#34; alt=&#34;Juque&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; longdesc=&#34;http://www.forgetfoo.com/&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.massiveblue.net/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/massiveblue.jpg&#34; alt=&#34;Massive Blue&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Rápidos rollovers con CSS</title>
      <link>https://csslab.cl/2005/11/22/rapidos-rollovers-con-css/</link>
      <pubDate>Tue, 22 Nov 2005 18:39:55 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/11/22/rapidos-rollovers-con-css/</guid>
      <description>&lt;p&gt;Cuando hacemos un rollover, lo usual es tener 2 o más imagenes cortadas iguales, pero con diferentes estilos (otro color, forma, sombra, etc) y cuando construimos el código que la hace funcionar, se usa comunmente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#menu a {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(&#34;boton.gif&#34;) top left no-repeat;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
#menu a:hover {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-image: url(&#34;boton_over.gif&#34;);&amp;lt;br /&gt;
}&amp;lt;br /&gt;
#menu a:active {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-image: url(&#34;boton_activo.gif&#34;);&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A continuación, muestro una manera simple de ahorrar la carga de la imagen (gif o jpg). En realidad no es magia lo que haremos, solamente un truco que en vez de cargar una nueva imagen al hacer el &lt;strong&gt;hover&lt;/strong&gt;, se trabajará por sobre una misma imagen, la que contendrá todas las instancias necesarias. Entonces lo bueno es que esta imagen se cargue completa la primera vez, y al hacer el &lt;strong&gt;hover&lt;/strong&gt;, ésta se desplazará lo necesario para que muestre donde se encuentre la parte correspondiente a esa istancia; lo mismo si tiene un &lt;strong&gt;active&lt;/strong&gt;. Pero le agregaremos algo más.&lt;/p&gt;</description>
      <content>&lt;p&gt;Cuando hacemos un rollover, lo usual es tener 2 o más imagenes cortadas iguales, pero con diferentes estilos (otro color, forma, sombra, etc) y cuando construimos el código que la hace funcionar, se usa comunmente:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#menu a {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(&#34;boton.gif&#34;) top left no-repeat;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
#menu a:hover {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-image: url(&#34;boton_over.gif&#34;);&amp;lt;br /&gt;
}&amp;lt;br /&gt;
#menu a:active {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-image: url(&#34;boton_activo.gif&#34;);&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A continuación, muestro una manera simple de ahorrar la carga de la imagen (gif o jpg). En realidad no es magia lo que haremos, solamente un truco que en vez de cargar una nueva imagen al hacer el &lt;strong&gt;hover&lt;/strong&gt;, se trabajará por sobre una misma imagen, la que contendrá todas las instancias necesarias. Entonces lo bueno es que esta imagen se cargue completa la primera vez, y al hacer el &lt;strong&gt;hover&lt;/strong&gt;, ésta se desplazará lo necesario para que muestre donde se encuentre la parte correspondiente a esa istancia; lo mismo si tiene un &lt;strong&gt;active&lt;/strong&gt;. Pero le agregaremos algo más.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://csslab.cl/ejemplos/boton_rollover.gif&#34; alt=&#34;botones rollover&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Un sólo GIF, el que contiene las 3 instancias necesarias: &lt;strong&gt;link&lt;/strong&gt;, &lt;strong&gt;hover&lt;/strong&gt; y &lt;strong&gt;active&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;OK, entonces usaremos la imagen arriba para que el botón muestre sus 3 instancias. Lo bueno es que se cargará sólo la primera vez (cuando se cargue el sitio completo), y cuando llamemos a otra instancia, esta imagen la desplazaremos los pixeles necesarios (a la derecha o izquierda) para mostrar la gráfica correspondiente. El código, a continuación:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#menu a {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(&#34;boton_rollover.gif&#34;) 0 0 no-repeat;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
#menu a:hover {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-position: -150px 0;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
#menu a:active {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-position: -300px 0;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, un pequeño detalle que se ha encontrado en esto, es que ciertos browsers han mostrado (IE Win) una demora en este desplazamiento del &lt;strong&gt;background&lt;/strong&gt;, por lo que en este &lt;em&gt;lapsus&lt;/em&gt; ninguna imagen es desplegada (el tiempo es muy poco, pero igualmente se nota y molesta visualmente). Para solucionar esto, solamente se integrará un div interior, el q contendrá un background con la misma imagen del boton. Así, cuando ocurra este espaciado, no quedará en blanco la instancia y mostrará siempre de fondo el botón:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#menu {&amp;lt;br /&gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(&#34;boton_rollover.gif&#34;) 0 0 no-repeat;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Esto funciona con todos los browsers que soportan CSS2 ( Firefox, Opera, IE, Safari etc).&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/boton_rollover.html&#34; title=&#34;Enlace para ver ejemplo final&#34;&gt;Ver ejemplo final.&lt;/a&gt;{.verejemplo}&lt;/p&gt;
&lt;p&gt;El código completo quedaría así:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#menu {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin: 0;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding: 0;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 150px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 40px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-align: center;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(&#34;boton_rollover.gif&#34;) 0 0 no-repeat;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
#menu a {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding-top: 6px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: 100%;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 100%;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display: block;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;overflow: hidden;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-family: Georgia, &#34;Times New Roman&#34;, Times, serif;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color: #333333;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-weight: bold;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size: 24px;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-decoration: none;&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: url(&#34;boton_rollover.gif&#34;) 0 0 no-repeat;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
#menu a:hover {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-position: -150px 0;&amp;lt;br /&gt;
}&amp;lt;br /&gt;
#menu a:active {&amp;lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-position: -300px 0;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;</content>
    </item>
    
    <item>
      <title>media=»print» (actualizado)</title>
      <link>https://csslab.cl/2005/11/15/mediaprint/</link>
      <pubDate>Tue, 15 Nov 2005 18:45:59 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/11/15/mediaprint/</guid>
      <description>&lt;p&gt;Es muy difundido hoy en día el &lt;strong&gt;CSS&lt;/strong&gt; dentro del diseño de sitios web, y existe una gran exigencia por parte del usuario para que se puedan ver bien sus sitios en las más diferentes plataformas y los ya innúmeros browsers. Un importante medio que no es muy utilizado, y que sin embargo es muy fácil de ser aplicado para un resultado óptimo, es el de crear una hoja de estilos exclusivamente para que la página, y los ítems que desees sean impresos de la mejor forma posible, permitiendo al usuario ahorrar tinta y mejorar la visualización del contenido. Para esto, es necesaria una hoja de estilos nueva y el llamado respectivo entre &lt;strong&gt;&lt;head&gt; &lt;/head&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;link rel=&#34;stylesheet&#34; type=&#34;text/css&#34; media=&#34;print&#34; href=&#34;print.css&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <content>&lt;p&gt;Es muy difundido hoy en día el &lt;strong&gt;CSS&lt;/strong&gt; dentro del diseño de sitios web, y existe una gran exigencia por parte del usuario para que se puedan ver bien sus sitios en las más diferentes plataformas y los ya innúmeros browsers. Un importante medio que no es muy utilizado, y que sin embargo es muy fácil de ser aplicado para un resultado óptimo, es el de crear una hoja de estilos exclusivamente para que la página, y los ítems que desees sean impresos de la mejor forma posible, permitiendo al usuario ahorrar tinta y mejorar la visualización del contenido. Para esto, es necesaria una hoja de estilos nueva y el llamado respectivo entre &lt;strong&gt;&lt;head&gt; &lt;/head&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;link rel=&#34;stylesheet&#34; type=&#34;text/css&#34; media=&#34;print&#34; href=&#34;print.css&#34; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lo primero a realizarse es duplicar la hoja de estilo del sitio, hecha para la distribución del contenido para pantallas (&lt;strong&gt;media=&amp;ldquo;screen&amp;rdquo;&lt;/strong&gt;). No queremos trabajar doble, escribiendo todo el código &lt;strong&gt;CSS&lt;/strong&gt; nuevamente. A partir de ahora, muchos valores deben ser reemplazados de &lt;strong&gt;px&lt;/strong&gt; o &lt;strong&gt;em&lt;/strong&gt; a &lt;strong&gt;cm&lt;/strong&gt; y &lt;strong&gt;pt&lt;/strong&gt;. Así que debes tener claro los tamaños y tipos de conversiones a ser realizadas.&lt;/p&gt;
&lt;p&gt;Un importante paso es tener claro qué es lo que queremos imprimir. Si todo el sitio, o solamente un artículo y el encabezado, o el imagotipo + menues + contenido… enfin, queda en ti saber cuál es el fin que persigues. En este artículo presentaré algo general, para que puedas profundizar y customizar tu mismo código como te dé la gana.&lt;/p&gt;
&lt;p&gt;Teniendo claro qué mostrar o qué no quiero que se imprima, a desmenuzar el código. El principal atributo será &lt;strong&gt;display: none;&lt;/strong&gt; el que permite esconder lo que lo contiene, pero sin perder el espacio que lo soporta. Comencemos con un menú:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;div#menu {&amp;lt;br /&gt;
   width: 300px;&amp;lt;br /&gt;
   color: #333;&amp;lt;br /&gt;
   font-size: 11px;&amp;lt;br /&gt;
   background: #999;&amp;lt;br /&gt;
} &lt;/code&gt;


&lt;p&gt;
  Si queremos que el men&amp;uacute; desaparezca:
&lt;/p&gt;
&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;div#menu {&amp;lt;br /&gt;
   display: none;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Es necesario hacer esto con todo lo que no se requiere que se vea impreso. Se debe cuidar tb la diagramación, mientras mejor fluya el texto (más si el texto es largo) mejor. Para un mejor orden, se puede justificar el texto (&lt;strong&gt;text-align: justify;&lt;/strong&gt;) y las imágenes se pueden posicionar usando &lt;strong&gt;float: left;&lt;/strong&gt; o &lt;strong&gt;float: right;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;También será necesario darle un pequeño margen a los lados, para que el contenido no se vea muy a corte. 10% por cada lado será suficiente. Otro punto importante es el fondo, no queremos que se imprima el color o pattern que corresponda por lo que en body:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;body {&amp;lt;br /&gt;
   background: transparent;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sobre el tema de los links, a veces es importante que se sepa que existe un enlace en cierto texto, por lo que se le aplica un simple código:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;a:link, a:visited {&amp;lt;br /&gt;
   color: #666;&amp;lt;br /&gt;
   font-weight: bold;&amp;lt;br /&gt;
   text-decoration: underline;&amp;nbsp;&amp;lt;br /&gt;
   background: transparent;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto nos da un color más suave que el resto del texto (si el texto es negro &lt;strong&gt;#000&lt;/strong&gt;) y un underline para mayor diferenciación.&lt;/p&gt;
&lt;p&gt;Un buen truco y sólo en browsers que soportan bien CSS2, es el siguiente código:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;a:after {&amp;lt;br /&gt;
   content: &#34; ( http://www.csslab.cl &#34; attr(href) &#34; ) &#34;;&amp;lt;br /&gt;
   font-size: small;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nuevamente, esto funciona para Firefox (Mozilla) y Netscape. Lo que hace es desplegar, luego del link, la URL entre paréntesis [en este caso, &lt;strong&gt;CSSLab (http://www.csslab.cl)&lt;/strong&gt; ].&lt;/p&gt;
&lt;p&gt;Creo que eso es todo. Suerte y no gasten mucha tinta.&lt;/p&gt;
&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3.org/TR/CSS21/generate.html#propdef-content&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;#038;quot&amp;#038;content en W3C;quot;&#34;&gt;content en W3C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.alistapart.com/articles/goingtoprint/&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;#038;quot&amp;#038;A List Apart: going to print;quot;&#34;&gt;A List Apart: going to print&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.alistapart.com/articles/boom&#34; target=&#34;_blank&#34; title=&#34;Enlace externo a &amp;#038;quot&amp;#038;;A List Apart: printing a book with css: BOOM!quot;&#34;&gt;A List Apart: printing a book with css: BOOM!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 2</title>
      <link>https://csslab.cl/2005/11/14/lo-vi-y-me-gusto-2/</link>
      <pubDate>Mon, 14 Nov 2005 14:21:57 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/11/14/lo-vi-y-me-gusto-2/</guid>
      <description>#2- 14 Noviembre 2005



 </description>
      <content>&lt;p&gt;#2- 14 Noviembre 2005&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.cafeoperwien.at/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/cafeoperwien.jpg&#34; alt=&#34;Cafe Oper Wien&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.soundfell.com/fell/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/fell.jpg&#34; alt=&#34;SoundFell&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.workbench-music.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/workbench.jpg&#34; alt=&#34;Workbench Music&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Formulario sin tablas (actualizado)</title>
      <link>https://csslab.cl/2005/11/08/formulario-sin-tablas/</link>
      <pubDate>Tue, 08 Nov 2005 14:19:32 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/11/08/formulario-sin-tablas/</guid>
      <description>&lt;p&gt;Usaremos un HTML lo más simple posible, para sí no tener conflictos de browsers (es bueno evitarlo desde el principio).&lt;/p&gt;
&lt;p&gt;Nótese que usé &lt;strong&gt;&lt;br&gt;&lt;/strong&gt; en vez de &lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;. Para browsers modernos esto es innecesario, pero se incluye precisamente para compatibilidad con browsers antiguos (nuevamente, para evitar conflictos). Además, se verá de todas formas en todos los browsers y no incomodará el CSS.&lt;/p&gt;</description>
      <content>&lt;p&gt;Usaremos un HTML lo más simple posible, para sí no tener conflictos de browsers (es bueno evitarlo desde el principio).&lt;/p&gt;
&lt;p&gt;Nótese que usé &lt;strong&gt;&lt;br&gt;&lt;/strong&gt; en vez de &lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;. Para browsers modernos esto es innecesario, pero se incluye precisamente para compatibilidad con browsers antiguos (nuevamente, para evitar conflictos). Además, se verá de todas formas en todos los browsers y no incomodará el CSS.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;form&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&gt;
   &amp;lt;label for=&#34;nombre&#34;&amp;gt;Nombre&amp;lt;/label&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&gt;
   &amp;lt;input id=&#34;nombre&#34; name=&#34;nombre&#34;/&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&gt;
   &amp;lt;label for=&#34;direccion&#34;&amp;gt;Direcci&amp;oacute;n&amp;lt;/label&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&gt;
   &amp;lt;input id=&#34;direccion&#34; name=&#34;direccion&#34;/&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&gt;
   &amp;lt;label for=&#34;comuna&#34;&amp;gt;Comuna&amp;lt;/label&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&gt;
   &amp;lt;input id=&#34;comuna&#34; name=&#34;comuna&#34;/&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nótese que fueron utilizados ambos «&lt;strong&gt;ID&lt;/strong&gt;» y «&lt;strong&gt;NAME&lt;/strong&gt;» en los input. Esto se hizo porque los formularios que sólo tienen «&lt;strong&gt;ID&lt;/strong&gt;» no envían su contenido al servidor, y los que tienen sólo NAME no linkean bien sus etiquetas. Así que para evitar más problemas se usaron ambos.&lt;/p&gt;
&lt;p&gt;A continuación, sigue el CSS:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;label, input {&amp;lt;br /&gt;
     display: block;&amp;lt;br /&gt;
     width: 150px;&amp;lt;br /&gt;
     float: left;&amp;lt;br /&gt;
     margin-bottom: 10px;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;label {&amp;lt;br /&gt;
     text-align: right;&amp;lt;br /&gt;
     width: 75px;&amp;lt;br /&gt;
     padding-right: 20px;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;br {&amp;lt;br /&gt;
     clear: left;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Primero se les agregó a las etiquetas (&lt;strong&gt;label&lt;/strong&gt;) e inputs el &lt;strong&gt;display: block&lt;/strong&gt; permitiendo que se alineen. Lo demás es para mejorar la estética del layout, depende de cada diseñador. Finalmente, ambos tags reciben un &lt;strong&gt;float: left&lt;/strong&gt;. Al declarar esto en ambos elementos, permite ignorar las diferencias en &lt;strong&gt;float&lt;/strong&gt; entre Explorer y otros browser. Ni idea porqué funciona, pero funciona.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;label,input {&amp;lt;br /&gt;
     display: block;&amp;lt;br /&gt;
     width: 150px; &amp;lt;br /&gt;
     float: left;&amp;lt;br /&gt;
     margin-bottom: 10px;&amp;lt;br /&gt;
} &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Algunas cosas más para que se vea mejor:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;label {&amp;lt;br /&gt;
     text-align: right;&amp;lt;br /&gt;
     width: 75px;&amp;lt;br /&gt;
     padding-right: 20px;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finalmente como última cosa, se le da al tag &lt;strong&gt;br&lt;/strong&gt; un &lt;strong&gt;clear:left&lt;/strong&gt;, donde cualquier float definido anteriormente es cancelado. Debemos insertar un &lt;strong&gt;clear&lt;/strong&gt; en algún lugar, o todas las etiquetas e inputs se alinearian uno al lado del otro, lo que no queremos (en este caso). Entonces se le inserta el &lt;strong&gt;clear&lt;/strong&gt; en el &lt;strong&gt;br&lt;/strong&gt; porque así Opera lo lee bien. Detalles de cada browser.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;br {&amp;lt;br /&gt;
     clear: left;&amp;lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/formulario_css.html&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver resultado final.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/formulario_estilo.html&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver formulario con estilos.&lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Posicionando un objeto en el centro</title>
      <link>https://csslab.cl/2005/11/07/posicionando-un-objeto-en-el-centro/</link>
      <pubDate>Mon, 07 Nov 2005 16:33:32 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/11/07/posicionando-un-objeto-en-el-centro/</guid>
      <description>&lt;p&gt;Aquí mostraré una manera de centrar un objeto (en este caso un imagen, aunque puede ser un &lt;strong&gt;div&lt;/strong&gt;) en el centro del navegador utilizando &lt;strong&gt;CSS&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Insertando una imagen :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Inserte una imagen y agréguele un &lt;strong&gt;ID&lt;/strong&gt; (en este caso, &amp;ldquo;centro&amp;rdquo;)&lt;/p&gt;</description>
      <content>&lt;p&gt;Aquí mostraré una manera de centrar un objeto (en este caso un imagen, aunque puede ser un &lt;strong&gt;div&lt;/strong&gt;) en el centro del navegador utilizando &lt;strong&gt;CSS&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Insertando una imagen :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Inserte una imagen y agréguele un &lt;strong&gt;ID&lt;/strong&gt; (en este caso, &amp;ldquo;centro&amp;rdquo;)&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt; &amp;lt;img src=&#34;imagen_centrar.jpg&#34; id=&#34;centro&#34; /&amp;gt; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Defina el tamaño del objeto:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En el &lt;strong&gt;CSS&lt;/strong&gt;, defina las dimensiones del objeto (&lt;strong&gt;img&lt;/strong&gt; o un &lt;strong&gt;div&lt;/strong&gt;). En este caso, el ancho y alto son de &lt;strong&gt;150px&lt;/strong&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#centro {
   width: 150px;
   height: 150px;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Momento de alinear:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Llegó el momento de posicionar el objeto dentro de la pantalla. Aquí es donde está la clave. Se debe definir una posición absoluta, con un 50% del alto (top) y 50% de la izquierda (left), quedando en el medio. Un punto importante a saber, es que el CSS no usa el centro del objeto como referencia de posicionamiento, sino sus extremidades, por lo que lo que quedará centrado aquí será el extremo izquierdo superior del objeto (img).&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#centro {
   width: 150px;
   height: 150px;
   position: absolute;
   top: 50%;
   left: 50%;
} &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Para finalizar:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Para lidar con este pequeño detalle, el que se notará bastante cuando una imagen (o div) es grande y quede corrida, se resta del margen superior e izquierdo (margin-top y margin-left) la mitad del tamaño de la imagen (en este caso, 75 px) para que así quede en el centro de la imagen el punto cero.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt; #centro {
   width: 150px;
   height: 150px;
   position: absolute;
   top: 50%;
   left: 50%;
   margin-top: -75px;
   margin-left: -75px;
} &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/imagen_centrar.html&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver resultado final &lt;/a&gt;&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Lo ví y me gustó 1</title>
      <link>https://csslab.cl/2005/11/04/lo-vi-y-me-gusto-1/</link>
      <pubDate>Fri, 04 Nov 2005 14:07:04 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/11/04/lo-vi-y-me-gusto-1/</guid>
      <description>#1 – 3 Noviembre 2005




 </description>
      <content>&lt;p&gt;#1 – 3 Noviembre 2005&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.thefarewellreason.com/index.php&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/farewellreason.jpg&#34; alt=&#34;The Farewell Reason&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.forgetfoo.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/foo.jpg&#34; alt=&#34;Foo&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; longdesc=&#34;http://www.forgetfoo.com/&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.morganbrown.com/home/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/morgan.jpg&#34; alt=&#34;Morgan, Brown &amp; Joy&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.pixeltect.com/&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://www.csslab.cl/wp-content/pixeltect.jpg&#34; alt=&#34;PixelTect&#34; width=&#34;450&#34; height=&#34;100&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>No más Hacks (actualizado)</title>
      <link>https://csslab.cl/2005/11/04/no-mas-hacks/</link>
      <pubDate>Fri, 04 Nov 2005 14:06:29 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/11/04/no-mas-hacks/</guid>
      <description>&lt;p&gt;En el trabajo de desarrollo en HTML + CSS, surgen varios problemas cuando se pretende que los sitios se desplieguen bien en diversos browsers y plataformas. Más aún cuando se trata de sitios grandes, portales, como los que me ha tocado construir o arreglar últimamente. Pero para paliar esto, nos aprovechamos de los mismos errores de los programadores en el rendereo del CSS en algunos browsers, como Internet Explorer (IE) por ejemplo, para solucionar precisamente esto. Por ejemplo, si una columna por X motivo de ve más ancha en IE que en Firefox y esto afecta a otros floats cercanos, esto se corrige en el CSS:&lt;/p&gt;</description>
      <content>&lt;p&gt;En el trabajo de desarrollo en HTML + CSS, surgen varios problemas cuando se pretende que los sitios se desplieguen bien en diversos browsers y plataformas. Más aún cuando se trata de sitios grandes, portales, como los que me ha tocado construir o arreglar últimamente. Pero para paliar esto, nos aprovechamos de los mismos errores de los programadores en el rendereo del CSS en algunos browsers, como Internet Explorer (IE) por ejemplo, para solucionar precisamente esto. Por ejemplo, si una columna por X motivo de ve más ancha en IE que en Firefox y esto afecta a otros floats cercanos, esto se corrige en el CSS:&lt;/p&gt;
&lt;p class=&#34;code&#34;&gt;
  #columna {&lt;br /&gt; width: 300px;&lt;br /&gt; _width: 290px;&lt;br /&gt; }
&lt;/p&gt;
&lt;p&gt;En este caso, achicamos la columna solamente en IE 10 pixeles, usando el ‘_’ antes de la propiedad ‘width’. Con esto, IE solamente hará caso a la propiedad con ‘_’ e ignorará la otrapor alguna extraña razón. Firefox ni se dará cuenta de que existe, ya q realmente no existe, no es válido en CSS. Un dato: cuando construyo un layout entero en CSS, primero lo hago fijándome encómo se ve en Firefox, ya que es el que mejor renderiza el CSS y el que mejores resultados se obtiene. Con esto, me aseguro que Safari, Netscape, Mozilla, Camino, Opera se vean no bien, pero decentes. Luego me preocupo de los hacks para IE y que se vea bien, ya que el cliente y el 80% (y bajando, por suerte) del mundo que navega usa este browser monopólico.&lt;/p&gt;
&lt;p&gt;Hace poco me tocó la mala suerte de tener que hacer que un sitio no menos importante se vea aceptable en IE5 para Macintosh, fácil el peor browser que ha existido. Fue un suplicio, pero finalmente logré que se viera bien un diminuto menú (explicaré unos tips en otro post), y hablando con la persona encargada, me comentó que ya no hacen soporte para este browser, y si llaman reclamando, les dicen cortesmente ‘mejor usa Firefox’. Buena respuesta.&lt;/p&gt;
&lt;p&gt;Me puse a pensar.. ¿Qué hacer para aportar a una mejor usabilidad, y un mejor diseño web? Por algo el uso del padrón Web (W3C) y la moda que es el CSS actualmente se demoró tanto en aparecer, pues este ‘lenguaje’ no es nada nuevo, existe desde 1996. Para las personas (me incluyo) es mucho más fácil armar con tablas un sitio, ya que se verá bien a la primera en casi todos los browsers… Pero ahora la situación es diferente. Debemos abogar por una mejor calidad y accesibilidad en la nacegación y despliegue de los contenidos. Así como un médico debe hacer lo mejor posible por un paciente, nosotros no debemos ser flojos y facilistas y tomar el camino menos tortuoso.&lt;/p&gt;
&lt;p&gt;Actualmente mi batalla va en dirección a los browsers. Especialmente IE. Si la mitad mas 3/4 lo usan, no quiere decir que es porque es bueno. Es porque ya estaba instalado y a la gente no le importa buscar una alternativa, creen que es el indicado. Si 2/5 usan IE5, mal es. Se debe abolir ese browser, muy antiguo y ya descontinuado. Hay 2 simples pasos que como diseñadores / desarrolladores podemos contribuir a que por lo menos hagan un upgrade.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Usar @import para importar (no atachar) la hoja de estilo (CSS), de la siguiente manera &lt;p class=&#34;code&#34;&gt;&lt;/p&gt;
  &lt;style type=&#34;text/css&#34; media=&#34;all&#34;&gt;&lt;br /&gt; &lt;!&amp;#8211;&lt;br /&gt; @import url(&#34;file:///D|/mein/catalizado/armando/css/layout.css&#34;);&lt;br /&gt; &amp;#8211;&gt;&lt;br /&gt; &lt;/style&gt;
&lt;/p&gt;
&lt;p&gt;Esto porque esta manera de importar el CSS no es válido para browsers antiguos. Así de simple. No van a cargar la hoja de estilos, y el sitio no se va a ver bien. &lt;a href=&#34;http://imfo.ru/csstest/css_hacks/import.php&#34; target=&#34;_blank&#34;&gt;Aquí hay un link con una tabla de browsers q lo soportan o no&lt;/a&gt;.&lt;/li&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usas uno de los banners entregados por &lt;a href=&#34;http://www.w3junkies.com/toocool/join.php&#34; target=&#34;_blank&#34;&gt;W3 Junkies&lt;/a&gt;. Es una buena iniciativa, con 3 bonitas imagenes (si no te gusta ninguna, tb tienen el PSD para q lo modifiques a tu criterio). Están en formato PNG, que como muchos saben, no es soportado por IE (hasta ahora) y ademas el CSS que usa para desplegarlo en el rincón inferior-izquierdo del sitio no lo lee bien IE. Al hacer click sobre la imagen, muestra una lista de buenos browsers e invita a probarlos. Simple y directo.&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A todo esto, decidí escribir algo sobre esto al leer un artículo de &lt;a href=&#34;http://www.stylegala.com/&#34; target=&#34;_blank&#34;&gt;Stylegata&lt;/a&gt; , &lt;a href=&#34;http://www.stylegala.com/articles/no_more_css_hacks.htm&#34; target=&#34;_blank&#34;&gt;No More Hacks&lt;/a&gt;. Y hurgueteando por &lt;a href=&#34;http://www.google.com/search?hl=en&amp;q=no+more+css+hacks&amp;btnG=Google+Search&#34; target=&#34;_blank&#34;&gt;Google&lt;/a&gt;, descubrí que no somos pocos los que pretendemos lo mismo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.456bereastreet.com/archive/200510/stop_using_css_hacks_now/&#34; target=&#34;_blank&#34;&gt;456 Besea St.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blogs.msdn.com/ie/archive/2005/10/12/480242.aspx&#34; target=&#34;_blank&#34;&gt;IEBlog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://jeffcroft.com/blog/links/archives/2005/06/no_more_css_hac.php&#34; target=&#34;_blank&#34;&gt;Jeff Croft &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content>
    </item>
    
    <item>
      <title>Layout básico – 3 columnas</title>
      <link>https://csslab.cl/2005/11/04/layout-basico-3-columnas/</link>
      <pubDate>Fri, 04 Nov 2005 14:05:56 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/11/04/layout-basico-3-columnas/</guid>
      <description>&lt;p&gt;Como primer artículo, mostraré cómo construir un layout con 3 columnas tableless, o sea, sin tablas, sólo con CSS.&lt;br&gt;
Se construyen 3 ‘columnas’ con ‘div’ en HTML bruto:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;todo&#34;&amp;gt;
   &amp;lt;h1&amp;gt;Layout con 3 Columnas&amp;lt;/h1&amp;gt;&amp;lt;br /&gt;
   &amp;lt;div id=&#34;izquierda&#34;&amp;gt;Izquierda&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
   &amp;lt;div id=&#34;derecha&#34;&amp;gt;Derecha&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
   &amp;lt;div id=&#34;contenido&#34;&amp;gt;
      &amp;lt;p&amp;gt;Contenido&amp;lt;/p&amp;gt;
   &amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <content>&lt;p&gt;Como primer artículo, mostraré cómo construir un layout con 3 columnas tableless, o sea, sin tablas, sólo con CSS.&lt;br&gt;
Se construyen 3 ‘columnas’ con ‘div’ en HTML bruto:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-markup&#34;&gt;&amp;lt;div id=&#34;todo&#34;&amp;gt;
   &amp;lt;h1&amp;gt;Layout con 3 Columnas&amp;lt;/h1&amp;gt;&amp;lt;br /&gt;
   &amp;lt;div id=&#34;izquierda&#34;&amp;gt;Izquierda&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
   &amp;lt;div id=&#34;derecha&#34;&amp;gt;Derecha&amp;lt;/div&amp;gt;&amp;lt;br /&gt;
   &amp;lt;div id=&#34;contenido&#34;&amp;gt;
      &amp;lt;p&amp;gt;Contenido&amp;lt;/p&amp;gt;
   &amp;lt;/div&amp;gt;&amp;lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Luego, comenzaremos a darle estilo con CSS. Aquí se definirán parámetros, primero, para el ancho del div contenedor #todo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#todo {
   width:700px;  
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Le fijamos el ancho a la columna de la derecha y de la izquierda:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#izquierda, #derecha {
   width:150px;  
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;y no nos olvidemos de la columna central:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#contenido {  	
   width:370px;  
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Queda darle la posición a cada columna, para esto usaremos &lt;em&gt;float&lt;/em&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#izquierda {  	
   float: left;  
}    
#derecha {  	
   float: right;  
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y le fijamos un margen para el div del centro, para que la columna de la izquierda no se vea afectada:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#contenido {  	
   margin-left: 160px;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/basico_3columnas.html&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;Ver resultado final &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://csslab.cl/ejemplos/basico_3columnas_estilo.html&#34; target=&#34;_blank&#34; class=&#34;verejemplo&#34;&gt;El mismo pero con colores&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;#todo { 
   width:700px; 
   background-color: #666;
}&amp;lt;br /&gt;
  h1 {
      font-family: Georgia, Tahoma; 
      color: #FFF; 
      text-align: center;
} &amp;lt;br /&gt;
  #izquierda, #derecha { 
      width:150px; 
      background-color: #333; 
      font-family: Georgia, Tahoma; 
      color: #FFF; 
      text-align: center;
}&amp;lt;br /&gt;
  #contenido { 
      width:370px; 
      background-color: #FFCC00; 
      font-family: Georgia, Tahoma; 
      color: #333; 
      text-align: center; 
      font-weight: bolder;
}&amp;lt;br /&gt;
#izquierda { 
   float: left; 
} 
#derecha { 
   float: right; 
}&amp;lt;br /&gt;
#contenido { 
   margin-left: 160px;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Listo, la estructura está terminada. Ahora, a darle más estilos y llenar el contenido del sitio.&lt;/p&gt;</content>
    </item>
    
    <item>
      <title>Bienvenidos</title>
      <link>https://csslab.cl/2005/11/04/bienvenidos/</link>
      <pubDate>Fri, 04 Nov 2005 13:58:34 +0000</pubDate>
      
      <guid>https://csslab.cl/2005/11/04/bienvenidos/</guid>
      <description>Bienvenidos a CSS Lab, la intensión de este sitio es hablar un poco sobre la XHTML, web standarts, las ventajas de CSS y cómo migrar hacia un diseño y desarrollo web óptimo y accesible. Nuestra misión es crear sitios que puedan ser vistos por todos. Si llegaste aquí, es porque ya sabes lo que es CSS y tienes una noción a respecto. No enseñaré lo que hace cada comando y parámetro, sólo cómo usarlos.</description>
      <content>&lt;p&gt;Bienvenidos a &lt;strong&gt;CSS Lab&lt;/strong&gt;, la intensión de este sitio es hablar un poco sobre la &lt;a href=&#34;http://es.wikipedia.org/wiki/XHTML&#34; target=&#34;_blank&#34;&gt;XHTML&lt;/a&gt;, &lt;a href=&#34;http://www.w3.org/&#34; target=&#34;_blank&#34;&gt;web standarts&lt;/a&gt;, las ventajas de &lt;a href=&#34;http://es.wikipedia.org/wiki/CSS&#34; target=&#34;_blank&#34;&gt;CSS&lt;/a&gt; y cómo migrar hacia un diseño y desarrollo web óptimo y accesible. Nuestra misión es crear sitios que puedan ser vistos por todos. Si llegaste aquí, es porque ya sabes lo que es CSS y tienes una noción a respecto. No enseñaré lo que hace cada comando y parámetro, sólo cómo usarlos. Si no tienes idea de lo que ha leído hasta ahora, sírvase &lt;a href=&#34;http://es.selfhtml.org/css/intro.htm&#34; target=&#34;_blank&#34;&gt;hacer click aquí.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si tienes dudas sobre CSS, nuestros foros están a su disposición. Espero que se crea una comunidad en torno al XHTML chilena, y mejor aún si traspasa fronteras.&lt;/p&gt;
&lt;p&gt;¿Sugerencias? Usa la página de contactos.&lt;/p&gt;
</content>
    </item>
    
  </channel>
</rss>
