<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Activ - Centro de Capacitación Autorizado por Adobe enfocado a Cursos de HTML5, jQuery, Javascript, CSS, Usabilidad, SEO, Mobile, Flex, Flash, ActionScript y demás tecnologías.</title>
	
	<link>http://activ.com.mx</link>
	<description>Adobe Authorized Training Center</description>
	<lastBuildDate>Tue, 22 May 2012 17:31:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/activmx" /><feedburner:info uri="activmx" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Google Analytics User Conference</title>
		<link>http://feedproxy.google.com/~r/activmx/~3/L34b9wDnywA/</link>
		<comments>http://activ.com.mx/google-analytics-user-conference/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 19:55:20 +0000</pubDate>
		<dc:creator>edgarparada</dc:creator>
				<category><![CDATA[Activ]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://activ.com.mx/?p=4585</guid>
		<description><![CDATA[El día 25 de abril tendrá lugar el Google Analytics User Conference en el ITESM Campus Santa Fe; para compartir experiencias, conocimientos y reflexiones con ejecutivos de Google responsables de la herramienta, así como con expertos latinoamericanos certificados. Actualmente las empresas tienen más clara la necesidad de medir sus esfuerzos online, y Google Analytics es [...]]]></description>
			<content:encoded><![CDATA[<p>El día 25 de abril tendrá lugar el <a href="http://www.gauc.mx/home/home.asp">Google Analytics User Conference</a> en el ITESM Campus Santa Fe; para compartir experiencias, conocimientos y reflexiones con ejecutivos de Google responsables de la herramienta, así como con expertos latinoamericanos certificados. </p>
<p style="text-align:center"><a href="http://www.gauc.mx/home/home.asp"><img src="http://activ.com.mx/wp-content/uploads/2012/04/logo_gauc.jpg" alt="" title="Logo GAUC" width="450" height="181" class="aligncenter size-full wp-image-4586" /></a></p>
<p>Actualmente las empresas tienen más clara la necesidad de medir sus esfuerzos online, y Google Analytics es sin duda la herramienta más idónea para ello. Conoce en este espacio las tendencias del web analytics, las funciones avanzadas de Google Analytics y cómo sacar mejor provecho de esta gran herramienta. </p>
<p>Durante el evento habrá conferencias magistrales, así como conferencias de acuerdo a tu área de especialización: <em>Negocio y Estrategia, Análisis, Optimización y Aspectos Técnicos</em></p>
<p>Aprovecha que tenemos 10% de descuento para los primeros 20 lugares que se registren utilizando el siguiente código <strong>GAUC_COD909</strong></p>
<img src="http://feeds.feedburner.com/~r/activmx/~4/L34b9wDnywA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://activ.com.mx/google-analytics-user-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://activ.com.mx/google-analytics-user-conference/</feedburner:origLink></item>
		<item>
		<title>Introducción a Media Queries con CSS3</title>
		<link>http://feedproxy.google.com/~r/activmx/~3/ZnyJ9w_GaUg/</link>
		<comments>http://activ.com.mx/introduccion-a-media-queries-con-css3/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 01:14:02 +0000</pubDate>
		<dc:creator>juandediosleon</dc:creator>
				<category><![CDATA[Dreamweaver]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[dreamweaver]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://activ.com.mx/?p=4532</guid>
		<description><![CDATA[¿Qué son los Media Queries? La rápida distribución de dispositivos móviles, ha puesto el mundo del web de cabeza. Los usuarios ya no ven únicamente contenido web en computadoras de escritorio, sino en smartphones, tabletas y otros dispositivos con un amplio rango de dimensiones. El reto para los diseñadores web es asegurar que sus sitios [...]]]></description>
			<content:encoded><![CDATA[<h2>¿Qué son los Media Queries?</h2>
<p>La rápida distribución de dispositivos móviles, ha puesto el mundo del web de cabeza. Los usuarios ya no ven únicamente contenido web en computadoras de escritorio, sino en smartphones, tabletas y otros dispositivos con un amplio rango de dimensiones. El reto para los diseñadores web es asegurar que sus sitios puedan verse bien, no sólo en una pantalla grande, sino también en una pequeña pantalla de celular y cualquier pantalla de por medio.</p>
<p>Los Media Queries, son una excelente forma de entregar diferentes estilos para diferentes dispositivos, y proveer la mejor experiencia para cada tipo de usuario. Como parte de la especificación CSS3, los Media Queries expanden el rol del atributo media, que controla como se aplican los estilos. Por ejemplo: se ha vuelto una práctica común por años el uso de una hoja de estilos por separado para imprimir sitios web al especificar media = &#8220;print&#8221;. Los Media Queries, llevan esta idea al siguiente nivel, al permitir a los diseñadores asignar estilos basados en las propiedades de un dispositivo, como el ancho de pantalla, orientación y así sucesivamente.</p>
<p>Las Figuras 1- 3, muestran los Media Queries en acción. De hecho muestran el mismo sitio web, visto en una computadora de escritorio, en una tableta y en un iPod Touch.</p>
<p style="text-align: center"><img class="aligncenter size-full wp-image-4533" src="http://activ.com.mx/wp-content/uploads/2012/03/fig01.jpeg" alt="" width="380" height="288" /></p>
<p>Figura 1. Al ser vista en una computadora de escritorio, el sitio tiene un layout de dos columnas.<br />
<span id="more-4532"></span><br />
En la versión de escritorio, la página tiene un ancho fijo y un layout de dos columnas, pero cuando el mismo sitio es visto en una tableta, la barra lateral se desplaza debajo del contenido principal.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;link href=&quot;css/phone.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;
media=&quot;only screen and (max-width: 400px)&quot; &gt;</pre></div></div>

<p style="text-align: center"><img class="aligncenter size-full wp-image-4537" src="http://activ.com.mx/wp-content/uploads/2012/03/fig02.jpeg" alt="" width="380" height="466" /></p>
<p>Figura 2. El layout cambia a una sola columna para ajustarse a una pantalla más angosta de una tableta.</p>
<p>Al ser visto el sitio en un iPod Touch, el menú se re-acomoda y las imágenes reducen su escala. Los diferentes estilos se aplican dependiendo el dispositivo con el uso de Media Queries.</p>
<p style="text-align: center"><img class="aligncenter size-full wp-image-4541" src="http://activ.com.mx/wp-content/uploads/2012/03/fig03.jpeg" alt="" width="320" height="480" /></p>
<p>Figura 3. Los Media Queries definen nuevos estilos al sitio para ajustarse a una pantalla mucho más pequeña.</p>
<p>Este artículo da una visión general de los Media Queries, incluyendo ejemplos que pueden ser de utilidad para el desarrollo de un sitio web.</p>
<p>Nota: Asegurate de ver los videos en Adobe TV: CSS3 Media Queries con Dreamweaver y Como los Media Queries pueden facilitar el diseño para dispositivos móviles y diferentes tipos de pantallas.</p>
<h2>Ejemplos de Media Queries</h2>
<p>Un ejemplo simple de un Medya Query puede verse así:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;link href=&quot;css/phone.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;
media=&quot;only screen and (max-width: 400px)&quot; &gt;</pre></div></div>

<p>En este ejemplo, el Media Query, ha sido agregado a la etiqueta. Como podrás ver más adelante, puedes usar Media Queries con hojas de estilo. El atributo media es dónde reside el Query. Este otro dice:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">only screen and (max-width: 400px)</pre></div></div>

<p>El significado puede ser obvio: aplica esta hoja de estilo sólo a un dispositivo con una ventana de navegador no mayor a 400 pixeles. Puedes observar por el nombre del archivo phone.css que este Query en particular, esta hecho para estilos de un dispositivo móvil. Ahora que has visto un ejemplo, vamos a profundizar en los Media Queries y las características de un dispositivo que se pueden utilizar para controlar como se aplican los estilos.</p>
<h2>Soporte y características de Media Queries</h2>
<p>Los Media Queries tienen soporto en Internet Explorer 9+, Firefox 3.5+, Safari 3+, Opera 7+, así como en los smartphones más modernos y otros dispositivos móviles. Aunque versiones viejas de IE no soporten los Media Queries, puedes -y deberías- empezar a usarlos ahora. Más adelante se discute como lidiar con versiones viejas de navegadores.</p>
<p>Tabla 1 lista de características de dispositivos que se pueden usar con Media Queries.</p>
<table width="380" border="0">
<tbody>
<tr>
<td>Feature</td>
<td>Value</td>
<td>Min/Max</td>
<td>Description</td>
</tr>
<tr>
<td>width</td>
<td>Length</td>
<td>Yes</td>
<td>Width of display area</td>
</tr>
<tr>
<td>height</td>
<td>Length</td>
<td>Yes</td>
<td>Height of display area</td>
</tr>
<tr>
<td>device-width</td>
<td>Length</td>
<td>Yes</td>
<td>Width of device</td>
</tr>
<tr>
<td>device-height</td>
<td>Length</td>
<td>Yes</td>
<td>Height of device</td>
</tr>
<tr>
<td>orientation</td>
<td>portrait orlandscape</td>
<td>No</td>
<td>Orientation of device</td>
</tr>
<tr>
<td>aspect-ratio</td>
<td>Ratio (w/h)</td>
<td>Yes</td>
<td>Ratio of width to height, expressed as two integers separated by a slash (e.g., 16/9)</td>
</tr>
<tr>
<td>device-aspect-ratio</td>
<td>Ratio (w/h)</td>
<td>Yes</td>
<td>Ratio of device-width to device-height</td>
</tr>
<tr>
<td>color</td>
<td>Integer</td>
<td>Yes</td>
<td>Number of bits per color component (if not color, the value is 0)</td>
</tr>
<tr>
<td>color-index</td>
<td>Integer</td>
<td>Yes</td>
<td>Number of entries in the output device&#8217;s color lookup table</td>
</tr>
<tr>
<td>monochrome</td>
<td>Integer</td>
<td>Yes</td>
<td>Number of bits per pixel in the monochrome frame buffer (if not monochrome, the value is 0)</td>
</tr>
<tr>
<td>resolution</td>
<td>Resolution</td>
<td>Yes</td>
<td>Density of pixels of output device, express as integer followed by dpi(dots per inch) or dpcm (dots per centimeter)</td>
</tr>
<tr>
<td>scan</td>
<td>progressiveor interlace</td>
<td>No</td>
<td>Scanning process used by TV devices</td>
</tr>
<tr>
<td>grid</td>
<td>0 or 1</td>
<td>No</td>
<td>If set to 1, the device is grid-based, such as a teletype terminal or phone display with only one fixed font (all other devices are 0)</td>
</tr>
</tbody>
</table>
<p>Tabla 1. Características de dispositivos para ajustar condiciones en Media Queries.</p>
<p>Las primeras cinco características de la Tabla 1 (width, height, device-width, device-height y orientation) son las más útiles. Puedes agregar un prefijo a la mayoría de las características con min- y max- para indicar un valor mínimo y máximo, como min-with y max-width. La columna Min/Max en la Tabla 1, indica que características se pueden modificar de esta manera.</p>
<h2>Ancho, ancho de dispositivo y ventana.</h2>
<p>Quizás uno de los aspectos más confusos de los Media Queries, es la diferencia entre width y height y sus valores equivalentes predefinidos por device-. En el caso de computadoras portables y de escritorio, la diferencia es fácil de entender: width y height se refieren al tamaño de la ventana del navegador, mientras que device-width y device-height se refieren a las dimensiones del monitor. No todo mundo corre su navegador a pantalla completa, así que tienes que utilizar width y height.</p>
<p>Los navegadores de dispositivos móviles, ocupan toda la pantalla, así que podrías esperar que width y device-width sean lo mismo. Desafortunadamente no siempre es el caso. La mayoría de los smartphones, incluyendo Android, iPhone y Windows Phone 7, ajustan width a una vista nominal de aproximadamente 1000 pixeles de ancho (en un iPhone y iPod Touch, de 980 pixeles, Windows Phone 7 usa 1024). La Figura 4 muestra como un iPod Touch despliega normalmente la página de ejemplo en las figuras previas.</p>
<p style="text-align: center"><img class="aligncenter size-full wp-image-4544" src="http://activ.com.mx/wp-content/uploads/2012/03/fig04.jpeg" alt="" width="320" height="480" /></p>
<p>Figura 4. Por default, los dispositivos modernos, escalan los sitios web para encajar en una ventana hipotética.</p>
<p>Aunque la hoja de estilos este vinculada con la página utilizando Media Queries, para proporcionar diferentes estilos dependiendo de los valores min-width y max-width, el iPod Touch, ignora los estilos y despliega la versión de escritorio por que su ventana se considera de 980 pixeles de ancho.</p>
<p>Para hacerlo más confuso, el iPhone, iPod Touch y iPad, no toman en cuenta la orientación para calcular el ancho, mientras que otros dispositivos si.</p>
<p>Afortunadamente hay una solución simple para esta confusión. La nueva etiqueta de Apple, que ha sido adoptada ampliamente por otros fabricantes de dispositivos móviles, se ha incorporado a la especificación que muy probablemente apruebe la World Wide Web Consortium (W3C). Para asegurar un campo de juego con todos los dispositivos móviles que soporten Media Queries, sólo agrega la siguiente línea de código en la etiquetade cada página:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;</pre></div></div>

<p>Esto le dice a un dispositivo móvil que trate una ventana al mismo ancho del ancho físico del dispositivo. Es más, le dice al iPhone, iPod Touch y iPad que tome en cuenta la orientación para calcular el ancho. Como resultado, puedes usar width con la seguridad que significa lo que realmente es.</p>
<p>Nota: Muchos dispositivos móviles, particularmente el iPhone 4 y iPad 2, tienen pantallas de alta resolución con una densidad de pixel (resolución) mayor a una computadora de escritorio o una laptop. Esto no afecta como calculas el tamaño en pixeles dentro de los CSS. La especificación CSS, dice: si la densidad de pixel del dispositivo, es muy diferente de una computadora, el navegador, debe re-escalar los valores de los pixeles. Algunos desarrolladores, ahora se refieren a medidas en pixeles como CSS pixels.</p>
<h2>Como escribir Media Queries</h2>
<p>Para agregar un Media Querie al atributo media, tienes que ajustar una o más condiciones con las características de la Tabla 1. Especificas el valor para una característica y después dos puntos, de la misma forma que una propiedad de CSS. Cada condición esta envuelta en paréntesis y se agrega a la declaración con la palabra and. Por ejemplo:</p>
<pre>"media="screen and (min-width: 401px) and (max-width: 600px)"</pre>
<p>Los Media Queries son Booleanos: sólo pueden ser verdaderos o falsos. Si la condición es verdadera, se aplica el estilo; si es falsa, será ignorada.</p>
<p>Algunas características media, como color, monochrome y grid, se pueden usar como condiciones sin un valor específico. Por ejemplo, la siguiente línea apunta al color de todos los elementos desplegados.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">media=&quot;screen and (color)&quot;</pre></div></div>

<h3>Especificaciones alternativas</h3>
<p>No existe la palabra clave or para especificar características media alternativas. En cambio, se enlistan alternativas separadas por coma, de esta forma:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">media=&quot;screen and (min-width: 769px), print and (min-width: 6in)&quot;</pre></div></div>

<p>Esto se aplica a pantallas más anchas de 769 pixeles o dispositivos de impresión con un ancho de papel menor a 6 pulgadas.</p>
<h3>Especificar condiciones negativas</h3>
<p>Para especificar condiciones negativas, puedes preceder la declaración media con la palabra clave &#8220;not&#8221; de esta forma:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">media=&quot;not screen and (monochrome)&quot;</pre></div></div>

<p>Puedes usar &#8220;not&#8221; frente a una condición individual. La palabra clave debe ir al inicio de una declaración para negarla por completo. El ejemplo precedente aplica a todos los dispositivos excepto de pantallas monocromáticas.</p>
<h3>Esconder Media Queries de navegadores viejos</h3>
<p>La especificación de Media Queries también provee la palabra only, que pretende esconder los Media Queries de navegadores viejos. Al igual que not, la palabra clave debe ir al inicio de la declaración. Por ejemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">media=&quot;only screen and (min-width: 401px) and (max-width: 600px)&quot;</pre></div></div>

<p>Los navegadores que no reconocen Media Queries, esperan una lista separada por comas de media types, y la especificación dice que se debería truncar cada valor, inmediatamente antes del primer caracter no alfanumérico que no sea un guión. Así que un navegador viejo debería interpretar el ejemplo precedente de esta forma:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">media=&quot;only&quot;</pre></div></div>

<p>Como no existe ningún media type only, el estilo es ignorado. De igual manera, un navegador viejo, deberá interpretar lo siguiente como media=&#8221;screen&#8221;:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">media=&quot;screen and (min-width: 401px) and (max-width: 600px)&quot;</pre></div></div>

<p>En otras palabras, deberá aplicar las reglas del estilo a todos los dispositivos, incluso aunque no sepa que son los Media Queries. Desafortunadamente, IE 6-8 falla al implementar la especificación correctamente. En lugar de aplicar los estilos a todos los dispositivos, ignora por completo la hoja de estilos.</p>
<p>A pesar de este comportamiento, aún se recomienda agregar el prefijo only a los Media Queries, si deseas esconder todos los estilos de otros navegadores menos comunes.</p>
<h3>Tratando con versiones más viejas de Internet Explorer</h3>
<p>La falta de soporte para Media Queries en IE 6 hasta IE 8 no es un problema. Simplemente crea un set básico de estilos para todos los navegadores que no usen Media Queries, y utiliza Media Queries para ofrecer una mejor experiencia para visitantes con navegadores más modernos.</p>
<p>Alternativamente, puedes usar una condicional de comentario para Internet Explorer y una serie de reglas para versiones viejas de IE, como estas:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;!--[if lt IE 9 &amp; !IEMobile]&gt;
  &lt;link href=&quot;iestyles.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;
&lt;![endif]--&gt;</pre></div></div>

<h2>Uso de Media Queries con @import y @media</h2>
<p>Adicionalmente a los Media Queries en las etiquetas , al vincular una hoja de estilos externa, se pueden usar con @import y @media. La sintaxis básica es la misma. Por ejemplo, lo siguiente importa una hoja d estilo y aplica los estilos a dispositivos con una pantalla no mayor a 400 pixeles de ancho.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">@import url(&quot;phone.css&quot;) only screen and (max-width:400px);</pre></div></div>

<p>Los Media Queries, se pueden usar dentro de una hoja de estilos como esta:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">@media only screen and (max-width:400px) {
#navbar {
float: none;
width: 400px;
}
}</pre></div></div>

<h2>Prueba de Media Queries</h2>
<p>Probar tu código es importante. Para tabletas y smartphones se complican las pruebas ya que idealmente deberías tener una serie dispositivos a tu disposición. Por suerte, puedes probar la mayoría de los Queries sin poseer un dispositivo específico. Siempre es mejor tener algo real enfrente, sin embargo, para el propósito de este artículo, con el uso de un navegador bastará para entender como funcionan los Queries.</p>
<p>El ZIP que acompaña este artículo, contiene un archivo de ejemplo (mediaqueries.html) con tres diferentes diseños vinculados. Puedes utilizar el ejemplo para continuar con la siguiente prueba de tamaños. Con la ventana del navegador completamente abierta, se puede ver el diseño básico del sitio (ver Figura 1). Haz más pequeña la ventana del navegador y puedes observar los cambios mientras pasas por las dimensiones de diferentes dispositivos. Mientras recorres las dimensiones específicas en el código, el estilo de cambiar al de una tableta (Figura 2) o un celular (Figura 3). La imagen de encabezado se hace pequeña para tabletas por ejemplo; los siguientes módulos toman un flujo diferente. Para el estilo de celular, la imagen central desaparece, es sustituida por un menú más grande de botones verticales.</p>
<p>El navegador verifica los Media Queries cada vez que cambia el tamaño de la ventana del navegador o cuando volteas el celular a de una orientación vertical a una horizontal.</p>
<h2>Media Queries en Dreamweaver CS5.5</h2>
<p>Dreamweaver CS5.5 mejoró el soporte para Media Queries, desde que Adobe introdujo la actualización 11.0.3. El nuevo cuadro de diálogo para Media Queries, te ayuda a mantener tus Media Queries para una sola página o para un sitio completo (ver Figura 5).</p>
<p>Puedes acceder al cuadro de diálogo Media Queries de cualquiera de los siguientes lugares:</p>
<ul>
<li>Modify &gt; Media Queries</li>
<li>Panel Multiscreen Preview &gt; Boton Media Queries</li>
<li>Menú dropdown Multiscreen &gt; Media Queries</li>
<li>Opciones del menú del panel CSS Styles</li>
<li>Menú contextual del panel CSS Styles</li>
</ul>
<p><img class="aligncenter size-full wp-image-4557" src="http://activ.com.mx/wp-content/uploads/2012/03/fig05.jpeg" alt="" width="380" height="459" /></p>
<p>Figura 5. Cuadro de diálogo Media Queries en Dreamweaver CS5.5</p>
<p>Con el uso de este cuadro de diálogo podrás:</p>
<ul>
<li>Crear múltiples Media Queries.</li>
<li>Vincular Media Queries a la página actual, que añade vínculos a uno o varios archivos CSS.</li>
<li>Crear un archivo de ancho de sitio de Media Queries, que vincule a un solo y centralizado archivo CSS que importe otros archivos CSS específicos para cada dispositivo.</li>
</ul>
<p>En el uso de un archivo de ancho de sitio de Media Queries, puedes vincular archivos existentes CSS o crear nuevos desde el mismo cuadro de diálogo. Incluso puedes crear comentarios arriba del query con lo que quieras agregar como descripción.</p>
<p>Adicionalmente, puedes escoger agregar la etiquetaal documento, que forze al dispositivo reportar sus dimensiones actuales, en lugar del tamaño del valor nominal del viewport. Seleccionar esta opción ayuda a prevenir escalas no deseadas por malos reportes de tamaño.</p>
<p>Nota: Por ahora, el cuadro de diálogo de Media Queries sólo lee y escribe Queries con al menos un valor min-width y max-width. El cuadro de diálogo sólo edita los valores min- y max-. Puedes editar manualmente otros parámetros, pero min-width y max-width son los valores más comunes enfocados a dispositivos.</p>
<h3>Ajustes predeterminados y definición de un sitio</h3>
<p>El cuadro de diálogo Media Queries incluso provee una opción de presets en la parte inferior del área de lista. Selecciona estos presets y Dreamweaver crea de manera automática:</p>
<ul>
<li>Media Queries para una tableta, celular y computadoras de escritorio.</li>
<li>min-width y max-width con valores iniciales comunes.</li>
</ul>
<p>El botón de Default Presets provee una forma rápida de iniciar con Media Queries.</p>
<p>Otra manera conveniente de gestionar un archivo de ancho de sitio, es a través del cuadro de diálogo Site Setup. Ahora existe un campo llamado Site-wide Media Query File, en Advanced Settings &gt; Local Info, que especifica el archivo de ancho de sitio. El archivo listado aquí, aparece como la opción cada vez que abres el cuadro de diálogo de Meida Queries. Para un nuevo archivo (o existente) todo lo que tienes que hacer es seleccionar esa opción para aplicar el archivo de ancho Media Query a la página actual.</p>
<p>Nota: Cambiar este archivo, no actualizará de manera automática todos los archivos del sitio.</p>
<p>El cuadro de diálogo Media Queries, ofrece una gran forma de simplificar la creación y gestión de tus Media Queries.</p>
<p>Media Queries son la mejor forma de focalizar dispositivos con diferentes estilos. Como se muestra en la parte superior, no se usan únicamente para smartphones, también se pueden usar para controlar el estilo de cualquier pantalla.</p>
<p>Nota: Esta es una versión actualizada y expandida del artículo original escrito por Donald Booth.</p>
<img src="http://feeds.feedburner.com/~r/activmx/~4/ZnyJ9w_GaUg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://activ.com.mx/introduccion-a-media-queries-con-css3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://activ.com.mx/introduccion-a-media-queries-con-css3/</feedburner:origLink></item>
		<item>
		<title>Adobe Edge preview 5 disponible en Labs</title>
		<link>http://feedproxy.google.com/~r/activmx/~3/zT7SL3fl0Rw/</link>
		<comments>http://activ.com.mx/adobe-edge-preview-5-disponible-en-labs/#comments</comments>
		<pubDate>Mon, 12 Mar 2012 18:49:35 +0000</pubDate>
		<dc:creator>edgarparada</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[adobe edge]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://activ.com.mx/?p=4506</guid>
		<description><![CDATA[Adobe Edge el día de hoy anuncia la disponibilidad de su preview 5 en Adobe Labs. Edge es una herramienta de animación web y diseño de interactividad orientada a diseñadores para que puedan llevar contenido animado a sus sitios web mediante el uso de estándares web como HTML5, JavaScript y CSS3. En esta nueva versión [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe Edge el día de hoy anuncia la disponibilidad de su <a href="http://labs.adobe.com/technologies/edge/">preview 5 en Adobe Labs</a>. Edge es una herramienta de animación web y diseño de interactividad orientada a diseñadores para que puedan llevar contenido animado a sus sitios web mediante el uso de estándares web como HTML5, JavaScript y CSS3. </p>
<p style="text-align:center"><a href="http://labs.adobe.com/technologies/edge/"><img src="http://activ.com.mx/wp-content/uploads/2012/03/edge_370x105.gif" alt="Adobe Edge preview 5" title="Adobe Edge preview 5" width="370" height="105" class="aligncenter size-full wp-image-4507" /></a></p>
<p>En esta nueva versión Edge introduce varias nuevas características enfocadas a mejorar la animación y optimización de recursos. La línea de tiempo ha recibido un comportamiento más natural así mismo que ya podemos encontrar herramientas de clipping y transformación tipo <em>on-stage</em>, y algunas opciones de publicación que para incluir soporte a navegadores web antiguos así como código optimizado.</p>
<p>Así que no esperes más para <a href="http://labs.adobe.com/technologies/edge/">descargar esta última versión</a> y comenzar a experimentar con una herramienta que promete bastante.</p>
<img src="http://feeds.feedburner.com/~r/activmx/~4/zT7SL3fl0Rw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://activ.com.mx/adobe-edge-preview-5-disponible-en-labs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://activ.com.mx/adobe-edge-preview-5-disponible-en-labs/</feedburner:origLink></item>
		<item>
		<title>Adobe Shadow inspección web para iOS y Android</title>
		<link>http://feedproxy.google.com/~r/activmx/~3/48pmE4xDEwk/</link>
		<comments>http://activ.com.mx/adobe-shadow-inspeccion-web-para-ios-y-android/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 17:26:46 +0000</pubDate>
		<dc:creator>activ</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[herramientas]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://activ.com.mx/?p=4499</guid>
		<description><![CDATA[El día de hoy se anunció en Adobe Labs la disponibilidad de Shadow una herramienta para inspección y previsualización enfocada a desarrolladores web que busquen hacer más fácil la personalización de sitios web para dispositivos móviles. Se busca que Shadow se actualice de forma regular para estar a la par de los estándares web, actualizaciones [...]]]></description>
			<content:encoded><![CDATA[<p>El día de hoy se anunció en Adobe Labs la disponibilidad de <a href="http://labs.adobe.com/downloads/shadow.html">Shadow</a> una herramienta para inspección y previsualización enfocada a desarrolladores web que busquen hacer más fácil la personalización de sitios web para dispositivos móviles.</p>
<p style="text-align:center"><a href="http://labs.adobe.com/technologies/shadow/"><img src="http://activ.com.mx/wp-content/uploads/2012/03/shadow_128x128.gif" alt="Adobe Shadow" title="Adobe Shadow" width="128" height="128" class="aligncenter size-full wp-image-4500" /></a></p>
<p>Se busca que <a href="http://labs.adobe.com/downloads/shadow.html">Shadow</a> se actualice de forma regular para estar a la par de los estándares web, actualizaciones de navegadores web y nuevos dispositivos móviles al mismo tiempo que irán incorporando características de la retroalimentación que reciban de los usuarios.</p>
<img src="http://feeds.feedburner.com/~r/activmx/~4/48pmE4xDEwk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://activ.com.mx/adobe-shadow-inspeccion-web-para-ios-y-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://activ.com.mx/adobe-shadow-inspeccion-web-para-ios-y-android/</feedburner:origLink></item>
		<item>
		<title>CreateJS para exportar HTML5 desde Flash Professional</title>
		<link>http://feedproxy.google.com/~r/activmx/~3/9DTRLXu6Nqs/</link>
		<comments>http://activ.com.mx/createjs-para-exportar-html5-desde-flash-professional/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 00:11:22 +0000</pubDate>
		<dc:creator>activ</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[createjs]]></category>
		<category><![CDATA[fitc]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://activ.com.mx/?p=4486</guid>
		<description><![CDATA[Adobe dio una pequeña demostración de una herramienta que permite exportar a HTML5 desde Flash Professional llamada CreateJS. En el marco del FITC Amsterdam durante el keynote de Mike Chambers @mesh se permitió ver parte del enfoque de esta tecnología llamada CreateJS que resulta de una colaboración entre el equipo de Grant Skinner con el [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe dio una pequeña demostración de una herramienta que permite exportar a <a href="activ.com.mx/cursos/web/html5">HTML5</a> desde <a href="http://activ.com.mx/cursos/interactive/flash-cs5/">Flash Professional</a> llamada <strong>CreateJS</strong>. En el marco del FITC Amsterdam durante el keynote de Mike Chambers <a href="https://twitter.com/#!/mesh">@mesh</a> se permitió ver parte del enfoque de esta tecnología llamada CreateJS que resulta de una colaboración entre el equipo de <a href="http://gskinner.com/">Grant Skinner</a> con el equipo de Flash de Adobe.</p>
<p style="text-align:center"><iframe title="AdobeTV Video Player" width="390" height="226" src="http://tv.adobe.com/embed/877/12233/" frameborder="0" allowfullscreen scrolling="no"></iframe></p>
<p>El Toolkit de <strong>CreateJS</strong> para Flash Professional permitirá a los diseñadores llevar sus gráficos y animaciones a un mundo de browsers que soportan HTML5 (<em>Chrome, Safari, Firefox, etc.</em>) mediante el uso de una herramienta enfocada a ese trabajo como es Flash. Los elementos se exportan de una forma elegante y el código resultante de dicha conversión en Javascript generado mediante CreateJS, un framework de código abierto que <em>seguramente dará mucho de que hablar próximamente</em> ya que incluye librerías para dar soporte a gráficos, animación, sonido y precargas.</p>
<img src="http://feeds.feedburner.com/~r/activmx/~4/9DTRLXu6Nqs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://activ.com.mx/createjs-para-exportar-html5-desde-flash-professional/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://activ.com.mx/createjs-para-exportar-html5-desde-flash-professional/</feedburner:origLink></item>
		<item>
		<title>Efectos Especiales con CSS</title>
		<link>http://feedproxy.google.com/~r/activmx/~3/k7d3S2Leh14/</link>
		<comments>http://activ.com.mx/efectos-especiales-con-css/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 17:28:39 +0000</pubDate>
		<dc:creator>juandediosleon</dc:creator>
				<category><![CDATA[Dreamweaver]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://activ.com.mx/?p=4434</guid>
		<description><![CDATA[Este artículo describe que son los shaders CSS y como funcionan incluyendo ejemplos en código. Incluso cubre como usar los shaders para crear efectos personalizados y como escribir tus propios shaders. Unos cuantos avisos: Este trabajo esta en progreso. Mientras discutimos con lo ancho de la comunidad, haremos algunos cambios. La sintaxis usada en este [...]]]></description>
			<content:encoded><![CDATA[<p>Este artículo describe que son los shaders CSS y como funcionan incluyendo ejemplos en código. Incluso cubre como usar los shaders para crear efectos personalizados y como escribir tus propios shaders.</p>
<p>Unos cuantos avisos: Este trabajo esta en progreso. Mientras discutimos con lo ancho de la comunidad, haremos algunos cambios. La sintaxis usada en este artículo, refleja la sintaxis propuesta para los shaders CSS, sin embargo, puede evolucionar mientras continua la discusión entre la W3C FX Task Force y el ancho de la comunidad. Acorde a una práctica común, todas las nuevas propiedades propuestas tendrán el prefijo -webkit- en nuestro prototipo WebKit. A favor de la simplicidad, he omitido este prefijo en el resto del artículo.</p>
<p>Efectos más sofisticados como relieves mostrado en la Figura 1, serán posibles.</p>
<p style="text-align: center"><img class="aligncenter size-full wp-image-4467" src="http://activ.com.mx/wp-content/uploads/2012/02/fig_016.jpeg" alt="" width="380" height="257" /></p>
<p>Figura 1. Filter Effects aplicados a contenido SVG, tomado del sitio svg-wow.org</p>
<p>Los avances en HTML5 y CSS (por ejemplo: transiciones, animaciones, transformaciones, sombras en textos y cajas, degradados, SVG )han mejorado la interactividad y riqueza del HTML. Los <a title="Filtros SVG" href="http://www.w3.org/TR/SVG/filters.html" target="_blank">filtros SVG</a>, ahora son Filter Effects 1.0 disponibles en CSS y HTML, adicionalmente a SVG, los cuales traeran efectos como escala de grises, tono sepia, o hue-rotate a todo contenido web.<br />
<span id="more-4434"></span><br />
La <a title="Propuesta de Adobe CSS" href="https://dvcs.w3.org/hg/FXTF/raw-file/tip/custom/index.html" target="_blank">propuesta de Adobe CSS</a> shaders fue traída por la W3C FX task force. Los shaders CSS definen el mecanismo de extensión de un filtro y proveen fácilmente efectos visuales animados a cualquier contenido HTML5. Trabajan particularmente bien con animaciones CSS y transiciones CSS.</p>
<p>Los siguientes videos muestran ejemplos de shaders CSS en acción sobre contenido HTML.</p>
<p><a title="Demo Flipbook CSS shaders" href="http://www.adobe.com/devnet/html5/articles/css-shaders.html#articlecontentAdobe_neroliplayer_split_articlecontentAdobe_neroliplayer" target="_blank">Demo Flipbook CSS shaders</a></p>
<p><a title="Desdoblamiento de Mapa CSS shaders" href="http://www.adobe.com/devnet/html5/articles/css-shaders.html#articlecontentAdobe_neroliplayer_0_split_articlecontentAdobe_neroliplayer_0" target="_blank">Desdoblamiento de Mapa CSS shaders</a></p>
<p><a title="Demo Twitter Fedd CSS shaders" href="http://www.adobe.com/devnet/html5/articles/css-shaders.html#articlecontentAdobe_neroliplayer_1_split_articlecontentAdobe_neroliplayer_1" target="_blank">Demo Twitter Feed CSS shaders</a></p>
<h2>Filter Effects 1.0</h2>
<p>Para entender los shaders CSS, es necesario tener un entendimiento básico de efectos de filtro predeterminados. El siguiente demo muestra algunos ejemplos simples de efectos de filtros: El usuario obtiene una una disolvencia de color a una simple escala de grises en el estado hover.</p>
<p><a title="Demo Escala de Grises" href="http://www.adobe.com/devnet/html5/articles/css-shaders.html#articlecontentAdobe_neroliplayer_2_split_articlecontentAdobe_neroliplayer_2" target="_blank">Demo Escala de Grises</a></p>
<p>Este es el código para el efecto escala de grises.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;html<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;head<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
  ... 
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;style<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  #shaded {
  filter: grayscale(1);
  transition: filter ease-in 0.3s;
  }
#shaded:hover {
  filter: grayscale(0);
  }
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/style<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/head<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;body<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;shaded&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;multi-col&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h2<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>The Creative Web<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h2<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Lorem ipsum dolor ... <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;img</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;png-img&quot;</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;planes.jpg&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Mauris at ... <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;img</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;svg-img&quot;</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;picture.svg&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Morbi congue ....<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;img</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;css3-img&quot;</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;html5_css3_styling.svg&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/body<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/html<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>El uso de efectos de filtro es muy directo: La propiedad filter, define el filtro (o cadena de filtros) que serán aplicados. Como podrás ver, también es muy fácil de integrar con transiciones CSS. La propiedad filter puede ser animada.</p>
<p>En el ejemplo la función grasycale () es animada gradualmente para disolverse por el parametro amount, en la función del filtro, es animado de 1 (escala de grises al 100%) a 0 (0% escala de grises) cuando el usuario se encuentra sobre el objeto.</p>
<p>El borrador de la especificación W3C Filter Effects 1.0 define dos cosas:</p>
<p>Una sintaxis general para definir un filtro al ensamblar filtros primitivos en un gráfico.</p>
<p>Una propiedad CSS filter, que puede hacer referencia a una definición de filtro o usar más funciones de filtro.</p>
<p>La propiedad filter puede usar un número predeterminado de funciones: blur, drop-shadow, gamma, grayscale, hue-rotate, invert, opacity, saturate, sepia y sharpen. La Figura 2 ejemplifica cada una:</p>
<ol>
<li>blur (5,5)</li>
<li>drop-shadow(10,5,5)</li>
<li>hue-rotate(328deg)</li>
<li>saturate(5)</li>
<li>invert(1)</li>
<li>grayscale(1)</li>
<li>opacity(0.5)</li>
<li>gamma(1.1,3.6,0)</li>
<li>sepia(0.5)</li>
</ol>
<p style="text-align: center"><img class="aligncenter size-full wp-image-4468" src="http://activ.com.mx/wp-content/uploads/2012/02/fig_022.jpeg" alt="" width="380" height="232" /></p>
<p>Figura 2. Funciones de Efectos de Filtro</p>
<p>Lo mejor de los Efectos de Filtro, es la simplicidad de la sintaxis y la integración con animaciones CSS y transiciones CSS.</p>
<p>Sin embargo, algunas cosas son más difíciles. Por ejemplo, ¿qué pasa si deseas convertir sólo una porción del objeto a escala de grises? ¿qué pasa si quieres realizar la transición de otra manera, por ejemplo, como un efecto wipe sobre el elemento? ó ¿qué pasa si quieres un Efecto de Filtro que no esta entre el set predeterminado de funciones de filtro el el set de filtros primitivos predeterminados? Aquí es donde los shaders CSS entran.</p>
<p>La propuesta de shaders CSS, ofrece agregar un custom() a la función de filtro de Efectos de Filtro que integran filtros predeterminados, animaciones CSS y transiciones CSS. Los shaders CSS, proveen la flexibilidad y expresividad necesarias para crear efectos de manera arbitraria, desde algo simple hasta lo más complejo.</p>
<h2>Efectos de Filtro personalizados con shaders CSS</h2>
<p>Comenzare con un ejemplo. El efecto mostrado arriba (disolvencia de escala de grises a color)es bueno, pero se puede mejorar. El siguiente video muestra un efecto más sofisticado: mientras ocurre la transición de escala de grises a color, el contenido se deforma por un momento y simultáneamente, ocurre un color-swipe sobre el contenido de abajo hacia arriba.</p>
<p><a title="Demo de shaders CSS" href="http://www.adobe.com/devnet/html5/articles/css-shaders.html#articlecontentAdobe_neroliplayer_3_split_articlecontentAdobe_neroliplayer_3" target="_blank">Demo de shaders CSS.</a></p>
<p>Este demo utiliza un vertex shader para el efecto de distorción y un pixel shader para el efecto swipe de color. Ambos están referenciados por la función filter custom() que también lleva los parámetros para los shaders, así como algunas opciones de configuración. Este es el código:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"> <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;html<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;head<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
  ... 
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;style<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  #shaded {
  filter: custom(url('wobble.vs')        /* wobble effect */
  url('color-swipe.fs'), /* swipe effect  */
  40 40,                 /* mesh lines/cols */
  amplitude 60,          /* wobble strength */
  amount 0.0);           /* effect amount */
  transition: filter ease-in-out 2s;
  ...;
  }
#shaded:hover {
  filter: custom(url('wobble.vs') 
  url('color-swipe.fs'), 
  40 40, 
  amplitude 60, 
  amount 1.0);
  }
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/style<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/head<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;body<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;shaded&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;multi-col&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h2<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>The Creative Web<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h2<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #808080; font-style: italic;">&lt;!-- Same as previous example --&gt;</span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/body<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/html<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Pueden ver la similitud del código con el ejemplo anterior en escala de grises. Para otros Efectos de Filtro, usamos la propiedad filter para definir el efecto. La diferencia radica en lugar de usar una de las funciones predeterminadas de filter, usamos la función custom() y referenciamos los dos shaders. Las especificidades de los shaders serán discutidas más adelante. Por el momento, es importante entender que cada shader, provee un efecto específico y expone parámetros que pueden ser animados vía CSS.</p>
<p>En este ejemplo, el filtro personalizado utiliza un wobble.vs vertex shader (para la distorción) y un fragmento del shader color-swipe.fs para el barrido de escala de grises a color.</p>
<h2>¿Qué son los shaders?</h2>
<p>Los shaders son comunes en gráficos 3D. Son regularmente, pequeños programas que procesan los vértices de geometría 3D (vertex shaders) y el color de los pixeles (fragment shaders).</p>
<p>Por ejemplo, un vertex shader puede crear un efecto de una bandera ondeandose sobre una superficie, ó un efecto wobble (distorción) como el ejemplo anterior. Un fragment shader (también llamado pixel shader) puede computar de manera arbitraria el color de un pixel. Los shaders CSS utilizan el poder de los programas acelerados por hardware.</p>
<h2>¿Cómo funcionan los shaders CSS?</h2>
<p>Con los shaders CSS, puedes convertir tus objetos SVG o HTML en una malla con vértices. Esto se ilustra en la Figura 3, paso por paso:  1. La malla se procesa por un vertex shader(paso 2) lo que hace posible cualquier tipo de distorsión en un espacio 3D. En el paso 3, la malla se renderea o rasteriza en pixeles con los colores del fragment shader.</p>
<div style="text-align: center"></div>
<p style="text-align: center"><img class="aligncenter size-full wp-image-4469" src="http://activ.com.mx/wp-content/uploads/2012/02/fig_032.jpeg" alt="" width="380" height="148" /></p>
<p>Figura 3. Modelo del proceso de los shaders CSS</p>
<p>Como autores, pueden controlar la granularidad de la malla y pueden especificar parámetros que controlen los shaders.</p>
<p>En el ejemplo, el elemento con el id shaded tiene sus propiedades filter con los siguientes valores:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">custom<span style="color: #00AA00;">&#40;</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'wobble.vs'</span><span style="color: #00AA00;">&#41;</span>        <span style="color: #808080; font-style: italic;">/* wobble effect */</span>
<span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'color-swipe.fs'</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">,</span> <span style="color: #808080; font-style: italic;">/* swipe effect  */</span>
<span style="color: #cc66cc;">40</span> <span style="color: #cc66cc;">40</span><span style="color: #00AA00;">,</span>                 <span style="color: #808080; font-style: italic;">/* mesh lines/cols */</span>
amplitude <span style="color: #cc66cc;">60</span><span style="color: #00AA00;">,</span>          <span style="color: #808080; font-style: italic;">/* wobble strength */</span>
amount <span style="color: #cc66cc;">0.0</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>           <span style="color: #808080; font-style: italic;">/* effect amount */</span></pre></div></div>

<p>Los shaders wobble.vs y color-swipe.fs fueron programados para que, cuando el parámetro amount sea 0, no hay wobble y el pixel shader aplica de manera uniforme la escala de grises al elemento.</p>
<p>Cuando el usuario esta sobre el elemento con el shader, la propiedad filter es:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">custom<span style="color: #00AA00;">&#40;</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'wobble.vs'</span><span style="color: #00AA00;">&#41;</span> 
<span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">'color-swipe.fs'</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">,</span> 
<span style="color: #cc66cc;">40</span> <span style="color: #cc66cc;">40</span><span style="color: #00AA00;">,</span> 
amplitude <span style="color: #cc66cc;">60</span><span style="color: #00AA00;">,</span>
amount <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">&#41;</span></pre></div></div>

<p>Recuerden que el significado del parámetro es un shader específico. En este ejemplo, el autor del shader ha diseñado que 0.5 sea el valor máximo del efecto wobble y regrese a un valor fijo en 1.0. El shader color-swipe utiliza valores entre 0.0 y 1.0 esto genera un barrido de color de abajo hacia arriba con un efecto shine. El efecto shine esta hecho agregando blanco al valor de los pixeles ubicados en la división horizontal del swipe. Ver el video anterior es la mejor manera de entender el efecto.</p>
<p>Así como el Efecto de Filtro de escala de grises anterior, la integración con transiciones CSS facilita el ajuste del efecto en movimiento y se hace de la misma forma, usando la propiedad transition.</p>
<h2>Escribiendo Shaders</h2>
<p>En la práctica, parece algo común que la gente usará efectos personalizados a través de shaders que expondrán facilmente parámetros configurados, como en el ejemplo anterior.</p>
<p>Escribir shaders, mientras se obtiene alguna práctica no es tan difícil. Incluso, y esto es un secreto a voces, es muy divertido generarlos</p>
<p>Los shaders se escriben en el lenguaje Shading OpenGL ES, el mismo lenguaje usado por shaders WebGL. Aquí esta el ejemplo del vertex shader que genera el efecto wobble expuesto anteriormente</p>
<p>Para aquellos que no estén familiarizados con shaders, las siguientes definiciones les ayudarán a leer los ejemplos</p>
<ul>
<li><strong>Vertex:</strong> Es una coordenada en la geometría procesada por el shader.</li>
<li><strong>Texture:</strong> Imagen de tipo raster. Los shaders CSS, convierten el render de un elemento en textura y es procesada por el vértice y los fragment shaders.</li>
<li><strong>Attributes:</strong> Parámetros por vértice, asignados al vertex shader.</li>
<li><strong>Projection Matrix:</strong> Matriz que convierte las coordenadas del rango normalizado de los vértices ([-.05,+.05] sobre cada eje) al valor actual del sistema de coordenadas de la ventana actual. Se usa generalmente en vertex shader.</li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">precision mediump <span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* required */</span>
// <span style="color: #00AA00;">=================</span> Per-vertex attributes <span style="color: #00AA00;">===================</span> //
  attribute vec3 a_position<span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* The vertex's coordinates */</span>
  attribute vec2 a_texCoord<span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* The vertext's texture coordinate */</span>
// Uniform parameters are available to shaders and have the 
  // same value for all vertex or pixel.
  uniform mat4 u_projectionMatrix<span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* The projection matrix */</span>
// <span style="color: #00AA00;">================</span> Shader parameters <span style="color: #00AA00;">========================</span> //
  uniform <span style="color: #000000; font-weight: bold;">float</span> amplitude<span style="color: #00AA00;">;</span>
  uniform <span style="color: #000000; font-weight: bold;">float</span> amount<span style="color: #00AA00;">;</span>
  // <span style="color: #00AA00;">==============</span> End shader parameters <span style="color: #00AA00;">======================</span> //
&nbsp;
  const <span style="color: #000000; font-weight: bold;">float</span> rotate <span style="color: #00AA00;">=</span> <span style="color: #cc66cc;">20.0</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* could be made a uniform   */</span>
  <span style="color: #808080; font-style: italic;">/* to allow control form CSS */</span>
  const <span style="color: #000000; font-weight: bold;">float</span> PI <span style="color: #00AA00;">=</span> <span style="color: #cc66cc;">3.14</span>...<span style="color: #00AA00;">;</span>
  varying vec2 v_texCoord<span style="color: #00AA00;">;</span>
&nbsp;
  mat4 rotateX<span style="color: #00AA00;">&#40;</span><span style="color: #000000; font-weight: bold;">float</span> f<span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">&#123;</span>...<span style="color: #00AA00;">&#125;</span>
  mat4 rotateY<span style="color: #00AA00;">&#40;</span><span style="color: #000000; font-weight: bold;">float</span> f<span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">&#123;</span>...<span style="color: #00AA00;">&#125;</span>
  mat4 rotateZ<span style="color: #00AA00;">&#40;</span><span style="color: #000000; font-weight: bold;">float</span> f<span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">&#123;</span>...<span style="color: #00AA00;">&#125;</span>
  void main<span style="color: #00AA00;">&#40;</span><span style="color: #00AA00;">&#41;</span>
  <span style="color: #00AA00;">&#123;</span> 
  v_texCoord <span style="color: #00AA00;">=</span> a_texCoord.xy<span style="color: #00AA00;">;</span>
  vec4 pos <span style="color: #00AA00;">=</span> vec4<span style="color: #00AA00;">&#40;</span>a_position<span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">1.0</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">float</span> r <span style="color: #00AA00;">=</span> <span style="color: #cc66cc;">1.0</span> - abs<span style="color: #00AA00;">&#40;</span><span style="color: #00AA00;">&#40;</span>amount - <span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">&#41;</span> / <span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">float</span> a <span style="color: #00AA00;">=</span> r <span style="color: #00AA00;">*</span> rotate <span style="color: #00AA00;">*</span> PI / <span style="color: #cc66cc;">180.0</span><span style="color: #00AA00;">;</span>
  mat4 rotX <span style="color: #00AA00;">=</span> rotateX<span style="color: #00AA00;">&#40;</span>a<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
  mat4 rotY <span style="color: #00AA00;">=</span> rotateY<span style="color: #00AA00;">&#40;</span>a / <span style="color: #cc66cc;">4.0</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
  mat4 rotZ <span style="color: #00AA00;">=</span> rotateZ<span style="color: #00AA00;">&#40;</span>a / <span style="color: #cc66cc;">8.0</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">float</span> dx <span style="color: #00AA00;">=</span> <span style="color: #cc66cc;">0.01</span> <span style="color: #00AA00;">*</span> cos<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">3.0</span> <span style="color: #00AA00;">*</span> PI <span style="color: #00AA00;">*</span> <span style="color: #00AA00;">&#40;</span>pos<span style="color: #6666ff;">.x</span> <span style="color: #00AA00;">+</span> amount<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">*</span> r<span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">float</span> dy <span style="color: #00AA00;">=</span> <span style="color: #cc66cc;">0.01</span> <span style="color: #00AA00;">*</span> cos<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">3.0</span> <span style="color: #00AA00;">*</span> PI <span style="color: #00AA00;">*</span> <span style="color: #00AA00;">&#40;</span>pos<span style="color: #6666ff;">.y</span> <span style="color: #00AA00;">+</span> amount<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">*</span> r<span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">float</span> dz <span style="color: #00AA00;">=</span> <span style="color: #cc66cc;">0.1</span> <span style="color: #00AA00;">*</span> cos<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">3.0</span> <span style="color: #00AA00;">*</span> PI <span style="color: #00AA00;">*</span> <span style="color: #00AA00;">&#40;</span>pos<span style="color: #6666ff;">.x</span> <span style="color: #00AA00;">+</span> pos<span style="color: #6666ff;">.y</span> <span style="color: #00AA00;">+</span> amount<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">*</span> r<span style="color: #00AA00;">;</span>
  pos<span style="color: #6666ff;">.x</span> <span style="color: #00AA00;">+=</span> dx<span style="color: #00AA00;">;</span>
  pos<span style="color: #6666ff;">.y</span> <span style="color: #00AA00;">+=</span> dy<span style="color: #00AA00;">;</span>
  pos<span style="color: #6666ff;">.z</span> <span style="color: #00AA00;">+=</span> dz<span style="color: #00AA00;">;</span>
&nbsp;
  gl_Position <span style="color: #00AA00;">=</span> u_projectionMatrix <span style="color: #00AA00;">*</span> rotZ <span style="color: #00AA00;">*</span> rotY <span style="color: #00AA00;">*</span> rotX <span style="color: #00AA00;">*</span> pos<span style="color: #00AA00;">;</span>
  <span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Y este el shader color-swipe del ejemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">precision mediump <span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* required */</span>
// The <span style="color: #ff0000;">'original'</span> <span style="color: #000000; font-weight: bold;">content</span> rendering in a texture.
  uniform sampler2D s_texture<span style="color: #00AA00;">;</span>
// <span style="color: #00AA00;">================</span> Shader parameters <span style="color: #00AA00;">========================</span> //
  uniform <span style="color: #000000; font-weight: bold;">float</span> amplitude<span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* unused in this fragment shader */</span>
  uniform <span style="color: #000000; font-weight: bold;">float</span> amount<span style="color: #00AA00;">;</span>
  // <span style="color: #00AA00;">==============</span> End shader parameters <span style="color: #00AA00;">======================</span> //
varying vec2 v_texCoord<span style="color: #00AA00;">;</span>
// The desired <span style="color: #ff0000;">'color swipe'</span> color.
  const vec4 swipeColor <span style="color: #00AA00;">=</span> vec4<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">1.0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">1.0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">1.0</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">1.0</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> 
vec4 grayscale<span style="color: #00AA00;">&#40;</span>vec4 <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">&#123;</span>
  ...<span style="color: #00AA00;">;</span> 
  return <span style="color: #993333;">gray</span><span style="color: #00AA00;">;</span>
  <span style="color: #00AA00;">&#125;</span>
void main<span style="color: #00AA00;">&#40;</span><span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">&#123;</span>
  vec4 <span style="color: #000000; font-weight: bold;">color</span> <span style="color: #00AA00;">=</span> texture2D<span style="color: #00AA00;">&#40;</span>s_texture<span style="color: #00AA00;">,</span> v_texCoord<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
  vec4 <span style="color: #993333;">gray</span> <span style="color: #00AA00;">=</span> grayscale<span style="color: #00AA00;">&#40;</span><span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
  vec2 pos <span style="color: #00AA00;">=</span> v_texCoord<span style="color: #00AA00;">;</span>
 <span style="color: #000000; font-weight: bold;">float</span> p <span style="color: #00AA00;">=</span> <span style="color: #cc66cc;">1.0</span> - pos.y<span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* progress from bottom to top */</span>
&nbsp;
  vec4 sc <span style="color: #00AA00;">=</span> swipeColor <span style="color: #00AA00;">*</span> color.a<span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">float</span> threshold <span style="color: #00AA00;">=</span> amount <span style="color: #00AA00;">*</span> <span style="color: #cc66cc;">1.2</span><span style="color: #00AA00;">;</span>
  if <span style="color: #00AA00;">&#40;</span>p &amp;lt<span style="color: #00AA00;">;</span> threshold<span style="color: #00AA00;">&#41;</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">float</span> a <span style="color: #00AA00;">=</span> min<span style="color: #00AA00;">&#40;</span>abs<span style="color: #00AA00;">&#40;</span>threshold - p<span style="color: #00AA00;">&#41;</span> / <span style="color: #cc66cc;">0.2</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">1.0</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> 
  gl_FragColor <span style="color: #00AA00;">=</span> <span style="color: #993333;">mix</span><span style="color: #00AA00;">&#40;</span>sc<span style="color: #00AA00;">,</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">,</span> a<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
  <span style="color: #00AA00;">&#125;</span> else <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">float</span> a <span style="color: #00AA00;">=</span> min<span style="color: #00AA00;">&#40;</span>abs<span style="color: #00AA00;">&#40;</span>threshold - p<span style="color: #00AA00;">&#41;</span> / <span style="color: #cc66cc;">0.005</span><span style="color: #00AA00;">,</span> <span style="color: #cc66cc;">1.0</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
  gl_FragColor <span style="color: #00AA00;">=</span> <span style="color: #993333;">mix</span><span style="color: #00AA00;">&#40;</span>sc<span style="color: #00AA00;">,</span> <span style="color: #993333;">gray</span><span style="color: #00AA00;">,</span> a<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
  <span style="color: #00AA00;">&#125;</span>
  <span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Existen muy buenos recursos en la Web, para aprender como escribir shaders o algunas bibliotecas que contienen excelentes sets de shaders (hay algunas referencias al final).</p>
<p>Lenguajes para generar shaders como el lenguaje Shading OpenGL ES, están diseñados para programar efectos visuales de manera fácil. Los shaders CSS ofrecen una forma de amarrar expresividad en la sintaxis CSS y facilitar el uso y animación de estos efectos.</p>
<h2>Comparación con WebGL</h2>
<p>WebGL, provee una implementación a los elementos canvas en HTML5. WebGL ofrece un contexto 3D para los canvas y, dentro de este contexto, los pixel shaders están disponibles (también los vertex shaders y todas las características 3D que ofrece WebGL). WebGL opera dentro de los límites  del elemento canvas para el cual provee un contexto.</p>
<p>En contraste, los shaders CSS, proveen una manera arbitraria de aplicar shaders a contenido Web.</p>
<h2>A dónde ir a partir de aqui</h2>
<p>Adobe esta llevando los shaders CSS a la W3C como parte del FX Task Force y nuestro objetivo es empezar a contribuir para el código de WebKit, en cuanto el trabajo sea aceptado por la W3C los desarrolladores web podrán empezar a disfrutar de este nuevo y poderoso set de Efectos de Filtro.</p>
<p>Mientras tanto, pueden ver los siguientes recursos para aprender más de animaciones CSS y efectos:</p>
<ul>
<li><a title="FX Task Force" href="http://www.w3.org/Graphics/fx/" target="_blank">FX Task Force</a></li>
<li><a title="Animaciones CSS" href="http://www.w3.org/TR/css3-animations/" target="_blank">Animaciones CSS</a></li>
<li><a title="Transiciones CSS" href="http://www.w3.org/TR/css3-transitions/" target="_blank">Transiciones CSS</a></li>
<li><a title="Filter Effects 1.0" href="https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html" target="_blank">Filter Effects 1.0</a></li>
<li><a title="CSS 2D Transforms" href="http://www.w3.org/TR/css3-2d-transforms/" target="_blank">CSS 2D Transforms</a></li>
<li><a title="CSS 3D Transforms" href="http://www.w3.org/TR/css3-3d-transforms/" target="_blank">CSS 3D Transforms</a></li>
<li><a title="OpenGL EL 2.0" href="http://www.khronos.org/opengles/2_X/" target="_blank">OpenGL EL 2.0</a></li>
<li><a title="OpenGL ES Shading Language" href="http://www.khronos.org/files/opengles_shading_language.pdf" target="_blank">OpenGL ES Shading Laguage</a></li>
<li><a title="WebGL" href="http://www.khronos.org/registry/webgl/specs/latest/" target="_blank">WebGL</a></li>
<li><a title="WebGL Wiki" href="http://www.khronos.org/webgl/wiki/Main_Page" target="_blank">WebGL Wiki</a></li>
<li><a title="GLFX.js" href="http://evanw.github.com/glfx.js/" target="_blank">GLFX.js</a></li>
</ul>
<p>La versión original de este artículo pueden encontrarla <a href="http://www.adobe.com/devnet/html5/articles/css-shaders.html">Adobe Devnet</a> traducido aquí bajo licencia Creative Commons por Juan de Dios León, cualquier comentario pueden hacerlo en este mismo post o en <a href="https://twitter.com/#!/juandediosleon">@juandediosleon</a></p>
<img src="http://feeds.feedburner.com/~r/activmx/~4/k7d3S2Leh14" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://activ.com.mx/efectos-especiales-con-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://activ.com.mx/efectos-especiales-con-css/</feedburner:origLink></item>
		<item>
		<title>Starling Framework la tecnología detrás de Angry Birds para Facebook</title>
		<link>http://feedproxy.google.com/~r/activmx/~3/drQXgnqs3VI/</link>
		<comments>http://activ.com.mx/starling-framework-la-tecnologia-detras-de-angry-birds-para-facebook/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 23:03:08 +0000</pubDate>
		<dc:creator>activ</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[juegos]]></category>

		<guid isPermaLink="false">http://activ.com.mx/?p=4419</guid>
		<description><![CDATA[Esta semana se anunció la versión del popular juego de Angry Birds para Facebook mediante el uso de Flash Player 11 con soporte 3D acelerado por el GPU mediante el API de Stage3D. Pero lo que sucede cuando hablamos de un juego 2D estilo Angry Birds es que por defecto este tipo de aplicaciones y/o [...]]]></description>
			<content:encoded><![CDATA[<p>Esta semana se anunció la versión del popular juego de <a href="https://apps.facebook.com/angrybirds/">Angry Birds para Facebook</a> mediante el uso de <a href="http://www.madeinflex.com/2011/10/05/novedades-en-flash-player-11-y-air-3/">Flash Player 11</a> con soporte 3D acelerado por el GPU mediante el API de Stage3D.</p>
<p style="text-align:center"><a href="http://starling-framework.org/"><img src="http://activ.com.mx/wp-content/uploads/2012/02/angry_birds1.jpg" alt="Starling Framework Angry Birds" title="Starling Framework Angry Birds" width="370" height="204" class="aligncenter size-full wp-image-4420" /></a></p>
<p>Pero lo que sucede cuando hablamos de un juego 2D estilo Angry Birds es que por defecto este tipo de aplicaciones y/o juegos no se benefician directamente del API de Stage3D, ese es el propósito de una tecnología como <a href="http://starling-framework.org/">Starling Framework</a>.<br />
<span id="more-4419"></span></p>
<p><a href="http://starling-framework.org/">Starling Framework</a> es una librería escrita totalmente en <a href="http://activ.com.mx/cursos/interactive/actionscript/">ActionScript 3</a> que emula la arquitectura del display list de Flash pero todo el contenido es rendereado directamente por el GPU con el respectivo incremento en desempeño de nuestras aplicaciones.</p>
<p>El API es bastante similar a la usada de forma nativa por lo que la curva de aprendizaje será mínima, solo hay que intercambiar las clases de Flash por sus equivalentes dentro de Starling para comenzar a gozar de los beneficios, además de que Starling soporta algunas nuevas características tales como <em>fuentes bitmap, sprite sheets y efectos de partículas</em>.</p>
<p>Sin lugar a dudas una interesante tecnología que valdrá la pena considerar como lo hizo el equipo de <a href="http://www.rovio.com/">Rovio</a> (responsables del desarrollo de Angry Birds) y que además es de código abierto.</p>
<img src="http://feeds.feedburner.com/~r/activmx/~4/drQXgnqs3VI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://activ.com.mx/starling-framework-la-tecnologia-detras-de-angry-birds-para-facebook/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://activ.com.mx/starling-framework-la-tecnologia-detras-de-angry-birds-para-facebook/</feedburner:origLink></item>
		<item>
		<title>Prototipos para iPhone con el uso de Fireworks</title>
		<link>http://feedproxy.google.com/~r/activmx/~3/UrIz9n2fHhg/</link>
		<comments>http://activ.com.mx/prototipos-para-iphone-con-el-uso-de-fireworks/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 02:11:59 +0000</pubDate>
		<dc:creator>juandediosleon</dc:creator>
				<category><![CDATA[Activ]]></category>
		<category><![CDATA[Articulos]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[fireworks]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://activ.com.mx/?p=4374</guid>
		<description><![CDATA[La mejor forma de evaluar un diseño es verlo en dispositivo para el que fue hecho, mientras más rápido sea esto en el proceso, mejor. Para diseñar sitios web, es fácil: utilizas la función &#8220;preview in browser&#8221; en Fireworks para crear un prototipo cliqueable de las páginas que has diseñado. Pero cuando diseñas para iPhone, [...]]]></description>
			<content:encoded><![CDATA[<p>La mejor forma de evaluar un diseño es verlo en dispositivo para el que fue hecho, mientras más rápido sea esto en el proceso, mejor. Para diseñar sitios web, es fácil: utilizas la función &#8220;preview in browser&#8221; en Fireworks para crear un prototipo cliqueable de las páginas que has diseñado. Pero cuando diseñas para iPhone, es un poco más difícil. </p>
<p style="text-align:center"><img src="http://activ.com.mx/wp-content/uploads/2012/02/iphone_thumbnail.jpg" alt="Prototipos de iPhone con Fireworks" title="Prototipos de iPhone con Fireworks" width="380" height="194" class="aligncenter size-full wp-image-4406" /></p>
<p>Este tutorial muestra como usar un par de scripts para hacer que funcione tu prototipo de Fireworks para el iPhone. El método descrito en este tutorial es más útil para diseño de aplicaciones para iPhone que para el diseño web en móviles.<br />
<span id="more-4374"></span></p>
<h2>La idea detrás del método</h2>
<p>Seguramente has intentado abrir un prototipo HTML creado en Fireworks en tu iPhone. No se ve nada bien. Hay márgenes que no quieres, el zoom no se puede controlar, la carga entre páginas toma demasiado tiempo. Por supuesto, puedes pedirle a un desarrollador que te ayude, pero hay otra alternativa: ¡construir tu prototipo en Fireworks!</p>
<p>El método mostrado en este tutorial, combina Fireworks con un poco de jQuery y PHP, para darte no sólo un prototipo que puedas ver, sino interactuar directamente en tu iPhone como si fuera una aplicación real(ver figura 1).</p>
<div style="text-align: center"><img class="size-medium wp-image-4379" src="http://activ.com.mx/wp-content/uploads/2012/02/fig_013-300x188.jpg" alt="Figura 1. Concepto de como llevar tu prototipo de Fireworks a un iPhone." width="300" height="188" /></div>
<p>Figura 1. Concepto de como llevar tu prototipo de Fireworks a un iPhone.</p>
<p>Antes de que aprendas como ajustar tu prototipo de Fireworks, es importante entender los principios de este concepto, que puedes lograr y por que.</p>
<p>El utilizar esta técnica para construir tu prototipo de Fireworks para iPhone te da una serie de ventajas, para que los usuarios potenciales de tu aplicación obtengan la mejor previsualización de como va a funcionar. Al utilizar Fireworks, tu prototipo tiene los siguientes beneficios:</p>
<ul>
<li>Dar clic en las diferentes pantallas en la forma en la que normalmente lo harías con un mockup de Fireworks.</li>
<li>Hacer uso de la pantalla completa (sin los botones de Safari)</li>
<li>Exportar directamente de Fireworks sin la necesidad de cambiar CSS o HTML después.</li>
<li>Abrir la aplicación directamente en la pantalla principal del iPhone.</li>
<li>Desabilitar el zoom.</li>
<li>Enviar hipervínculos a cada iPhone sin ser un desarrollador oficial de iPhone.</li>
</ul>
<p>Por el otro lado, no quieres aprender técnicas avanzadas de programación o poner a tus usuarios complicaciones innecesarias para ver tu prototipo. Estos son algunos puntos dolorosos que este método previene:</p>
<ul>
<li>Aprender Objective-C o depender de alguien que si domine el lenguaje.</li>
<li>Hacer demasiados pasos antes de poder ver las pantallas en el dispositivo.</li>
<li>Esperar a que cargue cada pantalla cada vez que das clic en un botón.</li>
</ul>
<h3>Demostración del método</h3>
<p>La mejor manera de entender esta idea es viendo un pequeño demo.</p>
<ol>
<li>Asegurate de que tu iPhone esta en una red veloz (Wi-Fi o 3G).</li>
<li>Abre este link en Safari dentro de tu iPhone http://www.unitid.nl/iprototype/demo (generalmente mando los links a mi mail para abrirlos en mi iPhone)</li>
<li>Sigue las instrucciones.</li>
</ol>
<p>Este demo esta hecho con FIreworks, con la ayuda de PHP y <a title="jQuery" href="http://jquery.com/" target="_blank">jQuery</a>. jQuery es una biblioteca de JavaScript; <a title="PHP Tutorial" href="http://www.w3schools.com/PHP/" target="_blank">PHP</a> es un lenguaje para construir sitios dinámicos. Se intentó hacer esto con otras herramientas para hacer prototipos, pero ninguna fue tan fácil de usar.</p>
<p>Nota: Puedes aprender más de PHP en el artículo, Ajustando un ambiente de desarrollo PHP para Dreamweaver. Descubre más de jQuery en el artículo, <a title="JavaScript para diseñadores web" href="http://www.adobe.com/devnet/dreamweaver/articles/js_for_designers.html" target="_blank">JavaScript para diseñadores web.</a></p>
<h3>Como funciona</h3>
<p>¿Cómo puedes crear un prototipo como este? Esta es una vista general de los pasos necesarios. Explicare más a detalle después:<br />
¿Cómo puedes crear un prototipo como este? Esta es una vista general de los pasos necesarios. Explicare más a detalle después:</p>
<ol>
<li>Descarga el archivo .zip para este artículo, el cual contiene algunas carpetas con archivos PHP y jQuery.</li>
<li>Crea las pantallas en Fireworks como lo harías normalmente. Empieza con un área de trabajo de 320 x 480 y llama la primera página index (sin capitales, por favor).</li>
<li>Utiliza hotspots en lugar de slices para crear vínculos a las diferentes páginas.</li>
<li>Exporta el mokup a HTML y las imágenes como lo harías normalmente para probar el prototipo en un navegador.</li>
<li>Una vez satisfecho con la funcionalidad en tu navegador, exporta el archivo en el formato de la biblioteca de Dreamweaver (.lbi) a la carpeta Library.</li>
<li>Sube el set completo de archivos de tu prototipo a un servidor que pueda ejecutar PHP.</li>
<li>Con tu iPhone visita la página index de tu prototipo: http://www.yourwebsite.com/path_to_iprototype/iprototype</li>
</ol>
<h3>Pero, ¿cómo funciona realmente?</h3>
<p>Tras bambalinas, jQuery y PHP trabajan juntos para proveer una experiencia fluida. Aquí se muestra como (si no estas interesado, puedes brincar esta sección, Crear el .png en Fireworks):</p>
<ol>
<li>Cuando abres la URL del prototipo, jQuery verificará la altura de la pantalla y así sabrá si estas en un iPhone y si agregaste el vínculo al home screen.</li>
<li>Si no lo has hecho(si la altura de la pantalla es menor de 480 pixeles), manda una alerta para que agregues el vínculo al tu home screen.</li>
<li>Si entras al sitio desde tu home screen, la altura de tu ventana es de 480 pixeles, así que jQuery obtiene el contenido del mockup usando PHP.</li>
<li>Todos los archivos .lbi se cargan y son cambiados un poco por PHP para proveer las rutas adecuadas a las imágenes, remover tags innecesarias y cambiar los vínculos para que jQuery pueda trabajar con ellos. Incluso las etiquetas envuelven a las imágenes y el id del div se ajusta al nombre del archivo.</li>
<li>jQuery esconde todos los divs que encuentra en el HTML pero hace la página llamada index visible. Por eso necesitas esta página en tu archivo .png, de otra manera tu prototipo empezaría en blanco.</li>
<li>Dar clic al mapa de una imagen (que fue creado como un hotspot) muestra el div al cual esta vinculado el URL.</li>
</ol>
<p>Echale un vistazo al código fuente de los archivos para más detalles. El código contiene alguna documentación importante. Seguramente la mayoría de ustedes son diseñadores que no están muy interesados en el código, como yo.</p>
<h2>Ajustes a tu prototipo</h2>
<p>Para ajustar tu prototipo, tienes que descargar el archivo iprototype.zip generado para este artículo, crea un archivo PNG en Fireworks y exporta tus páginas como elementos de una biblioteca. No iré más a detalle en como usar Fireworks, pero resaltare algunos puntos importantes para que funcione el prototipo en un iPhone.</p>
<p>Si eres nuevo usando Fireworks, puedes encontrar más tutoriales de como usar páginas y hotspots en el Fireworks Developer Center. Por ejemplo, me viene a la mente <a title="Prototipos Interactivos con HTML CSS y JavaScript con Fireworks y Dreamweaver" href="http://www.adobe.com/devnet/fireworks/articles/rapid_interactive_prototyping.html" target="_blank">Prototipos interactivos con HTML, CSS y JavaScript con Fireworks y Dreamweaver CS4.</a></p>
<h3>Descarga los archivos</h3>
<p>Descarga el archivo ZIP y extrae su contenido en tu disco duro. Estos archivos los tienes que subir a un servidor, así que asegurate de encontrarlos en tu cliente FTP o ponlos directamente en el servidor. Esto es lo que necesitas saber sobre los archivos en la carpeta iprototype. (ver Figura 2).<br />
index.html: Archivo que abre el navegador. El archivo contiene algunas etiquetas meta, CSS, JavaScript y el call al archivo PHP.</p>
<ul>
<li><strong>Carpeta includes:</strong> Carpeta con algunos archivos necesarios para que funcione el prototipo.</li>
<li><strong>additional.css:</strong> Este archivo inserta CSS adicional al HTML por si abres el prototipo en un navegador convencional como Firefox o Internet Explorer.</li>
<li><strong>functions.php:</strong> Archivo que lee y modifica los archivos exportados de Fireworks.</li>
<li><strong>icon.png:</strong> El icono que se ve en el home screen de tu iPhone (puedes diseñar uno por tu cuenta)</li>
<li><strong>Carpeta img:</strong> Dos imágenes que son llamadas por el archivo additional.css para su uso en navegadores convencionales.</li>
<li><strong>js &gt; jquery.js:</strong> La biblioteca de JavaScript.</li>
<li><strong>Carpeta Library:</strong> En esta carpeta exportas tus archivos de Fireworks. (Puedes utilizar estos archivos de prueba, pero deberás borrarlos antes de exportar los de tu prototipo.)</li>
<li><strong>source &gt; proto.png:</strong> Es el archivo fuente del prototipo.</li>
</ul>
<div style="text-align: center"><img class="size-full wp-image-4385" src="http://activ.com.mx/wp-content/uploads/2012/02/fig_02.jpeg" alt="Figura 2. Archivos dentro del ZIP" width="235" height="220" /></div>
<p>Figura 2. Archivos dentro del ZIP</p>
<h3>Creación del PNG en FIreworks</h3>
<p>Una buena forma para iniciar es descargar los elementos de la interfaz gráfica del iPhone de <a title="Metaspark" href="http://blog.metaspark.com/2009/02/fireworks-toolkit-for-creating-iphone-ui-mockups/" target="_blank">Metaspark</a> (¡gracias por esto chicos!) Abre Fireworks y crea un nuevo archivo, ajusta el tamaño del documento a 320 x 480 y nombra la primera página index. Esto es importante, de otra forma, verás una pantalla en blanco cuando abras la página en tu iPhone. Incluso puedes iniciar con el archivo fuente PNG que viene en como demostración, lo puedes encontrar en la carpeta source dentro del ZIP. Si deseas un scroll has la página mayor a 480 pixeles.</p>
<h3>Inserción de Páginas y Hotspots</h3>
<p>En Fireworks puedes hacer el uso de páginas. Cada página puede tener sus propios gráficos, botones y ajustes. Para poder navegar en diferentes pantallas, necesitas crear más de una página y vincularlas usando hotspots.</p>
<p>La manera más fácil de crear un hotspot es dar clic derecho en el elemento que quieras que funcione como botón y seleccionar Insert Hotspot. En el panel Properties, ingresa un nombre para el botón (ver Figura 3). Puedes hacerlo de manera manual o a través del menú pop-up. Si creas un vínculo a una página que no existe, verás un color negro de fondo (o el color que hayas puesto de fondo) en la pantalla y tendrás que cargar nuevamente el prototipo. Asegurate de que los vínculos sean correctos. Puedes exportar el prototipo como HTML e imágenes para revisar todo en tu navegador favorito.</p>
<div style="text-align: center"><img class="size-medium wp-image-4389" src="http://activ.com.mx/wp-content/uploads/2012/02/fig_03-300x199.jpg" alt="Figura 3. Creación de hotspots." width="300" height="199" /></div>
<p>Figura 3. Creación de hotspots.</p>
<p>Nota: Para aprender las mejores prácticas de como estructurar un documento de Fireworks, organizar objetos y reutilizar elementos comunes, puedes leer <a title="Uso de páginas estados y layers en Fireworks CS4" href="http://www.adobe.com/devnet/fireworks/articles/pages_states_layers.html" target="_blank">Uso de páginas, estados y layers en Fireworks CS4.</a></p>
<p>Si deseas ver el prototipo en un navegador convencional, tienes que agregar una página llamada homescreen en el archivo PNG. En esta página, coloca un screenshot de tu iPhone con el icono de la aplicación en el home screen. Genera un hotspot en el icono y has un vínculo con la página index.htm. Esta página no se mostrara en el prototipo cuando lo veas en el iPhone.</p>
<h2>Exportar, subir y ver el prototipo.</h2>
<p>Cuando este completo tu prototipo y no haya vínculos inservibles, debes exportar todas las páginas como elementos de una biblioteca de Dreamweaver en la carpeta Library. Sube los archivos a un servidor que ejecute PHP, y después abre el vínculo en tu iPhone.</p>
<h3>Exportar a .lbi</h3>
<p>En Fireworks, selecciona File / Export. Selecciona la carpeta Library y exporta el archivo como elementos de una biblioteca de Dreamwever. Las bibliotecas de Dreamweaver, son pequeñas piezas de código HTML que generalmente insertas en sitios web y que se actualizan automaticamente. Al exportar, no ingreses un nombre de archivo, los archivos serán nombrados acorde a tus páginas. Selecciona None en Slices; la opción Put images in Subfolder; deselecciona la opción Current Frame Only y da clic en Export (ver Figura 4).</p>
<div style="text-align: center"><img class="size-medium wp-image-4391" src="http://activ.com.mx/wp-content/uploads/2012/02/fig_04-300x176.jpg" alt="Figura 4. Ajustes para exportar el archivo como una biblioteca de Dreamweaver." width="300" height="176" /></div>
<h3>Subir y ver el prototipo en tu iPhone</h3>
<p>Todos los archivos en la carpeta iprototype deben estar en un servidor que pueda ejecutar PHP. Generalmente uso un cliente FTP en Dreamweaver para hacer esto. Desde tu iPhone navega a la URL con terminación /iprototype. Sigue las instrucciones en la pantalla (Figura 5). Puedes cambiar este texto si gustas. Lo puedes encontrar en el archivo index.html. Si abres la URL en un navegador convencional, asegurate de tener una página llamada &#8220;homescreen&#8221; incluida en tus páginas.</p>
<div style="text-align: center"><img class="size-full wp-image-4392" src="http://activ.com.mx/wp-content/uploads/2012/02/fig_05.jpeg" alt="Figura 5. Mensaje al abrir la página en Safari." width="320" height="480" /></div>
<h3>Cosas que debes saber</h3>
<p>Cada vez que abres el prototipo con el icono en tu home screen, las páginas primero deben cargar, antes de que puedas navegar en ellas. Incluso, la última página que verás al salir del prototipo se mostrará primero, pero desaparecerá cuando el resto de las páginas se hayan cargado. Como este método no soporta caching, tendrás que tomar esto en cuenta al mandar a tus clientes la URL o en pruebas de usabilidad.</p>
<p>Este método esta probado con prototipos de hasta 30 páginas, sin embargo pueden ocurrir problemas si tu prototipo tiene muchas más. Tendrás que trabajar un poco con el código o dividir la aplicación en dos (sólo con propósito de prueba, por supuesto).</p>
<h2>A donde ir a partir de aqui</h2>
<p>Si ya usas Fireworks y estas en el negocio del desarrollo o diseño de aplicaciones para iPhone, te va a gustar esta forma de ver tu diseño en el iPhone; es rápida, tamaño exacto en pixeles y es interactiva. No necesitas software adicional, cables o conocimiento de otros lenguajes de programación. Por supuesto, este método también tiene sus restricciones, pero es genial para mostrar a otros tu diseño y hacer algunas pruebas con el.</p>
<p>Seguiremos trabajando en el código para agregar más funcionalidad. Hemos notado que muchos diseñadores tienen dificultades para hacer prototipos para dispositivos móviles, no únicamente con el iPhone. Visita el sitio UNITiD (la mayor parte esta en alemán pero algunas cosas están en inglés ).</p>
<p>También puedes ver el siguiente <a title="Video Tutorial" href="http://www.adobe.com/devnet/fireworks/articles/prototype_iphone_app.html#articlecontentAdobe_neroliplayer_split_articlecontentAdobe_neroliplayer" target="_blank">video tutorial</a> donde se muestra como se creo el demo.</p>
<p>Si eres nuevo en el diseño de aplicaciones para iPhone, recomiendo ver <a title="Apple iPhone Human Interface Guidelines" href="https://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/PartII/PartII.html" target="_blank">iPhone Human Interface Guidelines de Apple.</a></p>
<img src="http://feeds.feedburner.com/~r/activmx/~4/UrIz9n2fHhg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://activ.com.mx/prototipos-para-iphone-con-el-uso-de-fireworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://activ.com.mx/prototipos-para-iphone-con-el-uso-de-fireworks/</feedburner:origLink></item>
		<item>
		<title>Introducción a jQuery – Parte 1</title>
		<link>http://feedproxy.google.com/~r/activmx/~3/-3WymYbEqrs/</link>
		<comments>http://activ.com.mx/introduccion-a-jquery-parte-1/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 23:36:55 +0000</pubDate>
		<dc:creator>Sergio Brito</dc:creator>
				<category><![CDATA[Articulos]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Dreamweaver]]></category>
		<category><![CDATA[articulos]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://activ.com.mx/?p=4297</guid>
		<description><![CDATA[Agregar interactividad a las páginas web ha sido simplificado dramáticamente gracias a JQuery, El framework más popular de JavaScript. Las razones de la popularidad de jQuery pueden resumirse en: Escribes menos código, lo que en JavaScript te tomaría cerca de 20 líneas, con jQuery puedes lograrlo en 2 o 3 líneas. El mismo código corre [...]]]></description>
			<content:encoded><![CDATA[<p>Agregar interactividad a las páginas web ha sido simplificado dramáticamente gracias a JQuery, El framework más popular de JavaScript. Las razones de la popularidad de jQuery pueden resumirse en:</p>
<ul>
<li>Escribes menos código, lo que en JavaScript te tomaría cerca de 20 líneas, con jQuery puedes lograrlo en 2 o 3 líneas.</li>
<li>El mismo código corre en todos los navegadores, no es necesario escribir un código especial para Internet Explorer</li>
<li>Usa selectores CSS, aprovechando el  conocimiento  que la mayoría de los diseñadores web tiene.</li>
</ul>
<p><br/></p>
<div style="text-align: center;"><img title="JS Image" src="http://jquery.org/wp-content/uploads/2010/01/JQuery_logo_color_onwhite-300x74.png" alt="JS Image" width="300" height="74" /></div>
<p><br/><br />
Dreamweaver CS5.5 ahora tiene soporte completo con sugerencias de código (code hinting) para jQuery, haciendo que su uso sea aun más fácil.</p>
<p>Este tutorial es una introducción a los conceptos básicos de jQuery</p>
<p><span id="more-4297"></span></p>
<p><strong>Nota</strong>: En este tutorial se asume que haces uso de Dreamweaver CS5.5 Puedes seguir el tutorial con cualquier versión de Dreamweaver o editor de texto, pero no tendrás los beneficios de sugerencias de código (code hinting). Solo copia el código terminado al final.</p>
<h2></h2>
<h2>¿Qué es jQuery?</h2>
<p>De acuerdo al <a title="jQuery Website" href="http://jquery.com/" target="_blank">sitio web de jQuery</a>, “jQuery esta diseñado para cambiar la manera en que se escribe código JavaScript”.  No solo ha hecho esto, se ha logrado algo aún más impresionante, ha animado a un gran número de diseñadores web a comenzar a escribir su propio código en lugar de copiarlo de dudosas fuentes. jQuery es lo que se conoce como  una librería JavaScript, pero no es del tipo de librerías que esta llena con filas y filas de libros. Es un archivo relativamente pequeño (84kb sin comprimir) que contiene docenas de funciones (métodos) de JavaScript diseñadas para simplificar el trabajo con JavaScript. Simplemente ligas tu página web al archivo y usas los métodos de jQuery para agregar interactividad a tu sitio web.</p>
<p>JavaScript es un lenguaje muy potente,  pero hay dos obstáculos importantes para su uso:</p>
<ol>
<li>JavaScript fe desarrollado originalmente por Netscape, el archirrival de Internet Explorer durante la guerra de los navegadores en los 90’s. Aunque Internet Explorer adopto rápidamente el lenguaje (su versión oficial se llama JScript), hay diferencias fundamentales en ciertas áreas, como el manejo de eventos. Hacer scripts que funcionen en todos los navegadores generalmente implica rescribir mucho código.</li>
<li>La interactividad consiste en agregar y quitar elementos de una página o afectar los estilos que tengan. Los métodos oficiales para hacer esto, usando el Documento de Modelo de Objetos del consorcio World Wide Web (W3C DOM), son bastante engorrosos.</li>
</ol>
<p>Las librerías de JavaScript destinados a resolver estos dos problemas comenzaron a surgir alrededor de 2005. Los primeros en ganar un uso generalizado fueron <a href="http://www.prototypejs.org/" target="_blank">Prototype</a> y <a href="http://script.aculo.us/" target="_blank">Script.aculo.us</a>. Otras librerías conocidas son <a href="http://dojotoolkit.org/" target="_blank">Dojo Toolkit</a>, <a href="http://mootools.net/" target="_blank">Moo Tools</a>,  <a href="http://yuilibrary.com/" target="_blank">Yahoo! UI Library</a> y el Adobe <a href="http://labs.adobe.com/technologies/spry/" target="_blank">Spry framework</a>.  Todos tienen los objetivos básicos de jQuery: proporcionar a todos los navegadores de herramientas para añadir interactividad a sus páginas. Así que, ¿por qué elegir jQuery sobre los demás?</p>
<ul>
<li>jQuery funciona en todos los navegadores actuales incluyendo Internet Explorer 6+, Firefox 2+, Safari 3+, Chrome, and Opera 9+.</li>
<li>Es de código libre licenciado a la vez con <a href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT License</a> y <a href="http://www.gnu.org/licenses/licenses.html" target="_blank">GNU General Public License</a></li>
<li>Se estima que tres de cada cuatros sitios web con JavaScript han adoptado jQuery.</li>
<li>Empresas líderes usan jQuery como Amazon.com, Bank of America, BBC y Twitter.</li>
<li>Y además es relativamente fácil de aprender.</li>
</ul>
<p>Adobe se ha convertido en patrocinador oficial de jQuery Mobile, un nuevo framework para el desarrollo de aplicaciones móviles, que esta basado en la librería core de jQuery y los ingenieros de Dreamweaver han contribuido activamente al código del proyecto.</p>
<h3></h3>
<h3>Como obtener jQuery</h3>
<p>Aunque Dreamweaver CS5.5 tiene sugerencias de código para todo jQuery, es necesario ligar tus páginas web a la librearía core de jQuery. Hay dos maneras de hacer eso:</p>
<ul>
<li>Ligar a la última versión de la librería hospedada en un “Content Distribution Network (CDN)”</li>
<li>Descargar una copia de la librería y almacenarla con los archivos de tu sitio.</li>
</ul>
<p>Los detalles de ambos métodos puedes encontrarlos en la <a href="http://docs.jquery.com/Downloading_jQuery" target="_blank">documentación de jQuery</a></p>
<p>Para propósitos de este tutorial, recomendamos trabajar con la versión local de jQuery. Los archivos de ejemplo contienen una copia de jQuery 1.5.2, que era la versión actual al momento de escribir este tutorial. Si hay una nueva versión solo reemplaza los archivos.</p>
<p>Nota: La página de descarga del sitio de jQuery tiene links para versiones mínimas y descomprimidas. Ambas contienen el mismo código, pero en  la versión mínima se quitaron todos los espacios en blanco para lograr un archivo de menor peso. Cuando haces click en el link de descarga, el archivo normalmente se abre en tu navegador.  Selecciona el menú Archivo &gt; Guardar como… para guardar el archivo en tu disco duro.</p>
<h3>Preparando los archivos del tutorial</h3>
<p>Si aun no lo haz hecho, descarga jquery.zip y descomprímelo en una carpeta junto a los archivos de este tutorial. Todos los archivos están la carpeta llamada jqtut. Crea un nuevo sitio de Dreamweaver con la carpeta jqtut como raíz del sitio. Alternativamente copia los archivos de la carpeta jqtut en algún sitio existente de Dreamweaver y trabaja en esa carpeta.</p>
<h2>Ligar e inicializar jQuery</h2>
<p>Por muchos años, la practica recomendad ha sido vincular archivos externos de JavaScript en el <em>&lt;head&gt;</em> de la página web. Sin embargo, todo el código de JavaScript necesita ser procesado antes de que el resto de la página continúe cargando.</p>
<p>En consecuencia, ahora es recomendado adjuntar archivos de JavaScript externos justo antes  de cerrar la etiqueta <em>&lt;/body&gt;</em> a menos que la página dependa de código que deba ser cargado previamente. Hacer esto resulta en páginas que cargan más rápido.</p>
<ol>
<li>Abrir jq_01.html de la carpeta de archivo de ejemplos jqtut y cambiar a la vista de código o a la vista dividida.</li>
<li>Ubica tu cursor en el punto de inserción inmediatamente antes de la etiqueta de cierre <em>&lt;/body&gt;</em> y haz click en <em>Script</em> en la categoría <em>Común</em> del panel insertar o a través del menú<em> Insertar &gt; HTML &gt; Script Objects &gt; Script</em>.</li>
<li>En la ventana de diálogo Script, hacer click en el icono en forma de carpeta, ir a la carpeta js y seleccionar el archivo jquery-1.5.2.min.js.  Si descargaste una versión reciente de jQuery, selecciona esa en su lugar. Haz click en OK. El nombre del archivo debe aparecer listado en la ventana de diálogo Script como se muestra en la Figura 1.<br />
<br/><img class="alignnone" src="http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/dreamweaver/articles/introduction-to-jquery/fig01.gif" alt="" width="519" height="380" /><br />
<sup>Figura 1. Seleccionar la librería de jQuery.</sup></li>
<li>Click en OK para cerrar la ventana.  La librería debe aparecer ahora ligada a tu página justo antes de la etiqueta de cierre <em>&lt;/body&gt;</em>como se muestra en la Figura 2.<br/><br />
<img class="alignnone" src="http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/dreamweaver/articles/introduction-to-jquery/fig02.gif" alt="" width="539" height="65" /><br />
<sup>Figura 2. La ubicación recomendada la librería jQuery es justo antes de la etiqueta de cierre <em>&lt;/body&gt;</em></sup></li>
<li>Guarda la página.</li>
</ol>
<p>Agregar la librería jQuery a la página no hace nada por si sola. Simplemente pone los métodos de jQuery disponibles para tus scripts que vienen después de haber vinculado la librería.</p>
<p>&nbsp;</p>
<h3>Creando manejadores para inicializar documentos</h3>
<p>Antes de que comiences a interactuar dinámicamente con tu página web, el browser necesita cargar el HTML y construir la estructura del DOM. Tradicionalmente JavaScript usa el evento <em>onload</em> para inicializar los scripts. Sin embargo, esta espera que todos los recursos de la página, incluyendo las imágenes, terminen de cargar antes de hacer otra cosa. Para acelerar este proceso, jQuery usa su propio manejador de documentos cuando están listos.</p>
<p>Hay diferentes formas de crear manejadores de documentos, pero en este tutorial  voy a mostrar la versión corta. Este es la manera más simple y común de hacerlo.</p>
<ol>
<li>Continua trabajando con el mismo archivo. Alternativamente usa jq_02.html</li>
<li>Inserta algunas líneas entre el elemento <em>&lt;script&gt;</em> existente y la etiqueta de cierre <em>&lt;/body&gt;</em></li>
<li>Agrega las etiquetas <em>&lt;script&gt;&lt;/script&gt;</em>  en el espacio que acabas de crear.</li>
<li>Dentro de del nuevo bloque escribe<em> $(function() {.</em></li>
<li>Pulsa la tecla enter un par de veces para agregar dos líneas nuevas. Ahora escribe un símbolo de llave que cierra seguido de un paréntesis que cierra y un punto y coma. Los dos bloques de &lt;script&gt; al fondo de tu página deben verse de la siguiente manera:<br/><br/>
<pre>&lt;script type="text/javascript" src="js/jquery-1.5.2.min.js"&gt;&lt;/script&gt;<br/>
&lt;script&gt;<br/>
$(function() {<br/>
});<br/>
&lt;/script&gt;</pre>
<p>Todo el código JavaScript que necesites ejecutar al cargar la página debe ir dentro de las llaves de la función.</li>
</ol>
<h3>Guardar funciones como fragmentos reusables</h3>
<p>El código que acabamos de hacer es código que se usa regularmente con jQuery, por lo que podemos guardarlo para poder reusarlo.</p>
<ol>
<li>Selecciona el código completo que acabas de crear.</li>
<li>Haz click derecho y selecciona crear nuevo fragmento (o snippet) desde el menú contextual.</li>
<li>Escribe  <em>jQuery Document Ready Handler </em>en el campo nombre del cuadro de diálogo.</li>
<li>Dreamweaver copia el código seleccionado en el apartado de “Insertar antes”.</li>
<li>Haz click dentro del espacio del método y selecciona el código que hay después y córtalo.</li>
<li>Pega el código cortado en el apartado de “insertar después”. La ventana con el código debe verse como en la Figura 3.<br/><br />
<img class="alignnone" src="http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/dreamweaver/articles/introduction-to-jquery/fig03.gif" alt="" width="519" height="380" /><sup>Figura 3. Los métodos de jQuery que inicializan documentos son usados a menudo por lo que vale la pena guardarlo como un fragmento de código.</sup></li>
<li>Click en OK para guardar el fragmento.</li>
</ol>
<p>Cuando necesites insertar este fragmento solo coloca tu cursor en el punto de inserción y haz doble click en el fragmento deseado del panel de fragmentos.</p>
<p>&nbsp;</p>
<h2>Agregar párrafos dinámicamente</h2>
<p>Para demostrar como trabaja jQuery, este ejercicio agrega párrafos dinámicamente a la página cuando se carga. Es cierto, no es el uso más práctico de jQuery, pero ilustra dos características esenciales: Seleccionar elementos y usar métodos de jQuery.</p>
<ol>
<li>Continua trabajando con el mismo archivo o usa jq_02.html</li>
<li>En el espacio en blanco dentro del método que habías creado, escribe el símbolo de dólar seguido de un paréntesis que abre. Dreamweaver CS5.5  te dará sugerencias de código jQuery. (ver Figura 4)<br/><br />
<img class="aligncenter" src=" http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/dreamweaver/articles/introduction-to-jquery/fig04.gif" alt="" width="293" height="100" /><br />
<sup>Figura 4. Dreamweaver ofrece consejos de código jQuery a medida que escribes.</sup></li>
<li>Las dos primeras líneas ofrecidas son para el documento, que aplican a todo el documento que es el destino del evento. Tampoco es apropiado para el ejercicio,  pero escribe una comilla (no importa si es simple o doble).Dreamweaver automáticamente agrega la comilla que cierra y despliega una lista de sugerencias de código para elementos HTML (ver Figura 5).<br/><br />
<img class="aligncenter" src="http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/dreamweaver/articles/introduction-to-jquery/fig05.gif" alt="" width="298" height="206" /><br />
<sup>Figura 5. Cuando escribes una comilla, las sugerencias de código despliegan elementos HTML</sup></li>
<li>Para seleccionar la etiqueta <em>&lt;body&gt;</em>solo escribe las letras bo y pulsa la tecla enter. Dreamweaver completa el nombre de la etiqueta y deja el cursor antes de la comilla de cierre. jQuery usa selectores CSS para seleccionar elementos de una página por lo que Dreamweaver no puede decir si vas a refinar la selección. En este caso ya has terminado. Mueve tu cursor a la derecha de la comilla de cierre y escribe un paréntesis que cierra. El código ahora se ve de la siguiente manera:<br/><br/>
<pre>$(function() {<br/>
$('body')<br/>
});</pre>
<p>Esta es la manera en como jQuery selecciona el elemento <em>&lt;body&gt;</em> de la página</li>
<li>Después de seleccionar uno o más elementos de la página ya puedes aplicarle métodos de jQuery. Para agregar nuevos elementos de HTML a los elementos seleccionados debes usar el método <em>append()</em> y pasarle los nuevos elementos como argumentos. Escribe un punto después de  <em>$(<code>'body'</code>)</em>. Dreamweaver CS5.5 muestra sugerencias de código de todos los métodos de jQuery que pueden ser aplicados al o los elementos seleccionados. Selecciona el método <em>append()</em>y pasa una cadena de texto tipo HTML como esto:<br/><br/>
<pre>$(function() {<br/>
$('body').append('&lt;p&gt;This paragraph was added dynamically.&lt;/p&gt;');<br/>
});</pre>
</li>
<li>Guarda la página y revísala en un navegador en el Live View. El nuevo párrafo ha sido agregado a la página (ver Figura 6).<br/><br />
<img class="aligncenter" src="http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/dreamweaver/articles/introduction-to-jquery/fig06.gif" alt="" width="433" height="133" /><br />
<sup>Figura 6. El HTML pasado como argumento al método <em>append()</em> ha sido agregado a la página<br />
</sup><br />
Puedes revisar tu código si es necesario con el archivo jq_03.html</li>
</ol>
<p>Como una forma de comparar el archivo dom_01.html en los archivos de ejemplo produce el mismo resultado usando JavaScript estándar y los métodos de creación de elementos recomendados por la W3C DOM. El bloque <em>&lt;script&gt;</em> en la sección <em>&lt;head&gt;</em> de la página se ve de la siguiente manera:</p>
<pre>&lt;script&gt;<br/>
function addPara(text) {<br/>
var body = document.getElementsByTagName('body')[0],<br/>
p = document.createElement('p'),<br/>
content = document.createTextNode(text);<br/>
p.appendChild(content);<br/>
body.appendChild(p);<br/>
}<br/>
<br/>
window.onload = function() {<br/>
addPara('This paragraph has been added dynamically.');<br/>
};<br/>
<br/>
&lt;/script&gt;</pre>
<p>Estamos de acuerdo que hacer esto con jQuery  es mucho más simple y fácil de entender. Sin embargo, no pienses que usar jQuery es como hacer trampa. Lo que jQuery hace en el fondo es usar JavaScript  estándar. Esconde la complejidad y ayuda a preservar tu salud mental.<br />
En nuestra siguiente entrega revisaremos más a fondo el uso de los métodos de jQuery, como encadenarlos, como ligarlos a eventos de elementos HTML y como pasarle argumentos</p>
<p>[<a href="http://download.macromedia.com/pub/developer/dreamweaver/jquery.zip"><strong>Descargar código de ejemplo</strong></a>]</p>
<p>Recuerda que en Activ tenemos un <a href="http://activ.com.mx/cursos/web/jquery/">curso de jQuery</a> con el cual podrás llevar tu conocimiento de JavaScript a otro nivel.</p>
<p>Este artículo lo compartimos aquí bajo licencia <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>, la versión original puedes encontrarla en <a href="http://www.adobe.com/devnet/dreamweaver/articles/introduction-to-jquery.html" target="_blank">este link</a>.</p>
<img src="http://feeds.feedburner.com/~r/activmx/~4/-3WymYbEqrs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://activ.com.mx/introduccion-a-jquery-parte-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://activ.com.mx/introduccion-a-jquery-parte-1/</feedburner:origLink></item>
		<item>
		<title>Lanzamiento de PhoneGap 1.4</title>
		<link>http://feedproxy.google.com/~r/activmx/~3/96CC1qr6YEI/</link>
		<comments>http://activ.com.mx/lanzamiento-de-phonegap-1-4-0/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 21:43:37 +0000</pubDate>
		<dc:creator>activ</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[noticias]]></category>
		<category><![CDATA[phonegap]]></category>

		<guid isPermaLink="false">http://activ.com.mx/?p=4290</guid>
		<description><![CDATA[Hace unos días se anunció la última versión de PhoneGap 1.4, la cuál contiene varios bug fixes de la versión 1.3. También esta disponible a partir de ahora esta última versión en su servicio de nube PhoneGap Build. Se incluyeron mejoras para Android, BlackBerry, iOS y Windows Phone en diferentes aspectos como la seguridad, eficiencia [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos días se anunció la última versión de <a href="http://phonegap.com/2012/01/31/phonegap-1-4-released/">PhoneGap 1.4</a>, la cuál contiene varios bug fixes de la versión 1.3. También esta disponible a partir de ahora esta última versión en su servicio de nube PhoneGap Build.</p>
<p style="text-align:center"><a href="http://activ.com.mx/cursos/mobile/html5-para-moviles/"><img src="http://activ.com.mx/wp-content/uploads/2012/02/PhoneGapLogo.png" alt="PhoneGap" title="PhoneGap" width="250" height="250" class="aligncenter size-full wp-image-4291" /></a></p>
<p>Se incluyeron mejoras para <em>Android, BlackBerry, iOS y Windows Phone</em> en diferentes aspectos como la seguridad, eficiencia y compatibilidad. Sin duda una importante noticia para todos aquellos interesados en desarrollar aplicaciones móviles mediante HTML5 a través de PhoneGap.</p>
<p>Y para aquellos que quieran ir más allá el curso de <a href="http://activ.com.mx/cursos/mobile/html5-para-moviles/">HTML5 para Móviles</a> de Activ es un muy buen punto de partida.</p>
<img src="http://feeds.feedburner.com/~r/activmx/~4/96CC1qr6YEI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://activ.com.mx/lanzamiento-de-phonegap-1-4-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://activ.com.mx/lanzamiento-de-phonegap-1-4-0/</feedburner:origLink></item>
	</channel>
</rss>

