<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Cmacias.com &#187; xhtml</title>
	<atom:link href="http://www.cmacias.com/tag/xhtml/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cmacias.com</link>
	<description>Otro blog más de diseño</description>
	<lastBuildDate>Sat, 06 Aug 2011 18:26:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Emulando a los iframes con css</title>
		<link>http://www.cmacias.com/emulando-a-los-iframes-con-css/</link>
		<comments>http://www.cmacias.com/emulando-a-los-iframes-con-css/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 00:43:53 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=101</guid>
		<description><![CDATA[Hoy con unos conocimientos mínimos de css, es posible construir layout complejos con la apariencia de una aplicación de escritorio. Entonces orgullosos miramos una y otra vez nuestro layout, que además valida xhtml 1.1, copiamos la url y lo comprobamos en Ópera y también en Safari. Y nada, que somos unos hachas&#8230; hasta que nos [...]]]></description>
			<content:encoded><![CDATA[<p><img title="Layout frame" src="http://www.cmacias.com/wp-content/uploads/2008/12/layour-frame.jpg" alt="Layout frame" width="425" height="190" /><br style="clear:both" /></p>
<p>Hoy con unos conocimientos mínimos de css, es posible construir layout complejos con la apariencia de una aplicación de escritorio.</p>
<p>Entonces orgullosos miramos una y otra vez nuestro layout, que además valida xhtml 1.1, copiamos la url y lo comprobamos en Ópera y también en Safari. Y nada, que somos unos hachas&#8230; hasta que nos dá por mirarlo en Explorer 6 (porque en el 7 y el 8 aún queda decente), y nos damos cuenta de que no se vé lo que se debería ver, acordándonos de que es imposible combinar las posiciones left y right, top y bottom.</p>
<p>Pero bueno, soluciones haylas, solo hay que exprimirse un poco el cerebro y atacar a explorer por donde le duele.</p>
<p>Y es por eso, que hice unos experimentos con layouts compatibles con los navegadores buenos y los malos. Solo un pero. Si tenéis el explorer 6 instalado con el &#8220;multiple Explorer&#8221;, aunque este renderiza como explorer 6, es detectado en los comentarios como explorer 7.</p>
<p>[ <a onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/layouts_css/frames-01.html','frames','width=700,height=500,left='+(screen.availWidth/2-350)+',top='+(screen.availHeight/2-250)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/layouts_css/frames-01.html">ejemplos de layouts</a> ] [ <a title="Descargar ejemplos" href="http://www.cmacias.com/wp-content/uploads/demos/layouts_css/layouts-frames.zip" target="_blank">descargar</a> ]</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a>, <a href="http://bitacoras.com/canales/xhtml" title="en Bitacoras encuentre blogs que hablan acerca de  'xhtml'." rel="tag">xhtml</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/emulando-a-los-iframes-con-css/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>position:fixed compatible con todos los navegadores</title>
		<link>http://www.cmacias.com/positionfixed-compatible-con-todos-los-navegadores/</link>
		<comments>http://www.cmacias.com/positionfixed-compatible-con-todos-los-navegadores/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 23:28:11 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=99</guid>
		<description><![CDATA[Siempre he pensado que las buenas ideas o soluciones a problemas estaban ahí, al lado nuestra, y que además no eran complicadas. Solo hay que pensar con claridad y pensar en algo simple. Vía divinentd, me encuentro con un código muy, muy simple, que consigue el efecto &#8220;fixed&#8221; para todos los navegadores. Estos serían las [...]]]></description>
			<content:encoded><![CDATA[<p>Siempre he pensado que las buenas ideas o soluciones a problemas estaban ahí, al lado nuestra, y que además no eran complicadas. Solo hay que pensar con claridad y pensar en algo simple.</p>
<p>Vía <a title="Emulando position:fixed" href="http://divinentd.com/experiments/emulating-position-fixed.html" target="_blank">divinentd</a>, me encuentro con un código muy, muy simple, que consigue el efecto &#8220;fixed&#8221; para todos los navegadores.</p>
<p>Estos serían las css</p>
<pre class="css">html, body {
   height: 100%;
   overflow: hidden;
}
#container {
   height: 100%;
   overflow: auto;
   position: relative;
   z-index: 2;
}
#div1 {
   position: absolute;
   top: 0;
   left: 0;
   z-index: 1;
}
#div2 {
   position: absolute;
   top: 0;
   right: 0;
   z-index: 1;
}
#div3 {
   position: absolute;
   bottom: 0;
   right: 0;
   z-index: 1;
}
#div4 {
   position: absolute;
   bottom: 0;
   left: 0;
   z-index: 1;
}</pre>
<p>Y esta, un ejemplo de estructura</p>
<pre class="html">&lt;div id="container"&gt;
   &lt;div id="content"&gt;
      &lt;h1&gt;Emulando position: Fixed;&lt;/h1&gt;
      &lt;p&gt;Añade un texto&lt;/p&gt;
      &lt;p&gt;O tu contenido...&lt;/p&gt;
   &lt;/div&gt;
&lt;/div&gt;
&lt;div id="div1"&gt;div id="div1&lt;/div&gt;
&lt;div id="div2"&gt;div id="div2&lt;/div&gt;
&lt;div id="div3"&gt;div id="div3&lt;/div&gt;
&lt;div id="div4"&gt;div id="div4&lt;/div&gt;</pre>
<p>Lo que estamos haciendo realmente es permitir que el contenido alcance el 100% de alto desde el <strong><span style="color: #3366ff;">body </span></strong>y escondiendo el scroll con la propiedad <span style="color: #3366ff;"><strong>overflow</strong></span>. A continuación, entra en escena la capa contenedora, que se prolonga hasta el 100% del documento, y permitimos el uso del scroll, de forma que da la sensación de que el scroll pertenece al body.</p>
<p>Y ya entonces es cuando creamos la capa o capas con la que queremos emular el position:fixed. Su posición pasa a ser absoluta con respecto al <strong><span style="color: #3366ff;">body</span></strong>, de forma que solamente se generará la barra de scroll desde la capa <span style="color: #3366ff;"><strong>contenedora</strong></span>. Simple, útil y sin hacks.</p>
<p>La única limitación que le veo es que al <strong>generarse scroll</strong>, el contenido de la capa contenedora se mueve un poco (la mitad del ancho de la barra de <strong>scroll</strong>), mientras que los elementos que emulen a la posición fixed siguen en su lugar. Esto podría llegar a generar un pequeño desfase en la colocación de algún elemento. Por lo que como dicen en la tele, &#8220;<strong><span style="color: #993366;">Úsese con moderación</span></strong>&#8220;.</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a>, <a href="http://bitacoras.com/canales/xhtml" title="en Bitacoras encuentre blogs que hablan acerca de  'xhtml'." rel="tag">xhtml</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/positionfixed-compatible-con-todos-los-navegadores/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Layout 100% alto</title>
		<link>http://www.cmacias.com/layout-100-alto-ii/</link>
		<comments>http://www.cmacias.com/layout-100-alto-ii/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 23:32:33 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=90</guid>
		<description><![CDATA[Después de haber navegado mucho buscando la versión perfecta &#8211; que pienso que no existe &#8211; yo hago mi pequeña y humilde propuesta. Yo desde luego que le voy a sacar mucho provecho. Si desde luego a alguien más le sirve y le evita tener que darle a la cabeza, otra alegría que me llevo. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="Layout al 100% de alto" src="http://www.cmacias.com/wp-content/uploads/2008/26/layout100.jpg" alt="Layout al 100% de alto" width="425" height="190" /><br style="clear:both" /><br />
Después de haber navegado mucho buscando la versión perfecta &#8211; que pienso que no existe &#8211; yo hago mi pequeña y humilde propuesta. Yo desde luego que le voy a sacar mucho provecho. Si desde luego a alguien más le sirve y le evita tener que darle a la cabeza, otra alegría que me llevo.</p>
<p>La idea se basa en una estrucura similar a esta</p>
<pre class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;Layout al 100% de alto&lt;/title&gt;
&lt;link type="text/css" href="layout.css" rel="stylesheet" /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="layout"&gt;
   &lt;div id="cabecera"&gt;capa cabecera&lt;/div&gt;
   &lt;div id="lateral"&gt;capa lateral&lt;/div&gt;
   &lt;div id="contenido"&gt;capa contenido&lt;/div&gt;
   &lt;div id="pie"&gt;capa pie&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Y la hoja de estilos pretende ser algo como esto, y después intento explicar el porqué y como.</p>
<pre class="css">html,body {
   height:100%;
/* necesario para las sub-alturas */
}

body {
   margin:0;
   padding:0;
   overflow-x: hidden;
/* Para evitar el feo scroll horizontal de explorer 7 */
   background:#fff;
}

body, div, p {
   font-family: verdana;
   font-size:12px;
   color:#000;
}

div#layout {
   position:relative;
/* necesario para el posicionamiento */
   margin:0 auto;
/* lo centramos, aunque no funciona para explorer 5 */
   width:750px;
   height:auto !important;
/* para los navegadores de verdad */
   height:100%;
/* Para que explorer lo interprete como alto mínimo */
   min-height:100%;
/* para los navegadores de verdad */
   background:#f0f0f0;
}

div#cabecera {
   background:#cc0000;
   height: 80px;
   padding:10px;
   color: #fff;
}

div#lateral {
   float: left;
   width: 150px;
   padding: 10px;
   padding-bottom: 50px;
/* Este padding debe ser igual a la altura del footer */
   background: #ccc;
}

div#contenido {
   padding: 10px;
   padding-bottom: 50px;
/* Este padding debe ser igual a la altura del footer */
   margin-left: 170px;
/* 150px del ancho del lateral
    más 20px del padding del mismo */
   background: #eeeAA0;
}

div#pie {
   position:absolute;
   width:730px;
/* 750px del ancho del layout menos 20px del padding */
   height: 30px;
   padding:10px;
   color: #fff;
   bottom:0;
/* lo encajamos al fondo de todo */
   background:#006699;
}</pre>
<p>Lo primero de todo es permitir alcanzar un 100% de altura a la entidad más importante de la estructura, y en este caso me refiero a las etiquetas <span style="color: #993366;">&lt;html&gt;</span> y <span style="color: #993366;">&lt;body&gt;</span>, por lo que les damos una altura del 100%.</p>
<p>Acto seguido a la capa &#8220;<span style="color: #3366ff;"><strong>layout</strong></span>&#8221; que es la que va a contener el resto de elementos, la posicionamos de forma relativa. Esto nos permite posicionar otros elementos con respecto al contenedor principal, es decir, a la capa &#8220;<span style="color: #3366ff;"><strong>layout</strong></span>&#8220;. Después le aplicamos el famoso truco dándole un mínimo de altura del 100%, altura automática declarándola como <span style="color: #ff0000;">!important</span>, y para hacerlo compatible con los navegadores de mentira, volvemos a declarar la altura al 100%. Esto evidentemente no anula la altura anterior para los navegadores buenos, ya que hemos puesto el <span style="color: #ff0000;">!important</span>.</p>
<p>La <span style="color: #993366;">cabecera </span>y las columnas <span style="color: #993366;">contenido</span> y <span style="color: #993366;">lateral</span>, no tienen nada fuera del otro mundo, a no ser un &#8220;<span style="color: #ff9900;">padding-bottom</span>&#8221; que es igual a la altura de nuestro <span style="color: #993366;">footer</span>. Esto se debe a que el footer lo posicionamos de forma absoluta, a 0px del fondo (<span style="color: #ff6600;">bottom:0px;</span>) por lo que siempre estará pegado al fondo y puede llegar a tapar con su altura parte del texto de las capas citadas.</p>
<p>Espero haberme explicado del porqué de determinados estilos, aunque como dice un conocido</p>
<blockquote><p>No me enteré de lo que dijo, pero si funciona me vale</p></blockquote>
<p>Pués eso. Solo apuntar para terminar, que las capas lateral y contenido no se estiran con el resto del layout &#8211; eso sería otra historia. Lo que pretendía con este tutorial era que el footer se mantenga siempre abajo de todo e independiente del tamaño de la ventana y del contenido del mismo, que se mantuviera igual.</p>
<p>Alguien me preguntaba por la mañana si esto sirve para el caso en que el lateral necesite tener un color de fondo que alcance hasta el footer. Mi respuesta es si. Simplemente crearíamos un fondo del ancho deseado, y lo colocaríamos de fondo en la capa layout repitiéndose verticalmente.</p>
<p>[ <a title="Layout al 100% de alto" onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/layout/index.html','layout','width=800,height=600,left='+(screen.availWidth/2-400)+',top='+(screen.availHeight/2-300)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/layout/index.html" target="_blank">demo</a> ] [ <a title="Layout al 100% de alto" href="http://www.cmacias.com/wp-content/uploads/demos/layout/layout.zip" target="_blank">descargar</a> ]</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a>, <a href="http://bitacoras.com/canales/xhtml" title="en Bitacoras encuentre blogs que hablan acerca de  'xhtml'." rel="tag">xhtml</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/layout-100-alto-ii/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Mejorando los selectBox</title>
		<link>http://www.cmacias.com/mejorando-los-selectbox/</link>
		<comments>http://www.cmacias.com/mejorando-los-selectbox/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 22:15:00 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=80</guid>
		<description><![CDATA[Como diseñador quisquilloso que soy, uno de los objetivos que busco en la web, es el diseño total. Es decir, el poder diseñar cada uno de los elementos que componen una web, desde el primer hasta el último elemento. Y uno de los elementos quizá mas toscos y feos sean los controles de formulario. Si [...]]]></description>
			<content:encoded><![CDATA[<p>Como diseñador quisquilloso que soy, uno de los objetivos que busco en la web, es el diseño total. Es decir, el poder diseñar cada uno de los elementos que componen una web, desde el primer hasta el último elemento.</p>
<p>Y uno de los elementos quizá mas toscos y feos sean los controles de formulario. Si en un <a title="SelectBox múltiple" href="http://www.cmacias.com/selectbox-multiple/" target="_blank">post anterior</a> conseguí de mejor o peor manera controlar el aspecto de un selectBox multiple, ahora estoy tratando de mejorar los selectBox.</p>
<p>El resultado hasta el momento es este:<br />
<script src="http://www.cmacias.com/wp-content/uploads/demos/combobox/comboBox.js" type="text/javascript"></script></p>
<select style="width: 150px;" name="prueba_combo">
<option value="WordPress">WordPress</option>
<option value="Drupal">Drupal</option>
<option value="Joomla">Joomla</option>
<option value="Mambo">Mambo</option>
</select>
<p><br style="clear: both;" /></p>
<p>En principio es totalmente configurable tanto en estructura como en aspecto, y aunque aún me quedan algunos aspectos por pulir (compatibilidad de navegadores, testeo, etc), el resultado creo que no es malo y dá el pego. No es obstrusivo, por lo que en caso de no tener activado el javascript, se mostraría el control normal.</p>
<p>En breve liberaré una primera versión de testeo.</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a>, <a href="http://bitacoras.com/canales/javascript" title="en Bitacoras encuentre blogs que hablan acerca de  'javascript'." rel="tag">javascript</a>, <a href="http://bitacoras.com/canales/dom" title="en Bitacoras encuentre blogs que hablan acerca de  'dom'." rel="tag">dom</a>, <a href="http://bitacoras.com/canales/xhtml" title="en Bitacoras encuentre blogs que hablan acerca de  'xhtml'." rel="tag">xhtml</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/mejorando-los-selectbox/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Editores Wysiwyg</title>
		<link>http://www.cmacias.com/editores-wysiwyg/</link>
		<comments>http://www.cmacias.com/editores-wysiwyg/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 09:50:56 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=76</guid>
		<description><![CDATA[Desde un tiempo hacia aquí, ya es costumbre añadir editores visuales a las zonas de administración de nuestros proyectos. Evidentemente en función de la libertad que le demos al usuario, nos decantamos por un editor u otro, y es aquí cuando nos entra la duda de que editor usar, cuanto pesará y si tendrá soporte [...]]]></description>
			<content:encoded><![CDATA[<p><img title="wysiwyg" src="http://www.cmacias.com/wp-content/uploads/2008/12/wysiwyg.jpg" alt="wysiwyg" width="425" height="191" /></p>
<p>Desde un tiempo hacia aquí, ya es costumbre añadir editores visuales a las zonas de administración de nuestros proyectos. Evidentemente en función de la libertad que le demos al usuario, nos decantamos por un editor u otro, y es aquí cuando nos entra la duda de que editor usar, cuanto pesará y si tendrá soporte o no para imágenes.</p>
<p>Este es un listado de editores Wysiwg de libre uso. La gran carencia de casi todos ellos es que no disponen de un gestor de imágenes que nos permita llevar una librería de imágenes o simplemente subirlas al servidor. Se salva de la quema el FcKeditor que dispone de uno gratuito y el TinyMce, que aunque es de pago, su precio es asequible, disponiendo además de un <a title="Gestión de imágenes y archivos para TinyMCE" href="http://www.cmacias.com/tinymce-y-su-nuevo-plugin-para-wordpress/" target="_blank">plugin para WordPress</a>.</p>
<p>Los hay también de pago, pero realmente no hacen nada que algunos de estos editores no hagan, por lo que he preferido no incluirlos en la lista. Y <img style="float: left; margin-left: 4px;" title="Gestor de Imágenes del TinyMCE" src="http://www.cmacias.com/wp-content/uploads/2008/12/wysiwyg2.jpg" alt="Gestor de Imágenes del TinyMCE" width="200" height="300" />también editores que forman parte de un framework, como por ejemplo el editor visual de <a title="ExtJs" href="http://www.extjs.com/" target="_blank">ExtJs</a>, para los cuales evidentemente hay que utilizar toda su estructura de javascript.</p>
<p>A la hora de confeccionar esta lista no querría olvidarme del <a title="KTML" href="http://www.interaktonline.com/Products/Online-HTML-Editor/KTML-for-Dreamweaver/Documentation/">KTML</a>, que aunque era de pago, cumplía todos los requisitos necesarios que personalmente lo convertían en el mejor editor de todos. Gestión de enlaces e imágenes, vista de código integrada en el mismo editor, panel de propiedades de cada una de las funciones al pié del editor, salida XHTML. Desgraciadamente <a title="Adobe" href="http://www.adobe.es" target="_blank">Adobe </a>dejó el desarrollo de este editor poco después de comprar a <a title="Interakt" href="http://www.interaktonline.com/" target="_blank">Interakt</a>,  la empresa que lo había creado.</p>
<p style="text-align: center;"><img title="tinyMCE" src="http://www.cmacias.com/wp-content/uploads/2008/12/wysiwyg3.jpg" alt="tinyMCE" width="334" height="34" /></p>
<p><br style="clear: both;" /><br />
Ya para finalizar, comentar que son dos los editores que se llevan la palma, y no por nada son los más descargados y utilizados de internet, con una comunidad que poco a poco van creando plugins para potenciar más si cabe, la calidad que ya de por si tiene. Evidentemente hablo del TinyMCE y del FCKEditor.</p>
<ul>
<li><strong>TinyMCE<br />
</strong><a title="TinyMce" href="http://tinymce.moxiecode.com" target="_blank">http://tinymce.moxiecode.com</a></li>
<li><strong>FckEditor<br />
</strong><a title="FckEditor" href="http://www.fckeditor.net" target="_blank">http://www.fckeditor.net</a></li>
<li><strong>HtmlArea<br />
</strong><a title="HtmlArea" href="http://www.htmlarea.com/" target="_blank">http://www.htmlarea.com/</a></li>
<li><strong>JWYSIWYG </strong>(plugin de <a title="JQuery" href="http://www.jquery.com" target="_blank">JQuery</a>)<br />
<a title="Plugin de JQuery" href="http://projects.bundleweb.com.ar/jWYSIWYG/" target="_blank">http://projects.bundleweb.com.ar/jWYSIWYG/</a></li>
<li><strong>Ninbox Editor<br />
</strong><a title="Ninbox" href="http://ninbox.iespana.es/editor/document/index.html" target="_blank">http://ninbox.iespana.es/editor/document/index.html</a></li>
<li><strong>PunyMCE<br />
</strong><a title="PunyMCE" href="http://www.moxieforge.net/overview.php?project_id=9&amp;category_id=5" target="_blank">http://www.moxieforge.net/overview.php?project_id&#8230;</a></li>
<li><strong>HtmlBox<br />
</strong><a title="HtmlBox" href="http://remiya.com/cms/products/htmlbox/" target="_blank">http://remiya.com/cms/products/htmlbox/</a></li>
<li><strong>GGedit<br />
</strong><a title="GGedit" href="http://code.google.com/p/ggedit/" target="_blank">http://code.google.com/p/ggedit/</a></li>
<li><strong>NiceEdit<br />
</strong><a title="NiceEdit" href="http://nicedit.com/" target="_blank">http://nicedit.com/</a></li>
<li><strong>JS-RichEdit<br />
</strong><a title="Js-Richedit" href="http://www.gerd-tentler.de/tools/richedit/" target="_blank">http://www.gerd-tentler.de/tools/richedit/</a></li>
<li><strong>HotEditor</strong><br />
<a title="HotEditor" href="http://www.ecardmax.com/index.php?step=Hoteditor&amp;gad=CPGWnoMDEgh4ZrUgvI_aQhjllbT-AyDJj7Us" target="_blank">http://www.ecardmax.com/index.php?step=Hoteditor&#8230;</a></li>
<li><strong>Whizzywig<br />
</strong><a title="Whizzywig" href="http://unverse.net/whizzywig-cross-browser-html-editor.html" target="_blank">http://unverse.net/whizzywig-cross-browser-html&#8230;</a></li>
<li><strong>Wyzz Editor<br />
</strong><a title="Wyzz Editor" href="http://www.wyzz.info/" target="_blank">http://www.wyzz.info/</a></li>
<li><strong>rtePad<br />
</strong><a title="rtePad" href="http://www.freerichtexteditor.com/" target="_blank">http://www.freerichtexteditor.com/</a></li>
<li><strong>ProtoPad<br />
</strong><a title="ProtoPad" href="http://www.xtort.net/xtort-software/protopad/" target="_blank">http://www.xtort.net/xtort-software/protopad/</a></li>
<li><strong>TextArea Rich<br />
</strong><a title="TextArea Rich" href="http://www.textarearich.com/" target="_blank">http://www.textarearich.com/</a></li>
<li><strong>UBB Rich Text Editor<br />
</strong><a title="UBB Rich Text Editor" href="http://www.yugdesign.com/demo/UBB-Code-WYSIWYG/index.html" target="_blank">http://www.yugdesign.com/demo/UBB-Code-WYSIWYG&#8230;</a></li>
<li><strong>BlueShoes Wysiwyg Editor<br />
</strong><a title="BlueShoes Wysiwyg" href="http://www.blueshoes.org/en/javascript/editor/" target="_blank">http://www.blueshoes.org/en/javascript/editor/</a></li>
<li><strong>RichText Editor<br />
</strong><a title="RichText Editor" href="http://richtext.sourceforge.net/" target="_blank">http://richtext.sourceforge.net/</a></li>
<li><strong>aynHTML<br />
</strong><a title="aynHTML" href="http://www.aine.be/aynhtml/" target="_blank">http://www.aine.be/aynhtml/</a></li>
<li><strong>Indite<br />
</strong><a title="Indite" href="http://candyscript.com/projects/indite/" target="_blank">http://candyscript.com/projects/indite/</a></li>
<li><strong>Cross-Browser Rich Text Editor<br />
</strong><a title="Cross-Browser Rich Text Editor" href="http://kevinroth.com/rte/">http://kevinroth.com/rte/</a></li>
</ul>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/javascript" title="en Bitacoras encuentre blogs que hablan acerca de  'javascript'." rel="tag">javascript</a>, <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a>, <a href="http://bitacoras.com/canales/xhtml" title="en Bitacoras encuentre blogs que hablan acerca de  'xhtml'." rel="tag">xhtml</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/editores-wysiwyg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SelectBox múltiple</title>
		<link>http://www.cmacias.com/selectbox-multiple/</link>
		<comments>http://www.cmacias.com/selectbox-multiple/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 23:10:19 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=72</guid>
		<description><![CDATA[Por necesidades del guión, tuve que crear para un trabajo un control de formulario de tipo select de selección múltiple. A diferencia de los select normales, este tenía que permitir selecciones de más de un elemento sin tener que acceder al teclado, y además, adecuarse estéticamente con el diseño de la página, por lo que [...]]]></description>
			<content:encoded><![CDATA[<p>Por necesidades del guión, tuve que crear para un trabajo un control de formulario de tipo <strong>select </strong>de <strong>selección múltiple</strong>. A diferencia de los select normales, este tenía que permitir selecciones de más de un elemento sin tener que acceder al teclado, y además, adecuarse estéticamente con el diseño de la página, por lo que no me quedó más remedio que hacérmelo.</p>
<p>Su funcionamiento es sencillo. Simplemente hago un recorrido por todos los controles select multiples del documento y los sustituyo por unas listas generadas al vuelo con el DOM de javascript y una pequeña función que permite recorrer el select original y comunicarlo con el nuevo y viceversa.</p>
<p>En esta versión y por necesidades del guión y el tiempo, no recibe los eventos que pudiera tener el select original, aunque si es posible manipular el alto, ancho, posición, y los parámetros left, top, right. botom para cambiar la posición y aspecto.</p>
<p>No depende de ninguna librería y simplemente es necesario incluir el archivo js en el documento.</p>
<p>Evidentemente se puede utilizar en cualquier sitio y para cualquier cosa. También se aceptan sugerencias para mejorarlo</p>
<p>[ <a title="Descarga SelectMultiple" href="http://www.cmacias.com/wp-content/uploads/demos/selectmultiple/selectMultiple.zip">descargar</a> ] [ <a onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/selectmultiple/selectMultiple.html','selectmultiple','width=500,height=450,left='+(screen.availWidth/2-250)+',top='+(screen.availHeight/2-225)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/selectmultiple/selectMultiple.html">ejemplo</a> ]</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/javascript" title="en Bitacoras encuentre blogs que hablan acerca de  'javascript'." rel="tag">javascript</a>, <a href="http://bitacoras.com/canales/xhtml" title="en Bitacoras encuentre blogs que hablan acerca de  'xhtml'." rel="tag">xhtml</a>, <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a>, <a href="http://bitacoras.com/canales/dom" title="en Bitacoras encuentre blogs que hablan acerca de  'dom'." rel="tag">dom</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/selectbox-multiple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>un sencillo sistema de pestañas</title>
		<link>http://www.cmacias.com/un-sencillo-sistema-de-pestanas/</link>
		<comments>http://www.cmacias.com/un-sencillo-sistema-de-pestanas/#comments</comments>
		<pubDate>Sun, 18 May 2008 11:13:50 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=34</guid>
		<description><![CDATA[Ahora que están de moda los sistemas de pestañas, yo también me subo al carro de la moda y propongo mi propio sistema al margen de frameworks. Un poco de html, algo de css y el javascript de toda la vida. Lo primero de todo es crear la estructura que queremos que siga el sistema. [...]]]></description>
			<content:encoded><![CDATA[<p>Ahora que están de moda los sistemas de pestañas, yo también me subo al carro de la moda y propongo mi propio sistema al margen de frameworks. Un poco de html, algo de css y el javascript de toda la vida.</p>
<p>Lo primero de todo es crear la estructura que queremos que siga el sistema. En mi caso quiero hacer un panel limitado en tamaño, para pongamos por ejemplo, un panel de configuración.</p>
<pre class="html">&lt;div id="panel"&gt;
   &lt;ul id="tabs"&gt;
      &lt;li id="tab_01"&gt;&lt;a href="#"&gt;opción 1&lt;/a&gt;&lt;/li&gt;
      &lt;li id="tab_02"&gt;&lt;a href="#"&gt;opción 2&lt;/a&gt;&lt;/li&gt;
      &lt;li id="tab_03"&gt;&lt;a href="#"&gt;opción 3&lt;/a&gt;&lt;/li&gt;
      &lt;li id="tab_04"&gt;&lt;a href="#"&gt;opción 4&lt;/a&gt;&lt;/li&gt;
   &lt;/ul&gt;
   &lt;div id="paneles"&gt;
      &lt;div id="panel_01"&gt;panel para la opción 1&lt;/div&gt;
      &lt;div id="panel_02"&gt;panel para la opción 2&lt;/div&gt;
      &lt;div id="panel_03"&gt;panel para la opción 3&lt;/div&gt;
      &lt;div id="panel_04"&gt;panel para la opción 4&lt;/div&gt;
   &lt;/div&gt;
&lt;/div&gt;</pre>
<p><span id="more-34"></span></p>
<p>A cada elemento de la lista de los paneles les añadimos un identificador para después poder ocultarlos y/o mostrarlos según nos convenga. De momento debería de verse <a onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/tabs/tabs_01.html','tabs_01','width=420,height=320,left='+(screen.availWidth/2-210)+',top='+(screen.availHeight/2-160)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/tabs/tabs_01.html">así</a></p>
<p>A continuación viene la parte más divertida, darle forma y color.<br />
Para la forma de las pestañas, usaremos la siguiente imagen:</p>
<p><img title="pestañas" src="http://www.cmacias.com/wp-content/uploads/demos/tabs.png" alt="pestañas" width="300" height="96" /><br />
<br style="clear: both" /></p>
<p>Los estilos serían algo similar a esto.</p>
<pre class="css">/* tamaño y forma del panel principal */
div#panel {
   position: relative;
   width:400px;
   height: 300px;
}

/* configuracion de las pestañas */
   ul#tabs {
      position:absolute;
      left: 0px;
      top: 0px;
      margin:0;
      padding:0;
      width: 400px;
      height: 24px;
      z-index: 20;
   }
      ul#tabs li {
         float:left;
         height: 23px;
         padding-left: 8px;
         list-style: none;
         margin-right: 1px;
         background: url(tabs.png) left -48px;
      }
      ul#tabs li.actual {
         height: 24px;
         background: url(tabs.png) left -72px;
      }
         ul#tabs li a {
            display: block;
               /* hack para ie6 */
               .display: inline-block;
               /* fin del hack */
            height: 23px;
            line-height: 23px;
            padding-right: 8px;
            outline: 0px none;
            font-family: arial;
            font-size: 10px;
            text-decoration: none;
            color: #000;
            background: url(tabs.png) right 0px;
         }

         ul#tabs li.actual a {
            height: 24px;
            line-height: 24px;
            background: url(tabs.png) right -24px;
            cursor: default;
         }

   /* Configuración de los paneles */
   div#panel #paneles {
      position:absolute;
      left: 0px;
      top: 23px;
      width: 398px;
      height: 275px;
      border: 1px solid #91a7b4;
      background: #fff;
      overflow: hidden;
      z-index: 10px;
   }
      div#panel #paneles div {
         margin:10px;
         width: 378px;
         height: 255px;
         font-family: arial;
         font-size: 12px;
         text-decoration: none;
         color: #000;
         overflow: auto;
   }</pre>
<p>Por lo que el resultado debería ser igual a <a onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/tabs/tabs_02.html','tabs_01','width=420,height=320,left='+(screen.availWidth/2-210)+',top='+(screen.availHeight/2-160)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/tabs/tabs_02.html">esto.</a></p>
<p>Como la cosa ya va tomando forma, necesitamos crear una función javascript que nos permita cambiar tanto la apariencia de las pestañas como la visibilida de cada una de las capas destinadas a tal fin.</p>
<p>Para ello creamos una función como esta</p>
<pre class="js">function tab(pestana,panel)
{
   pst = document.getElementById(pestana);
   pnl = document.getElementById(panel);
   psts = document.getElementById('tabs').getElementsByTagName('li');
   pnls = document.getElementById('paneles').getElementsByTagName('div');

   // eliminamos las clases de las pestañas
   for(i=0; i&lt; psts.length; i++)
   {
   // Para evitar meternos en temas de dom
   // hacemos que la clase sea vacío
      psts[i].className = '';
   }

   // Añadimos la clase "actual" a la pestaña activa
   pst.className = 'actual';

   // ocultamos todos los paneles
   for(i=0; i&lt; pnls.length; i++)
   {
      pnls[i].style.display = 'none';
   }

   // Y mostramos el panel que nos interesa
   pnl.style.display = 'block';
}</pre>
<p>Al final de nuestro documento, mostramos la pestaña que queremos tener activa de esta forma</p>
<pre class="js">   &lt;script type="text/javascript"&gt;
      tab('tab_01','panel_01');
   &lt;/script&gt;</pre>
<p>Y esta misma función será la que utilicemos en cada enlace para poder mostrar/ocultar nuestra información.</p>
<pre class="html">&lt;ul id="tabs"&gt;
   &lt;li id="tab_01"&gt;&lt;a href="#" onclick="tab('tab_01','panel_01');"&gt;opción 1&lt;/a&gt;&lt;/li&gt;
   &lt;li id="tab_02"&gt;&lt;a href="#" onclick="tab('tab_02','panel_02');"&gt;opción 2&lt;/a&gt;&lt;/li&gt;
   &lt;li id="tab_03"&gt;&lt;a href="#" onclick="tab('tab_03','panel_03');"&gt;opción 3&lt;/a&gt;&lt;/li&gt;
   &lt;li id="tab_04"&gt;&lt;a href="#" onclick="tab('tab_04','panel_04');"&gt;opción 4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>[ <a title="resultado final" onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/tabs/tabs.html','','width=420,height=320,left='+(screen.availWidth/2-210)+',top='+(screen.availHeight/2-215)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/tabs/tabs.html">ver resultado final</a> ] [ <a title="descargar" href="http://www.cmacias.com/wp-content/uploads/demos/tabs/tabs.zip">descargar</a> ]</p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css" title="en Bitacoras encuentre blogs que hablan acerca de  'css'." rel="tag">css</a>, <a href="http://bitacoras.com/canales/xhtml" title="en Bitacoras encuentre blogs que hablan acerca de  'xhtml'." rel="tag">xhtml</a>, <a href="http://bitacoras.com/canales/javascript" title="en Bitacoras encuentre blogs que hablan acerca de  'javascript'." rel="tag">javascript</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/un-sencillo-sistema-de-pestanas/feed/</wfw:commentRss>
		<slash:comments>47</slash:comments>
		</item>
		<item>
		<title>Tooltip básico con css</title>
		<link>http://www.cmacias.com/tooltip-basico-con-css/</link>
		<comments>http://www.cmacias.com/tooltip-basico-con-css/#comments</comments>
		<pubDate>Wed, 14 May 2008 18:19:24 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=30</guid>
		<description><![CDATA[Hay veces en que no vale la pena utilizar javascript o scripts muy concretos para funciones básicas de una web. Con una línea de html y cuatro o cinco de css, es posible crear un tooltip, que en más de una ocasión nos será más que suficiente. Es línea de código html es más que [...]]]></description>
			<content:encoded><![CDATA[<p>Hay veces en que no vale la pena utilizar javascript o scripts muy concretos para funciones básicas de una web. Con una línea de html y cuatro o cinco de css, es posible crear un tooltip, que en más de una ocasión nos será más que suficiente.</p>
<p>Es línea de código html es más que suficiente para crear nuestro tooltip básico</p>
<pre class="html">&lt;a href="#" class="tip"&gt;enlace&lt;span&gt;Este es el tip.
Se puede añadir &lt;strong&gt;html&lt;/strong&gt;, aunque no
&lt;u&gt;conviene&lt;/u&gt; &lt;i&gt;abusar mucho&lt;/i&gt; de él&lt;/span&gt;&lt;/a&gt;</pre>
<p>Nuestro objetivo es ocultar el &lt;span&gt; dentro del enlace y mostrarlo al pasar el ratón por encima del mismo.</p>
<pre class="css">a.tip {
   position:relative;
   color: #006699;
   text-decoration:underline;
   font-family:Arial, Helvetica, sans-serif;
   font-size: 11px;
}
a.tip:hover {
   color: #cc0000;
   text-decoration:underline;
}
   a.tip span {
      position:absolute;
      display: none;
      left: 0px;
      top: 10px;
      width: 180px;
      height: auto;
      padding: 10px;
      padding-top: 20px;
      color: #003366;
      background: url(tip.gif) left top no-repeat;
      border-bottom: 1px solid #006699;
      cursor: default;
   }
   a.tip:hover span {
      position:relative;
      display: block;
      padding: 0;
      margin:0;
      background: none;
      border: 0px none;
      cursor: default;
   }

   a.tip_demo span span, a.tip_demo:hover span span {
      position:relative;
      display: inline;
      left: auto;
      top: auto;
      width: auto;
      height: auto;
      padding: 0;
      color: #000;
      background: none;
      border: 0px none;
      cursor: default;
   }
</pre>
<p>[ <a title="Imagen de fondo" href="http://www.cmacias.com/wp-content/uploads/2008/13/tip.gif" target="_blank">descargar imagen de fondo del css</a> ]</p>
<p><strong>Ejemplo del tooltip</strong></p>
<style type="text/css">
a.tip_demo {
position:relative;
color: #006699;
text-decoration:underline;
font-family:Arial, Helvetica, sans-serif;
font-size: 11px;
} a.tip_demo:hover {
color: #cc0000;
text-decoration:underline;
}
a.tip_demo span {
position:absolute;
display: none;
left: 0px;
top: 10px;
width: 180px;
height: auto;
padding: 10px;
padding-top: 20px;
color: #003366;
background: url(http://www.cmacias.com/wp-content/uploads/2008/13/tip.gif) left top no-repeat;
border-bottom: 1px solid #006699;
cursor: default;
}
a.tip_demo:hover span {
display: block;
}
a.tip_demo span span, a.tip_demo:hover span span {
position:relative;
display: inline;
left: auto;
top: auto;
width: auto;
height: auto;
padding: 0;
margin:0;
color: #000;
background: none;
border: 0px none;
cursor: default;
}</p>
</style>
<p>En este texto podemos encontrar <a class="tip_demo" href="#">Enlaces<span> con tooltips ocultos</span></a> que además soportan el uso de los tag <a class="tip_demo" href="#">más frecuentes<span><strong>negrita</strong>, <em>cursiva</em>, <span style="color: #cc0000;">texto con color</span> y hasta imágenes si nos trabajamos bien el css</span></a></p>
<p class="tags">Tags: <a href="http://bitacoras.com/canales/css+xhtml" title="en Bitacoras encuentre blogs que hablan acerca de  'css xhtml'." rel="tag">css xhtml</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/tooltip-basico-con-css/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Maquillar un file upload 2</title>
		<link>http://www.cmacias.com/maquillar-un-file-upload-2/</link>
		<comments>http://www.cmacias.com/maquillar-un-file-upload-2/#comments</comments>
		<pubDate>Sun, 11 May 2008 11:10:44 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=25</guid>
		<description><![CDATA[Vamos a aprovechar el código obtenido en maquillar un file upload, para complementarlo y que se parezca aún más si cabe a un control de upload solo que a nuestro gusto. El código inicial cambia un poco. Necesitamos crear un contenedor, y colocar dentro nuestro nuevo botón de upload, y un input de tipo texto [...]]]></description>
			<content:encoded><![CDATA[<p>Vamos a aprovechar el código obtenido en <a title="Maquillar un file upload" href="http://www.cmacias.com/maquillar-un-input-file-upload/" target="_blank">maquillar un file upload</a>, para complementarlo y que se parezca aún más si cabe a un control de upload solo que a nuestro gusto.</p>
<p>El código inicial cambia un poco. Necesitamos crear un contenedor, y colocar dentro nuestro nuevo botón de upload, y un input de tipo texto para que nos muestre el archivo seleccionado.</p>
<pre class="php">&lt;div class="cnt_upload"&gt;
   &lt;input id="upload_value" value="" /&gt;
   &lt;div class="upload"&gt;
      &lt;input type="file" name="upload" onchange="document.getElementById('upload_value').value=this.value" /&gt;
    &lt;/div&gt;
&lt;/div&gt;</pre>
<p>En esta ocasión hemos tenido que utilizar javascript para poder pasar mediante el evento onchange del input de tipo file, al de tipo texto.</p>
<p>Ahora que tenemos la estrucura necesaria, pasamos al css</p>
<pre class="css">div.cnt_upload {
   position:relative;
   height: 27px;
   width: 200px;
}

div.upload {
   position: absolute;
   left: 120px;
   top: 0px;
   width: 80px;
   height: 24px;
   overflow:hidden;
   background: url(btn_upload.png) left top no-repeat;
   clip:rect(0px, 80px, 24px, 0px );
}

   div.upload input {
      position: absolute;
      right: 0px;
      top: 0px;
      margin:0;
      padding:0;
      filter: Alpha(Opacity=0);
      -moz-opacity: 0;
      opacity: 0;
   }

input#upload_value {
   position:absolute;
   left: 0px;
   top: 0px;
   margin:0;
   padding:0;
   padding-top: 2px;
   height: 20px;
   width: 118px;
   border:1px solid #CCC;
}</pre>
<p>[ <a onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/file_upload/demo_upload2.html','file_upload2','width=240,height=64,left='+(screen.availWidth/2-120)+',top='+(screen.availHeight/2-32)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/file_upload/demo_upload2.html">demo</a> ] [ <a title="file upload 2" href="http://www.cmacias.com/wp-content/uploads/demos/file_upload/demo_upload2.zip">descarga </a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/maquillar-un-file-upload-2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Maquillar un Input file upload</title>
		<link>http://www.cmacias.com/maquillar-un-input-file-upload/</link>
		<comments>http://www.cmacias.com/maquillar-un-input-file-upload/#comments</comments>
		<pubDate>Sat, 10 May 2008 10:18:48 +0000</pubDate>
		<dc:creator>cmacias</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.cmacias.com/?p=23</guid>
		<description><![CDATA[Vamos a ver de que forma podemos maquillar los feos controles de upload de los formularios sin utilizar javascript y validando xhtml. Lo que vamos a hacer es colocar un div en lugar del input_file, y este dentro del div de la siguiente manera &#60;div class="upload"&#62; &#60;input type="file" name="upload" /&#62; &#60;/div&#62; Aplicamos ahora una capa [...]]]></description>
			<content:encoded><![CDATA[<p>Vamos a ver de que forma podemos maquillar los feos controles de upload de los formularios sin utilizar javascript y validando xhtml.</p>
<p>Lo que vamos a hacer es colocar un div en lugar del input_file, y este dentro del div de la siguiente manera</p>
<pre class="php">&lt;div class="upload"&gt;
      &lt;input type="file"  name="upload" /&gt;
&lt;/div&gt;</pre>
<p>Aplicamos ahora una capa de maquillaje que lo deje irreconocible</p>
<pre class="css">div.upload {
   position: relative;
   width: 80px;
   height: 24px;
   overflow:hidden;
   background:url(btn_upload.png) left top no-repeat;
   clip:rect(0px, 80px, 24px, 0px );
}  

div.upload input {
   position: absolute;
   left: auto;
   right: 0px;
   top: 0px;
   margin:0;
   padding:0;
   filter: Alpha(Opacity=0);
   -moz-opacity: 0;
   opacity: 0;
}</pre>
<p>Qué es lo que hemos hecho ? Simplemente hacer transparente el input_file, y mediante la propiedad css &#8220;clip&#8221; evitamos que el control se salga de los límites del div.</p>
<p>Y para que su aspecto sea más profesional todavía, le añadimos al div una imagen como esta<br />
<img title="Botón upload" src="http://www.cmacias.com/wp-content/uploads/2008/10/btn_upload.png" alt="Botón upload" width="80" height="24" /><br clear="all" /></p>
<p>[ <a onclick="window.open('http://www.cmacias.com/wp-content/uploads/demos/file_upload/demo_upload.html','file_upload','width=200,height=150,left='+(screen.availWidth/2-100)+',top='+(screen.availHeight/2-75)+'');return false;" href="http://www.cmacias.com/wp-content/uploads/demos/file_upload/demo_upload.html">demo </a>] [ <a href="http://www.cmacias.com/wp-content/uploads/demos/file_upload/demo_upload.zip">descargar</a> ]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cmacias.com/maquillar-un-input-file-upload/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

