<?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>jmocana - maquetador web</title>
	<atom:link href="http://www.jmocana.eu/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jmocana.eu</link>
	<description>Todo sobre maquetacion y diseño web</description>
	<lastBuildDate>Fri, 04 May 2012 11:39:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Notepad++, un buen editor web para maquetadores.</title>
		<link>http://www.jmocana.eu/2012/04/30/notepad-editor-web-maquetadores/</link>
		<comments>http://www.jmocana.eu/2012/04/30/notepad-editor-web-maquetadores/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 11:30:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[maquetador web]]></category>

		<guid isPermaLink="false">http://www.jmocana.eu/?p=582</guid>
		<description><![CDATA[Notepad++ puede parecer en un principio un editor web bastante sencillito, superado por otros editores como puede ser Sublimetext, sin embargo tenemos la posibilidad de instalar un buen número de plugins que harán que Notepad++ pase de ser un editor bueno a uno muy bueno. El sistema de gestión de plugins viene dado por otro [...]]]></description>
			<content:encoded><![CDATA[<p>Notepad++ puede parecer en un principio un editor web bastante sencillito, superado por otros editores como puede ser Sublimetext, sin embargo tenemos la posibilidad de instalar un buen número de plugins que harán que Notepad++ pase de ser un editor bueno a uno muy bueno. El sistema de gestión de plugins viene dado por otro plugin, el Plugin Manager que ya viene por defecto en la última versión de Notepad descargable. Plugin Manager es muy rápido y fácil de usar y en pocos minutos conseguiremos aumentar las funcionabilidades de nuestro editor. Para conseguir un editor web potente tan solo debemos seguir los siguientes pasos:</p>

<h2>Paso 1: Descargando Notepad++</h2>
<p>Descargaremos la última versión de Noepad++ desde la <a href="http://notepad-plus-plus.org/download/" title="ir a la página de descargas de Notepad++">página de descargas</a> de la <a href="http://notepad-plus-plus.org/">página oficial</a></p>

<h2>Paso2: Haciendo los primeros ajustes</h2>
<p>Una de las principales funcionabilidades que se le pide a un editor web es el autocompletado, para activarlo en Notepad++ haremos lo siguiente: &#8220;Configuracion&#8221;&raquo;&#8221;Preferencias&#8221;&raquo;&#8221;Copias de seguridad/Autocompletar&#8221;. Desde este panel y en el fieldset de Autocompletar marcamos &#8220;Habilitar autocompletar en cada entrada&#8221;, &#8220;Completar entrada&#8221; y Pistas para los parámetros de la función.<br /><br />
<img src="/wp-content/themes/jmocana/images/post/notepad1.jpg" alt="Configuración del autocompletado de Notepad++" /></p>
<p>Una de las cosas que ya viene integrada en las ultimas versiones de Notepad es Zen Coding, el cual nos permite crear todo tipo de estructuras HTML a partir de una simple sentencia. Si nunca habéis oído hablar de el os recomiendo echar un ojo a la <em>wiki</em> del plugin en la página de Google. <a href="http://code.google.com/p/zen-coding/" title="Ver documentación">Ver documentación de Zen Coding</a></p>
<p>También puede ser interesante dedicarle un rato a configurar los estilos de lenguaje del editor. Desde &#8220;Configuración&#8221;&raquo;&#8221;Configuración de estilo&#8221;&raquo; podemos dar la apariencia que queramos a nuestro código.</p>

<h2>Gestión de plugins</h2>
<p>Lo que verdaderamente hace muy interesante a Notepad++ son los plugins de los que disponemos y lo fácil que es gestionarlos con &#8220;Plugin Manager&#8221;. Desde la pestaña &#8220;Plugins&#8221;&raquo;&#8221;Plugin Manager&#8221;&raquo;&#8221;Show plugin manager&#8221; podemos visualizar una ventana desde la que podremos ver los plugins disponibles para nuestra versión de Notepad e instalar los que queramos, ver todas las actualizaciones disponibles y ver los plugins que tenemos instalados y eliminarlos si así lo queremos. <br /><br /> <img src="/wp-content/themes/jmocana/images/post/notepad2.jpg" alt="Panel de Plugin Manager"/></p>
<span id="more-582"></span>
<h2>Instalando los plugins</h2>
<p>Desde Plugin Manager es muy sencillo instalar los plugins que querramos, simplemente desde la pestaña &#8220;Available&#8221; marcaremos el plugin que nos interesa y seleccionamos &#8220;Install&#8221;. Una vez instalemos el plugin tendremos que reiniciar Notepad.</p>
<p>A continuación os pongo un listado de los plugins que tengo instalados y que a mi modo de ver son los más interesantes si te dedicas la maquetación web.

<h2>Plugins recomendados</h2>
<ul>
<li><strong>Compare</strong>: Este plugin nos da la posibilidad de comparar dos archivos y ver las diferencias existentes entre ellos. Muy útil cuando alguien ha actualizado un código y necesitamos pasar solo la parte modificada a otro archivo distinto. Muy útil tanto para maquetadores como desarrolladores web.<br /><br /><img src="/wp-content/themes/jmocana/images/post/notepad3.gif" alt="Plugin Compare" /></li>
<li><strong>HTML Tag</strong>: Nos permite por un lado encontrar el cierre de una etiqueta simplemente pinchando sobre la apertura y haciendo &#8220;Ctrl + T&#8221;, también podemos seleccionar la etiqueta de cierre y todo el contenido englobado pinchando sobre la etiqueta de apertura y haciendo &#8220;Ctrl + Shift + T&#8221;. Gracias a este plugin no es necesario ir dejando marcas mediante comentario cada vez que cerremos un div.<br /> Otra de las posibilidades que nos da HTML Tag es codificar y decodificar entidades HTML. Al probar por primera vez esta opción, notepad++ me devolvió el siguiente error: <br /><img src="/wp-content/themes/jmocana/images/post/notepad4.jpg" alt="pantallazo de error del plugin HTML Tag" />. No se me había instalado el fichero de entidades, así que tuve que buscarlo e instalarlo manualmente. El archivo problemático es <strong>HTMLTag-entities.ini</strong> y si que viene en el comprimido que se ofrece en la página <a href="http://sourceforge.net/projects/npp-plugins/files/HTMLTag/HTMLTag%20plugin%20v0.4.0/">http://sourceforge.net/projects/npp-plugins/files/HTMLTag/HTMLTag%20plugin%20v0.4.0/</a>.<br />Una vez descargado el zip descomprimir el archivo y podréis ver que hay una carpeta llamada &#8220;Dat&#8221;, dentro de esta carpeta se encuentra el archivo en cuestión. Coparlo y pasarlo a la siguiente ubicación &#8220;C:\Archivos de programa\Notepad++\plugins&#8221;. Reiniciar Notepad++ y ya debería funcionar correctamente.</li>
<li><strong>JSMin</strong>: Permite comprimir un archivo para reducir el peso del mismo. Muy útil sobre todo para los archivos JavaScript.</li>
<li><strong>Light Explorer</strong>: Nos da la posibilidad de abrir y cerrar fácilmente, simplemente con pulsar &#8220;Alt + A&#8221; un explorador de windows en el lateral del editor, dandonos la posibilidad de gestionar facilmente los archivos de nuestro proyecto.</li>
<li><strong>WebEdit</strong>: Este plugin nos permitirá crear un gestor de sniplets muy visual y fácil de utilizar. En principio WebEdit viene instalado con unos sniplets sencillos como un enlace, tablas, strong, etc. Estos sniplets no nos servirán de mucho ya que con Zen Coding podemos escribir este tipo de código bastante más rápido, pero si nos será de gran utilidad a la hora de configurarnos nuestros propios sniplets, consistentes en estructuras más complejas y que solemos utilizar con bastante frecuencia.<br />Una vez instalemos WebEdit veremos como se añaden una serie de botones a la parte derecha de la barra de herramientas. Cuando pinchemos sobre uno de los botones escribiremos el HTML asignado al mismo en nuestro documento. Como comentaba por defecto los botones vienen configurados con sentencias HTML simples, para poder configurar sentencias más complejas y que usemos con mayor asiduidad pincharemos en &#8220;Plugins&#8221;&raquo;&#8221;WebEdit&#8221;&raquo;&#8221;Edit config&#8221;. Automáticamente se abrirá el archivo WebEdit.ini. Este archivo de configuración se divide en tres partes:<br /> 
<ul>
  <li>[Commands]</li>
  <li>[Tolbar]</li>
  <li>[Tags]</li>
</ul>
En <strong>[Commands]</strong> crearemos nuestros sniplets mediante la siguiente sintáxis y secuencias de escape:
<pre><code>
;Sintáxis: &lt;etiqueta&gt;=&lt;Texto izquierda&gt;|&lt;Texto derecha&gt;
;Secuencias de escape: \\ \t \n \r
</code></pre>
 
Al escribir el sniplet es importante situar el carácter <strong>|</strong> donde queramos que aparezca el cursor cuando insertemos el código. Si no lo hacemos el sniplet no funcionará.<br />
todo el sniplet deberá ir en la misma línea y utilizaremos las secuencias de escape para dar formato al código. Las que más utilizaréis serán \n para hacer un salto de línea y \t para tabular. Un sniplet de ejemplo podría ser el siguiente:

<pre><code class="scroll">
&#038;Nuevo documento=&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;\n&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;\n&lt;head&gt;\n\t&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /&gt;\n\t&lt;title&gt;|&lt;/title&gt;\n&lt;/head&gt;\n&lt;body&gt;&lt;/body&gt;\n&lt;/html&gt;
</code></pre>

Desde [Toolbar] asignaremos a un sniplet situado en la posición <em>n</em> una determinada imagen en formato bmp. Las imágenes que utilicemos deben tener una dimensión de 16 x 16 px y encontrarse ubicadas en la siguiente ruta: &#8220;C:\Documents and Settings\usuario\Datos de programa\Notepad++\plugins\config&#8221;. No busquéis en &#8220;C:\Archivos de programa\Notepad++\plugins\Config&#8221; porque no encontraréis nada.<br /> Desde <strong>[Tags]</strong> podremos crear una especie de zen coding, asignando a un determinado carácter un código que se ejecutará al escribir ese caracter  y pulsar Alt + Enter;<br /> Cuando hayamos terminado con la configuración reiniciamos Notepad y listo.
</li>
<li><strong>InsertLoremIpsum</strong>: Nos permite insertar el típico texto &#8220;Lorem ipsum&#8230;&#8221; con el número de palabras, frases, o párrafos que deseemos. Muy útil para maquetadores.</li>
</ul>
<p>Una vez instalados todos estos plugins dispondremos de un editor web muy potente y que nos hará ganar mucho tiempo a la hora de maquetar nuestros proyectos.</p>




]]></content:encoded>
			<wfw:commentRss>http://www.jmocana.eu/2012/04/30/notepad-editor-web-maquetadores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Genera tus CSS con Less</title>
		<link>http://www.jmocana.eu/2012/04/11/less/</link>
		<comments>http://www.jmocana.eu/2012/04/11/less/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 11:39:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[less]]></category>
		<category><![CDATA[maquetador web]]></category>

		<guid isPermaLink="false">http://www.jmocana.eu/?p=569</guid>
		<description><![CDATA[¿Que es Less? Less es un lenguaje dinámico de hojas de estilo. Less extiende CSS con comportamientos dinámicos tales como uso de variables, mixins, operadores y funciones. Less funciona en lado cliente en Firefox, Safari y Google Chrome y en el lado servidor con Node.js y Rhino. ¿Como usar less? A la hora de utilizar [...]]]></description>
			<content:encoded><![CDATA[<h2>¿Que es Less?</h2>
<p>Less es un <strong>lenguaje dinámico de hojas de estilo</strong>. Less extiende CSS con comportamientos dinámicos tales como uso de variables, mixins, operadores y funciones. Less funciona en lado cliente en Firefox, Safari y Google Chrome y en el lado servidor con Node.js y Rhino.</p>

<h2>¿Como usar less?</h2>
<p>A la hora de utilizar less tendremos dos opciones:</p>
<ul>
<li> La primera opción sería incluir en nuestro HTML un javaScript que se encargue de transformar los archivos .less a .css (<a href="http://lesscss.googlecode.com/files/less-1.3.0.min.js">Dscargar less.js (versión 1.3.0)</a>). Esto no nos funcionará en IE8-.<br /> Personalmente esta opción no me gusta mucho ya que en caso de tener deshabilitado el javaScript en el navegador la página se vería sin estilos por lo que en este caso la presentación estaría dependiendo de la funcionabilidad.</li>
<li>Otra opción más accesible consistiría en descargar algún compilador que compile los archivos .less a .css en nuestra maquina subiendo finalmente al servidor únicamente el css resultante de nuestra compilación. Entre lo que me han comentado amigos y lo que he buscado por la red me he encontrado con tres compiladores que tienen buena pinta:
   <ul>
       <li>less.app</li>
       <li>SimpleLess</li>
       <li>Crunch!</li>
</ul>
<span id="more-569"></span>
<h3>less.app</h3>
De este no os puedo hablar mucho ya que es solo valido para Mac, pero me han comentado que está muy bien, y echando un vistazo a la docu y al vídeo de presentación que ponen en la web creo que se trata de un compilador recomendable. Os dejo un enlace a la web oficial para los que tenéis Mac: <a href="http://incident57.com/less/">http://incident57.com/less/</a>
<h3>SimpLESS</h3>
SimpLESS es un compilador para Windows el cual tiene su punto fuerte o débil depende de como se mire en su sencillez. En este compilador simplemente arrastraremos un proyecto a simpLESS, editaremos desde nuestro editor web el archivo (necesitaremos crearnos un nuevo estilo de lenguaje para colorear el código), salvaremos y compilaremos.
<h3>Crunch!</h3>
Para mi el mejor compilador de less que conozco. También es para windows y a diferencia de simpLESS dispone de un potente editor desde el cual trabajar con los archivos less y CSS. Evidentemente no es tan potente como lo puede ser un Notepad++ o sublimeText pero para mi es suficiente. Por ponerle alguna pega, respecto a las funcionabilidades que tiene como editor le falta una bastante básica como el reemplazo de texto o por lo menos yo no la he encontrado en la versión actual. He detectado algunos fallos a la hora de compilar como por ejemplo hace invisibles en el CSS comentarios del tipo /* */ cuando no debería ser así.
Crunch! es un software del 2011 por lo que es un programa bastante joven, así que habrá que darle algo de tiempo para ver si van metiendo algunas mejoras. para mi por ahora es la mejor opción
</li>
</ul>
<h2>¿Que podemos conseguir con less?</h2>
<p>Less nos da la posibilidad de obtener un CSS en mucho menos tiempo de lo que tardaríamos trabajando directamente con los archivos CSS, además de permitir un más fácil y rápido mantenimiento si hemos hecho un buen trabajo con las variables y los mixins (ahora hablo un poco de ellos). Por lo que he visto en la documentación de la web oficial (<a href="http://lesscss.org/">http://lesscss.org/</a>) me quedo con las siguientes características de less aunque no sean las únicas.</p>

<ol>
<li><strong>Variables:</strong> Las definimos en el archivo less tal que así:
<pre><code>@main-color: #FFF;
@main-font: Trebuchet MS, Tahoma, Arial; 
@second-font: Oswald;</code></pre>

y las utilizamos de la siguiente manera:
<pre><code>li.marcado{color: @main-color;}</code></pre>
</li>
<li>
<strong>Mixins</strong>: Nos permite agrupar una serie de propiedades en una clase y además podremos pasar parametros a esta clase. Muy útili para trabajos repetitivos como añadir bordes redondeados a una caja.
<pre><code>.rounded(@value) { 
   -webkit-border-radius: @value; 
   -moz-border-radius: @value; 
    border-radius: @value; 
}</code></pre>
<pre><code>#box{.rounded(9px);}</code></pre>
</li>
<li>
<strong>Anidación:</strong> Para no estar repitiendo una y otra vez nombres de contenedores podemos anidarlos optimizando el código
<pre><code>#inicio{
  .inner{padding: 0; }
   p{margin-bottom: 18px;}    
}</code></pre>
</li>
<li><strong>Importar:</strong> Es posible importar tanto css como otros archivos less, esto nos da la posibilidad de ordenar nuestros archivos les por principal, variables y mixins. Tendremos por un lado los archivos valiables.less y mixins.less donde tendremos variables y mixins respectivamente y un main.less donde haremos las llamadas a nuestros archivos less y reset.css para resetear los estilos quedando el main.less tal que así:
<pre><code>@import "mixins.less"; 
@import "variables.less"; 
@import "/proyecto/css/reset.css";</code></pre>
</li>
</ol>
<p>Less nos ofrece muchas más posibilidades que se pueden consultar desde su página: <a href="http://lesscss.org/">http://lesscss.org/</a></p>


]]></content:encoded>
			<wfw:commentRss>http://www.jmocana.eu/2012/04/11/less/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recargar HTML5 después de una petición Ajax</title>
		<link>http://www.jmocana.eu/2011/08/02/recargar-html5-despues-de-una-peticion-ajax/</link>
		<comments>http://www.jmocana.eu/2011/08/02/recargar-html5-despues-de-una-peticion-ajax/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 12:04:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://www.jmocana.eu/?p=551</guid>
		<description><![CDATA[Actuálmente me encuentro maquetando una web en HTML5 y una de las funciones que debemos incorporar a la misma es la carga de módulos de HTML5 vía Ajax con jQuery. Una vez incorporada la he probado como siempre en primer lugar en Firefox y todo perfecto. Como siempre después de firefox viene Internet Exploer y [...]]]></description>
			<content:encoded><![CDATA[<p>Actuálmente me encuentro maquetando una web en HTML5 y una de las funciones que debemos incorporar a la misma es la carga de módulos de HTML5 vía Ajax con jQuery.
Una vez incorporada la he probado como siempre en primer lugar en Firefox y todo perfecto. Como siempre después de firefox viene Internet Exploer y es en este punto donde empiezan los malos rollos <img src='http://www.jmocana.eu/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> . Al pinchar sobre uno de los enlaces del menú de navegación y realizarse la carga, los nuevos contenidos cargados han aparecido sin los estilos aplicados. El problema es que la librera Modernizr que utilizo para generar las nuevas etiquetas HTML5 solo se ejecuta la primera vez que cargamos la página por lo que todo el código que carguemos a posteriori vía Ajax no será reconocido por el navegador y por tanto saldrá sin los estilos asignados en la CSS.</p>
<p>Buscando un poco por <span rel="en">Mr.</span> Google he encontrado la librería <strong>innerShiv</strong> de tan solo 1kb aproximadamente que permite reconocer las nuevas etiquetas HTML5 añadidas al DOM ya sea vía JavaScript o Jquery.</p>
<p>Lo único que hay que hacer para que funcione es insertar la función <em>innerShiv()</em> dentro de la función que vayamos a utilizar para añadir el código ya sea de javascript o Jquery, con la única diferencia de que si utilizamos jquery tendremos que pasar un segundo parámetro a la función innerShiv, más concretamente una variable booleana false.</p>
<p>Os pongo dos ejemplos de como se utilizaría la función con javaScript y con jQuery</p>
<h2>Ejemplo javaScript</h2>
<pre><code>
s.appendChild(<strong>innerShiv</strong>("&lt;section&gt;Happy section loves CSS. (:&lt;/section&gt;"));
</code></pre>
<h2>Ejemplo jquery</h2>
<pre><code>
$(this).html(<strong>innerShiv</strong>(html, false))
</code></pre>

<p>Podéis encontrar toda la información sobre la librería creada por <a href="http://jdbartlett.com/">joe bartlett</a> en <a href="http://jdbartlett.com/innershiv/">http://jdbartlett.com/innershiv/</a>



]]></content:encoded>
			<wfw:commentRss>http://www.jmocana.eu/2011/08/02/recargar-html5-despues-de-una-peticion-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3 Transiciones</title>
		<link>http://www.jmocana.eu/2011/07/28/css3-transiciones/</link>
		<comments>http://www.jmocana.eu/2011/07/28/css3-transiciones/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 11:11:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[css 3]]></category>
		<category><![CDATA[maquetador web]]></category>

		<guid isPermaLink="false">http://www.jmocana.eu/?p=537</guid>
		<description><![CDATA[Las transiciones css nos permiten cambiar los valores de las propiedades de las hojas de estilo suavemente durante un intervalo de tiempo. Estas suaves animaciones peden ser provocadas por distintos eventos: click, hover, focus, active, o con cualquier cambio provocado sobre el elemento. Actualmente para conseguir animar un botón cuando recibe uno de estos eventos [...]]]></description>
			<content:encoded><![CDATA[<p>Las transiciones css nos permiten cambiar los valores de las propiedades de las hojas de estilo suavemente durante un intervalo de tiempo. Estas suaves animaciones peden ser provocadas por distintos eventos: click, hover, focus, active, o con cualquier cambio provocado sobre el elemento.</p>

<p>Actualmente para conseguir animar un botón cuando recibe uno de estos eventos necesitamos hacer uso de algún <em>sprite</em> o de código javaScript si el efecto que le queremos dar a la transición es más específico. Mediante las transiciones CSS, con tan solo unas pocas líneas de código conseguiremos animar nuestros botones en poco tiempo y con efectos muy conseguidos.</p>

<h2 class="txt_ejemplo"><a title="ver ejemplo" href="http://www.jmocana.eu/2011/07/28/css3-transiciones/#fondo2">VER EJEMPLO</a></h2>

<h2>Sintaxis</h2>
<p>Nos vamos a encontrar con tres partes de la transición en la declaración:</p>
<ul>
<li><strong>transition-property:</strong> La propiedad sobre la que se va a realizar la transición</li>
<li><strong>transition-duration:</strong> Duración de la transición (ms-milisegundos, s-segundos)</li>
<li><strong>transition-timing-function:</strong> Como de rápido se da la transición. Puede tomar los siguientes valores:
    <ul>
            <li>ease</li>
            <li>linear</li>
            <li>ease-in</li>
            <li>ease-out</li>
            <li>ease-in-out</li>
            <li>cubic-bezier</li>
    </ul>
</li>
</ul>

<h2>Retrasando la transición</h2>
<p>Existe la posibilidad de retrasar la animación durante un intervalo de tiempo. Este efecto lo conseguiremos con el uso de <strong>transition-delay</strong>

<h2>Prefijos y metodo abreviado</h2>
<p>Para que las transiciones funcionen correctamente en los navegadores que las soportan tendremos que utilizar los respectivos prefijos que utilizan cada una para hacer las declaraciones, así por ejemplo para el ejemplo que haré a continuación haré 4 declaraciones. </p>
<pre><code>
-webkit-transition: background-position 10s linear; /* safari */
-moz-transition: background-position 10s linear; /* mozilla firefox */
-o-transition: background-position 10s linear; /* opera */
transition: background-position 10s linear; /* llamada genérica */
</code></pre>
<p>En este caso he utilizado el método abreviado sin tener que hacer una declaración por cada una de las propiedades de la transición.</p>
<span id="more-537"></span>
<h2>Soporte en los navegadores</h2>
<p>Las transiciones son soportadas por los siguientes navegadores &#8211; <a href="http://caniuse.com/#search=css3%20transitions" title="ver soporte">ver soporte</a></p>
<h2>Ejemplo</h2> 
<p>Necesitaréis un navegador con soporte de transiciones para poder visualizar el ejemplo correctamente. En el apartado superior tenéis un enlace a la tabla de soportes. La transición se lanza con el evento hover, para poder verla en funcionamiento tendréis que colocar el ratón sobre el fondo azul.</p>
  <style>
	    .fondo2{height: 517px; background:		                         
								  
								  url(/wp-content/themes/jmocana/images/post/nube-sol.png) no-repeat  10% 20px,
								  url(/wp-content/themes/jmocana/images/post/lluvia.png) no-repeat  18% 100px,
								  url(/wp-content/themes/jmocana/images/post/lluvia.png) no-repeat  87% 92px,	
			    				          url(/wp-content/themes/jmocana/images/post/lluvia.png) no-repeat  30% 5px,
								  url(/wp-content/themes/jmocana/images/post/lluvia.png) no-repeat  50% 140px,
								  url(/wp-content/themes/jmocana/images/post/lluvia.png) no-repeat  18% 120px,
								  url(/wp-content/themes/jmocana/images/post/lluvia.png) no-repeat  45% 60px,
								  url(/wp-content/themes/jmocana/images/post/lluvia.png) no-repeat  70% 120px,
								  url(/wp-content/themes/jmocana/images/post/lluvia.png) no-repeat  100% 60px,
								  url(/wp-content/themes/jmocana/images/post/nube.png) no-repeat  5% 120px,
								  url(/wp-content/themes/jmocana/images/post/nube.png) no-repeat  60% 20px,								 
								  url(/wp-content/themes/jmocana/images/post/nube.png) no-repeat  50% 120px,								  
								  url(/wp-content/themes/jmocana/images/post/nube.png) no-repeat  30% 120px,								  							  
								  url(/wp-content/themes/jmocana/images/post/nube.png) no-repeat  60% 20px,									 
								  url(/wp-content/themes/jmocana/images/post/nube.png) no-repeat  75% 120px,
								  url(/wp-content/themes/jmocana/images/post/arcoiris.png) no-repeat  7% 30px;
    -webkit-transition: background-position 10s linear; 
	-moz-transition: background-position 10s linear;
	-o-transition: background-position 10s linear;
	transition: background-position 10s linear;
	background-color: #87CEFA;
	
}

.fondo2:hover{background-position: 30% 320px, 5% 120px, 40% 220px, 70% 20px,60% 200px,10% 380px,70% 150px,50% 90px,87% 302px,36% 70px,90% 295px,6% 170px,13% 130px,55% 155px,21% 199px,19% 88px}

</style>
<div class="fondo2"></div> 

<p>A continuación os dejo el código que he utilizado</p>
<pre><code>
&lt;head&gt;
  &lt;title&gt;Transciciones&lt;/title&gt;
    
  &lt;style&gt;
	    .fondo2{height: 517px; background:		                         
								  
				  url(img/nube-sol.png) no-repeat  10% 20px,
				  url(img/lluvia.png) no-repeat  18% 100px,
				  url(img/lluvia.png) no-repeat  87% 92px,	
				  url(img/lluvia.png) no-repeat  30% 5px,
				  url(img/lluvia.png) no-repeat  50% 140px,
				  url(img/lluvia.png) no-repeat  18% 120px,
				  url(img/lluvia.png) no-repeat  45% 60px,
				  url(img/lluvia.png) no-repeat  70% 120px,
				  url(img/lluvia.png) no-repeat  100% 60px,
				  url(img/nube.png) no-repeat  5% 120px,
				  url(img/nube.png) no-repeat  60% 20px,								 
				  url(img/nube.png) no-repeat  50% 120px,								  
				  url(img/nube.png) no-repeat  30% 120px,								  							  
				  url(img/nube.png) no-repeat  60% 20px,									 
				  url(img/nube.png) no-repeat  75% 120px,
				  url(img/arcoiris.png) no-repeat  7% 30px;
    -webkit-transition: background-position 10s linear; 
	-moz-transition: background-position 10s linear;
	-o-transition: background-position 10s linear;
	transition: background-position 10s linear;
	
	
}

.fondo2:hover{background-position: 30% 320px, 5% 120px, 40% 220px, 70% 20px,60% 200px,10% 380px,70% 150px,50% 90px,87% 302px,36% 70px,90% 295px,6% 170px,13% 130px,55% 155px,21% 199px,19% 88px}

&lt;/style&gt;

&lt;/head&gt;
&lt;body  id="inicio"&gt;
	&lt;div class="fondo2"&gt;&lt;/div&gt; 
&lt;/body&gt;
</pre></code>


]]></content:encoded>
			<wfw:commentRss>http://www.jmocana.eu/2011/07/28/css3-transiciones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3 Multiple Backgrounds</title>
		<link>http://www.jmocana.eu/2011/07/27/css3-multiple-backgrounds/</link>
		<comments>http://www.jmocana.eu/2011/07/27/css3-multiple-backgrounds/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 11:29:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[css 3]]></category>

		<guid isPermaLink="false">http://www.jmocana.eu/?p=504</guid>
		<description><![CDATA[Una de las ventajas más esperadas de CSS3 es la posibilidad de insertar varios fondos en un mismo elemento, esto nos permitirá que nuestro HTML sea mucho más simple y evitaremos problemas de divitis. Como siempre voy a realizar un ejemplo muy sencillo y vamos viendo como utilizarlo. Me he descargado una serie de imágenes [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las ventajas más esperadas de CSS3 es la posibilidad de insertar varios fondos en un mismo elemento, esto nos permitirá que nuestro HTML sea mucho más simple y evitaremos problemas de divitis.</p>
<p>Como siempre voy a realizar un ejemplo muy sencillo y vamos viendo como utilizarlo. Me he descargado una serie de imágenes que representan distintos estados meteorológicos (nubes, sol y nubes, lluvia y un arco iris) y vamos a intentar plasmarlas todas ellas sobre un mismo contenedor.</p>
<h2 class="txt_ejemplo"><a href="http://www.jmocana.eu/2011/07/27/css3-multiple-backgrounds/#fondo1" title="ver ejemplo">VER EJEMPLO</a></h2>
<p>Creo el contenedor sobre al que vamos a asignar las imágenes</p>
<pre><code>&lt;div class="fondo1"&gt;&lt;/div&gt;</pre></code>
<h2>Sintaxis Multiple backgrounds</h2>
<p>A continuación asignamos tantos fondos a nuestro contenedor como queramos</p>
<pre><code>&lt;style&gt;
    .fondo1{height: 517px; background:		                         
		  url(img/nube-sol.png) no-repeat  10% 20px,
		  url(img/lluvia.png) no-repeat  18% 280px,
		  url(img/lluvia.png) no-repeat  27% 192px,	
	    	  url(img/lluvia.png) no-repeat  30% 225px,
		  url(img/lluvia.png) no-repeat  42% 140px,
		  url(img/lluvia.png) no-repeat  48% 320px,
		  url(img/lluvia.png) no-repeat  53% 60px,
		  url(img/lluvia.png) no-repeat  60% 120px,
		  url(img/lluvia.png) no-repeat  64% 20px,
                  url(img/nube.png) no-repeat  69% 120px,
		  url(img/nube.png) no-repeat  75% 360px,								 
		  url(img/nube.png) no-repeat  80% 220px,								  
		  url(img/nube.png) no-repeat  90% 120px,								  							  
		  url(img/nube.png) no-repeat  96% 200px,									 
		  url(img/nube.png) no-repeat  98% 20px,
		  url(img/arcoiris.jpg) no-repeat  100% 300px;
}&lt;/style&gt;</code></pre>
<p>Como podéis ver hemos creado un solo contenedor sin tener que recurrir a una estructura del tipo:</p>
<pre><code><body>
   &lt;div id="fondo1"&gt;
       &lt;div id="fondo2"&gt;
       &lt;/div&gt;
   &lt;/div&gt;
</body></code></pre>
<p>Cuanto antes declaremos un fondo menor z-index tendrá este. Según he colocado yo mis fondos el arco iris será el elemento que tendrá más profundidad, a continuación las nubes, seguido de la lluvia y por último el sol.</p>
<span id="more-504"></span>
<img class="centrar-img" src="/wp-content/themes/jmocana/images/post/zindex.jpg" alt="explicacion del z-index para el ejemplo" />
<p>Finalmente nuestro ejemplo quedaría tal que así</p>

<div id="fondo1"></div> 

<p>Podéis echar un vistazo a la especificación de la W3C aquí: <a href="http://www.w3.org/TR/css3-background/">CSS Backgrounds and Borders Module Level 3</a></p>

<h2>Soporte en los navegadores</h2>
<p>Los navegadores que soportan está propiedad son: <strong>Safari 1.3+, Chrome 2+, Firefox 3.6+, Opera 10.5+ y IE9 Beta</strong>. Una buena costumbre sería asignar un background-color al final de los multiples background como estilo alternativo para los navegadores que no soportan esta propiedad (IE8-), como podéis ver en este caso le he añadido un <em>background-color: #87CEFA;</em> al final del todo para simular el cielo.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.jmocana.eu/2011/07/27/css3-multiple-backgrounds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nuevas llamadas en HTML5</title>
		<link>http://www.jmocana.eu/2011/07/26/nuevas-llamadas-en-html5/</link>
		<comments>http://www.jmocana.eu/2011/07/26/nuevas-llamadas-en-html5/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 09:17:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[maquetador web]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://www.jmocana.eu/?p=495</guid>
		<description><![CDATA[DTD XHTML 1.1 &#60;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.1//EN&#8221; &#8220;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&#8221;&#62; HTML5: &#60;!DOCTYPE html&#62; Codificación XHTML 1.1 &#60;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=utf-8&#8243; /&#62; HTML5: &#60;meta charset=utf-8&#62; LINK / SCRIPT XHTML 1.1: &#60;link rel=&#8221;stylesheet&#8221; type=&#8221;text/css&#8221; href=&#8221;style-original.css&#8221;/&#62; &#60;script type=&#8221;text/javascript&#8221; src=&#8221;jquery.js&#8221;&#62;&#60;/script&#62; HTML5: &#60;link rel=stylesheet href=styles.css&#62; &#60;script src=jquery.js&#62;&#60;/script&#62;]]></description>
			<content:encoded><![CDATA[<h2><abbr title="Document Type Definition">DTD</abbr></h2>
<dl>
   <dt>XHTML 1.1</dt> 
   <dd>&lt;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.1//EN&#8221;
&#8220;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&#8221;&gt;</dd> 
    <dt>HTML5:</dt>
    <dd>&lt;!DOCTYPE html&gt;</dd>
</dl>
<h2>Codificación</h2>
<dl>
<dt>XHTML 1.1</dt> 
<dd>&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=utf-8&#8243; /&gt;</dd> 
<dt>HTML5:</dt> 
<dd>&lt;meta charset=utf-8&gt;</dd>
</dl>
<h2>LINK / SCRIPT</h2>
<dl> 
    <dt>XHTML 1.1:</dt>
    <dd>&lt;link rel=&#8221;stylesheet&#8221; type=&#8221;text/css&#8221; href=&#8221;style-original.css&#8221;/&gt;
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;jquery.js&#8221;&gt;&lt;/script&gt;</dd> 
    <dt>HTML5:</dt> 
    <dd> &lt;link rel=stylesheet href=styles.css&gt;
&lt;script src=jquery.js&gt;&lt;/script&gt;</dd> 
</dl>]]></content:encoded>
			<wfw:commentRss>http://www.jmocana.eu/2011/07/26/nuevas-llamadas-en-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Repaso Javascript</title>
		<link>http://www.jmocana.eu/2011/07/22/repaso-javascript/</link>
		<comments>http://www.jmocana.eu/2011/07/22/repaso-javascript/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 10:14:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[maquetador web]]></category>

		<guid isPermaLink="false">http://www.jmocana.eu/?p=491</guid>
		<description><![CDATA[A modo de repaso dejo en este post un listado de entradas relaccionadas con el mundillo javaScript. Programación orientada a objetos en javaScript Manejo de eventos en javaScript Manipulación del DOM con javaScript Javascript: Algunas funciones interesantes Detectar navegador con javaScript getAttribute, setAttribute, textContent, innerText y innerHTML JavaScript &#038; Ajax]]></description>
			<content:encoded><![CDATA[<p>A modo de repaso dejo en este post un listado de entradas relaccionadas con el mundillo javaScript.</p>
<ul>
   <li><a href="http://www.jmocana.eu/2011/05/30/programacion-orientada-a-objetos-javascript/">Programación orientada a objetos en javaScript</a></li>
<li><a href="http://www.jmocana.eu/2011/06/01/manejo-de-eventos-en-javascript/">Manejo de eventos en javaScript</a></li>
<li><a href="http://www.jmocana.eu/2011/06/01/manipulacion-del-dom-con-javascript/">Manipulación del DOM con javaScript</a></li>
<li><a href="http://www.jmocana.eu/2011/06/02/javascript-algunas-funciones-interesantes/">Javascript: Algunas funciones interesantes</a></li>
<li><a href="http://www.jmocana.eu/2011/06/09/detectar-navegador-javascrip/">Detectar navegador con javaScript</a></li>
<li><a href="http://www.jmocana.eu/2011/07/04/getattribute-setattribute-textcontent-innertext-y-innerhtml/">getAttribute, setAttribute, textContent, innerText y innerHTML</a></li>
<li><a href="http://www.jmocana.eu/2011/07/20/javascript-ajax/">JavaScript &#038; Ajax</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jmocana.eu/2011/07/22/repaso-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript &amp; Ajax</title>
		<link>http://www.jmocana.eu/2011/07/20/javascript-ajax/</link>
		<comments>http://www.jmocana.eu/2011/07/20/javascript-ajax/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 09:51:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://www.jmocana.eu/?p=460</guid>
		<description><![CDATA[Esta vez voy a intentar explicar como realizaríamos una carga ajax de un archivo xml el cual contiene cierta información que queremos mostrar en nuestra web, para ello realizaré un ejemplo y os iré describiendo detalladamente todos los pasos que voy siguiendo. En nuestro ejemplo tendremos un listado con tres películas, al pinchar sobre cada [...]]]></description>
			<content:encoded><![CDATA[<p>Esta vez voy a intentar explicar como realizaríamos una carga ajax de un archivo xml el cual contiene cierta información que queremos mostrar en nuestra web, para ello realizaré un ejemplo y os iré describiendo detalladamente todos los pasos que voy siguiendo. En nuestro ejemplo tendremos un listado con tres películas, al pinchar sobre cada una de ellas conectaremos con un archivo xml que es donde gurdamos toda la información relativa a las tres pelis, buscaremos la información relativa a la película sobre la que se a clicado y la imprimiremos por pantalla en un formato HTML específico. A continuación os pongo el ejemplo en funcionamiento:</p>

<h2 class="txt_ejemplo"><a href="#ej11">VER EJEMPLO</a></h2>

<link href="/wp-content/themes/jmocana/css/post.css" rel="stylesheet" type="text/css" />
<script src="/wp-content/themes/jmocana/js/funciones.js" type="text/javascript"></script>

<div id="ej11" class="ejemplo estirar">
<ul id="listado-peliculas">
    <li><a id="pelicula1" href="#ej11" rel="nofollow" title="ver información de la película">Un mundo casi perfecto</a></li>
    <li><a id="pelicula2" href="#ej11" rel="nofollow" title="ver información de la película">Amigos</a></li>
    <li><a id="pelicula3" href="#ej11" rel="nofollow" title="ver información de la película">Bad Teacher</a></li>
</ul>
</div>

<a class="e_1" href="/wp-content/themes/jmocana/js/funciones.js">Ver código js completo</a>

<h2 class="paso">Paso 1: Añadir los eventos</h2>

<p>El primer paso que daremos será asignar el evento correspondiente a cada uno de los enlaces disponibles en el listado, en nuestro caso son tres.</p>

<pre><code>function addLoadEvent(func) {
			var oldonload = window.onload;
			if (typeof window.onload != 'function') {
				window.onload = func;
			}
			else {
				window.onload = function() {
					oldonload();
					func();
				}
			}
		}
function anadeEvento(elemento,evento,funcion) {
		 if(document.addEventListener){
			 elemento.addEventListener(evento, funcion, false);  // Resto navegadores
		 }
		 else{
			 elemento.attachEvent("on"+evento,  funcion ); // IE8-
		 }
	  }

//Asignamos eventos
      addLoadEvent(function() { 

	     var listado_pelicula = document.getElementById("listado-peliculas");
    	 var enlaces_pelicula = listado_pelicula.getElementsByTagName("a");
				 
	     for(var i=0; i&lt;enlaces_pelicula.length; i++)  
		     anadeEvento(enlaces_pelicula[i], "click", function(e){cargadorPeliculas(this.getAttribute("id")); e.preventDefault();});	
         });	
</code></pre>

<p>Para evitar el uso de javascript intrusivo hacemos uso de las funciones addLoadEvent y anadeEvento (ya hable de estas funciones en este <a href="http://www.jmocana.eu/2011/06/01/manejo-de-eventos-en-javascript/">post</a>)</p>

<p>Una vez se haya cargado la página capturamos los tres enlaces del listado y los recorremos uno por uno pasándolos como parámetro a la función anadeEvento, junto con el evento que deseamos, en este caso el evento <em>click</em> y junto a la función que queremos que se ejecute al hacer clic sobre uno de nuestros enlaces.</p>

<p>Mucho cuidado con llamar a la función que queremos ejecutar directamente, porque no nos funcionará. Por ejemplo:</p>

<pre><code>
for(var i=0; i&lt;enlaces_pelicula.length; i++)  
		     anadeEvento(enlaces_pelicula[i], "click", cargadorPeliculas(this.getAttribute("id")));	
</code></pre>
<span id="more-460"></span>
<h2 class="paso">Cargar el xml</h2>
<p>Una vez tenemos asignados nuestros eventos lo que tendremos que hacer es realizar la carga de el xml donde se guarda toda la información relativa a las películas, para ello hacemos uso de la función <em>cargadorPeliculas</em></p>

<pre><code>
//Cargamos el XML 
		function cargadorPeliculas(id_pelicula) {


		  var xml_http; 
		  var url_xml = "http://www.jmocana.eu/wp-content/themes/jmocana/xml/peliculas.xml?x=0";
		  
		  try {  xml_http = new ActiveXObject('Msxml2.XMLHTTP'); }
		  
		  catch (e) 
		  {
			  try {   xml_http = new ActiveXObject('Microsoft.XMLHTTP'); } // código para IE6
			  catch (e2) 
			  {
				try {  xml_http = new XMLHttpRequest(); } // código para IE7+, Firefox, Chrome, Opera y Safari
				catch (e3) {  xml_http = false;   }
			  }
		   }
  
		  xml_http.onreadystatechange  = function() { 
			  
			   if(xml_http.readyState  == 4)
			   {
					if(xml_http.status  == 200) 
						{	
						
						 //ok, se ha cargado el XML correctamente						
						 var xml_doc = xml_http.responseXML										
					
						 getInfoPelicula(xml_doc, id_pelicula)
						}
					else 
					  {
						  // error cargando el XML
						  document.getElementById(en_que_div).innerHTML = "Error "+xml_http.status+" cargando XML";				
					  }
			   }
		  }
		  
		  
		 xml_http.open("GET",url_xml,  false); 
		 xml_http.send(null); 	
  }
</code></pre>

<p>La función cargadorPelicula recibirá el parámetro id_pelicula con el identificador de la película que hemos seleccionado</p>
<p>Lo primero que hacemos en esta función es asignar la ruta del xml a una variable.</p>
<p>para poder intercambiar datos con el servidor sin necesidad de recargar la página haremos uso del objeto <strong>XMLHttpRequest</strong>
para los navegadores modernos, mientras que para IE6- se hace uso del objeto <strong>ActiveXObject</strong></p>
<p>Para enviar una petición al servidor utilizamos el método open: <em>open(method,url,async)</em></p>
<ul>
<li><strong>method:</strong> Tipo de petición: GET, POST</li>
<li><strong>url:</strong> Localización del fichero</li>
<li><strong>async:</strong> true (asíncrono), false(síncrono)</li>
</ul>
<p><strong>onreadystatechange</strong> Almacena una función que será llamada automáticamente cada vez que la propiedad readyState cambia.</p>
<p>En nuestro ejemplo creamos el objeto xml_http la propiedad readystate puede tomar los siguientes valores</p>
<ul>
<li><strong>0</strong>: La petición no ha sido inicializada</li>
<li><strong>1</strong>: La conexión está establecida</li>
<li><strong>2</strong>: La petición ha sido recibida</li>
<li><strong>3</strong>: procesando petición</li>
<li><strong>4</strong>: La petición ha finalizado y la respuesta esta lista</li>
</ul> 

<p>Por otro lado la propiedad status puede tomar los siguientes valores</p>
<ul>
<li><strong>200</strong>: OK</li>
<li><strong>400</strong>: Página no encontrada</li>
</ul>
<p>En nuestro ejemplo comprobamos que la petición a finalizado y la respuesta está lista (readystate = 4) y además status = 200 (OK)</p>
<p>Para obtener la respuesta del servidor usamos la propiedad <strong>responseText (devuelve una cadena) o la propiedad <strong>responseXML</strong> (devuelve un XML)</p>
<p>Una vez tenemos toda la información guardada en la variable <em>xml_doc</em> la pasamos a la función <em>getInfoPelicula</em> junto con la variable <em>id_pelicula</em> y nos disponemos entonces a encontrar la posición dentro del XML en la que se encuentra la información solicitada</p>
<h2>Encontrar posición de la información dentro del XML</h2>
<pre><code>
//Buscamos la posición de la película en el XML
		function getInfoPelicula(xml_doc, id_pelicula){
	 
			var peliculas = xml_doc.getElementsByTagName("pelicula");
	   
			for(var i=0; i&lt;peliculas.length; i++){
	
			   if(peliculas[i].getAttribute("id") === id_pelicula){
	 
				  pintarInfoPelicula(xml_doc, i);
				  
			   }
			}				
			
		
		}
</pre></code>
<p>En esta sencilla función lo único que hacemos es recorrer todas las peliculas de nuestro xml hasta hacer coincidir el id del enlace seleccionado y el id de la etiqueta pelicula que está siendo evaluada. Una vez coincidan los dis ids llamaremos a la función pintarInfoPelicula pasandola como parametros xml_doc y la variable i que contiene la posición en la que se encuentra la película solicitada dentro del XML.</p>
<h2>Imprimir información por pantalla</h2>
<pre><code>
//Imprimimos datos
		function pintarInfoPelicula(xml_doc, pos){
			
			
			
		  //Si existe el contenedor "cont_detalles" lo eliminamos
		  if(!(document.getElementById("cont_detalles") == undefined)){
			  var contenedor = document.getElementById("cont_detalles");
			  contenedor.parentNode.removeChild(contenedor);
		  }	  
	
		  //recogemos la información relativa a la pelicula seleccionada	
		  var titulo = xml_doc.getElementsByTagName("titulo")[pos].childNodes[0].nodeValue;
		  var anyo = xml_doc.getElementsByTagName("anyo")[pos].childNodes[0].nodeValue;
		  var distribuidora = xml_doc.getElementsByTagName("distribuidora")[pos].childNodes[0].nodeValue;
		  var duracion = xml_doc.getElementsByTagName("duracion")[pos].childNodes[0].nodeValue;
		  var foto = xml_doc.getElementsByTagName("foto")[pos].childNodes[0].nodeValue;
		  var sinopsis = xml_doc.getElementsByTagName("sinopsis")[pos].childNodes[0].nodeValue;
		  
		  //creamos la cadena de salida		  
		  var txt = "&lt;h2&gt;" + titulo + "&lt;/h2&gt;";
		  txt += "&lt;div class='mod-img'&gt;&lt;img src='/wp-content/themes/jmocana/images/post/" + foto + "' alt='" + titulo +"' /&gt;&lt;/div&gt;";
		  txt += "&lt;div class='mod-txt'&gt;&lt;dl&gt;&lt;dt&gt;A&ntilde;o:&lt;/dt&gt;";
		  txt += "&lt;dd&gt;"+ anyo +"&lt;/dd&gt;";
		  txt += "&lt;dt&gt;Distribuidora:&lt;/dt&gt;";
		  txt += "&lt;dd&gt;"+ distribuidora +"&lt;/dd&gt;";
		  txt += "&lt;dt&gt;Duraci&oacute;n:&lt;/dt&gt;";
		  txt += "&lt;dd&gt;"+ duracion +"&lt;/dd&gt;";
		  txt += "&lt;dt&gt;Sinopsis:&lt;/dt&gt;";
		  txt += "&lt;dd&gt;"+ sinopsis +"&lt;/dd&gt;";
		  txt += "&lt;/dl&gt;&lt;/div&gt;";
		  
		  //Creamos elementos y asignamos cadena
		  var ejemplo = document.getElementById("ej11");
		  var contenedor = document.createElement("div");
		  ejemplo.appendChild(contenedor)
		  contenedor.setAttribute("id", "cont_detalles");
    	  contenedor.innerHTML=txt;
		  	return false;

}

</pre></code>
<p>En esta función seguiremos los siguientes pasos:</p>
<ol>
<li>Comprobamos si existe el contenedor <em>cont_detalles</em>. Si existe lo eliminamos para que no se anide la información dentro de la página</li>
<li>Almacenamos los datos en variables ej: <pre><code>var titulo = xml_doc.getElementsByTagName("titulo")[pos].childNodes[0].nodeValue;</code></pre></li>
<li>Creamos la cadena de salida y la almacenamos en la variable <em>txt</em></li>
<li>Finalmente creamos un contenedor y lo añadimos al DOM junto con la salida almacenada en la variable <em>txt</em></li>
</ol>
 

]]></content:encoded>
			<wfw:commentRss>http://www.jmocana.eu/2011/07/20/javascript-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>getAttribute, setAttribute, textContent, innerText y innerHTML</title>
		<link>http://www.jmocana.eu/2011/07/04/getattribute-setattribute-textcontent-innertext-y-innerhtml/</link>
		<comments>http://www.jmocana.eu/2011/07/04/getattribute-setattribute-textcontent-innertext-y-innerhtml/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 11:50:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[maquetador web]]></category>

		<guid isPermaLink="false">http://www.jmocana.eu/?p=451</guid>
		<description><![CDATA[getAttribute Devuelve un atributo determinado relativo a un elemento.Ejemplo (Nos devolvería el identificador del elemento div): document.getElementById("div").getAttribute("id"); Con jquery podríamos conseguir lo mismo gracias al método attr(). Ejemplo: $("div").attr("id"); setAttribute Fija un determinado valor en un elemento determinado.Ejemplo: (Fijaríamos el valor 'mi_id' en el atributo id del elemento/s div) document.getElementById("div").setAttribute("id", "mi_id"); Podríamos conseguir lo mismo [...]]]></description>
			<content:encoded><![CDATA[<h3>getAttribute</h3>
<p>Devuelve un atributo determinado relativo a un elemento.<br />Ejemplo (Nos devolvería el identificador del elemento div):
<pre><code>document.getElementById("div").getAttribute("id");</code></pre> </p>
<p>Con jquery podríamos conseguir lo mismo gracias al método attr(). <br />
Ejemplo:
<code><pre> $("div").attr("id");</code></pre></p>
<h3>setAttribute</h3>
<p>Fija un determinado valor en un elemento determinado.<br />Ejemplo: (Fijaríamos el valor 'mi_id' en el atributo id del elemento/s div)
<pre><code>document.getElementById("div").setAttribute("id", "mi_id");</code></pre> </p>
<p>Podríamos conseguir lo mismo con jquery de la siguiente forma:<br />
<pre><code>$("div").attr("id", "mi_id");</code></pre></p>
<h3>textContent Vs innerText</h3>
<p>Estos dos métodos nos permiten conseguir lo mismo, obtener el texto englobado por un elemento en concreto con la diferencia de que cada uno funcionará o no dependiendo del navegador en el que se ejecuten. Así por ejemplo textContent funcionará en Firefox pero no en IE. Por el contrario innerText trabajará correctamente en IE ero no en firefox. Una forma válida de conseguir nuestro propósito con éxito en todos los navegadores sería la siguiente:</p>
<pre><code>var hasInnerText =
(document.getElementsByTagName("body")[0].innerText != undefined) ? true : false;
var elem = document.getElementById('id');
var elem2 = document.getElementById ('id2');

if(!hasInnerText){
    elem.textContent = value;
    elem2.textContent = value;
} else{
    elem.innerText = value;
    elem2.innerText = value;
}</code></pre>

<h3>innerHTML</h3>
<p>Una forma más sencilla de obtener el texto de un elemento sin tener que recurrir a condicionales con los cuales diferenciar entre navegadores sería mediante el método innerHTML. Mediante este método recuperaremos tanto el texto como el etiquetado HTML englobado por un elemento en concreto.<br />
Ejemplo: (Imaginemos que queremos fijar un texto en un contenedor cuyo id es "mi_id"): 
<pre><code>document.getElementById('mi_id').innerHTML = "&lt;p&gt;Nuevo texto insertado en mi_id&lt;/p&gt;";</code></pre></p>]]></content:encoded>
			<wfw:commentRss>http://www.jmocana.eu/2011/07/04/getattribute-setattribute-textcontent-innertext-y-innerhtml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Detectar navegador con javaScript</title>
		<link>http://www.jmocana.eu/2011/06/09/detectar-navegador-javascrip/</link>
		<comments>http://www.jmocana.eu/2011/06/09/detectar-navegador-javascrip/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 16:35:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.jmocana.eu/?p=440</guid>
		<description><![CDATA[Debido al distinto comportamiento de los navegadores web muchas veces se hace imprescindible detectar el nombre del mismo así como la versión que se está utilizando para realizar una programación determinada. Gracias al objeto navigator de javaScript podemos detectar tanto el nombre como la versión de navegador que se está utilizando.El objeto navigator tiene varias [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript" src="/wp-content/themes/jmocana/js/javascript/navigator/navigator.js"></script>
<p>Debido al distinto comportamiento de los navegadores web muchas veces se hace imprescindible detectar el nombre del mismo así como la versión que se está utilizando para realizar una programación determinada.</p>
<p>Gracias al <strong>objeto navigator</strong> de javaScript podemos <strong>detectar tanto el nombre como la versión de navegador</strong> que se está utilizando.<br />El objeto navigator tiene varias propiedades aunque quizás la más interesante sea <strong>userAgent</strong>. Mediante el uso de expresiones regulares aplicadas sobre esta propiedad podremos detectar la información que necesitamos.</p>
<p>Tenéis información detallada sobre el objeto navigator en la siguiente dirección:</p>
<a class="enlace-destacado" href="http://www.javascriptkit.com/javatutors/navigator.shtml" title="ver más información"><strong>Ver información detallada en javascriptkit.com</strong></a>
<p>Estos son algunos de los valores de las propiedades del objeto navigator relativo a tu navegador:</p>
<ul id="list-navigator">
    <li><strong>appCodeName: </strong></li>
    <li><strong>appName: </strong></li>
    <li><strong>appVersion: </strong></li>
    <li><strong>userAgent: </strong></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.jmocana.eu/2011/06/09/detectar-navegador-javascrip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

