<?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>Coders.me &#187; Javascript</title>
	<atom:link href="http://www.coders.me/lang/es/category/web-html-js-css/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://www.coders.me/</link>
	<description>Blog de Informática y Programación</description>
	<lastBuildDate>Mon, 07 Dec 2009 18:48:23 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Botones con efecto de Windows 7 en JS &amp; CSS</title>
		<link>http://www.coders.me//lang/es/web-html-js-css/javascript/mootools/buttons-like-windows-7-with-js-css</link>
		<comments>http://www.coders.me//lang/es/web-html-js-css/javascript/mootools/buttons-like-windows-7-with-js-css#comments</comments>
		<pubDate>Tue, 22 Sep 2009 03:00:20 +0000</pubDate>
		<dc:creator>Eduardo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[buttons]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[sexy]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.coders.me/?p=439</guid>
		<description><![CDATA[<img src="http://www.coders.me/wp-content/uploads/2008/09/general-48x48.jpg" width="48" height="48" alt="" title="CSS" /><br/><p>Hace rato que estoy usando Windows 7 como sistema operativo principal, y debo decir que APESTA tanto o más que Windows Vista, pero dejando de lado eso, en esta oportunidad les traigo un efecto bastante atractivo inspirándome en la nueva…</p>]]></description>
			<content:encoded><![CDATA[<img src="http://www.coders.me/wp-content/uploads/2008/09/general-48x48.jpg" width="48" height="48" alt="" title="CSS" /><br/><p>Hace rato que estoy usando Windows 7 como sistema operativo principal, y debo decir que APESTA tanto o más que Windows Vista, pero dejando de lado eso, en esta oportunidad les traigo un efecto bastante atractivo inspirándome en la nueva &#8220;super barra de tareas&#8221; de Windows 7.</p>
<p>El efecto consiste en &#8220;una luz que sigue al mouse&#8221; mientras lo movemos sobre el botón, algo que no se puede apreciar en la siguiente imagen, pero que si lo podemos hacer con la <a href="http://www.coders.me/ejemplos/win7_buttons/mootools/">demo</a>.</p>
<p><a href="http://www.coders.me/ejemplos/win7_buttons/mootools/"><img src="http://www.coders.me/wp-content/uploads/2009/09/21-09-2009-12-57-54-a.m..png" alt="21-09-2009 12-57-54 a.m." title="21-09-2009 12-57-54 a.m." width="554" height="202" class="aligncenter size-full wp-image-440" /></a></p>
<div class="compatibilidad">
  <div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/ie.png"/></div><div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/ff.png"/></div><div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/chrome.png"/></div><div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/safari.png"/></div><br/><div class="estampilla desc">6, 7, 8</div><div class="estampilla desc">3.0, 3.5</div><div class="estampilla desc">3</div><div class="estampilla desc">4</div>
  </div>
<h2>Creando la maqueta</h2>
<p>La idea es la siguiente:<br />
<img src="http://www.coders.me/wp-content/uploads/2009/09/map.gif" alt="map" title="map" width="300" height="200" class="aligncenter size-full wp-image-441" /></p>
<pre class="brush: html;">
&lt;span class=&quot;win7&quot;&gt;
  &lt;div&gt;&lt;/div&gt;
  &lt;a href=&quot;#&quot;&gt;Button&lt;/a&gt;
&lt;/span&gt;
</pre>
<p>Pero para no ensuciar tanto el código HTML que tenemos que crear cada vez que queremos un botón, vamos a crear ese div por medio del javascript, de manera que nuestro código html real será el siguiente:</p>
<pre class="brush: html;">
&lt;span class=&quot;win7&quot;&gt;&lt;a href=&quot;#&quot;&gt;Button&lt;/a&gt;&lt;/span&gt;
</pre>
<h2>CSS Code</h2>
<pre class="brush: css;">
.win7
{
  font-family:&quot;Segoe UI&quot;, Arial, Helvetica, sans-serif;
  font-size:12px;

  position:relative;
  float:left;
  height:29px;
  width:100%;
  background:url('../images/nav-bg.png') repeat-x top left;
}

.win7 div
{
  position:absolute;
  top:0;
  left:0;
  width:100%;
  height:29px;
  background:url('../images/active1.png') no-repeat center;
  z-index:0;
}

.win7 a
{
  line-height:29px;
  text-align:center;
  display:block;
  position:relative;
  padding:0 25px;
  z-index:2;
}
</pre>
<p>Ahora vamos a darle bordes redondeados:</p>
<pre class="brush: css;">
span.win7
{
  width:auto;
  overflow:hidden;

  -moz-border-radius: 15px;
  -webkit-border-radius: 15px;
  border-radius: 15px;

  border:2px solid #deded2;
}
</pre>
<h2>MooTools code</h2>
<p>Iniciamos siempre despues de cargar el dom:</p>
<pre class="brush: js;">
window.addEvent('domready', function() {
</pre>
Internet Explorer 6 trabaja mal con el background, refrescándolo cada vez que el visitante mueve el mouse. <strong>&#8220;</strong>Afortunadamente<strong>&#8220;</strong> existe un hack para decirle a IE que &#8220;use el cache&#8221; y no vuelva a pedir la imagen que ya ha sido cargada:</p>
<pre class="brush: js;">
    if (Browser.Engine.trident4) {
      try { document.execCommand(&quot;BackgroundImageCache&quot;, false, true); }
      catch(err) {}
    }
</pre>
<p>Ahora vamos a recorrer el DOM en busca de todos los enlaces con la clase &#8220;win7&#8243;, y a cada enlace le agregamos el &#8220;div&#8221; y le asignamos el evento &#8220;mousemove&#8221; ajustando la posición del background relativo al mouse:</p>
<pre class="brush: js;">
    $$('.win7 a').each(function(el) {

      el.win7BG = new Element('div', {'styles':{'opacity':0}}).injectBefore(el);
      el.win7BG.set('morph', {'duration':300});

      el.addEvent('mousemove', function (ev) {
        el.win7BG.setStyle('background-position', - ((600/2) - (ev.event.layerX||ev.event.offsetX||0))+'px top');
      });
</pre>
<p>Lo siguiente es para agregarle el efecto &#8220;fade&#8221;, aunque no es el objetivo principal de este artículo, queda muy bonito:</p>
<pre class="brush: js;">
      el.addEvent('mouseenter', function (ev) {
        el.win7BG.morph({'opacity': 1});
      });

      el.addEvent('mouseout', function (ev) {
        el.win7BG.morph({'opacity': 0});
      });

    }); // end each

}); // end domready
</pre>
<p>Lo instalamos en nuestra página, agregando el siguiente código en el HEAD:</p>
<pre class="brush: html;">
&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/mootools/1.2.3/mootools-yui-compressed.js&quot;&gt;&lt;/script&gt;

&lt;script type=&quot;text/javascript&quot; src=&quot;js/win7.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/styles.css&quot; type=&quot;text/css&quot; media=&quot;all&quot; /&gt;
</pre>
<p>(acomoda las rutas a tu conveniencia).</p>
<h2>jQuery code</h2>
<p>Hacemos lo mismo que en mootools, sólo que con código de jQuery:</p>
<pre class="brush: js;">
$(document).ready(function(){

  if ( document.all &amp;&amp; !window.opera &amp;&amp; !window.XMLHttpRequest &amp;&amp; $.browser.msie ) {
    // stupid jquery ie6 detection
      try { document.execCommand(&quot;BackgroundImageCache&quot;, false, true); }
      catch(err) {}
  }

  $('.win7 a').each(function() {
    var el = $(this);

    el.win7BG = $(document.createElement('div')).css({'opacity': 0});
    el.win7BG.insertBefore(el);

    el.mousemove(function(ev) {
      el.win7BG.css({'background-position' : -((600/2) - (ev.originalEvent.layerX||ev.originalEvent.offsetX||0))+'px top'});
    });

    el.hover(
      function() {
        el.win7BG.stop().animate({'opacity':1},300);
      },
      function() {
        el.win7BG.stop().animate({'opacity':0},300);
      }
    );

  });
});
</pre>
<p>Lo instalamos en el HEAD de nuestra página:</p>
<pre class="brush: html;">
&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot;&gt;&lt;/script&gt;

&lt;script type=&quot;text/javascript&quot; src=&quot;js/win7.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/styles.css&quot; type=&quot;text/css&quot; media=&quot;all&quot; /&gt;
</pre>
<p>(acomoda las rutas a tu conveniencia).</p>
<h2>Creando los Botones y el Menu</h2>
<p>Para crear un menu:</p>
<pre class="brush: html;">
&lt;ul class=&quot;win7&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Para crear un botón:</p>
<pre class="brush: html;">
&lt;span class=&quot;win7&quot;&gt;&lt;a href=&quot;#&quot;&gt;Button&lt;/a&gt;&lt;/span&gt;
</pre>
<p>He agregado más clases con diferentes colores que puedes ver en la demo, pero la técnica sigue siendo la misma.</p>
<h2>Demo</h2>
<p>Puedes ver la <a href="http://www.coders.me/ejemplos/win7_buttons/mootools/">demo en mootools</a> como la <a href="http://www.coders.me/ejemplos/win7_buttons/jquery/">demo en jQuery</a>.</p>
<p><div class="download" id="download">

      <p>Este artículo contiene los siguientes archivos:</p>
      <ul>
      <ul><li><a href='http://www.coders.me/wp-content/themes/coders-social/donar.php?modal=1&width=500&height=175&url=http%3A%2F%2Fwww.coders.me%2Fwp-content%2Fuploads%2F2009%2F09%2Fwin7_buttons.zip&titulo=Botones+con+efecto+de+Windows+7+en+JS+%26%23038%3B+CSS' rel='sexylightbox'>http://www.coders.me/wp-content/uploads/2009/09/win7_buttons.zip</a></li></ul>
      </ul>

    </div>
]]></content:encoded>
			<wfw:commentRss>http://www.coders.me//lang/es/web-html-js-css/javascript/mootools/buttons-like-windows-7-with-js-css/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Sexy ToolTips</title>
		<link>http://www.coders.me//lang/es/web-html-js-css/javascript/sexy-tooltips</link>
		<comments>http://www.coders.me//lang/es/web-html-js-css/javascript/sexy-tooltips#comments</comments>
		<pubDate>Sun, 20 Sep 2009 03:00:04 +0000</pubDate>
		<dc:creator>Eduardo</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[exclusive]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[sexy tooltips]]></category>
		<category><![CDATA[tooltips]]></category>

		<guid isPermaLink="false">http://www.coders.me/?p=431</guid>
		<description><![CDATA[<br/><p></p>
<p>Sexy Tooltips te permite crear tooltips realmente sexys. Reemplaza esos feos, aburridos y amarillos tooltips del navegador, por unos con toda la onda!</p>

Estilo: Puedes elegir entre varios estilos.
Posición: Método de posicionamiento inteligente.
Compatibilidad: Trabaja en todos los navegadores modernos.…]]></description>
			<content:encoded><![CDATA[<br/><p><img src="http://www.coders.me/wp-content/uploads/2009/08/title1.png" alt="Sexy ToolTips" title="Sexy ToolTips" width="636" height="118" class="aligncenter size-full wp-image-434" /></p>
<p>Sexy Tooltips te permite crear tooltips realmente sexys. Reemplaza esos feos, aburridos y amarillos tooltips del navegador, por unos con toda la onda!</p>
<ul>
<li>Estilo: Puedes elegir entre varios estilos.</li>
<li>Posición: Método de posicionamiento inteligente.</li>
<li>Compatibilidad: Trabaja en todos los navegadores modernos.</li>
</ul>
<div class="compatibilidad">
  <div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/ie.png"/></div><div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/ff.png"/></div><div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/ff.png"/></div><div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/chrome.png"/></div><div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/opera.png"/></div><div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/safari.png"/></div><br/><div class="estampilla desc">6, 7, 8</div><div class="estampilla desc">3.0, 3.5</div><div class="estampilla desc">1.5, 2.0</div><div class="estampilla desc">3</div><div class="estampilla desc">9.64, 10</div><div class="estampilla desc">4</div>
  </div>
<h2>Demo</h2>
<p>Puedes ver una <a href="http://www.coders.me/ejemplos/sexy-tooltips/">demo de Sexy Tooltips</a> clickeando en la siguiente imagen:</p>
<p><a href="http://www.coders.me/ejemplos/sexy-tooltips/"><img src="http://www.coders.me/wp-content/uploads/2009/08/demo.png" alt="demo" title="demo" width="461" height="162" class="aligncenter size-full wp-image-433" /></a></p>
<h2>Instalación</h2>
<p>En el caso de MooTools:</p>
<pre class="brush: html;">
&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/mootools/1.2.3/mootools-yui-compressed.js&quot;&gt;&lt;/script&gt;

&lt;script type=&quot;text/javascript&quot; src=&quot;js/sexy-tooltips.v1.1.mootools.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;js/sexy-tooltips/coda.css&quot; type=&quot;text/css&quot; media=&quot;all&quot;/&gt;
</pre>
<p>o en jQuery:</p>
<pre class="brush: html;">
&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js&quot;&gt;&lt;/script&gt;

&lt;script type=&quot;text/javascript&quot; src=&quot;js/sexy-tooltips.v1.1.jquery.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;js/sexy-tooltips/coda.css&quot; type=&quot;text/css&quot; media=&quot;all&quot;/&gt;
</pre>
<p>Donde… :<br />
coda.css es el nombre del estilo a usar. Puedes elegir entre estos estilos:</p>
<ul>
<li>blue.css</li>
<li>coda.css</li>
<li>vista.css</li>
<li>rosita.css</li>
<li>hulk.css</li>
<li>msn.css</li>
</ul>
<h2>Usando Sexy ToolTips</h2>
<p>En MooTools:</p>
<pre class="brush: html;">
&lt;script type=&quot;text/javascript&quot;&gt;
  document.addEvent('domready', function() {
    $('a1').tooltip ('&lt;h1&gt;Title Formating&lt;/h1&gt;&lt;p&gt;Example of simple tooltip.&lt;/p&gt;', {
      width: 200,
      style: 'alert',
      sticky: 1,
      hook: 1
    });
  });
&lt;/script&gt;
</pre>
<p>En jQuery:</p>
<pre class="brush: html;">
&lt;script type=&quot;text/javascript&quot;&gt;
  $(document).ready(function(){
    $('#a1').tooltip ('&lt;h1&gt;Title Formating&lt;/h1&gt;&lt;p&gt;Example of simple tooltip.&lt;/p&gt;', {
      width: 200,
      style: 'alert',
      sticky: 1,
      hook: 1
    });
  });
&lt;/script&gt;
</pre>
<p>Donde&#8230; $(&#8216;a1&#8242;) es un elemento de la página. Puedes poner tooltips a cualquier elemento del DOM.</p>
<h2>Documentación</h2>
<ul class="functions">
<li>
<div class="function">tooltip()</div>
<div class="explained">
<p><strong>Element.tooltip(content, options)</strong></p>
<p>Crea el tooltip para ese elemento. </p>
<p>@content (string) El mensaje a mostrar.</p>
<p>@options (array) Opciones del estilo del tooltip.</p>
<p>Ejemplo:</p>
<pre class="brush: js;">
$('example').tooltip('Hello world.', { mode: 'tl', width: 140, hook: 1 });
</pre>
</p></div>
</li>
<li>
<div class="function">tooltip_hide()</div>
<div class="explained">
<p><strong>Element.tooltip_hide()</strong></p>
<p>Oculta el tooltip.</p>
</p></div>
</li>
</ul>
<ul class="functions">
<li>
<div class="function">options</div>
<div class="explained">
<ul>
<li>width &#8211; (number: default to 250) Ancho total del tooltip. Tener en cuenta que el contenedor tiene 15px menos de cada lado.</li>
<li>mode &#8211; (string: default to &#8216;auto&#8217;) Posición del puntero. Este parámetro acepta un string de 2 caracteres (obligatorio) donde la primer letra puede ser &#8216;t&#8217; (Top) o &#8216;b&#8217; (Bottom) y la segunda letra puede ser &#8216;l&#8217; (Left) o &#8216;r&#8217; (Right). Si se establece este parámetro a &#8216;auto&#8217; el script calculará la mejor posición para mostrar el tooltip. </li>
<li>hook &#8211; (boolean: default to false) El tooltip se mueve a medida que movemos el puntero del mouse. </li>
<li>mouse &#8211; (boolean: default to true) El tooltip se muestra al pasar el mouse por arriba del elemento. </li>
<li>click &#8211; (boolean: default to false) El tooltip se muestra al clickear el elemento. Se desactiva el parámetro &#8216;mouse&#8217; al establecer este parámetro a &#8216;true&#8217;.</li>
<li>sticky &#8211; (boolean: default to false) Establezca este parámetro a &#8216;true&#8217; si desea que el tooltip muestre un botón para cerrarse. </li>
<li>style &#8211; (string: default to &#8216;default&#8217;) Corresponde a la clase para el contenedor del mensaje. Útil si deseas agregar estilos propios.</li></div>
</li>
</ul>
<h3>Eventos</h3>
<ul class="functions">
<li>
<div class="function">event tooltipshow()</div>
<div class="explained">
<p>Evento lanzado cuando el tooltip termina de mostrarse.</p>
<p>MooTools:</p>
<pre class="brush: js;">
$('element').addEvent('tooltipshow', function() {
    alert('tooltip event fired');
});
</pre>
<p>jQuery:</p>
<pre class="brush: js;">
$('element').bind('tooltipshow', function() {
    alert('tooltip event fired');
});
</pre>
</p></div>
</li>
<li>
<div class="function">event tooltiphide()</div>
<div class="explained">
<p>Evento lanzado cuando el tooltip termina de cerrarse.</p>
<p>MooTools:</p>
<pre class="brush: js;">
$('element').addEvent('tooltiphide', function() {
    alert('tooltip event fired');
});
</pre>
<p>jQuery:</p>
<pre class="brush: js;">
$('element').bind('tooltiphide', function() {
    alert('tooltip event fired');
});
</pre>
</p></div>
</li>
</ul>
<h2>Licencia</h2>
<p>El script es publicado bajo la licencia <a href="http://es.wikipedia.org/wiki/Licencia_MIT">MIT</a>.</p>
<h2>¿Cuanto cuesta?</h2>
<p><strong>Nada.</strong> Pero puedes colaborar comprándome un café <img src='http://www.coders.me/wp-includes/images/smilies/icon_rolleyes.gif' alt=':roll:' class='wp-smiley' /> </p>
<h2>Download</h2>
<div class="download" id="download">

      <p>Este artículo contiene los siguientes archivos:</p>
      <ul>
      <ul><li><a href='http://www.coders.me/wp-content/themes/coders-social/donar.php?modal=1&width=500&height=175&url=http%3A%2F%2Fsexy-tooltips.googlecode.com%2Ffiles%2Fsexy-tooltips-1.1.zip&titulo=Sexy+ToolTips' rel='sexylightbox'>http://sexy-tooltips.googlecode.com/files/sexy-tooltips-1.1.zip</a></li><li><a href='http://www.coders.me/wp-content/themes/coders-social/donar.php?modal=1&width=500&height=175&url=http%3A%2F%2Fcode.google.com%2Fp%2Fsexy-tooltips%2F&titulo=Sexy+ToolTips' rel='sexylightbox'>http://code.google.com/p/sexy-tooltips/</a></li></ul>
      </ul>

    </div>
<h2>ChangeLog</h2>
<pre>
Sexy ToolTips 1.1 - Octubre 16, 2009
* BugFixed: Textarea scroll bug
* BugFixed: Window scroll bug
* Creada la versión para jQuery
* Agregada Compatibilidad con IE6

Sexy ToolTips 1.0.0 - Septiembre 01, 2009
* Versión Inicial.
* Mootools 1.2.3
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.coders.me//lang/es/web-html-js-css/javascript/sexy-tooltips/feed</wfw:commentRss>
		<slash:comments>90</slash:comments>
		</item>
		<item>
		<title>Forzar el estilo de una clase en MooTools</title>
		<link>http://www.coders.me//lang/es/web-html-js-css/javascript/mootools/forzar-el-estilo-de-una-clase-en-mootools</link>
		<comments>http://www.coders.me//lang/es/web-html-js-css/javascript/mootools/forzar-el-estilo-de-una-clase-en-mootools#comments</comments>
		<pubDate>Fri, 05 Jun 2009 20:04:13 +0000</pubDate>
		<dc:creator>Eduardo</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[style]]></category>

		<guid isPermaLink="false">http://www.coders.me/?p=414</guid>
		<description><![CDATA[<img src="http://www.coders.me/wp-content/uploads/2009/09/mootools_cat_icon.png" width="48" height="48" alt="" title="Mootools" /><br/><p>Les dejo un <strong>pedazo</strong> de código para &#8216;forzar&#8217; el estilo de un elemento. El problema con el que me topé al crear SexyForms fue forzar los estilos mios a un elemento que ya tenía estilos puestos por el autor. </p>
<h2>El problema</h2>
<p>Veamos…</p>]]></description>
			<content:encoded><![CDATA[<img src="http://www.coders.me/wp-content/uploads/2009/09/mootools_cat_icon.png" width="48" height="48" alt="" title="Mootools" /><br/><p>Les dejo un <strong>pedazo</strong> de código para &#8216;forzar&#8217; el estilo de un elemento. El problema con el que me topé al crear SexyForms fue forzar los estilos mios a un elemento que ya tenía estilos puestos por el autor. </p>
<h2>El problema</h2>
<p>Veamos un ejemplo:</p>
<pre class="brush: html;">
&lt;style&gt;
.red{
  color: red;
}
&lt;/style&gt;
&lt;input type=&quot;text&quot; id=&quot;nombre&quot; class=&quot;red&quot;/&gt;
</pre>
<p>Desde un script externo yo podría hacer lo siguiente:</p>
<pre class="brush: js;">
$('nombre').erase('class');
$('nombre').addClass('blue');
</pre>
<p>De esa manera, sobrescribimos el estilo por el nuestro, mostrando el color del texto en azul. Pero el script anterior no funcionará en el siguiente caso:</p>
<pre class="brush: html;">
&lt;style&gt;
input#nombre{
  color: red;
}
&lt;/style&gt;
&lt;input type=&quot;text&quot; id=&quot;nombre&quot; /&gt;
</pre>
<p>Y esto es porque <em>input#nombre</em> tiene mucho más peso que nuestra clase &#8216;blue&#8217;.</p>
<h2>La solución</h2>
<pre class="brush: js;">
Element.implement({
  ForceClass: function(param) {
    if (!$('mooForceClass')) {
      document.body.adopt(new Element(&quot;force&quot;, { 'id' : 'mooForceClass' }));
    }
    var mooForceClass = $('mooForceClass');
    mooForceClass.erase('class');
    mooForceClass.addClass(param);
    var Styles = mooForceClass.getStyles('left', 'top', 'bottom', 'right',
    'width', 'height', 'color', 'line-height', 'margin', 'padding',
    'text-indent', 'text-transform', 'z-index', 'text-decoration',
    'vertical-align', 'position', 'display', 'visibility', 'overflow',
    'float', 'clear', 'cursor', 'background', 'list-style',
    'border-style', 'border-weight', 'border-color', 'font-family',
    'font-size', 'font-weight', 'font-style', 'border-color',
    'border-weight', 'border-style');
    mooForceClass.erase('class');
    return this.setStyles(Styles);
  }
});
</pre>
<p>Lo que hace la función <strong>ForceClass </strong>es agregar como Style, los estilos de una clase. Como todo el mundo sabe, la propiedad Style tiene más peso que el class mas específico que pueda haber.</p>
<p>Ahora en el mismo ejemplo, podríamos hacer lo siguiente:</p>
<pre class="brush: html;">
input#nombre{
  color: red;
}
&lt;input type=&quot;text&quot; id=&quot;nombre&quot; /&gt;
</pre>
<pre class="brush: js;">
$('nombre').ForceClass('blue');
</pre>
<p>Es tan sólo una idea, que quizás como todo remedio tiene &#8216;efectos secundarios&#8217; <img src='http://www.coders.me/wp-includes/images/smilies/icon_rolleyes.gif' alt=':roll:' class='wp-smiley' /> </p>
<p>¿Que les parece?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coders.me//lang/es/web-html-js-css/javascript/mootools/forzar-el-estilo-de-una-clase-en-mootools/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nueva versión: Sexy Lightbox 2.2</title>
		<link>http://www.coders.me//lang/es/web-html-js-css/javascript/nueva-version-sexy-lightbox-22</link>
		<comments>http://www.coders.me//lang/es/web-html-js-css/javascript/nueva-version-sexy-lightbox-22#comments</comments>
		<pubDate>Sun, 31 May 2009 20:00:08 +0000</pubDate>
		<dc:creator>Eduardo</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.coders.me/?p=412</guid>
		<description><![CDATA[<br/><p><strong><a href="http://www.coders.me/web-html-js-css/javascript/sexy-lightbox-2">Actualizada la versión de SexyLightbox 2</a>.</strong></p>
<h2>Bugs</h2>
<p>Se han corregido varios bugs de la versión anterior entre ellos:</p>

Cuando clickeabas en una imagen, y luego en un link apuntando a contenido html, el contenido/iframe permanecían con el fondo de la imagen anterior.
El…]]></description>
			<content:encoded><![CDATA[<br/><p><strong><a href="http://www.coders.me/web-html-js-css/javascript/sexy-lightbox-2">Actualizada la versión de SexyLightbox 2</a>.</strong></p>
<h2>Bugs</h2>
<p>Se han corregido varios bugs de la versión anterior entre ellos:</p>
<ul>
<li>Cuando clickeabas en una imagen, y luego en un link apuntando a contenido html, el contenido/iframe permanecían con el fondo de la imagen anterior.</li>
<li>El loading mostraba un fondo negro luego de ver un video.</li>
<li>Internet Explorer mostraba el overlay mas grande de lo que realmente debía ser.</li>
<li>AJAX 404 error no mostraba notificación de error.</li>
</ul>
<h2>Mejoras</h2>
<p>También se han agregado algunas mejoras:<br />
<img src="http://www.coders.me/wp-content/uploads/2009/05/25-05-2009-05-18-56-pm.png" alt="" /></p>
<ul>
<li>Bordes mas suaves y nítidos.</li>
<li>Agregada la función <strong>refresh()</strong> para volver a escanear el documento en busca de enlaces con rel=&#8221;sexylightbox&#8221;. Muy útil luego de haber hecho cambios en el DOM.</li>
<li>Agregada la función <strong>shake()</strong> que crea un pequeño efecto de sacudida en el lightbox.</li>
<li>Agregado el estilo &#8216;modal&#8217; que cancela el cierre del lightbox clickeando en el overlay.</li>
</ul>
<p>Pero sin duda la actualización mas significativa es la de poder trabajar con las nuevas versiones de los frameworks mas populares:<br />
<strong>MooTools 1.2.2</strong><br />
<strong>jQuery 1.3.2</strong></p>
<p>Debido a la incapacidad de jQuery para trabajar con clases, no puede haber dos instancias de SexyLightbox trabajando en la misma página (como puedes hacerlo con MooTools). Además el efecto de movimiento en jQuery está tremendamente exagerado.</p>
<p>Por si alguien desea el PSD para crear nuevos skins, puede descargarlo desde la página de <a href="http://code.google.com/p/sexy-lightbox/">Google Code</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.coders.me//lang/es/web-html-js-css/javascript/nueva-version-sexy-lightbox-22/feed</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Sexy Forms</title>
		<link>http://www.coders.me//lang/es/web-html-js-css/sexy-forms</link>
		<comments>http://www.coders.me//lang/es/web-html-js-css/sexy-forms#comments</comments>
		<pubDate>Sun, 24 May 2009 05:05:02 +0000</pubDate>
		<dc:creator>Eduardo</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programación Web]]></category>
		<category><![CDATA[exclusive]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[sexy]]></category>
		<category><![CDATA[sexy forms]]></category>

		<guid isPermaLink="false">http://www.coders.me/?p=396</guid>
		<description><![CDATA[<img src="http://www.coders.me/wp-content/uploads/2008/09/progweb-48x48.jpg" width="48" height="48" alt="" title="Programación Web" /><br/>SexyForms es una librería javascript que se encarga de <strong>mejorar increíblemente la apariencia de los formularios XHTML</strong>. Es <strong>compatible con todos los navegadores modernos</strong>, y con Internet Explorer también. Es completamente no-intrusivo y permite crear tus propios estilos!]]></description>
			<content:encoded><![CDATA[<img src="http://www.coders.me/wp-content/uploads/2008/09/progweb-48x48.jpg" width="48" height="48" alt="" title="Programación Web" /><br/><p>SexyForms es una librería javascript que se encarga de <strong>mejorar increíblemente la apariencia de los formularios XHTML</strong>. Es <strong>compatible con todos los navegadores modernos</strong>, y con Internet Explorer también. Es completamente no-intrusivo y permite crear tus propios estilos!</p>
<div class="compatibilidad">
  <div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/ie.png"/></div><div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/ff.png"/></div><div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/chrome.png"/></div><div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/opera.png"/></div><div class="estampilla"><img src="http://www.coders.me/wp-content/themes/coders-social/images/browsers/safari.png"/></div><br/><div class="estampilla desc">6, 7, 8</div><div class="estampilla desc">3.0, 3.5</div><div class="estampilla desc">3</div><div class="estampilla desc">9.64, 10</div><div class="estampilla desc">4</div>
  </div>
<h2>Demostración</h2>
<p><a href="http://www.coders.me/ejemplos/sexy-forms/">Form Elements</a> &#8211; <a href="http://www.coders.me/ejemplos/sexy-forms/demo/">SelectBox con Ajax</a></p>
<p><a href="http://www.coders.me/ejemplos/sexy-forms/"><img src="http://www.coders.me/wp-content/uploads/2009/04/sexyforms-example.png" alt="sexyforms-example" title="sexyforms-example" width="413" height="324" class="aligncenter size-full wp-image-398" /></a></p>
<h2>Características</h2>
<p><img src="http://www.coders.me/wp-content/uploads/2009/05/tablita.png" alt="tablita" title="tablita" width="650" height="345" class="aligncenter size-full wp-image-403" /></p>
<h2>Instalación</h2>
<p>Se instala como cualquier script:</p>
<pre class="brush: html;">
&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/mootools/1.2.2/mootools-yui-compressed.js&quot;&gt;&lt;/script&gt;

&lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;sexyforms-vista.css&quot; media=&quot;all&quot;/&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;sexyforms.v1.3.mootools.js&quot;&gt;&lt;/script&gt;
</pre>
<p>Donde&#8230; :<br />
<strong>sexyforms-vista.css</strong> es el nombre del estilo a usar. Puedes elegir entre estos estilos:</p>
<ul>
<li>sexyforms-blue.css</li>
<li>sexyforms-red.css</li>
<li>sexyforms-green.css</li>
<li>sexyforms-dark.css</li>
<li>sexyforms-clean.css</li>
<li>sexyforms-vista.css</li>
<li>sexyforms-orange.css</li>
<li>sexyforms-simple.css</li>
<li>sexyforms-gamma.css</li>
</ul>
<p><strong>sexyforms.v1.3.mootools.js</strong> es el nombre del script. Si quieres ganar velocidad, puedes probar usando la versión comprimida: <strong>sexyforms.v1.3.mootools.min.js</strong></p>
<h2>Usando SexyForms</h2>
<p>En mootools:</p>
<pre class="brush: js;">
  $$(&quot;input&quot;, &quot;select&quot;, &quot;textarea&quot;).each(function(el) {
    el.DoSexy();
  });
</pre>
<p>Ejemplo: Buscar el formulario con clase &#8216;sexyform&#8217; y embellecer todos sus elementos:</p>
<pre class="brush: html;">
&lt;script type=&quot;text/javascript&quot;&gt;
window.addEvent('domready', function() {
  $$(&quot;.sexyform input&quot;, &quot;.sexyform select&quot;, &quot;.sexyform textarea&quot;).each(function(el) {
    el.DoSexy();
  });
});
&lt;/script&gt;
</pre>
<p>Ejemplo: Embellecer un elemento individual:</p>
<pre class="brush: html;">&lt;input type=&quot;text&quot; id=&quot;name&quot; value=&quot;&quot; /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
  $('name').DoSexy();
&lt;/script&gt;
</pre>
<h2 id="documentacion">Documentación</h2>
<p>Funciones públicas:</p>
<ul class="functions">
<li>
<div class="function">element.DoSexy()</div>
<div class="explained">
<p>Convierte un elemento triste y aburrido, en uno sexy!</p>
</p></div>
</li>
<li>
<div class="function">element.reset()</div>
<div class="explained">
<p>Convierte un elemento sexy, en uno aburrido y triste.</p>
</p></div>
</li>
</ul>
<h2>Licencia</h2>
<p>El script es publicado bajo la licencia <a rel="nofollow" href="http://es.wikipedia.org/wiki/Licencia_MIT">MIT</a>.</p>


<h2 id="download">Download</h2>
<div class="download" id="download">

      <p>Este artículo contiene los siguientes archivos:</p>
      <ul>
      <ul><li><a href='http://www.coders.me/wp-content/themes/coders-social/donar.php?modal=1&width=500&height=175&url=http%3A%2F%2Fsexy-forms.googlecode.com%2Ffiles%2Fsexy-forms-1.3.zip&titulo=Sexy+Forms' rel='sexylightbox'>http://sexy-forms.googlecode.com/files/sexy-forms-1.3.zip</a></li><li><a href='http://www.coders.me/wp-content/themes/coders-social/donar.php?modal=1&width=500&height=175&url=http%3A%2F%2Fsexy-forms.googlecode.com%2Ffiles%2Fpsd-sources.rar&titulo=Sexy+Forms' rel='sexylightbox'>http://sexy-forms.googlecode.com/files/psd-sources.rar</a></li><li><a href='http://www.coders.me/wp-content/themes/coders-social/donar.php?modal=1&width=500&height=175&url=http%3A%2F%2Fcode.google.com%2Fp%2Fsexy-forms%2F&titulo=Sexy+Forms' rel='sexylightbox'>http://code.google.com/p/sexy-forms/</a></li></ul>
      </ul>

    </div>
<h2>Changelog</h2>
<pre>
SexyForms 1.3.1 - Octubre 30, 2009
* BugFixed: La lista del elemento Select no aparecia en el top correcto.

SexyForms 1.3.0 - Octubre 03, 2009
* Mas compatibilidad con IE6
* Nuevo SelectBox con manejo de eventos
* Bugs de posición en selectbox arreglados
* SelectBox ahora recibe el foco
* SelectBox ahora muestra iconos en IE6 &#038; IE7
* Bug de Textarea en Opera arreglado

SexyForms 1.2.0 - Septiembre 29, 2009
* Elemento Select eliminado. Ahora se usa el nativo para evitar errores.
* Agregado InputFile
* BugFixed: Se hace mejor uso de la herencia.
* BugFixed: El textarea es del mismo tamaño en todos los navegadores.

SexyForms 1.1.0 - Junio 20, 2009
* BugFixed: Float elements compatible
* Decenas de cambios menores.

SexyForms 1.0.0 - Abril 04, 2009
* Versión Inicial.
* Mootools 1.2.2</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.coders.me//lang/es/web-html-js-css/sexy-forms/feed</wfw:commentRss>
		<slash:comments>142</slash:comments>
		</item>
		<item>
		<title>Mi experiencia con jQuery</title>
		<link>http://www.coders.me//lang/es/web-html-js-css/javascript/mi-experiencia-con-jquery</link>
		<comments>http://www.coders.me//lang/es/web-html-js-css/javascript/mi-experiencia-con-jquery#comments</comments>
		<pubDate>Mon, 09 Feb 2009 20:14:12 +0000</pubDate>
		<dc:creator>Eduardo</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.coders.me/?p=382</guid>
		<description><![CDATA[<br/><p>Los que me conocen, saben que soy <a href="http://mootools.net/">mootoolero</a>. Pero no por ser fanboy de MooTools sin razón, sino porque es el framework que elegí cuando comencé con javascript y es <strong>a lo que me acostumbré</strong>.</p>
<p>El domingo anterior (08/feb/09), me embarqué…</p>]]></description>
			<content:encoded><![CDATA[<br/><p>Los que me conocen, saben que soy <a href="http://mootools.net/">mootoolero</a>. Pero no por ser fanboy de MooTools sin razón, sino porque es el framework que elegí cuando comencé con javascript y es <strong>a lo que me acostumbré</strong>.</p>
<p>El domingo anterior (08/feb/09), me embarqué en la travesía de convertir todo el código MooTools de <a href="http://www.coders.me/web-html-js-css/javascript/sexy-alert-box-12-mootools-jquery">SexyAlertBox</a> a jQuery. Esta es mi breve experiencia con el framework del que todo el mundo habla maravillas.</p>
<p><img src="http://www.coders.me/wp-content/uploads/2009/02/domandoajquery.jpg" alt="domandoajquery" title="domandoajquery" width="472" height="265" class="aligncenter size-full wp-image-383" /></p>
<h2>Primeras impresiones</h2>
<p>Tengo todo listo: notepad2 abierto, <a href="http://docs.jquery.com/">la ayuda de jQuery</a> abierta, y Google preparado para despachar dudas.</p>
<p>Al comenzar a leer los ejemplos, me sentí a gusto con la sintaxis.</p>
<p>La función <em>.css()</em> reemplaza al <em>.setStyle()</em> de MooTools. El código se ve mas bonito con el encadenamiento de funciones. La ayuda es bastante completa, trae ejemplos funcionando y todo.</p>
<p>Luego de una horita de lectura, manos a la obra!</p>
<p>Al comenzar a codear, me dí cuenta de que <strong>faltaba algo: Las clases</strong>.<br />
MooTools te permite crear clases, implementar métodos, y heredar &#8216;a la fuerza&#8217; funciones/eventos propios.<br />
jQuery carece totalmente de todo esto, y lo deja como algo &#8220;secundario&#8221; (el creador de jQuery John Resig publica un <a rel="nofollow" href="http://ejohn.org/blog/classy-query/">código &#8216;extra&#8217; para crear clases</a> que no se incluye en el framework).</p>
<p>Me dije a mi mismo: No importa, hay miles de plugins dando vueltas por ahí seguramente esos plugins de alguna forma lo hacen. <img src='http://www.coders.me/wp-includes/images/smilies/icon_neutral.gif' alt=':neutral:' class='wp-smiley' /> </p>
<h2>Esa nube obscura llamada jQuery</h2>
<p>Crear elementos en jQuery es tan fácil como arcaico. En MooTools para crear un elemento debemos usar la función/clase <em>new Element</em> que nos devuelve el objeto creado. Para los que no estén acostumbrados a la POO esto puede resultar algo horrible. Para los que estamos acostumbrados, nos resulta algo común.</p>
<p>En jQuery usamos <em>append</em> para agregar html y crear el elemento. Obviamente no nos devuelve el objeto creado ni nada parecido pero nos ahorra escribir mucho código (10 lineas MooTools vs 2 jQuery).</p>
<p>Programo feliz en jQuery hasta completar el 90% del script&#8230; ahora viene lo difícil: los eventos.</p>
<h2>Nadando contra la corriente</h2>
<p>La potencia de jQuery es lamentable.</p>
<blockquote><p>jQuery es el &#8220;Visual Basic&#8221; de los frameworks en javascript.</p></blockquote>
<p>Como jQuery no posee la función &#8216;<a rel="nofollow" href="http://mootools.net/docs/Native/Function#Function:bind">bind</a>&#8216; de MooTools, que sirve para setear el contexto de la ejecución de una función, tuve que agregarla como plugin.</p>
<p>jQuery tampoco posee la función &#8216;<a rel="nofollow" href="http://mootools.net/docs/Native/Function#Function:delay">delay</a>&#8216; que sirve para retrasar la ejecución de una función. Es el setTimeout de las funciones, sólo que a diferencia de la nativa, la de MooTools hereda el contexto desde donde se está ejecutando. También tuve que agregarla como plugin.</p>
<p>El crimen mas grande de jQuery es la inexistencia de la clase Chain. Los jCuleros le llaman &#8220;encadenado&#8221; a esto:</p>
<pre class="brush: js;">$('#id').nacer().crecer().comer().reproducirse().morir();</pre>
<p>(adoro el encadenado de jQuery)</p>
<p>Los MooTooleros le llaman &#8220;encadenado&#8221; a esto:</p>
<pre class="brush: js;">this.chain(function () { alert('cola de mensajes') });
this.callChain();
</pre>
<p>La inexistencia de esto último en jQuery fue una traba enorme para SexyAlertBox.<br />
¿La solución? Abrir el código fuente de MooTools, buscar la clase Chain y pegarla en el código fuente de SexyAlertBox <img src='http://www.coders.me/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  .</p>
<p>Mootools trae los &#8216;easeEffects&#8217; (el efecto del tipo rebote). jQuery no los trae, hay que agregarlos como plugin.</p>
<h2>Conclusión</h2>
<p>En fin, lo que tenia que resultar algo agradable resulto ser muy molesto y tedioso, muchas trabas para funciones tan estúpidas.<br />
<strong>Lo bueno:</strong> Me gustó como quedó el código fuente en jQuery. Se ve bonito, fácil de entender, <strong>fácil de escribir</strong>, es muy intuitivo, sin dudas el mejor framework para gente que se inicia en la programación en javascript.<br />
<strong>Lo malo:</strong> La falta de funciones, la poca importancia que se les dio a las &#8216;clases&#8217;. Para los que necesitamos potencia, usar clases, herencia y tener a mano un puñado de <a rel="nofollow" href="http://mootools.net/docs/Native/Function">funciones útiles</a>, existe <a href="http://mootools.net/">MooTools</a>.</p>
<p><img src="http://www.coders.me/wp-content/uploads/2009/02/hcrazy.jpg" alt="hcrazy" title="hcrazy" width="374" height="232" class="aligncenter size-full wp-image-384" /></p>
<p>Voy a seguir programando en jQuery ahora que lo aprendí a usar, mi meta es migrar SexyLightbox 3 a jQuery asi que muy pronto tendrán noticias.</p>
<p>Deseenme suerte!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coders.me//lang/es/web-html-js-css/javascript/mi-experiencia-con-jquery/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>

