<?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>webdebolsillo &#187; Ejemplos</title>
	<atom:link href="http://webdebolsillo.com/category/desarrollo-web/ejemplos/feed/" rel="self" type="application/rss+xml" />
	<link>http://webdebolsillo.com</link>
	<description>Ayudando a construir la web móvil en español</description>
	<lastBuildDate>Mon, 18 Apr 2011 22:00:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Detectar iPhone y aplicar estilos usando HTML o Javascript</title>
		<link>http://webdebolsillo.com/desarrollo-web/ejemplos/detectar-iphone-y-aplicar-estilos-usando-html-o-javascript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=detectar-iphone-y-aplicar-estilos-usando-html-o-javascript</link>
		<comments>http://webdebolsillo.com/desarrollo-web/ejemplos/detectar-iphone-y-aplicar-estilos-usando-html-o-javascript/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 13:19:00 +0000</pubDate>
		<dc:creator>Iván Mendoza</dc:creator>
				<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[ipod touch]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://webdebolsillo.com/desarrollo-web/ejemplos/detectar-iphone-y-aplicar-estilos-usando-html-o-javascript/</guid>
		<description><![CDATA[Hace dos días les mostraba cómo crear un campo de texto con botón de borrar incluido, en ese ejemplo tuve que distinguir entre Safari de Safari Mobile (iPhone/iPod Touch) porque aunque ambos usan webkit aún muestran pequeñas diferencias en la &#8230; <a href="http://webdebolsillo.com/desarrollo-web/ejemplos/detectar-iphone-y-aplicar-estilos-usando-html-o-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hace dos días les mostraba <a href="http://webdebolsillo.com/desarrollo-web/ejemplos/como-crear-un-campo-de-texto-con-boton-de-borrar-integrado/">cómo crear un campo de texto con botón de borrar incluido</a>, en ese ejemplo tuve que distinguir entre Safari de Safari Mobile (iPhone/iPod Touch) porque aunque ambos usan webkit aún muestran pequeñas diferencias en la forma de mostrar el HTML y CSS.</p>
<h2>Detectar iPhone y aplicar estilos usando HTML</h2>
<p>La forma de detectar el iPhone usando HTML y aplicar los estilos adecuados la descubrí en “<a href="http://www.evotech.net/blog/2007/07/web-development-for-the-iphone/">CSS, JavaScript and XHTML Explained</a>” .</p>
<h3>Con un hack en la etiqueta &lt;Link&gt;</h3>
<p>El hack consiste en agregar un estilo a través de la etiqueta <strong><em>link</em></strong> con un <strong><em>media type</em></strong> especial</p>
<pre class="wp-code-highlight prettyprint">&lt;!--[if !IE]&gt;–&gt;
&lt;link media=&quot;only screen and (max-device-width: 480px)&quot; type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;iphone.css&quot; /&gt;
&lt;!–&lt;![endif]–&gt;</pre>
<p><strong><em>Only screen </em></strong>es detectado por la mayoría de navegadores mientras que <em><strong>(max-device-width: 480px) </strong></em>solo por el iPhone y iPod Touch. De esta forma la hoja de estilo solo es cargada por el iPhone/iPod Touch. Se añaden los <a href="http://www.disenorama.com/tutoriales/comentarios-condicionales-para-ie">comentarios condicionales</a> para Internet Explorer, porque según comentan en el blog original, algunas versiones de Internet explorer cargan la el estilo para iphone.</p>
<h3>Con un hack en la etiqueta &lt;style&gt;</h3>
<p>De la misma forma anterior se puede aplicar el estilo necesario en la etiqueta Style directamente, de esta forma</p>
<pre class="wp-code-highlight prettyprint">&lt;style media=&quot;only screen and (max-device-width: 480px)&quot; type=&quot;text/css&quot;&gt;
  .texto{color:blue;}
&lt;/style&gt;</pre>
<h2>Detectar iPhone y aplicar estilos usando Javascript</h2>
<p>La forma de detectar el iPhone con Javascript la utilice en el ejemplo anterior del campo de texto, y aunque es funcional es un poco más complicada que la anterior y requiere de Javascript.</p>
<pre class="wp-code-highlight prettyprint">if(navigator.platform==&quot;iPhone&quot;||navigator.platform==&quot;iPod&quot;){
 document.write('&lt;style&gt; texto{color:blue;};&lt;/style&gt;’);
}</pre>
<p>En este caso use la variable platform del objeto navigator de Javascript, que en el caso del iPhone devuelve “<strong>iPhone</strong>” y en del iPod Touch “<strong>ipod</strong>”.</p>
<h2>Demo</h2>
<p>Los dejo con algunas capturas del resultado del segundo método en diferentes navegadores, para el ejemplo: Safari Mobile, Firefox, IE y Safari.</p>
<p style="text-align: center;"><strong>Safari Mobile (iPod Touch)</strong></p>
<p style="text-align: center;"><a href="http://webdebolsillo.com//sandbox/hacks-safari-mobile/"><img style="border-right: 0px; border-top: 0px; display: inline; margin: 5px 0px; border-left: 0px; border-bottom: 0px" title="Hack safari mobile" src="http://webdebolsillo.com/wp-content/uploads/2009/04/safarimobile.jpg" border="0" alt="Hack safari mobile" width="340" height="500" /></a></p>
<p style="text-align: center;"><strong>Firefox</strong></p>
<p style="text-align: center;"><strong></strong><a href="http://webdebolsillo.com/wp-content/uploads/2009/04/firefox.png"><img style="border-right: 0px; border-top: 0px; display: inline; margin: 5px 10px; border-left: 0px; border-bottom: 0px" title="Hack safari mobile en Firefox" src="http://webdebolsillo.com/wp-content/uploads/2009/04/firefox-thumb.png" border="0" alt="Hack safari mobile en Firefox" width="332" height="136" /></a></p>
<p style="text-align: center;"><strong>Internet Explorer</strong></p>
<p style="text-align: center;"><a href="http://webdebolsillo.com/wp-content/uploads/2009/04/ie.png"><img style="border-right: 0px; border-top: 0px; display: inline; margin: 5px 10px; border-left: 0px; border-bottom: 0px" title="Hack safari mobile en Internet Explorer" src="http://webdebolsillo.com/wp-content/uploads/2009/04/ie-thumb.png" border="0" alt="Hack safari mobile en Internet Explorer" width="332" height="256" /></a></p>
<p style="text-align: center;"><strong>Safari (Windows)</strong></p>
<p style="text-align: center;"><a href="http://webdebolsillo.com/wp-content/uploads/2009/04/safari.png"><img style="border-right: 0px; border-top: 0px; display: inline; margin: 5px 10px; border-left: 0px; border-bottom: 0px" title="Hack safari mobile en Safari" src="http://webdebolsillo.com/wp-content/uploads/2009/04/safari-thumb.png" border="0" alt="Hack safari mobile en Safari" width="332" height="137" /></a></p>
<p>El ejemplo lo encuentras en <a title="http://webdebolsillo.com//sandbox/hacks-safari-mobile/" href="http://webdebolsillo.com//sandbox/hacks-safari-mobile/">http://webdebolsillo.com//sandbox/hacks-safari-mobile/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://webdebolsillo.com/desarrollo-web/ejemplos/detectar-iphone-y-aplicar-estilos-usando-html-o-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cómo crear un campo de texto con botón de borrar integrado</title>
		<link>http://webdebolsillo.com/desarrollo-web/ejemplos/como-crear-un-campo-de-texto-con-boton-de-borrar-integrado/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=como-crear-un-campo-de-texto-con-boton-de-borrar-integrado</link>
		<comments>http://webdebolsillo.com/desarrollo-web/ejemplos/como-crear-un-campo-de-texto-con-boton-de-borrar-integrado/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 19:34:42 +0000</pubDate>
		<dc:creator>Iván Mendoza</dc:creator>
				<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[touchscript]]></category>

		<guid isPermaLink="false">http://webdebolsillo.com/?p=754</guid>
		<description><![CDATA[El titulo parece confuso pero el tema es bastante sencillo, es acerca de cómo crear un campo de texto con un botón incluido para borrar el campo, como el que usan las aplicaciones nativas de iPhone o Google, te muestro &#8230; <a href="http://webdebolsillo.com/desarrollo-web/ejemplos/como-crear-un-campo-de-texto-con-boton-de-borrar-integrado/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>El titulo parece confuso pero el tema es bastante sencillo, es acerca de cómo crear un campo de texto con un botón incluido para borrar el campo, como el que usan las aplicaciones nativas de iPhone o Google, te muestro una imagen para que se entienda mejor:</p>
<p style="text-align: center;"><a href="http://webdebolsillo.com/wp-content/uploads/2009/04/texto-boton-borrar.jpg"><img class="size-full wp-image-756 aligncenter" title="Google y su campo de texto con botón para limpiar" src="http://webdebolsillo.com/wp-content/uploads/2009/04/texto-boton-borrar.jpg" alt="Google y su campo de texto con botón para limpiar" width="320" height="458" /></a></p>
<p style="text-align: left;">En este tutorial voy a explicar cómo conseguir el efecto en webkit, específicamente para iPhone/iPod Touch, aunque con algunos cambios se puede llevar a muchos otros navegadores.</p>
<h2 style="text-align: left;">Para empezar</h2>
<p style="text-align: left;">Crear el campo es bastante sencillo, básicamente es el HTML de toda la vida, el efecto se logra con CSS y un poco de Javascript. Para hacerlo solo necesitas un editor de texto o HTML y un navegador que utilice webkit, de preferencia Safari.</p>
<p style="text-align: left;">El resultado final es un <strong><em>&#8220;campo de texto&#8221;</em> </strong>como este</p>
<p style="text-align: center;"><img class="size-full wp-image-757 aligncenter" title="Campo de texto con botón de borrado" src="http://webdebolsillo.com/wp-content/uploads/2009/04/txtreset.jpg" alt="Campo de texto con botón de borrado" width="302" height="39" /></p>
<p style="text-align: left;">Escribo &#8220;campo de texto&#8221; entre comillas porque en realidad son tres elementos, una etiqueta (<em>label</em>), un campo de texto (<em>input text</em>) y un boton (<em>input button</em>).</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-758" title="Campo de texto sin estilo" src="http://webdebolsillo.com/wp-content/uploads/2009/04/txtreset-sin-estilo.jpg" alt="Campo de texto sin estilo" width="305" height="40" /></p>
<h2 style="text-align: left;">Integrar los 3 elementos y conseguir un <em>super campo de texto</em></h2>
<h3 style="text-align: left;">HTML</h3>
<p style="text-align: left;">Como ya lo dije mencione antes, el efecto esta en CSS, aunque vamos a empezar con el HTML:</p>
<pre class="wp-code-highlight prettyprint">&lt;label for=&quot;txtNombre&quot; class=&quot;ts-txtReset ts-label&quot;&gt;Nombre:&lt;/label&gt;
&lt;input id=&quot;txtNombre&quot; class=&quot;ts-txtReset ts-txt&quot;type=&quot;text&quot; /&gt;
&lt;input id=&quot;btnNombre&quot; class=&quot;ts-txtReset ts-btn&quot; type=&quot;button&quot; value=&quot;txtNombre&quot; /&gt;</pre>
<p style="text-align: left;">Si te puedes dar cuenta no hay nada extraordinario, quizás solo el nombre de las clases y el valor del botón que es el mismo que id del campo de texto, de momento no nos sirve y lo veremos más adelante, en el código javascript.</p>
<p style="text-align: left;">Las clases no tienen nada especial, excepto que todas comienzan con <strong>ts-</strong>, esto es porque el ejemplo es parte de un <em>framework</em> en el que estoy trabajando, <a href="http://webdebolsillo.com/touchscript/">Touchscript</a>, y nada más que eso.</p>
<h3 style="text-align: left;">Estilo CSS</h3>
<p style="text-align: left;">Ahora vamos con el estilo del campo de texto. La idea es engañar al ojo haciendolo creer que es un solo campo de texto, cuando en realidad son tres.</p>
<h4 style="text-align: left;">Etiqueta (ts-txtReset ts-label)</h4>
<p>Cree el estilo la etiqueta con bordes redondeados, excepto del lado derecho que es donde se une con el campo de texto, también especifique el padding y el tamaño de letra, ambos para ajustarlo al campo de texto (con el padding por defecto no encajan y la fuente varia). Además cambie el color de la fuente a gris (#555) para resaltar la diferencia.</p>
<pre class="wp-code-highlight prettyprint">.ts-txtReset.ts-label{
 border:solid 1px #aaa;
 border-width:1px 0 1px 1px;
 padding:2px 0px 3px 4px;
 background:#fff;
 color:#555;
 margin:0;
 font-size:1em;
 /* WEBKIT */
 -webkit-appearance: none;
 -webkit-border-top-left-radius:4px;
 -webkit-border-bottom-left-radius:4px;
}</pre>
<h4 style="text-align: left;">Campo de texto (ts-txtReset ts-txt)</h4>
<p>Con el campo de texto es prácticamente lo mismo, añadir bordes excepto de los lados para ajustar a la etiqueta y el botón. Además añadí una regla exclusiva de webkit y que pudieron ver arriba, es <strong>-webkit-appearance: none</strong>;. Esta sirve para eliminar la sombra que Safari añade al campo de texto, de no quitar la sombra se perdería el efecto porque la etiqueta y el botón no tienen esa sombra y se nota &#8220;el salto&#8221;. También puedes ver que quite los bordes redondeados con <strong>-webkit-border-radius:0;</strong></p>
<pre class="wp-code-highlight prettyprint">.ts-txtReset.ts-txt{
 border:solid 1px #aaa;
 border-width:1px 0 1px;
 padding:3px 2px 2px 0;
 font-size:1em;
 background:#fff;
 margin:0;
 /* WEBKIT */
 -webkit-appearance: none;
 -webkit-border-radius:0;
}</pre>
<h4 style="text-align: left;">Botón (ts-txtReset ts-btn)</h4>
<p>Casi para cerrar los estilos añade el del botón, de nuevo la misma que los anteriores pero con dos cambios notables. El primero es la imagen de fondo y el segundo es que no muestra texto (aunque si tiene <em>value</em>).</p>
<p>El fondo lo incluyo con background y con bastante padding lateral(10px) para hacer el botón más grande.</p>
<p>El texto se oculta con <strong><em>text-indent:-500em</em></strong> (lo envía muy lejos <img src='http://webdebolsillo.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) y por si acaso agrego <em><strong>overflow:hidden</strong></em> (para ocultar lo que este muy lejos).</p>
<pre class="wp-code-highlight prettyprint">.ts-txtReset.ts-btn{
 border:solid 1px #aaa;
 border-width:1px 1px 1px 0;
 padding:2px 7px 3px;
 font-size:1em;
 margin:0;
 background:#fff url(icono-reset.png) no-repeat center center;
 text-indent:-500em;
 overflow:hidden;
 /* WEBKIT */
 -webkit-appearance: none;
 -webkit-border-radius:0;
 -webkit-border-top-right-radius:4px;
 -webkit-border-bottom-right-radius:4px;
}</pre>
<p>Termino el estilo agregando un estilo &#8220;base&#8221; al body:</p>
<pre class="wp-code-highlight prettyprint">body{font-family:helvetica, arial, sans-serif;}</pre>
<p style="text-align: left;">Hasta aquí conseguiste el efecto visual del cuadro de texto, ahora hay que agregar la funcionalidad con javascript,</p>
<h2 style="text-align: left;">Hacer que el botón de borrar borre</h2>
<p>La funcionalidad del botón de borrar igual es sencilla y se logra con javascript.</p>
<p>Lo primero es crear la función de borrar, o limpiar como le digo yo.</p>
<pre class="wp-code-highlight prettyprint">// TouchScript txtReset Limpia
function tsTxtResetLimpia(ev){
 txtVictima=document.getElementById(ev[&quot;target&quot;].value);
 if(txtVictima){
  txtVictima.value=&quot;&quot;;
  txtVictima.focus();
 }
}</pre>
<p style="text-align: left;">El parámetro <em><strong>ev</strong><strong> </strong></em>es un objeto de evento, el &#8220;lanzador&#8221; del evento lo envía automáticamente, y de él lo único que importa es el campo <em><strong>target</strong></em>, que es lo mismo que el botón que disparo el evento (en nuestro ejemplo <em>btnNombre</em>). Del botón (<em>target</em>) tomamos el campo <strong><em>value </em></strong>que contiene el <em><strong>id </strong></em>del campo de texto que debe borrar (esa era la idea de usar el <em>id </em>del campo de texto en el <em>value </em>del botón). Luego compruebo si ese id existe, si existe borro el contenido y lanzo la función focus para el campo de texto.</p>
<p style="text-align: left;">La función de limpiar esta lista, ahora hay que asignársela al botón (<em>btnNombre</em>) usando <em><strong>addEventListener</strong></em> y el evento <em>click</em>.</p>
<pre class="wp-code-highlight prettyprint">// Inicializa las acciones al cargar la pagina
addEventListener('load',function(){
 // Asigna el evento click al boton btnNombre
 document.getElementById('btnNombre').addEventListener('click',tsTxtResetLimpia,false);
},false);</pre>
<p style="text-align: left;">Safari en PC muestra una diferencia en el padding respecto a la de Safari mobile (iPhone/iPod) y para que se vea bien en ambos agregue un &#8220;mini hack&#8221;.</p>
<pre class="wp-code-highlight prettyprint">//Mini hack para corregir padding superior en Safari para PC
if(navigator.platform!=&quot;iPhone&quot;&amp;amp;&amp;amp;navigator.platform!=&quot;iPod&quot;){
 document.write('&amp;lt;style&amp;gt;.ts-txtReset.ts-label{padding-top:3px;}&amp;lt;/style&amp;gt;');
}</pre>
<p style="text-align: left;">Listo, con eso tienes un campo de texto con etiqueta y botón de borrar integrados. El código completo del ejemplo lo puedes ver en <a href="http://webdebolsillo.com/sandbox/touchscript/txtreset/txtreset.txt">txtreset.txt</a>, te recomiendo revisarlo para no olvidar cosas como la etiqueta <em>meta viewport</em>.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-765" title="Ejemplo final" src="http://webdebolsillo.com/wp-content/uploads/2009/04/txtreset-ejemplo.jpg" alt="Ejemplo final" width="320" height="460" /></p>
<h2 style="text-align: left;">Notas</h2>
<ul>
<li>El ejemplo es una muestra de lo simple que es mejorar un control para formulario y mejorar la usabilidad de una página web.</li>
<li>Por la misma razón que solo es un ejemplo, aún se puede mejorar en muchos sentidos. Especialmente hacerlo con código no intrusivo, para no interferir si javascript esta desactivado, y poderlo hacer compatible con más navegadores además de Safari, o webkit en general.</li>
<li>Más adelante incluiré este campo de texto en Touchscript para que sea más fácil usarlo.</li>
</ul>
<h2 style="text-align: left;">Material</h2>
<ul>
<li><strong>Ejemplo:</strong> <a href="http://webdebolsillo.com/sandbox/touchscript/txtreset/">http://webdebolsillo.com/sandbox/touchscript/txtreset/</a></li>
<li><strong></strong></li>
<li><strong>Archivos del ejemplo</strong>: <a href="http://webdebolsillo.com/sandbox/touchscript/txtreset/">txtreset.zip</a> (18.9kb)
<ul>
<li>index.html</li>
<li>icono-reset.png</li>
<li>icono-reset.psd</li>
<li><a href="http://webdebolsillo.com/sandbox/touchscript/txtreset/txtreset.txt">txtreset.txt</a> (código fuente, lo mismo que index.html)</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://webdebolsillo.com/desarrollo-web/ejemplos/como-crear-un-campo-de-texto-con-boton-de-borrar-integrado/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

