No uses innerHTML, usa innerDOM

Para quienes no se sientan cómodos usando la propiedad innerHTML porque no es estándar o porque el motivo que sea, existe una bilioteca que transforma un XHTML válido en DOM, listo para ser insertado con appendChild.

Se llama innerDOM.

También hace la conversión inversa, de un árbol DOM a un string XHTML. Funciona en cualquier navegador moderno y son sólo unas pocas líneas de código.

Hice una comparación de velocidad en Firefox 3.7a1pre y en Internet Explorer 8. Con diferentes cantidades de HTML a convertir a DOM.

Firefox 3.7a1pre

Longitud innerHTML innerDOM
Largo 30 ms 149 ms
Medio 2 ms 9 ms
Corto 1 ms 1 ms

Internet Explorer 8

Longitud innerHTML innerDOM
Largo 15 ms 500 ms
Medio 0 ms 32 ms
Corto 0 ms 0 ms

En Internet Explorer es  más rápido innerHTML y en Firefox innerDOM. En ambos el resultado es el correcto con ambas alternativas.

Longitud innerHTML innerDOM
Largo 30 149
Medio 2 9
Corto 1 1

Layouts con CSS

Hay 3 cosas que toda página HTML debe tener:

  1. Adaptarse a diferentes tamaños de letra
  2. Adaptarse al tamaño de ventana y resolución que el usuario use
  3. Estar hecha con DIVs y CSS

Para ello hay muchas técnicas y no todas logran buenos resultados. He aquí un ejemplo de layout con CSS que conserva las 3 propiedades.

Consiste de una barra de título o encabezado, una barra de links a la derecha, una barra de links a la derecha (que pueden ser otra cosa como banners o texto). Las barras de links se adaptan al tamaño de la fuente que se quiera.

En el centro el conenido principal que fluqye hasta ocupar todo el espacio que quede libre.

Al final un pie.

Ejemplo de Layout CSS

El HTML

<body>
<div id=”arriba”>
<h1><img src=”http://www.w3.org/Icons/w3c_main”/&gt; Título Principal</h1></div>
<div id=”links”>
<pre>
#links{
float: left;
width: 10em;
margin-right:1em;
background-color:
lightblue;
}
</pre>
<ul>
<li><a href=”link1.html”>Link 1</a></li>
<li><a href=”link1.html”>Vínculo 2</a></li>
<li><a href=”link1.html”>Hipervínculo 3</a></li>
<li><a href=”link1.html”>Hyperlink 4</a></li>
<li><a href=”link1.html”>Enlace 5</a></li>
<li><a href=”link1.html”>Hiperenlace 6</a></li>
</ul>
</div>

<div id=”links2″>
<pre>
#links2{
float: right;
width: 10em;
color: white;
background-color:
red;
}
</pre>
<ul>
<li><a href=”link1.html”>Link 1</a></li>
<li><a href=”link1.html”>Vínculo 2</a></li>
<li><a href=”link1.html”>Hipervínculo 3</a></li>
<li><a href=”link1.html”>Hyperlink 4</a></li>
<li><a href=”link1.html”>Enlace 5</a></li>
<li><a href=”link1.html”>Hiperenlace 6</a></li>
</ul>
</div>

<div id=”content”>
<pre>
#content{
padding-left: 1em;
background-color: snow;
margin-left: 10.2em;
margin-right: 10.2em;
padding-left: 1em;
padding-right: 1em;
}
</pre>
</div>

<div id=”pie”>
<p>
#pie{background-color: yellow;border-style:dotted;border-color: lightgray;border-width:2px;}
</p>
</div>

</body>

El CSS

body{
font-size: 100%;
background-color: snow;
}

#links2{
float: right;
width: 10em;
background-color: orange;
}

#links{
float: left;
width: 10em;
margin-right:1em;
background-color: lightblue;
}
#content{
padding-left: 1em;
background-color: snow;
margin-left: 10.2em;
margin-right: 10.2em;
padding-left: 1em;
padding-right: 1em;
}
img{margin-right:1em;}

#pie{
background-color: yellow;
border-style:dotted;
border-color: lightgray;
border-width:2px;
}