<?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>Sumolari.com &#187; jQuery</title>
	<atom:link href="http://sumolari.com/tag/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://sumolari.com</link>
	<description>Proyectos de un amante de la informática</description>
	<lastBuildDate>Tue, 08 May 2012 16:01:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Comienza el desarrollo de WP Carousel 0.6</title>
		<link>http://sumolari.com/comienza-el-desarrollo-de-wp-carousel-0-6/</link>
		<comments>http://sumolari.com/comienza-el-desarrollo-de-wp-carousel-0-6/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 13:55:35 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[mis creaciones]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[wp carousel]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=4331</guid>
		<description><![CDATA[No tenía pensado retomar el desarrollo de WP Carousel hasta finales de verano, pero durante estos días que he estado fuera he recibido muchas sugerencias sobre nuevas características, que sumadas a las que tenía en mente al liberar la versión 0.5 hacen que me decante por comenzar el desarrollo de la próxima versión hoy mismo. [...]]]></description>
			<content:encoded><![CDATA[<p>No tenía pensado retomar el desarrollo de <a href="http://sumolari.com/wp-carousel/">WP Carousel</a> hasta finales de verano, pero durante estos días que he estado fuera he recibido muchas sugerencias sobre nuevas características, que sumadas a las que tenía en mente al liberar la versión 0.5 hacen que me decante por comenzar el desarrollo de la próxima versión hoy mismo. No me gusta dar fechas de lanzamiento, pero esta versión estará disponible antes de finales de verano, y la siguiente gran revisión tardará mucho en llegar (no tengo pensados grandes cambios después de estos).</p>
<p>En esta versión me centraré en la sección de opciones (veréis muchos cambios a nivel de usuario y otros tantos a nivel de desarrolladores) y en un nuevo motor para los carruseles. A continuación os resumo las principales novedades.</p>
<h3><span id="more-4331"></span>Nuevo motor, nuevas posibilidades</h3>
<p>Hasta ahora usaba <a href="http://www.dynamicdrive.com/dynamicindex4/stepcarousel.htm">Step Carousel</a> para hacer funcionar los carruseles, sin embargo no veo que avance demasiado y otros scripts ya le superan en funciones útiles, como por ejemplo, el desplazamiento vertical en lugar de horizontal. Aún no he decidido cuál será el sucesor de <a href="http://www.dynamicdrive.com/dynamicindex4/stepcarousel.htm">Step  Carousel</a>, pero ya podéis dar por seguro que a partir de ahora <a href="http://www.dynamicdrive.com/dynamicindex4/stepcarousel.htm">Step  Carousel</a> no será el script que haga funcionar vuestros carruseles. Eso sí,<a href="http://sumolari.com/tag/jquery/"> jQuery</a> seguirá siendo el framework que use el próximo motor.</p>
<p>Lamentablemente, este cambio requiere también cambio a nivel de themes, ya que el código necesario para crear los carruseles difiere en cada script. Por este motivo <a href="http://www.dynamicdrive.com/dynamicindex4/stepcarousel.htm">Step  Carousel</a> seguirá estando disponible dependiendo del theme activado. La API de themes variará bastante (lo explicaré más adelante), y una de las nuevas variables que añadiré indicará si el theme soporta o no el nuevo motor. Por defecto se supondrá que no lo soporta, así que a no ser que el theme se haya actualizado, se tomará <a href="http://www.dynamicdrive.com/dynamicindex4/stepcarousel.htm">Step  Carousel</a> como motor.</p>
<p>Si el theme está actualizado (todos los themes por defecto estarán actualizados) nos permitirá escoger el motor que queramos y dependiendo de lo que hayamos escogido se nos mostrarán unas opciones u otras diferentes. Un theme podrá tener versiones para <a href="http://www.dynamicdrive.com/dynamicindex4/stepcarousel.htm">Step  Carousel</a> y para el nuevo motor en un mismo paquete.</p>
<p>No lo voy a comentar con más profundidad, pero al tener un nuevo motor tendremos más opciones a la hora de mostrar el carrusel, que dependerán del motor que acabe decidiendo usar.</p>
<h3>Nueva API de themes</h3>
<p>Algo que habéis pedido muchos es poder cambiar los colores de los themes. Esta característica no me parece demasiado importante ya que cambiar los colores en el <a href="http://sumolari.com/category/css/">CSS</a> es realmente simple, y hacer modificaciones más complejas requiere conocimientos básicos de programación en <a href="http://sumolari.com/category/php/">PHP</a>, no un editor WYSIWYG con esteroides. Sin embargo en la nueva API de themes añadiré un sistema para que los autores de los themes puedan añadir campos de opciones en la página del carrusel, de modo que cada theme tendrá sus opciones únicas de forma más visible. Yo por mi parte añadiré un theme algo más personalizable, aunque no esperéis poder cambiarlo todo sin saber nada de código, los editores WYSIWYG se los dejo a Adobe.</p>
<p>Estas mejoras en la API de themes también repercutirán en la API de Extras, ya que seguramente añada la posibilidad de usar más campos en los formularios para mostrar contenido generado por Extras.</p>
<h3>Nuevo diseño de la página de opciones</h3>
<p>Toda la zona de opciones estará rediseñada y mejorada. La idea es aplicar lo aprendido al diseñar la interfaz Drag &amp; Drop para crear una interfaz más cómoda, sencilla y potente para las opciones. Las únicas cosas que seguro que voy a añadir son el soporte para campos creados por los themes (a través de la nueva API) y el guardado AJAX. Todo lo demás aún está en el aire.</p>
<h3>Mejoras en la interfaz Drag &amp; Drop</h3>
<p><a href="http://sumolari.com/wp-content/uploads/2010/07/wp_carousel_show_hide.png" rel="lightbox-4331"><img class="alignleft size-medium wp-image-4332 leftimage" title="WP Carousel - Ocultar y Mostrar contenido" src="http://sumolari.com/wp-content/uploads/2010/07/wp_carousel_show_hide-215x300.png" alt="WP Carousel - Ocultar y Mostrar contenido" width="215" height="300" /></a>También mejoraré algunas cosas de la interfaz Drag &amp; Drop. La petición más popular ya está lista: la posibilidad de ocultar y mostrar contenido del carrusel está en la versión en desarrollo. Podéis ver cómo queda en la imagen de la izquierda. No tiene demasiada dificultad entender el funcionamiento y facilita bastante las cosas.</p>
<p>La verdad es que no sé cómo se me pasó esto durante el desarrollo de la nueva UI. Lo cierto es que hasta yo lo pasé mal a veces al añadir cierto contenido al carrusel, pero no se me ocurrió la idea hasta que me llegó la propuesta.</p>
<p>Otra novedad que me gustaría añadir es mostrar una miniatura de la imagen que se mostrará del artículo o del contenido personalizado (etiquetas, autores y categorías quedan fuera porque aún no he dado con una forma eficaz de mostrar las imágenes de diversos artículos en poco espacio), aún no sé las dificultades con las que me encontraré, pero me parece que esta característica de la antigua interfaz era muy interesante y se perdió (lamentablemente) con el paso al Drag &amp; Drop.</p>
<h3>Nuevo sistema de Backup</h3>
<p>El sistema de Backup de <a href="../wp-carousel/">WP Carousel</a> es de lo más sencillo: copiar y pegar. Sin embargo se requiere de otro equipo donde almacenar la copia en un archivo creado manualmente por el usuario. Me ha llegado una propuesta realmente interesante para un nuevo sistema de Backup y me gustaría implementarla en la próxima versión.</p>
<p>El nuevo sistema crearía copias de seguridad cada X tiempo o cada cierta cantidad de cambios en el carrusel, y las almacenaría en la Base de Datos de <a href="http://sumolari.com/category/wordpress/">WordPress</a>. Dependiendo de cómo esté configurado el plugin, enviaría por email el Backup cada vez que se crease, permitiendo desde la página de Backup descargar el archivo de Backup, eliminar el Backup de la Base de Datos o restaurar el carrusel desde un Backup, aunque me gustaría seguir permitiendo copiar y pegar el código de Backup de forma manual, ya que es realmente cómodo para aquellas ocasiones en las que se presiente que el siguiente cambio va a estropear el carrusel (y realmente práctico durante el desarrollo).</p>
<h3>Vídeos</h3>
<p>Sí, muchos lo habéis pedido, y sí, mucho habéis esperado. Para mí no tiene demasiada utilidad, pero creo que para muchos es algo prácticamente imprescindible. <a href="../wp-carousel/">WP Carousel</a> permitirá añadir vídeos a partir de la versión 0.6. Aún no tengo decidido del todo cómo implementaré esta opción en la zona administrativa, así que se admiten propuestas. Estoy en contacto con <a href="http://www.viper007bond.com/about/">Viper007Bond</a>, autor de <a href="http://www.viper007bond.com/wordpress-plugins/vipers-video-quicktags/">Viper’s Video Quicktags</a>, para utilizar este plugin como intermediario entre los vídeos y <a href="../wp-carousel/">WP Carousel</a>, siendo necesario tener activado el plugin <a href="http://www.viper007bond.com/wordpress-plugins/vipers-video-quicktags/">Viper’s  Video Quicktags</a> para poder mostrar vídeos.</p>
<p>Como veis, son muchas novedades que requerirán tiempo de desarrollo, tiempo que estará compartido con mis estudios de Objective-C que poco a poco van avanzando y ya están dando como fruto pequeñas y simples aplicaciones para el <a href="http://sumolari.com/tag/iphone/">iPhone</a> carentes de momento de utilidad alguna.</p>
<h3>Una versión para durar</h3>
<p>Todos estos cambios van enfocados a crear una versión estable que permanecerá sin cambios grandes durante una buena temporada. Hasta ahora cada relativamente pocos meses liberaba una nueva versión de <a href="../wp-carousel/">WP Carousel</a>, sin embargo quiero dejar esta política de lado para disponer de más tiempo para programar en Objective-C y aprender más y más.</p>
<p>Creo que con todas estas novedades <a href="../wp-carousel/">WP Carousel</a> se habrá convertido en un plugin digno de ser considerado versión 1.0 (a pesar de que la próxima versión será la 0.6). A lo largo de este año <a href="../wp-carousel/">WP Carousel</a> ha ido mejorando notablemente y sinceramente, me parece que he implementado todas las características que habéis ido pidiendo a lo largo del tiempo a excepción de aquellas que los medios técnicos no me permitían añadir.</p>
<p>Me alegra ver que ya se ha descargado más de 14000 veces y que la opinión de aquellos que lo prueban es muy buena. Cuando libere la próxima versión seguro que a muchos de los que no les acababa de gustar <a href="../wp-carousel/">WP Carousel</a> cambian de opinión, porque voy a implementar prácticamente todas las características que habéis pedido a lo largo de este año de vida del plugin. De hecho la única característica que no voy a implementar es la lista de categorías y de tags, una característica que tenía planeada para <a href="../wp-carousel/">WP Carousel</a> 0.5 pero que finalmente descarté debido a qué no encontré un modo sencillo de asignarle una imagen a una categoría o a una etiqueta.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/comienza-el-desarrollo-de-wp-carousel-0-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Haz que WordPress cargue los frameworks desde servidores externos</title>
		<link>http://sumolari.com/haz-que-wordpress-cargue-los-frameworks-desde-servidores-externos/</link>
		<comments>http://sumolari.com/haz-que-wordpress-cargue-los-frameworks-desde-servidores-externos/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 19:18:29 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[trucos]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=3530</guid>
		<description><![CDATA[WordPress utiliza varios frameworks Javascript para hacer diversos efectos y mejorar a interfaz, además de que algunos themes se aprovechan de esto para añadir mejoras al diseño utilizando funciones que ofrecen estos frameworks. Recurrir a estos métodos ocasiona un aumento del tiempo de carga de la página y del ancho de banda consumido por el [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sumolari.com/category/wordpress/">WordPress</a> utiliza varios frameworks <a href="http://sumolari.com/category/javascript">Javascript</a> para hacer diversos efectos y mejorar a interfaz, además de que algunos themes se aprovechan de esto para añadir mejoras al diseño utilizando funciones que ofrecen estos frameworks. Recurrir a estos métodos ocasiona un aumento del tiempo de carga de la página y del ancho de banda consumido por el servidor al enviar los archivos solicitados al usuario, sin embargo, podemos hacer que <a href="../category/wordpress/">WordPress</a> cargue estos archivos desde servidores externos que nos reducen el ancho de banda gastado y que, en algunos casos, son más rápidos que nuestro servidor. Además, usar este método también nos permite cargar automáticamente la versión más actualizada de los diversos frameworks, evitando tener que volver a subir las nuevas versiones a nuestro servidor.</p>
<p>En este artículo me centraré en <a href="http://sumolari.com/tag/jquery/">jQuery</a>, j<a href="http://ui.jquery.com">Query UI</a> y <a href="http://www.prototypejs.org/">Prototype</a>, los frameworks que utiliza actualmente <a href="http://sumolari.com">Sumolari.com</a>, pero antes de hacer que <a href="../category/wordpress/">WordPress</a> cargue los archivos desde servidores externos (usaremos los de Google), veremos primero el método general.</p>
<h3>wp_deregister_script, wp_register_script y wp_enqueue_script</h3>
<p><a href="../category/wordpress/">WordPress</a> tiene varias funciones para gestionar el código <a href="../category/javascript">Javascript</a> que se carga en cada página. Esta funciones permiten, a grandes rasgos, añadir un script con un nombre identificatorio (del cual se definen la URL del archivo, las dependencias, la versión o incluso si se puede cargar en el pie de página o no), eliminarlo o cargarlo.</p>
<p>Para el primero de todos los usos, recurriremos a la función <em>wp_register_script</em>. Esta función tiene 5 parámetros:<em> $handle</em>, <em>$src</em>, <em>$deps</em>, <em>$ver</em> e <em>$in_footer</em>.</p>
<pre class="prettyprint linenums lang-php">wp_register_script( $handle, $src, $deps, $ver, $in_footer );</pre>
<p>La primera de todas debe contener el nombre identificatorio del script. Yo recomiendo usar nombres coherentes, así evitamos posibles problemas al usar muchos scripts y no distinguir unos de otros por su nombre.</p>
<p>El segundo parámetro de la función indica la URL del archivo a cargar. Tanto el primer parámetro como éste son obligatorios, los otros tres son opcionales y son, por orden de aparición, la matriz que indica las dependencias (estas dependencias se deben indicar usando el nombre identificatorio del script correspondiente), la versión del archivo a cargar (se utiliza para evitar problemas con la caché y demás, pero en muchos casos basta con dejarlo en blanco) y si el script se puede cargar al final de la página o no.</p>
<p>La función <em>wp_deregister_script</em> es la que elimina un script previamente registrado. Esto nos permitirá eliminar los script registrados por <a href="../category/wordpress/">WordPress</a> y añadir los nuestros modificados. El uso sería el siguiente:</p>
<pre class="prettyprint linenums lang-php">wp_deregister_script( $handle );</pre>
<p>La función <em>wp_enqueue_script</em> es la que le indica a <a href="../category/wordpress/">WordPress</a> que debe cargar cierto script. Admite los mismos parámetros que <em>wp_register_script</em>, sólo que en la primera, a diferencia de la segunda, el nombre identificatorio le indica a la función qué script debe cargar (ya que esta función <strong>no</strong> registra ningún script) y sólo usará los demás parámetros en caso de no existir el script solicitado.</p>
<p>El uso es el siguiente:</p>
<pre class="prettyprint linenums lang-php">
wp_enqueue_script( $handle ); // Mínimo
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); // Parámetros opcionales
</pre>
<p>Tenéis más información sobre estas funciones en el <a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script">Codex de WordPress</a>.</p>
<p>Dicho lo cual ya podemos pasar a aplicar lo visto hasta ahora.</p>
<h3>Cargando jQuery, jQuery UI y Prototype desde los servidores de Google</h3>
<p>Una pequeña aclaración antes de comenzar: podemos cargar cualquier script de <a href="../category/wordpress/">WordPress</a> (<a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Default_scripts_included_with_WordPress">lista completa</a>) desde cualquier servidor, de hecho veréis como no es nada complicado hacerlo.</p>
<p>Los scripts están alojados en <a href="http://code.google.com/intl/es/apis/ajaxlibs/">los servidores de Google</a>, que ofrecen una buena velocidad y se actualizan con cada nueva versión. También almacenan versiones antiguas de los frameworks, con lo que podemos optar por cargar una versión actualizada, la última o una más antigua.</p>
<p>El proceso para cargar los scripts es el siguiente:</p>
<ol>
<li>Eliminamos (des-registramos) el script correspondiente a los frameworks <a href="../tag/jquery/">jQuery</a>, j<a href="http://ui.jquery.com/">Query UI</a> y <a href="http://www.prototypejs.org/">Prototype</a><a href="http://www.prototypejs.org/"></a> de <a href="../category/wordpress/">WordPress</a></li>
<li>Registramos de nuevo los tres scripts anteriores, cambiando la URL de los archivos</li>
<li>Cargamos los scripts recién registrados</li>
</ol>
<p>Esto en código quedaría así:</p>
<pre class="prettyprint linenums lang-php">
// jQuery
		wp_deregister_script(&#8216;jquery&#8217;); // Des-registramos jQuery
		wp_register_script(&#8216;jquery&#8217;, (&quot;http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js&quot;), false, &#8221;); // Registramos de nuevo jQuery, con la URL de la última versión del framework alojada en el servidor de Google
		wp_enqueue_script(&#8216;jquery&#8217;); // Cargamos jQuery
		// jQuery-UI
		wp_deregister_script(&#8216;jquery-ui-core&#8217;); // Des-registramos jQuery-UI
		wp_register_script(&#8216;jquery-ui-core&#8217;, (&quot;http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js&quot;), false, &#8221;); // Registramos de nuevo jQuery-UI, con la URL de la última versión del framework alojada en el servidor de Google
		wp_enqueue_script(&#8216;jquery-ui-core&#8217;); // Cargamos jQuery-UI
		// Prototype
		wp_deregister_script(&#8216;prototype&#8217;); // Des-registramos Prototye
		wp_register_script(&#8216;prototype&#8217;, (&quot;http://ajax.googleapis.com/ajax/libs/prototype/1/prototype.js&quot;), false, &#8221;); // Registramos de nuevo Prototype, con la URL de la última versión del framework alojada en el servidor de Google
		wp_enqueue_script(&#8216;prototype&#8217;); // Cargamos Prototype
</pre>
<p>Como veis, no tiene mucho misterio y es muy fácil ampliarlo a otros scripts. Como siempre, cualquier duda o sugerencia la podéis hacer en los comentarios.</p>
<p><strong>Nota: </strong>La versión que carga por defecto <a href="../category/wordpress/">WordPress</a> de <a href="../tag/jquery/">jQuery</a> incluye una llamada a la función  <a href="http://sumolari.com/como-evitar-conflictos-entre-mootools-y-jquery/">jQuery.noConflic</a>t, por lo que en el primer script que utilice <a href="../tag/jquery/">jQuery</a> deberemos hacer una llamada a esta función para asegurar que todos los scripts funcionen correctamente.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/haz-que-wordpress-cargue-los-frameworks-desde-servidores-externos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Creando múltiples carruseles con jQuery</title>
		<link>http://sumolari.com/creando-multiples-carruseles-con-jquery/</link>
		<comments>http://sumolari.com/creando-multiples-carruseles-con-jquery/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 16:25:24 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[imágenes]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=2957</guid>
		<description><![CDATA[En vista de que algunos tenían problemas para mostrar varios carruseles con aquel tutorial que escribí sobre cómo crear un carrusel con jQuery, hoy voy a explicar cómo crear varios carruseles, a modo de continuación del anterior tutorial, así que os recomiendo leerlo antes de continuar con éste. Bien, partiremos del código que usé en [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sumolari.com/wp-content/uploads/2009/04/jquery-carrusel.png" rel="lightbox-2957"><img class="aligncenter size-large wp-image-1716" title="jQuery - Carrusel" src="http://sumolari.com/wp-content/uploads/2009/04/jquery-carrusel-1024x207.png" alt="jQuery - Carrusel" width="848" height="171" /></a></p>
<p>En vista de que algunos tenían problemas para mostrar varios carruseles con aquel tutorial que escribí sobre <a href="http://sumolari.com/crea-un-carrusel-con-jquery/">cómo crear un carrusel con jQuery</a>, hoy voy a explicar cómo crear varios carruseles, a modo de continuación del anterior tutorial, así que os recomiendo leerlo antes de continuar con éste.</p>
<p>Bien, partiremos del código que usé en <a href="http://www.sumolari.com/wp-content/demos/jquery-carousel/">la demo</a> (que podéis descargar <a href="http://sumolari.com/wp-content/uploads/2009/04/jquery-carousel.zip">aquí</a>), y tendremos que cambiar tanto el <strong>CSS</strong> como el <strong>Javascript</strong> que hay incrustado en el <strong>HTML</strong>, dejando intacto los dos primeros códigos <strong>Javascript</strong> que llamamos (jQuery y Stepcarousel), en definitiva, que partiremos del siguiente código:</p>
<pre class="prettyprint linenums lang-html">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;Carousel con jQuery&lt;/title&gt;
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;carousel.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
stepcarousel.setup({
galleryid: &#8216;carousel&#8217;, //id of carousel DIV
beltclass: &#8216;belt&#8217;, //class of inner &quot;belt&quot; DIV containing all the panel DIVs
panelclass: &#8216;panel&#8217;, //class of panel DIVs each holding content
autostep: {enable:true, moveby:1, pause:3000},
panelbehavior: {speed:500, wraparound:true, persist:true},
statusvars: ['statusA', 'statusB', 'statusC'], //register 3 variables that contain current panel (start), current panel (last), and total panels
contenttype: ['external'] //content setting ['inline'] or ['external', 'path_to_external_file']
})
&lt;/script&gt;
&lt;style type=&quot;text/css&quot;&gt;
/* Carousel */
#carousel {
position: relative; /* Necesario */
overflow: hidden; /* Necesario */
height: 250px;
margin-left:35px;
background:#5B5B5B url(carousel-bg.png) bottom left repeat-x;
}
#carousel .belt {
position: absolute; /* Necesario */
left: 0;
top: 0;
margin:0 10px 10px 0;
}
#carousel .panel {
width:265px;
float: left; /* Necesario */
overflow: hidden;
margin: 15px;
padding:7px;
border:1px solid #5B5B5B;
background:#383838 url(carousel-panel-bg.png) bottom left repeat-x;
}
#carousel .panel .panel-text {
padding-top:5px;
font-size:13px;
font-family:Verdana, Geneva, sans-serif;
color:#FFF;
}
#carousel .panel .panel-text a {
color:#CCC;
text-decoration:none;
}
#carousel .panel .panel-text a:hover {
color:#FFF;
text-decoration:underline;
}
/* Botones del carousel */
.button-prev {
height:250px;
width:35px;
float:left;
background:#5B5B5B url(carousel-bg.png) bottom left repeat-x;
-moz-border-radius:10px 0 0 10px;
}
.button-prev a {
display:block;
padding:5px;
margin-top:105px;
}
.button-next {
height:250px;
width:35px;
float:right;
background:#5B5B5B url(carousel-bg.png) bottom left repeat-x;
-moz-border-radius:0 10px 10px 0;
}
.button-next a {
display:block;
padding:5px;
margin-top:105px;
}
a img {
border:none;
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class=&quot;button-next&quot;&gt;
&lt;a href=&quot;javascript:stepcarousel.stepBy(&#8216;carousel&#8217;, 1)&quot;&gt;&lt;img src=&quot;arrow_right.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;button-prev&quot;&gt;
&lt;a href=&quot;javascript:stepcarousel.stepBy(&#8216;carousel&#8217;, -1)&quot;&gt;&lt;img src=&quot;arrow_left.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div id=&quot;carousel&quot; class=&quot;stepcarousel&quot;&gt;
&lt;div class=&quot;belt&quot;&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img1.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Este carousel es una demostraci&amp;oacute;n&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img2.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;de un tutorial de &lt;a href=&quot;http://sumolari.com&quot;&gt;Sumolari.com&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img3.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Puedes ver el tutorial en cuesti&amp;oacute;n&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img4.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;en &lt;a href=&quot;http://sumolari.com/?p=1708&quot;&gt;este art&amp;iacute;culo&lt;/a&gt; del blog.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img5.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Lorem ipsum dolor sit amet.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img6.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Amet sit dolor ipsum lorem.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img7.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Bla bla bla bla bla bla bla&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img8.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Ble ble ble ble ble ble ble&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Vale, primero nos centraremos en el <strong>CSS</strong>, que es la parte más fácil de adaptar, lo que tenemos que hacer es cambiar todas las líneas que definan un estilo para el elemento con ID <em>carousel</em>, ya que al haber varios carruseles necesitaremos un estilo común a ellos, y no es lo mejor usar el mismo ID para dos elementos (además de que no sería compatible con Stepcarousel), así que básicamente lo que tenemos que hacer es cambiar<em> #carousel </em>por <em>.carousel</em>, dejando el código <strong>CSS</strong> así:</p>
<pre class="prettyprint linenums lang-css">
/* Carousel */
.carousel {
position: relative; /* Necesario */
overflow: hidden; /* Necesario */
height: 250px;
margin-left:35px;
background:#5B5B5B url(carousel-bg.png) bottom left repeat-x;
}
.carousel .belt {
position: absolute; /* Necesario */
left: 0;
top: 0;
margin:0 10px 10px 0;
}
.carousel .panel {
width:265px;
float: left; /* Necesario */
overflow: hidden;
margin: 15px;
padding:7px;
border:1px solid #5B5B5B;
background:#383838 url(carousel-panel-bg.png) bottom left repeat-x;
}
.carousel .panel .panel-text {
padding-top:5px;
font-size:13px;
font-family:Verdana, Geneva, sans-serif;
color:#FFF;
}
.carousel .panel .panel-text a {
color:#CCC;
text-decoration:none;
}
.carousel .panel .panel-text a:hover {
color:#FFF;
text-decoration:underline;
}
/* Botones del carousel */
.button-prev {
height:250px;
width:35px;
float:left;
background:#5B5B5B url(carousel-bg.png) bottom left repeat-x;
-moz-border-radius:10px 0 0 10px;
}
.button-prev a {
display:block;
padding:5px;
margin-top:105px;
}
.button-next {
height:250px;
width:35px;
float:right;
background:#5B5B5B url(carousel-bg.png) bottom left repeat-x;
-moz-border-radius:0 10px 10px 0;
}
.button-next a {
display:block;
padding:5px;
margin-top:105px;
}
a img {
border:none;
}
</pre>
<p>Como os podréis imaginar, ahora tendremos que actualizar el código <strong>HTML</strong> del carrusel para que se adapte al nuevo <strong>CSS</strong>. Lo único que hay que hacer es añadir la clase <em>carousel</em> al div con ID <em>carousel</em>. Fácil, ¿verdad? El código quedará así:</p>
<pre class="prettyprint linenums lang-html">
&lt;div class=&quot;button-next&quot;&gt;
&lt;a href=&quot;javascript:stepcarousel.stepBy(&#8216;carousel&#8217;, 1)&quot;&gt;&lt;img src=&quot;arrow_right.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;button-prev&quot;&gt;
&lt;a href=&quot;javascript:stepcarousel.stepBy(&#8216;carousel&#8217;, -1)&quot;&gt;&lt;img src=&quot;arrow_left.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div id=&quot;carousel&quot; class=&quot;stepcarousel carousel&quot;&gt;
&lt;div class=&quot;belt&quot;&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img1.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Este carousel es una demostraci&amp;oacute;n&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img2.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;de un tutorial de &lt;a href=&quot;http://sumolari.com&quot;&gt;Sumolari.com&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img3.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Puedes ver el tutorial en cuesti&amp;oacute;n&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img4.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;en &lt;a href=&quot;http://sumolari.com/?p=1708&quot;&gt;este art&amp;iacute;culo&lt;/a&gt; del blog.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img5.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Lorem ipsum dolor sit amet.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img6.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Amet sit dolor ipsum lorem.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img7.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Bla bla bla bla bla bla bla&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img8.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Ble ble ble ble ble ble ble&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Lo siguiente será crear el código <strong>HTML</strong> del segundo carrusel. En mi caso serán idénticos (tendrán los mismos elementos), así que lo único que tendré que hacer será duplicar el código <strong>HTML</strong> y cambiar la ID del segundo carrusel de &#8220;<em>carousel</em>&#8221; a &#8220;<em>carousel2</em>&#8220;, de forma que el código quedará así:</p>
<pre class="prettyprint linenums lang-html">
&lt;div class=&quot;button-next&quot;&gt;
&lt;a href=&quot;javascript:stepcarousel.stepBy(&#8216;carousel&#8217;, 1)&quot;&gt;&lt;img src=&quot;arrow_right.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;button-prev&quot;&gt;
&lt;a href=&quot;javascript:stepcarousel.stepBy(&#8216;carousel&#8217;, -1)&quot;&gt;&lt;img src=&quot;arrow_left.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div id=&quot;carousel&quot; class=&quot;stepcarousel carousel&quot;&gt;
&lt;div class=&quot;belt&quot;&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img1.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Este carousel es una demostraci&amp;oacute;n&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img2.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;de un tutorial de &lt;a href=&quot;http://sumolari.com&quot;&gt;Sumolari.com&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img3.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Puedes ver el tutorial en cuesti&amp;oacute;n&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img4.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;en &lt;a href=&quot;http://sumolari.com/?p=1708&quot;&gt;este art&amp;iacute;culo&lt;/a&gt; del blog.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img5.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Lorem ipsum dolor sit amet.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img6.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Amet sit dolor ipsum lorem.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img7.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Bla bla bla bla bla bla bla&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img8.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Ble ble ble ble ble ble ble&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;button-next&quot;&gt;
&lt;a href=&quot;javascript:stepcarousel.stepBy(&#8216;carousel2&#8242;, 1)&quot;&gt;&lt;img src=&quot;arrow_right.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;button-prev&quot;&gt;
&lt;a href=&quot;javascript:stepcarousel.stepBy(&#8216;carousel2&#8242;, -1)&quot;&gt;&lt;img src=&quot;arrow_left.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div id=&quot;carousel2&quot; class=&quot;stepcarousel carousel&quot;&gt;
&lt;div class=&quot;belt&quot;&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img1.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Este carousel es una demostraci&amp;oacute;n&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img2.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;de un tutorial de &lt;a href=&quot;http://sumolari.com&quot;&gt;Sumolari.com&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img3.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Puedes ver el tutorial en cuesti&amp;oacute;n&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img4.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;en &lt;a href=&quot;http://sumolari.com/?p=1708&quot;&gt;este art&amp;iacute;culo&lt;/a&gt; del blog.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img5.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Lorem ipsum dolor sit amet.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img6.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Amet sit dolor ipsum lorem.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img7.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Bla bla bla bla bla bla bla&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img8.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Ble ble ble ble ble ble ble&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Ya sólo queda adaptar el código <strong>Javascript</strong>. Lo primero que tenemos que hacer es añadir una línea más al código original que nos evitará problemas: <em>defaultbuttons: {enable: true, moveby: 1, leftnav: ['arrowl.gif', -10, 100], rightnav: ['arrowr.gif', -10, 100]},</em> . A continuación duplicaremos el código y añadiremos un punto y coma (;) al final del código original. Por último cambiaremos la ID que hay en el segundo código de &#8220;<em>carousel</em>&#8221; a &#8220;<em>carousel2</em>&#8220;. El código <strong>Javascript</strong> quedaría así:</p>
<pre class="prettyprint linenums lang-javascript">
stepcarousel.setup({
galleryid: &#8216;carousel&#8217;, //id of carousel DIV
beltclass: &#8216;belt&#8217;, //class of inner &quot;belt&quot; DIV containing all the panel DIVs
panelclass: &#8216;panel&#8217;, //class of panel DIVs each holding content
autostep: {enable:true, moveby:1, pause:3000},
panelbehavior: {speed:500, wraparound:true, persist:true},
defaultbuttons: {enable: true, moveby: 1, leftnav: ['arrowl.gif', -10, 100], rightnav: ['arrowr.gif', -10, 100]},
statusvars: ['statusA', 'statusB', 'statusC'], //register 3 variables that contain current panel (start), current panel (last), and total panels
contenttype: ['external'] //content setting ['inline'] or ['external', 'path_to_external_file']
});
stepcarousel.setup({
galleryid: &#8216;carousel2&#8242;, //id of carousel DIV
beltclass: &#8216;belt&#8217;, //class of inner &quot;belt&quot; DIV containing all the panel DIVs
panelclass: &#8216;panel&#8217;, //class of panel DIVs each holding content
autostep: {enable:true, moveby:1, pause:3000},
panelbehavior: {speed:500, wraparound:true, persist:true},
defaultbuttons: {enable: true, moveby: 1, leftnav: ['arrowl.gif', -10, 100], rightnav: ['arrowr.gif', -10, 100]},
statusvars: ['statusA', 'statusB', 'statusC'], //register 3 variables that contain current panel (start), current panel (last), and total panels
contenttype: ['external'] //content setting ['inline'] or ['external', 'path_to_external_file']
})
</pre>
<p>Y con esto ya lo tenemos acabado. El código final que tendríamos sería este:</p>
<pre class="prettyprint linenums lang-html">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;Carousel con jQuery&lt;/title&gt;
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;carousel.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
stepcarousel.setup({
galleryid: &#8216;carousel&#8217;, //id of carousel DIV
beltclass: &#8216;belt&#8217;, //class of inner &quot;belt&quot; DIV containing all the panel DIVs
panelclass: &#8216;panel&#8217;, //class of panel DIVs each holding content
autostep: {enable:true, moveby:1, pause:3000},
panelbehavior: {speed:500, wraparound:true, persist:true},
defaultbuttons: {enable: true, moveby: 1, leftnav: ['arrowl.gif', -10, 100], rightnav: ['arrowr.gif', -10, 100]},
statusvars: ['statusA', 'statusB', 'statusC'], //register 3 variables that contain current panel (start), current panel (last), and total panels
contenttype: ['external'] //content setting ['inline'] or ['external', 'path_to_external_file']
});
stepcarousel.setup({
galleryid: &#8216;carousel2&#8242;, //id of carousel DIV
beltclass: &#8216;belt&#8217;, //class of inner &quot;belt&quot; DIV containing all the panel DIVs
panelclass: &#8216;panel&#8217;, //class of panel DIVs each holding content
autostep: {enable:true, moveby:1, pause:3000},
panelbehavior: {speed:500, wraparound:true, persist:true},
defaultbuttons: {enable: true, moveby: 1, leftnav: ['arrowl.gif', -10, 100], rightnav: ['arrowr.gif', -10, 100]},
statusvars: ['statusA', 'statusB', 'statusC'], //register 3 variables that contain current panel (start), current panel (last), and total panels
contenttype: ['external'] //content setting ['inline'] or ['external', 'path_to_external_file']
})
&lt;/script&gt;
&lt;style type=&quot;text/css&quot;&gt;
/* Carousel */
.carousel {
position: relative; /* Necesario */
overflow: hidden; /* Necesario */
height: 250px;
margin-left:35px;
background:#5B5B5B url(carousel-bg.png) bottom left repeat-x;
}
.carousel .belt {
position: absolute; /* Necesario */
left: 0;
top: 0;
margin:0 10px 10px 0;
}
.carousel .panel {
width:265px;
float: left; /* Necesario */
overflow: hidden;
margin: 15px;
padding:7px;
border:1px solid #5B5B5B;
background:#383838 url(carousel-panel-bg.png) bottom left repeat-x;
}
.carousel .panel .panel-text {
padding-top:5px;
font-size:13px;
font-family:Verdana, Geneva, sans-serif;
color:#FFF;
}
.carousel .panel .panel-text a {
color:#CCC;
text-decoration:none;
}
.carousel .panel .panel-text a:hover {
color:#FFF;
text-decoration:underline;
}
/* Botones del carousel */
.button-prev {
height:250px;
width:35px;
float:left;
background:#5B5B5B url(carousel-bg.png) bottom left repeat-x;
-moz-border-radius:10px 0 0 10px;
}
.button-prev a {
display:block;
padding:5px;
margin-top:105px;
}
.button-next {
height:250px;
width:35px;
float:right;
background:#5B5B5B url(carousel-bg.png) bottom left repeat-x;
-moz-border-radius:0 10px 10px 0;
}
.button-next a {
display:block;
padding:5px;
margin-top:105px;
}
a img {
border:none;
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class=&quot;button-next&quot;&gt;
&lt;a href=&quot;javascript:stepcarousel.stepBy(&#8216;carousel&#8217;, 1)&quot;&gt;&lt;img src=&quot;arrow_right.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;button-prev&quot;&gt;
&lt;a href=&quot;javascript:stepcarousel.stepBy(&#8216;carousel&#8217;, -1)&quot;&gt;&lt;img src=&quot;arrow_left.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div id=&quot;carousel&quot; class=&quot;stepcarousel carousel&quot;&gt;
&lt;div class=&quot;belt&quot;&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img1.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Este carousel es una demostraci&amp;oacute;n&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img2.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;de un tutorial de &lt;a href=&quot;http://sumolari.com&quot;&gt;Sumolari.com&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img3.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Puedes ver el tutorial en cuesti&amp;oacute;n&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img4.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;en &lt;a href=&quot;http://sumolari.com/?p=1708&quot;&gt;este art&amp;iacute;culo&lt;/a&gt; del blog.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img5.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Lorem ipsum dolor sit amet.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img6.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Amet sit dolor ipsum lorem.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img7.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Bla bla bla bla bla bla bla&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img8.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Ble ble ble ble ble ble ble&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;button-next&quot;&gt;
&lt;a href=&quot;javascript:stepcarousel.stepBy(&#8216;carousel2&#8242;, 1)&quot;&gt;&lt;img src=&quot;arrow_right.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;button-prev&quot;&gt;
&lt;a href=&quot;javascript:stepcarousel.stepBy(&#8216;carousel2&#8242;, -1)&quot;&gt;&lt;img src=&quot;arrow_left.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div id=&quot;carousel2&quot; class=&quot;stepcarousel carousel&quot;&gt;
&lt;div class=&quot;belt&quot;&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img1.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Este carousel es una demostraci&amp;oacute;n&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img2.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;de un tutorial de &lt;a href=&quot;http://sumolari.com&quot;&gt;Sumolari.com&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img3.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Puedes ver el tutorial en cuesti&amp;oacute;n&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img4.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;en &lt;a href=&quot;http://sumolari.com/?p=1708&quot;&gt;este art&amp;iacute;culo&lt;/a&gt; del blog.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img5.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Lorem ipsum dolor sit amet.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img6.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Amet sit dolor ipsum lorem.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img7.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Bla bla bla bla bla bla bla&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img8.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Ble ble ble ble ble ble ble&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Como en el tutorial anterior, he publicado <a href="http://sumolari.com/wp-content/demos/jquery-carousel-2/">una pequeña demo</a> para que veáis el código en acción, que podéis descargar desde <a href="http://sumolari.com/wp-content/uploads/2009/10/jquery-carousel-2.zip">aquí</a>.</p>
<p><strong>Nota:</strong> Acabo de ver que han actualizado el script de Stepcarousel y le han añadido algunas funciones nuevas. En cuento tenga algo de tiempo libre (últimamente ando algo ocupado) actualizaré <a href="http://sumolari.com/wp-carousel/">WP Carousel</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/creando-multiples-carruseles-con-jquery/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Crea un carrusel con jQuery</title>
		<link>http://sumolari.com/crea-un-carrusel-con-jquery/</link>
		<comments>http://sumolari.com/crea-un-carrusel-con-jquery/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 17:16:40 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[efectos]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=1708</guid>
		<description><![CDATA[En muchas páginas webs hay carruseles que muestran una imagen y un pequeño texto. Un ejemplo de estos carruseles lo podemos ver algunas páginas de empresas de diseño web, donde nos muestras el nombre de uno de sus diseños y una pequeña captura. También son frecuentes en webs de revistas, usados para mostrar los artículos [...]]]></description>
			<content:encoded><![CDATA[<p class="aligncenter"><a href="http://sumolari.com/wp-content/uploads/2009/04/jquery-carrusel.png" rel="lightbox-1708"><img class="aligncenter size-medium wp-image-1716" title="jQuery - Carrusel" src="http://sumolari.com/wp-content/uploads/2009/04/jquery-carrusel-300x60.png" alt="jQuery - Carrusel" width="300" height="60" /></a></p>
<p>En muchas páginas webs hay carruseles que muestran una imagen y un pequeño texto. Un ejemplo de estos carruseles lo podemos ver algunas páginas de empresas de diseño web, donde nos muestras el nombre de uno de sus diseños y una pequeña captura. También son frecuentes en webs de revistas, usados para mostrar los artículos más destacados.</p>
<p>Desde hacía tiempo quería crear un carrusel con<a href="http://sumolari.com/tag/jquery/"> jQuery</a> y hace un rato he encontrado un plugin de este framework que es precisamente lo que andaba buscando: <a href="http://plugins.jquery.com/project/stepcarouselviewer">Step Carousel</a>.</p>
<p>Para añadir el carrusel basta con enlazar <a href="http://jquery.com">jQuery</a> y <a href="http://www.dynamicdrive.com/dynamicindex4/stepcarousel.js">el plugin</a> mediante <em>&lt;script /&gt;</em> y luego añadir el siguiente código <a href="http://sumolari.com/category/javascript/">Javascript</a>, que inicia el carrusel:</p>
<pre class="prettyprint linenums lang-javascript">
&lt;script type=&quot;text/javascript&quot;&gt;
stepcarousel.setup({
galleryid: &#8216;carousel&#8217;, //ID del div que contiene el carrusel
beltclass: &#8216;belt&#8217;, //Clase del primer div dentro del carrusel, que contiene al resto de divs
panelclass: &#8216;panel&#8217;, //Clase de cada panel individual
autostep: {enable:true, moveby:1, pause:3000},
panelbehavior: {speed:500, wraparound:true, persist:true},
statusvars: ['statusA', 'statusB', 'statusC'], //register 3 variables that contain current panel (start), current panel (last), and total panels
contenttype: ['external'] //content setting ['inline'] or ['external', 'path_to_external_file']
})
&lt;/script&gt;
</pre>
<p>También es necesario incluir un poco de <a href="http://sumolari.com/category/css">CSS</a> para que el carrusel funcione correctamente:</p>
<pre class="prettyprint linenums lang-css">#carousel {
position: relative; /* Necesario */
overflow: hidden; /* Necesario */
height: 250px;
margin-left:35px;
background:#5B5B5B url(carousel-bg.png) bottom left repeat-x;
}
#carousel .belt {
position: absolute; /* Necesario */
left: 0;
top: 0;
margin:0 10px 10px 0;
}
#carousel .panel {
width:265px;
float: left; /* Necesario */
overflow: hidden;
margin: 15px;
padding:7px;
border:1px solid #5B5B5B;
background:#383838 url(carousel-panel-bg.png) bottom left repeat-x;
}</pre>
<p>Finalmente, este es el código HTML que usaremos en el carrusel:</p>
<pre class="prettyprint linenums lang-html">
&lt;a href=&quot;javascript:stepcarousel.stepBy(&#8216;carousel&#8217;, 1)&quot;&gt;Anterior&lt;/a&gt;
&lt;a href=&quot;javascript:stepcarousel.stepBy(&#8216;carousel&#8217;, -1)&quot;&gt;Posterior&lt;/a&gt;
&lt;div id=&quot;carousel&quot; class=&quot;stepcarousel&quot;&gt;
&lt;div class=&quot;belt&quot;&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img1.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;Este carousel es una demostraci&amp;oacute;n&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img2.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;de un tutorial de &lt;a href=&quot;http://sumolari.com&quot;&gt;Sumolari.com&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>El código es sencillo de entender y fácil de personalizar. Por ejemplo, para añadir más paneles basta con añadir más bloques, que tienen la siguiente estructura:</p>
<pre class="prettyprint linenums lang-html">
&lt;div class=&quot;panel&quot;&gt;
&lt;img src=&quot;img2.png&quot; /&gt;
&lt;div class=&quot;panel-text&quot;&gt;
&lt;p&gt;de un tutorial de &lt;a href=&quot;http://sumolari.com&quot;&gt;Sumolari.com&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Si lo que queremos es que el link pase dos paneles en lugar de uno, basta con cambiar el -1 o el 1 por -2 o 2 respectivamente.</p>
<p>He montado <strong>una demostración</strong> del carrusel que se puede ver <a href="http://sumolari.com/wp-content/demos/jquery-carousel/">aquí</a>.</p>
<p>Por último, podéis <strong>descargar la demostración</strong> desde <a href="http://sumolari.com/wp-content/uploads/2009/04/jquery-carousel.zip">aquí</a> (incluye imágenes, Javascript y CSS).</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/crea-un-carrusel-con-jquery/feed/</wfw:commentRss>
		<slash:comments>61</slash:comments>
		</item>
		<item>
		<title>Ordena tablas con jQuery y Tablesorter</title>
		<link>http://sumolari.com/ordena-tablas-con-jquery-y-tablesorter/</link>
		<comments>http://sumolari.com/ordena-tablas-con-jquery-y-tablesorter/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 20:09:21 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tablas]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=1140</guid>
		<description><![CDATA[Hace un par de días me vino a la cabeza la idea de ordenar tablas por orden ascendente y descendente. Las pocas veces que he hecho algo así, he recurrido a usar PHP y variables de URL (algo como archivo.php?columna=nombre&#38;orden=ascendente), pero es lento de usar y de programar. Así que se me ha ocurrido buscar [...]]]></description>
			<content:encoded><![CDATA[<p>Hace un par de días me vino a la cabeza la idea de ordenar tablas por orden ascendente y descendente. Las pocas veces que he hecho algo así, he recurrido a usar PHP y variables de URL (algo como archivo.php?columna=nombre&amp;orden=ascendente), pero es lento de usar y de programar.</p>
<p>Así que se me ha ocurrido buscar una solución alternativa usando jQuery, y buscando un poco por Google he descubierto Tablesorter, un plugin de jQuery que nos permite ordenar las tablas de forma rápida y fácil.</p>
<p>Para comenzar, nuestra tabla debe tener un código similar a este:</p>
<pre class="html" name="code">
<table id="mitabla" border="0">
<thead>
<tr>
<th>Nombre</th>
<th>Apellidos</th>
<th>Email</th>
<th>Web</th>
</tr>
</thead>
<tbody>
<tr>
<td>Pepe</td>
<td>García</td>
<td>pepe_garcia@gmail.com</td>
<td>http://www.pepegarcia.com</td>
</tr>
<tr>
<td>Paco</td>
<td>Pérez</td>
<td>paco_perez@yahoo.com</td>
<td>http://www.pacoperez.com</td>
</tr>
</tbody>
</table>
</pre>
<p>Iniciamos Tablesorter con este otro código Javascript:</p>
<pre class="js" name="code">$(document).ready(function()
    {
        $("#myTable").tablesorter();
    }
);</pre>
<p>Sin duda, es un plugin de jQuery que utilizaré bastante para futuros proyectos.</p>
<p>Más información, demostración, descarga y documentación en <a href="http://tablesorter.com/docs/">tablesorter.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/ordena-tablas-con-jquery-y-tablesorter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Valida formularios con jQuery</title>
		<link>http://sumolari.com/valida-formularios-con-jquery/</link>
		<comments>http://sumolari.com/valida-formularios-con-jquery/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 15:20:20 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[formularios]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=862</guid>
		<description><![CDATA[Cuando tenemos que validar los datos de un formulario podemos recurrir a Javascript y crear nuestra función de validación, pero también podemos recurrir a jQuery para validar el formulario de forma rápida y sencilla. Para esto descargarmos jQuery y el plugin Validate. Pasos previos En el header del archivo que contiene el formulario añadimos: A [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando tenemos que validar los datos de un formulario podemos recurrir a Javascript y crear nuestra función de validación, pero también podemos recurrir a <a href="http://jquery.com/">jQuery</a> para validar el formulario de forma rápida y sencilla.</p>
<p>Para esto descargarmos <a href="http://jquery.com/">jQuery</a> y el plugin <a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">Validate</a>.<br />
<span id="more-862"></span><br />
<h3>Pasos previos</h3>
<p>En el header del archivo que contiene el formulario añadimos:</p>
<pre class="prettyprint linenums lang-javascript"><script src="jquery.js" type="text/javascript"></script> <script src="jquery.validate.js" type="text/javascript"></script></pre>
<p>A continuación añadimos:</p>
<pre class="prettyprint linenums lang-javascript"><script type="text/javascript"><!--
$().ready(function() {
$("#formulario").validate();
});
// --></script></pre>
<p>Para distinguir el formulario al que se le aplica la validación, jQuery busca el que tenga por id formulario. Podemos cambiar #formulario por #loquesea, siendo loquesea la id del formulario.</p>
<p>El código HTML del formulario puede ser una cosa así:</p>
<pre class="prettyprint linenums lang-html">
<form id="formulario" method="post"> Nombre:
<label></label>
<input id="nombre" name="nombre" type="text" />Contraseña:
<label></label>
<input id="pass_1" name="pass_1" type="password" />Repite contraseña:
<label></label>
<input id="pass_2" name="pass_2" type="password" />Email:
<label></label>
<input id="email" name="email" type="text" /><label></label>
<input id="button" name="button" type="submit" value="Enviar" /> </form>
</pre>
<p>Ahora tenemos que definir qué campos necesitan validación, para ello disponemos de dos métodos:</p>
<ol>
<li>Ponerle una clase específica a cada input, por ejemplo, class=&#8221;required&#8221; harí que el campo fuese obligatorio.</li>
<li>Definir los campos que requieres validación y qué tipo de validación requieren en el código Javascript que hemos añadido al principio.</li>
</ol>
<h3>El método de las clases</h3>
<p>Comencemos por el primer método: añadiendo clases a los campos del formulario.</p>
<p>Si queremos que todos los campos sean obligatorios basta con añadirles a todos <em>class=&#8221;required&#8221;</em>, ahora si dejamos en blanco un campo con esta clase nos mostrará un aviso.</p>
<p>Si le ponemos de clase &#8220;email&#8221;, buscará la estructura de una dirección de correo electrónico, en casi de no ser una estructura correcta (nombre@dominio.nnn), mostrará un aviso.</p>
<p>Podríamos dejar así el formulario anterior:</p>
<pre class="prettyprint linenums lang-html">
<form id="formulario" method="post"> Nombre:
<label></label>
<input id="nombre" class="required" name="nombre" type="text" />Contraseña:
<label></label>
<input id="pass_1" class="required" name="pass_1" type="password" />Repite contraseña:
<label></label>
<input id="pass_2" class="required" name="pass_2" type="password" />Email:
<label></label>
<input id="email" class="required email" name="email" type="text" /><label></label>
<input id="button" name="button" type="submit" value="Enviar" /> </form>
</pre>
<h3>El método de la definición</h3>
<p>El segundo método es un poco más complejo. Volvemos al punto en el que añadimos:</p>
<pre class="prettyprint linenums lang-javascript"><script type="text/javascript"><!--
$().ready(function() {
$("#formulario").validate();
});
// --></script></pre>
<p>Ahora en lugar de esto debemos añadir:</p>
<pre class="prettyprint linenums lang-javascript"><script type="text/javascript"><!--
$().ready(function() {
$("#formulario").validate({
rules: {
pass_2: {
required: true,
equalTo: "#pass_1"
}
}
});
});
// --></script></pre>
<h4>¿Cómo funciona?</h4>
<p>Bien, después de <em>rules:{</em> añadimos el id del campo de nuestro formulario seguido de las reglas que debe cumplir.</p>
<p>En este ejemplo el campo pass_2 es obligatorio, y además debe ser igual a pass_1, si no lo es mostrará un aviso.</p>
<p>Podemos añadir más reglas, como caracteres máximos, rango de caracteres (sólo para número enteros), fechas, etc, podéis ver una lista de todas las reglas <a href="http://docs.jquery.com/Plugins/Validation#Options_for_the_validate.28.29_method">aquí</a>.</p>
<p>Ambos métodos son compatibles, podemos usar los dos en el mismo formulario.</p>
<p>Cualquier duda que tengáis no dudéis en preguntarla en los comentarios, espero que os sea útil.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/valida-formularios-con-jquery/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>Crea un panel deslizante con jQuery</title>
		<link>http://sumolari.com/crea-un-panel-deslizante-con-jquery/</link>
		<comments>http://sumolari.com/crea-un-panel-deslizante-con-jquery/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 08:17:56 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[efectos]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=84</guid>
		<description><![CDATA[Si ya os conté cómo evitar conflictos entre jQuery y Mootools, hoy os explico para qué estaba usando jQuery en el nuevo diseño. Probablemente os habréis fijado en el link que dice Sidebar, en el index del blog. Pues bien, este link despliega la sidebar superior del blog. Para añadir este efecto a tu web [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sumolari.com/wp-content/uploads/2008/09/jquery-logo-b.jpg" rel="lightbox-84"><img class="size-full wp-image-90 alignleft" title="jQuery" src="http://sumolari.com/wp-content/uploads/2008/09/jquery-logo-b.jpg" alt="" width="300" height="116" /></a></p>
<p>Si ya os conté <a href="http://sumolari.com/?p=61">cómo evitar conflictos entre jQuery y Mootools</a>, hoy os explico para qué estaba usando jQuery en el nuevo diseño.</p>
<p>Probablemente os habréis fijado en el link que dice Sidebar, en el index del blog. Pues bien, este link despliega la sidebar superior del blog.</p>
<p>Para añadir este efecto a tu web debes seguir unos pasos sencillos, comenzando por <a href="http://jquery.com/">descargar jQuery</a>.</p>
<p><span id="more-84"></span></p>
<p>Ahora abrimos el archivo en el que queremos añadir el efecto.</p>
<h3>El código Javascript</h3>
<p>Nos situamos en antes del <em>&lt;/head&gt;</em> y añadimos las siguientes líneas:</p>
<pre class="prettyprint linenums lang-html">
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery-1.2.6.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
$(&quot;.boton&quot;).click(function(){
$(&quot;#desplegable&quot;).slideToggle(&quot;slow&quot;);
});
$(&quot;#desplegable&quot;).css({ display: &#8216;none&#8217; });
});
&lt;/script&gt;
</pre>
<p>La primera línea llama a jQuery, tened en cuenta que la URL al archivo debe ser la correcta, sino no funcionará.</p>
<p>La tercera indica que se realicen las acciones una vez la página esté cargada.</p>
<p>La cuarta determina qué clase llevará el link que activará el efecto (<em>.boton </em>es una clase, si fuese<em> #boton</em> sería una id) e inicia una condición.</p>
<p>La quinta indica qué id tiene la capa que se ocultará / mostrará, e inicia el efecto.</p>
<p>La sexta cierra la condición iniciada en la cuarta línea.</p>
<p>La séptima no es necesaria.  Lo que hace es ocultar la capa. Podría hacerlo mediante CSS, pero en caso de no estar activado javascript no se mostraría nada, mientras que en este caso si no estuviese el javascript activado se vería la capa, pero sin efecto.</p>
<p>La octava línea indica al script el fin de las acciones que debe llevar a cabo jQuery.</p>
<p>Podemos personalizar un poco más el script, cambiando en la línea 10 <em>slow </em>por <em>normal </em>o <em>fast </em>(para modificar la velocidad del efecto).</p>
<h3>El código HTML</h3>
<p>Lo último que nos queda es añadir el código HTML correspondiente al link de ocultar / mostrar y al contenido que se ocultará / mostrará.</p>
<p>Comenzaremos con el enlace, que debe tener de clase <em>boton</em>. El código que uso yo para el enlace es:</p>
<pre class="prettyprint linenums lang-html">&lt;a href=&quot;#&quot; class=&quot;boton&quot;&gt;Ver / Ocultar contenido&lt;/a&gt;</pre>
<p>Pero se pueden hacer variaciones, lo único necesario es la clase <em>boton</em>.</p>
<p>Ahora añadimos la capa con id desplegable, que será la que se ocultará y se mostrará. El código que uso yo es:</p>
<pre class="prettyprint linenums lang-html">&lt;div id=&quot;desplegable&quot;&gt;
&lt;h2&gt;Contenido oculto&lt;/h2&gt;
&lt;p&gt;Sólo verás este contenido si despliegas el panel.&lt;/p&gt;
&lt;/div&gt;</pre>
<p>Como antes, este código se puede variar.</p>
<p>Y ya tenemos completo el efecto.</p>
<h3>Demo</h3>
<p>Podéis ver el efecto <span style="text-decoration: line-through;">en este mismo blog (en la sidebar superior) o </span>en <a href="http://sumolari.com/wp-content/demos/jquery-slide/">esta página</a> de demostración.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/crea-un-panel-deslizante-con-jquery/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Añade un efecto hover animado con jQuery</title>
		<link>http://sumolari.com/anade-un-efecto-hover-animado-con-jquery/</link>
		<comments>http://sumolari.com/anade-un-efecto-hover-animado-con-jquery/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 16:00:51 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[efectos]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=369</guid>
		<description><![CDATA[Uno de los principales motivos por los que me gusta Mootools es la cantidad de efectos que podemos lograr con él. Sin embargo hoy os traigos un efecto logrado con jQuery y creado por Timothy van Sas. El código Javascript $(function() { $('ul.hover_block li').hover(function(){ $(this).find('img').animate({top:'182px'},{queue:false,duration:500}); }, function(){ $(this).find('img').animate({top:'0px'},{queue:false,duration:500}); }); }); CSS ul.hover_block li{ list-style:none; float:left; [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los principales motivos por los que me gusta Mootools es la cantidad de efectos que podemos lograr con él.</p>
<p>Sin embargo hoy os traigos un efecto logrado con jQuery y creado por <a href="http://www.incg.nl/">Timothy van Sas</a>.</p>
<p><span id="more-369"></span></p>
<h3>El código</h3>
<p>Javascript</p>
<div class="code"><code>$(function() {<br />
$('ul.hover_block li').hover(function(){<br />
$(this).find('img').animate({top:'182px'},{queue:false,duration:500});<br />
}, function(){<br />
$(this).find('img').animate({top:'0px'},{queue:false,duration:500});<br />
});<br />
});</code></div>
<p>CSS</p>
<div class="code"><code>ul.hover_block li{<br />
list-style:none;<br />
float:left;<br />
background: #fff;<br />
padding: 10px;<br />
width:300px; position: relative;<br />
margin-right: 20px; }<br />
ul.hover_block li a {<br />
display: block;<br />
position: relative;<br />
overflow: hidden;<br />
height: 150px;<br />
width: 268px;<br />
padding: 16px;<br />
color: #000;<br />
font: 1.6em/1.3 Helvetica, Arial, sans-serif;<br />
}<br />
ul.hover_block li a { text-decoration: none; }<br />
ul.hover_block li img {<br />
position: absolute;<br />
top: 0;left: 0;<br />
border: 0;<br />
}</code></div>
<p>HTML</p>
<div class="code"><code>&lt;ul class="hover_block"&gt;<br />
&lt;li&gt;&lt;a href="/"&gt;&lt;img src="your_image.gif" alt="alt" /&gt; Text&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="/"&gt;&lt;img src="your_image.gif" alt="alt" /&gt; Text.&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ul&gt;</code></div>
<p>Podemos ver <a href="http://www.incg.nl/blog/2008/hover-block-jquery/example/animate_hover.html">el ejemplo que ha creado Timothy</a> para hacernos una idea de cómo queda.</p>
<p>Vía <a href="http://www.anieto2k.com/2008/10/02/crear-un-hover-animado-con-jquery">Anieto2k</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/anade-un-efecto-hover-animado-con-jquery/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Como evitar conflictos entre Mootools y jQuery</title>
		<link>http://sumolari.com/como-evitar-conflictos-entre-mootools-y-jquery/</link>
		<comments>http://sumolari.com/como-evitar-conflictos-entre-mootools-y-jquery/#comments</comments>
		<pubDate>Sun, 14 Sep 2008 22:00:34 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[mootools]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=61</guid>
		<description><![CDATA[No sé a vosotros, pero a mí trabajar con frameworks me facilita mucho la cosa, ya que no sé mucho de javascript y puedo lograr bonitos efectos sin tener que invertir mucho tiempo. El último trabajo que he realizado con frameworks de javascript ha sido en el diseño de este blog. WordPress utiliza jQuery para [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://sumolari.com/wp-content/uploads/2008/09/jquery-mootools-logos-2.jpg" rel="lightbox-61"><img class="size-full wp-image-68 aligncenter" title="jQuery - Mootools" src="http://sumolari.com/wp-content/uploads/2008/09/jquery-mootools-logos-2.jpg" alt="" width="500" height="106" /></a></p>
<p>No sé a vosotros, pero a mí trabajar con frameworks me facilita mucho la cosa, ya que no sé mucho de javascript y puedo lograr bonitos efectos sin tener que invertir mucho tiempo.</p>
<p>El último trabajo que he realizado con frameworks de javascript ha sido en el diseño de este blog.</p>
<p>WordPress utiliza jQuery para algunas funciones, y yo personalmente prefiero Mootools. Esta vez he decidido usar ambos, y el principal problema que he encontrado han sido los conflictos entre ambos.</p>
<p>Para evitar tener que usar solo un frameworks, podemos recurrir a una función que nos permitirá usar ambos, la función <em>jQuery.noConflict()</em>.</p>
<p><span id="more-61"></span></p>
<p>¿Qué hace esta función? Hace que en lugar de usar el caracter $ en las funciones, usemos jQuery, evitando así los conflictos entre ambos frameworks.</p>
<p>Un ejemplo: Si antes teníamos este código javascript (obviamente incompatible con Mootools):</p>
<pre class="javascript" name="code">$(document).ready(function(){
$(".btn-slide").click(function(){
$("#slide_top-sidebar").slideToggle("slow");
$("#slide_top-subsidebar").slideToggle("normal");
});
$("#slide_top-sidebar").css({ display: 'none', });
$("#slide_top-subsidebar").css({ display: 'none', });
});</pre>
<p>Para hacerlo compatible con Mootools añadiremos la función <em>jQuery.noConflict() </em>y cambiaremos las $ por jQuery, dejando así el código javascript:</p>
<pre class="javascript" name="code">jQuery.noConflict();
jQuery(document).ready(function(){
jQuery(".btn-slide").click(function(){
jQuery("#slide_top-sidebar").slideToggle("slow");
jQuery("#slide_top-subsidebar").slideToggle("normal");
});
jQuery("#slide_top-sidebar").css({ display: 'none', });
jQuery("#slide_top-subsidebar").css({ display: 'none', });
});</pre>
<p>Sencillo, ¿verdad?</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/como-evitar-conflictos-entre-mootools-y-jquery/feed/</wfw:commentRss>
		<slash:comments>56</slash:comments>
		</item>
	</channel>
</rss>

