<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.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:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Tutorial City</title>
	
	<link>http://tutorial-city.net</link>
	<description />
	<lastBuildDate>Sun, 28 Feb 2010 04:09:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/tutorial-city/XDvR" /><feedburner:info uri="tutorial-city/xdvr" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Arts/Design</media:category><itunes:explicit>no</itunes:explicit><itunes:subtitle></itunes:subtitle><itunes:category text="Arts"><itunes:category text="Design" /></itunes:category><feedburner:emailServiceId>tutorial-city/XDvR</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Pegando favoritos do Delicious e Estilizando com CSS3</title>
		<link>http://feedproxy.google.com/~r/tutorial-city/XDvR/~3/Czbg5ZxoKWk/</link>
		<comments>http://tutorial-city.net/web/pegando-favoritos-do-delicious-e-estilizando-com-css3/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 15:13:53 +0000</pubDate>
		<dc:creator>Tutorial City</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://tutorial-city.net/?p=518</guid>
		<description><![CDATA[Delicious é uma comunidade que todo webdesigner deveria conhecer. É um site que armazena e compartilha seus favoritos, facilitando as buscas e te poupando o trabalho de sempre tem de fazer backup dos links do site ou tutoriais que gosta. Neste tutorial mostro como pegar seus favoritos (ou de qualquer outro usuário) usando jQuery e [...]]]></description>
			<content:encoded><![CDATA[<p>Delicious é uma comunidade que todo webdesigner deveria conhecer. É um site que armazena e compartilha seus favoritos, facilitando as buscas e te poupando o trabalho de sempre tem de fazer backup dos links do site ou tutoriais que gosta. Neste tutorial mostro como pegar seus favoritos (ou de qualquer outro usuário) usando jQuery e estilizar usando várias técnicas de CSS3.<br />
<span id="more-518"></span><br />
<br />
<strong>Preview:</strong> Clique <a href="http://tutorial-city.net/wp-content/uploads/2010/02/delicious-preview.html" target="_blank">Aqui</a><br />
<strong>Download do vídeo:</strong> Clique <a href="http://blip.tv/file/get/Tutorialcity-PegandoLinksDoDeliciousEEstilizandoComCSS3691.mp4" target="_blank">Aqui</a><br />
<strong>Download dos arquivos:</strong> Clique <a href="http://tutorial-city.net/wp-content/uploads/2010/02/delicious.zip">Aqui</a></p>
<p><embed src="http://blip.tv/play/AYHFuH4A" type="application/x-shockwave-flash" width="960" height="630" allowscriptaccess="always" allowfullscreen="true"></embed></p>
<img src="http://feeds.feedburner.com/~r/tutorial-city/XDvR/~4/Czbg5ZxoKWk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tutorial-city.net/web/pegando-favoritos-do-delicious-e-estilizando-com-css3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://blip.tv/file/get/Tutorialcity-PegandoLinksDoDeliciousEEstilizandoComCSS3691.mp4" length="58290721" type="video/mp4" />
		<media:content url="http://blip.tv/file/get/Tutorialcity-PegandoLinksDoDeliciousEEstilizandoComCSS3691.mp4" fileSize="58290721" type="video/mp4" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Delicious é uma comunidade que todo webdesigner deveria conhecer. É um site que armazena e compartilha seus favoritos, facilitando as buscas e te poupando o trabalho de sempre tem de fazer backup dos links do site ou tutoriais que gosta. Neste tutorial mo</itunes:subtitle><itunes:summary>Delicious é uma comunidade que todo webdesigner deveria conhecer. É um site que armazena e compartilha seus favoritos, facilitando as buscas e te poupando o trabalho de sempre tem de fazer backup dos links do site ou tutoriais que gosta. Neste tutorial mostro como pegar seus favoritos (ou de qualquer outro usuário) usando jQuery e [...]</itunes:summary><itunes:keywords>web, css, css3, jquery</itunes:keywords><feedburner:origLink>http://tutorial-city.net/web/pegando-favoritos-do-delicious-e-estilizando-com-css3/</feedburner:origLink></item>
		<item>
		<title>CRUD com Prepared Statements usando PDO</title>
		<link>http://feedproxy.google.com/~r/tutorial-city/XDvR/~3/YA8NG_vAJsc/</link>
		<comments>http://tutorial-city.net/web/crud-com-prepared-statements-usando-pdo/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 19:10:00 +0000</pubDate>
		<dc:creator>Tutorial City</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[pdo]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://tutorial-city.net/?p=504</guid>
		<description><![CDATA[Neste tutorial você vai aprender a  Create(Criar), Read(Ler), Update(Atualizar) e Delete(Deletar) informações do banco de dados usando a classe PDO e a técnica de prepared statements. A classe PDO é muito mais rápida e segura que que a extensão mysql_, por isso a preferência pelo seu uso. A técnica de prepared statements é uma [...]]]></description>
			<content:encoded><![CDATA[<p>Neste tutorial você vai aprender a  <em>Create</em>(Criar), <em>Read</em>(Ler), <em>Update</em>(Atualizar) e <em>Delete</em>(Deletar) informações do banco de dados usando a classe PDO e a técnica de prepared statements. A classe PDO é muito mais rápida e segura que que a extensão mysql_, por isso a preferência pelo seu uso. A técnica de prepared statements é uma forma mais segura de se manipular o banco de dados, pois impede toda e qualquer forma de SQL Injection.<span id="more-504"></span> Confira nos vídeos abaixo como você pode se atualizar e escrever um script muito melhor.<br />
<br />
<center></p>
<h3>Estabelecendo uma conexão</h3>
<p><object width="640" height="400"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9362457&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9362457&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="400"></embed></object><br />
</p>
<h3>Inserindo Dados</h3>
<p><object width="640" height="400"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9363642&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9363642&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="400"></embed></object><br />
</p>
<h3>Atualizando Dados</h3>
<p><object width="640" height="400"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9362724&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9362724&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="400"></embed></object><br />
</p>
<h3>Deletando Dados</h3>
<p><object width="640" height="400"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9355259&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9355259&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="400"></embed></object><br />
</p>
<h3>Lendo Dados</h3>
<p><object width="640" height="400"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9364983&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9364983&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="400"></embed></object></center></p>
<p><a href="http://pastebin.com/f9bd4f89">Código do arquivo config.php</a></p>
<p><a href="http://pastebin.com/f24c90b05">Código do arquivo create.php</a></p>
<p><a href="http://pastebin.com/f1f9afbb2">Código do arquivo update.php</a></p>
<p><a href="http://pastebin.com/f535c6f11">Código do arquivo delete.php</a></p>
<p><a href="http://pastebin.com/f20902126">Código do arquivo read.php</a></p>
<img src="http://feeds.feedburner.com/~r/tutorial-city/XDvR/~4/YA8NG_vAJsc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tutorial-city.net/web/crud-com-prepared-statements-usando-pdo/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		<enclosure url="http://vimeo.com/moogaloop.swf?clip_id=9362457&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" length="-1" type="application/x-shockwave-flash" /><media:content url="http://vimeo.com/moogaloop.swf?clip_id=9362457&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Neste tutorial você vai aprender a Create(Criar), Read(Ler), Update(Atualizar) e Delete(Deletar) informações do banco de dados usando a classe PDO e a técnica de prepared statements. A classe PDO é muito mais rápida e segura que que a extensão mysql_, por</itunes:subtitle><itunes:summary>Neste tutorial você vai aprender a Create(Criar), Read(Ler), Update(Atualizar) e Delete(Deletar) informações do banco de dados usando a classe PDO e a técnica de prepared statements. A classe PDO é muito mais rápida e segura que que a extensão mysql_, por isso a preferência pelo seu uso. A técnica de prepared statements é uma [...]</itunes:summary><itunes:keywords>web, mysql, pdo, php</itunes:keywords><feedburner:origLink>http://tutorial-city.net/web/crud-com-prepared-statements-usando-pdo/</feedburner:origLink></item>
		<item>
		<title>Criando um Plugin de Marca D’água com jQuery</title>
		<link>http://feedproxy.google.com/~r/tutorial-city/XDvR/~3/8pt4Hl8dFJ8/</link>
		<comments>http://tutorial-city.net/web/criando-um-plugin-de-marca-dagua-com-jquery/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 09:00:25 +0000</pubDate>
		<dc:creator>Tutorial City</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://tutorial-city.net/?p=464</guid>
		<description><![CDATA[Neste tutorial você irá aprender a criar um plugin para jQuery que insere uma marca d&#8217;água em inputs do tipo text e textarea. 

O primeiro passo é criar um arquivo javascript. Uma sugestão de nome é jquery.{nome do plugin}.js, então no meu caso vou nomear o arquivo jquery.watermark.js.
Várias bibliotecas/frameworks de javascript dão ao símbolo $ [...]]]></description>
			<content:encoded><![CDATA[<p>Neste tutorial você irá aprender a criar um plugin para jQuery que insere uma marca d&#8217;água em inputs do tipo text e textarea. <span id="more-464"></span></p>
<p><object width="640" height="400"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6600106&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6600106&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="400"></embed></object></p>
<p>O primeiro passo é criar um arquivo javascript. Uma sugestão de nome é <em>jquery.{nome do plugin}.js</em>, então no meu caso vou nomear o arquivo <em>jquery.watermark.js</em>.</p>
<p>Várias bibliotecas/frameworks de javascript dão ao símbolo <em>$</em> uma função especial, e isotp não é diferente para jQuery, então o primeiro passo é evitar que este conflito ocorra. Para isso devemos iniciar nosso plugin com uma função anônima autoexecutável, passando o parâmetro <em>jQuery</em> e transformando-o em <em>$</em>, como no código abaixo.</p>
<pre class="brush: javascript">
(function($){
//Todo o código que compõe o plugin deve ficar aqui.
})(jQuery);
</pre>
<p>Em seguida devemos mencionar que estamos iniciando um plugin, então escrevemos o seguinte</p>
<pre class="brush: javascript">
(function($){

	$.fn.watermark = function(){
		//Aqui vem os parâmetros e as funções que compõem o plugin.
	}

})(jQuery);
</pre>
<p>Agora devemos decidir se nosso plugin terá parâmetros ou não. Neste caso eu adicionarei alguns parâmetros, são eles:</p>
<ol>
<li>corMarcaDagua</li>
<li>estiloMarcaDagua</li>
<li>corTexto</li>
<li>estiloTexto</li>
<li>valorPadrao</li>
</ol>
<p>estes parâmetros me darão a cor e o estilo da marca d&#8217;água, a cor e o estilo do texto que é digitado, e o valor padrão do input ou textarea que não tiver valor especificado. </p>
<pre class="brush: javascript">
(function($){

	$.fn.watermark = function(parametros){
		//Aqui vem os parâmetros e a funções que compõem o plugin.
	}

})(jQuery);
</pre>
<p>A variável parâmetros será um objeto passado para o plugin. Caso o usuário não passe nenhum valor o plugin deve estar preparado para usar valores padrões, por isso crio um objeto que será usado para este fim.</p>
<pre class="brush: javascript">
(function($){

	$.fn.watermark = function(parametros){
		var padroes = {
				 corMarcaDagua    : &#039;#bbbbbb&#039;
				,estiloMarcaDagua : &#039;italic&#039;
				,corTexto         : &#039;#000000&#039;
				,estiloTexto      : &#039;normal&#039;
				,valorPadrao      : &#039;pesquisar...&#039;
			}

			//O plugin continua aqui...
	}

})(jQuery);
</pre>
<p>O plugin deve usar os valores padrões caso o usuário não passe nenhum valor, mas caso seja passado o plugin deve usar os valores do usuário. Para isto acontecer devemos estender os valores padrões e mescla-los com os valores do usuário. Abaixo vê-se como criar chegar a este fim</p>
<pre class="brush: javascript">
function($){

	$.fn.watermark = function(parametros){
		var  padroes = {
				 corMarcaDagua    : &#039;#bbbbbb&#039;
				,estiloMarcaDagua : &#039;italic&#039;
				,corTexto         : &#039;#000000&#039;
				,estiloTexto      : &#039;normal&#039;
				,valorPadrao      : &#039;pesquisar...&#039;
			}

		padrao = $.extend({},padroes,parametros);

		//O plugin continua aqui...
	}

})(jQuery);
</pre>
<p>A função <em>$.extend()</em> tem 3 parâmetros. O primeiro é um objeto vazio, o segundo é a variável com os padrões do plugin, e o terceiro é o objeto passado pelo usuário. Repare como a variável <em>padrao</em> agora se torna os parâmetros que o usuário passar, ou assume os valores padrões que criamos, caso o usuário não passe nada.</p>
<p>O próximo passo é criar a(s) função(s) que deve ser executada para <strong>CADA</strong>(each) elemento que for atingido com o seletor de jQuery.</p>
<pre class="brush: javascript">
(function($){

	$.fn.watermark = function(parametros){
		var padroes = {
				 corMarcaDagua    : &#039;#bbbbbb&#039;
				,estiloMarcaDagua : &#039;italic&#039;
				,corTexto         : &#039;#000000&#039;
				,estiloTexto      : &#039;normal&#039;
				,valorPadrao      : &#039;pesquisar...&#039;
			}

		padrao = $.extend({},padroes,parametros);

		return this.each(function(){
			//Todos os elementos que forem atingidos com
			//o seletor do jQuery sofrerão com o que vier
			//aqui dentro.
		});

	}

})(jQuery);
</pre>
<p>Repare que usei <em>return</em> antes de <em>this.each()</em>. Isto não é estritamente necessário, mas é altamente recomendável, para que nosso plugin permita <em>chaining</em> no jQuery.</p>
<p>No começo eu disse que o plugin seria limitado a inputs do tipo texto e textarea, porém o plugin ainda não sabe da minha intenção, então tenho que dizer explicitamente que quero isso. em jQuery usamos o método <em>is()</em> para descobrir com qual elementos estamos trabalhando.</p>
<pre class="brush: javascript">
(function($){

	$.fn.watermark = function(parametros){
		var padroes = {
				 corMarcaDagua    : &#039;#bbbbbb&#039;
				,estiloMarcaDagua : &#039;italic&#039;
				,corTexto         : &#039;#000000&#039;
				,estiloTexto      : &#039;normal&#039;
				,valorPadrao      : &#039;pesquisar...&#039;
			}

		padrao = $.extend({},padroes,parametros);

		return this.each(function(){

			if($(this).is(&#039;input:text&#039;) || $(this).is(&#039;textarea&#039;) ){
				//Aqui ficarão as ações que serão executadas
				//em todos os input&#039;s e textarea&#039;s que forem
				//atingidos com nosso seletor de jQuery
			}

		});

	}

})(jQuery);
</pre>
<p>Repare que filtrei os inputs do tipo texto somente escrevendo &#8216;:text&#8217;, mas eu poderia alternativamente usar a sintaxe de CSS <em>input[type=text]</em>.</p>
<p>até este momento usei o elemento <em>$(this)</em> mais de uma vez, então é uma boa ideia usar uma variável que tenha o mesmo valor dele, para armazena-lo em cache e tornar nosso script mais rápido. Vou chamar a variável de <em>$elemento</em>, para ficar claro que ele representará cada elemento. Também coloco um cifrão no começo, para que fique claro que estou mexendo com um objeto do jQuery.</p>
<pre class="brush: javascript">
(function($){

	$.fn.watermark = function(parametros){
		var padroes = {
				 corMarcaDagua    : &#039;#bbbbbb&#039;
				,estiloMarcaDagua : &#039;italic&#039;
				,corTexto         : &#039;#000000&#039;
				,estiloTexto      : &#039;normal&#039;
				,valorPadrao      : &#039;pesquisar...&#039;
			}

		padrao = $.extend({},padroes,parametros);

		return this.each(function(){

			$elemento = $(this);

			if($elemento.is(&#039;input:text&#039;) || $elemento.is(&#039;textarea&#039;) ){
				//Aqui ficarão as ações que serão executadas
				//em todos os input&#039;s e textarea&#039;s que forem
				//atinigidos com nosso seletor de jQuery
			}

		});

	}

})(jQuery);
</pre>
<p>Quando iniciamos o plugin queremos que o valor padrão que aparece nos input&#8217;s e textarea&#8217;s esteja na forma de marca d&#8217;água, então devemos dar a ele a cor de marca d&#8217;água e o estilo de marca d&#8217;água. Para isso usamos o método <em>css()</em> em todos os elementos usando a variável <em>$elemento</em>.</p>
<pre class="brush: javascript">
(function($){

	$.fn.watermark = function(parametros){
		var  padroes = {
				 corMarcaDagua    : &#039;#bbbbbb&#039;
				,estiloMarcaDagua : &#039;italic&#039;
				,corTexto         : &#039;#000000&#039;
				,estiloTexto      : &#039;normal&#039;
				,valorPadrao      : &#039;pesquisar...&#039;
			}

		padrao = $.extend({},padroes,parametros);

		return this.each(function(){

			$elemento = $(this);

			if($elemento.is(&#039;input:text&#039;) || $elemento.is(&#039;textarea&#039;) ){

				$elemento.css({
					 color     : padrao.corMarcaDagua
					,fontStyle: padrao.estiloMarcaDagua
				});

			}

		});

	}

})(jQuery);
</pre>
<p>Em seguida temos de descobrir uma maneira de guardar os valores padrões dos input&#8217;s e textarea&#8217;s. Escolhi guarda-lo no atributo <em>rel</em>, que será criado dinamicamente com o script.<br />
Caso o input tenha um valor no HTML, o usaremos, caso contrário usaremos o que será passado ao plugin pelo usuário, se nada for passado usaremos o padrão do plugin(&#8216;pesquisar&#8230;&#8217;).</p>
<pre class="brush: javascript">
(function($){

	$.fn.watermark = function(parametros){
		var  padroes = {
				 corMarcaDagua    : &#039;#bbbbbb&#039;
				,estiloMarcaDagua : &#039;italic&#039;
				,corTexto         : &#039;#000000&#039;
				,estiloTexto      : &#039;normal&#039;
				,valorPadrao      : &#039;pesquisar...&#039;
			}

		padrao = $.extend({},padroes,parametros);

		return this.each(function(){

			$elemento = $(this);

			if($elemento.is(&#039;input:text&#039;) || $elemento.is(&#039;textarea&#039;) ){

				$elemento.css({
					 color     : padrao.corMarcaDagua
					,fontStyle : padrao.estiloMarcaDagua
				});

				vall = ($elemento.val() != &#039;&#039;)?$elemento.val():padrao.valorPadrao;

				$elemento.val(vall).attr(&#039;rel&#039;,vall); 

				//O plugin continua aqui...

			}

		});

	}

})(jQuery);
</pre>
<p>Repare que o que vem após <em>vall =</em>(linha 25) nada mais é do que um <em>if/else</em> no modo compacto. O que vem antes da interrogação é a condição. o que vem entre os dois pontos e a interrogação é o valor retornado se a condição for verdadeira, e o que q vem depois dos dois pontos é o valor retornado se a condição for falsa. Nesse caso <em>vall</em> vai ser igual ao valor do elemento que está no HTML caso haja algum valor (<em>$element.val()</em> é diferente de vazio), e <em>vall</em> será igual ao valor passado pelo usuário ou o valor padrão do plugin, caso nenhum valor seja passado direto no HTML. Na linha 27 esse valor é passado para o elemento, e em seguida para o atributo <em>rel</em>.</p>
<p>Agora devemos criar a parte onde indicamos o que deve ocorrer quando o usuário entra ou sai do input/textarea. Primeiro vou criar a parte que indica o que deve ocorrer quando o usuário ENTRA no input/textarea.</p>
<p>Para não ficar reescrevendo todo o script, vou mostrar somente a parte onde há a interação com os elementos. Para indicar a ação de entrada no input/textarea usamos o evento <em>focus</em>, e nesta entrada executamos uma função.</p>
<pre class="brush: javascript">
$elemento.focus(function(){

});
</pre>
<p>Quando estamos dentro do <em>focus</em> o <em>$(this)</em> indica o elemento quando está entrando em foco, então não podemos confundir com o <em>$(this)</em> usado anteriormente. Para facilitar o entendimento vou criar uma variável chamada <em>$elementoEmFoco</em> e direciona-la ao  <em>$(this)</em>.</p>
<pre class="brush: javascript">
$elemento.focus(function(){
	$elementoEmFoco = $(this);
});
</pre>
<p>Quando entramos no input/textarea sempre haverá um valor assinalado (no tutorial em vídeo não me atentei a este detalhe, e acabei escrevendo uma parte redundante no código), e estamos seguros disto pois quando escrevermos o código para quando o cursor sair do input/textarea colocaremos um valor no mesmo. Então quando entramos queremos  ter a cor e o estilo do texto do usuário, o que é criado nas linhas 3-6</p>
<pre class="brush: javascript">
$elemento.focus(function(){
	$elementoEmFoco = $(this);
	$elementoEmFoco.css({
		 color:padrao.corTexto
		,fontStyle:padrao.estiloTexto
	});
});
</pre>
<p>Por fim, se quando entrarmos no elemento ele tenha o valor igual ao que foi guardado no atributo <em>rel</em>, queremos que esse valor desapareça e que o input/textarea fique vazio, para que o usuário possa digitar seu texto.</p>
<pre class="brush: javascript">
$elemento.focus(function(){
	$elementoEmFoco = $(this);
	$elementoEmFoco.css({
		 color:padrao.corTexto
		,fontStyle:padrao.estiloTexto
	});

	if($elementoEmFoco.val() == $elementoEmFoco.attr(&#039;rel&#039;)){
		$elementoEmFoco.val(&#039;&#039;);
	}

});
</pre>
<p>Terminada a ação executada quando entramos no input/textarea temos de criar a ação que será executada quando sairmos do mesmo. Para isso usamos o método <em>blur()</em>. Inicialmente faremos o mesmo que fizemos anteriormente, executaremos uma função assim que sairmos do input/textarea, e criaremos uma variável que será igual ao <em>$(this)</em>, que neste caso indica o elemento quando está saindo de foco.</p>
<pre class="brush: javascript">
$elemento.blur(function(){
	$elementoForaDeFoco = $(this);
});
</pre>
<p>Se quando sairmos do input/textarea seu valor seja igual a vazio ou seu valor seja igual ao valor do atributo <em>rel</em>, queremos que ele seja tratado como uma marca d&#8217;água, então ele deve ter a cor e o estilo da marca d&#8217;água.</p>
<pre class="brush: javascript">
$elemento.blur(function(){
	$elementoForaDeFoco = $(this);
	if($elementoForaDeFoco.val() == &#039;&#039; || $elementoForaDeFoco.val() == $elementoForaDeFoco.attr(&#039;rel&#039;)){
		$elementoForaDeFoco.css({
	 		 color     : padrao.corMarcaDagua
			,fontStyle : padrao.estiloMarcaDagua
		});
	}
});
</pre>
<p>Além disso queremos que o valor volte a ser o valor padrão do input/textarea caso o mesmo esteja vazio ou tenha o valor igual ao valor do atributo <em>rel</em>, então incluimos uma linha de código dentro do <em>if</em>.</p>
<pre class="brush: javascript">
$elemento.blur(function(){
	$elementoForaDeFoco = $(this);
	if($elementoForaDeFoco.val() == &#039;&#039; || $elementoForaDeFoco.val() == $elementoForaDeFoco.attr(&#039;rel&#039;)){
		$elementoForaDeFoco.css({
	 		 color     : padrao.corMarcaDagua
			,fontStyle : padrao.estiloMarcaDagua
		});

	$elementoForaDeFoco.val($elementoForaDeFoco.attr(&#039;rel&#039;));

	}
});
</pre>
<p>O plugin termina aqui. Farei somente uma modificação no código, que é inicializar todas as variáveis no início do documento. Esta prática não é estritamente necessária, porém particularmente eu gosto de fazer assim. A seguir está todo o plugin, incluindo essas modificações que fiz.</p>
<pre class="brush: javascript">
(function($){

	$.fn.watermark = function(parametros){
		var  padrao
			,vall
			,$elemento
			,$elementoEmFoco
			,$elementoForaDeFoco
			,padroes = {
				 corMarcaDagua    : &#039;#bbbbbb&#039;
				,estiloMarcaDagua : &#039;italic&#039;
				,corTexto         : &#039;#000000&#039;
				,estiloTexto      : &#039;normal&#039;
				,valorPadrao      : &#039;pesquisar...&#039;
			}

		padrao = $.extend({},padroes,parametros);

		return this.each(function(){

			$elemento = $(this);

			if($elemento.is(&#039;input:text&#039;) || $elemento.is(&#039;textarea&#039;) ){

				$elemento.css({
					 color     : padrao.corMarcaDagua
					,fontStyle: padrao.estiloMarcaDagua
				});

				vall = ($elemento.val() != &#039;&#039;)?$elemento.val():padrao.valorPadrao;
				$elemento.val(vall).attr(&#039;rel&#039;,vall); 

				$elemento.focus(function(){
					$elementoEmFoco = $(this);
					$elementoEmFoco.css({
						 color:padrao.corTexto
						,fontStyle:padrao.estiloTexto
					});

					if($elementoEmFoco.val() == $elementoEmFoco.attr(&#039;rel&#039;)){
						$elementoEmFoco.val(&#039;&#039;);
					}

				});

				$elemento.blur(function(){
					$elementoForaDeFoco = $(this);
					if($elementoForaDeFoco.val() == &#039;&#039; || $elementoForaDeFoco.val() == $elementoForaDeFoco.attr(&#039;rel&#039;)){
						$elementoForaDeFoco.css({
					 		 color     : padrao.corMarcaDagua
							,fontStyle : padrao.estiloMarcaDagua
						});

					$elementoForaDeFoco.val($elementoForaDeFoco.attr(&#039;rel&#039;));

					}
				});

			}

		});

	}

})(jQuery);
</pre>
<p>O plugin ,do jeito que está, tem 1565 bytes de tamanho, o que em princípio é considerado pequeno, porém é sempre uma boa ideia diminuir o máximo possível o tamanho dos arquivos que serão incluídos nas páginas. O próprio framework jQuery apresenta uma versão minimizada.</p>
<p>Para criar essa versão usarei um compressor chamado <em>YUI Compressor</em>. Este compressor comprimi arquivos de javascript e CSS. O primeiro passo é baixar o compressor, e para isso você deve ir à <a href="http://yuilibrary.com/downloads/#yuicompressor">página de download</a> e baixa-lo. Baixei a única versão disponível na data de criação deste tutorial 2.4.2.<br />
Primeiro você deve extrair a pasta zipada para uma pasta de sua escolha, eu escolhi a pasta que meu plugin está. Em seguida você deve jogar o plugin pra dentro da pasta <em>build</em>, que está dentro da pasta <em>yuicompressor-x.y.z</em>(no meu caso x=2, y=4 e z=2). Eu não gosto de jogar meu arquivo diretamente, eu faço uma cópia e coloco a mesma lá dentro, para evitar que, por qualquer motivo, meu arquivo seja danificado. </p>
<div class="image"><img src="http://tutorial-city.net/wp-content/uploads/2009/09/pasta.jquery.watermark.jpg" alt="pasta.jquery.watermark" title="pasta.jquery.watermark" width="683" height="181" class="aligncenter size-full wp-image-468" /></div>
<p>Para executar o compressor você deve acessar a pasta onde os arquivos estão localizados, o modo mais simples é copiando o endereço (no meu caso é o destacado na imagem acima). Agora você deve abrir o prompt de comando, caso você esteja usando Windows vá em <em>Iniciar>Executar</em>(start>Run) , digite <em>cmd</em> e pressione <em>ok</em>.</p>
<div class="image"><img src="http://tutorial-city.net/wp-content/uploads/2009/09/cmd.jquery.watermark.jpg" alt="cmd.jquery.watermark" title="cmd.jquery.watermark" width="607" height="205" class="aligncenter size-full wp-image-475" /></div>
<p>Um prompt de comando surgirá na tela. digite <em>cd &#8220;{endereço do arquivo em java e plugin}&#8221;</em>, incluindo as aspas e pressione Enter. no meu caso digitarei:</p>
<pre class="brush: java">
cd &quot;C:\Users\Eduardo\My Documents\Aptana Studio Workspace\watermark\yuicompressor-2.4.2\build&quot;
</pre>
<p>Neste momento você deve estar na pasta onde seus arquivos estão. para criar o arquivo comprimido do plugin executamos o seguinte comando: <em>java -jar {nome do arquivo em java da pasta}.jar {nome do arquivo a ser comprimido}.js -o {nome do arquivo de saída}.js</em>. No meu caso ficou da seguinte maneira</p>
<pre class="brush: java">
java -jar yuicompressor-2.4.2.jar jquery.watermark.js -o jquery.watermark.min.js
</pre>
<p>Em poucos instantes um arquivo é criado na pasta, chamado <em>jquery.watermark.min</em>. O tamanho dele é 679 bytes, 56,6% menor que o arquivo original. Mas tome <strong>CUIDADO</strong> para não descartar o arquivo original! Sempre que você quiser modificar seu plugin, é nele que você vai mexer, e no fim você comprimi dinovo.</p>
<p>Para testar o seu plugin crie uma página em HTML como a seguinte</p>
<pre class="brush: html">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
	&lt;head&gt;
		&lt;style type=&quot;text/css&quot;&gt;
			input,textarea{display:block;}
		&lt;/style&gt;
		&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
		&lt;title&gt;Watermark Plugin&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;input type=&quot;text&quot; /&gt;
		&lt;input type=&quot;text&quot; value=&quot;nome&quot;/&gt;
		&lt;input type=&quot;text&quot; value=&quot;email&quot;/&gt;
		&lt;textarea rows=&quot;7&quot; cols=&quot;25&quot;&gt;Digite sua mensagem&lt;/textarea&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot;&gt;&lt;/script&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.watermark.min.js&quot;&gt;&lt;/script&gt;
	&lt;script type=&quot;text/javascript&quot;&gt;
		$(document).ready(function(){
			$(&#039;input,textarea&#039;).watermark();
		});
	&lt;/script&gt;
	&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Não se esqueça que o arquivo minimizado deve estar na mesma página do documento em HTML para que o endereço do atributo <em>src</em>, e também não esqueça que o framework jQuery deve ser adicionado antes de todos os arquivos que contenham jQuery. Nesse caso em específico adicionei os scripts no fim da página(imediatamente antes do término do <em>body</em>), mas poderia ter sido no <em>head</em>. </p>
<p>Para executar o plugin selecionei todos os input&#8217;s e textarea&#8217;s da página (poderia selecionar somente uma parte) e executei o comando <em>watermark()</em>. Você pode modificar os valores padrões, e para isso basta escrever o objeto como parâmetro, da seguinte maneira</p>
<pre class="brush: javascript">
$(document).ready(function(){
	$(&#039;input,textarea&#039;).watermark({
		 corMarcaDagua:&#039;#abc&#039;
		,estiloMarcaDagua:&#039;normal&#039;
		,corTexto:&#039;green&#039;
		,estiloTexto:&#039;italic&#039;
		,valorPadrao:&#039;digite seu texto...&#039;
	});
});
</pre>
<p>Abra a página novamente e teste. Você verá que os estilos foram mudados, além do texto marca d&#8217;água que aparece nos input&#8217;s/textarea&#8217;s que não tem valor. Você não é obrigado a passar todos os valores, mas somente aqueles que interessam ser mudados.</p>
<p>Você pode testar o resultado final, ou baixar os arquivos, nos links abaixo:</p>
<p><a href="http://tutorial-city.net/wp-content/uploads/2009/09/watermark.html">Preview Online</a><br />
<a href="http://tutorial-city.net/wp-content/uploads/2009/09/watermark.rar">Baixar Arquivos</a></p>
<img src="http://feeds.feedburner.com/~r/tutorial-city/XDvR/~4/8pt4Hl8dFJ8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tutorial-city.net/web/criando-um-plugin-de-marca-dagua-com-jquery/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		<enclosure url="http://tutorial-city.net/wp-content/uploads/2009/09/watermark.rar" length="1546" type="application/x-rar" /><media:content url="http://tutorial-city.net/wp-content/uploads/2009/09/watermark.rar" fileSize="1546" type="application/x-rar" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Neste tutorial você irá aprender a criar um plugin para jQuery que insere uma marca d&amp;#8217;água em inputs do tipo text e textarea. O primeiro passo é criar um arquivo javascript. Uma sugestão de nome é jquery.{nome do plugin}.js, então no meu caso vou no</itunes:subtitle><itunes:summary>Neste tutorial você irá aprender a criar um plugin para jQuery que insere uma marca d&amp;#8217;água em inputs do tipo text e textarea. O primeiro passo é criar um arquivo javascript. Uma sugestão de nome é jquery.{nome do plugin}.js, então no meu caso vou nomear o arquivo jquery.watermark.js. Várias bibliotecas/frameworks de javascript dão ao símbolo $ [...]</itunes:summary><itunes:keywords>web, javascript, jquery, plugin</itunes:keywords><feedburner:origLink>http://tutorial-city.net/web/criando-um-plugin-de-marca-dagua-com-jquery/</feedburner:origLink></item>
		<item>
		<title>Criando menu expansível com jQuery</title>
		<link>http://feedproxy.google.com/~r/tutorial-city/XDvR/~3/FwFwGSe3D5g/</link>
		<comments>http://tutorial-city.net/web/criando-menu-expansivel-com-jquery/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 14:42:08 +0000</pubDate>
		<dc:creator>Tutorial City</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://tutorial-city.net/?p=411</guid>
		<description><![CDATA[Neste tutorial você vai aprender a criar um menu que se expande usando jQuery.


Preview Online
Baixar Arquivos
Em primeiro lugar devemos criar a estrutura necessária para que nosso aplicativo possa viver.  Para isso criei um arquivo chamado expand.html, que será responsável pela estruturação do código, um arquivo chamando expand.css, que será responsável pelo visual de uma [...]]]></description>
			<content:encoded><![CDATA[<p>Neste tutorial você vai aprender a criar um menu que se expande usando jQuery.<br />
<span id="more-411"></span><br />
<center><object width="640" height="400"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6466924&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6466924&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="400"></embed></object></center></p>
<p><a href="http://tutorial-city.net/wp-content/uploads/2009/09/expand1.html" target="_blank">Preview Online</a><br />
<a href="http://tutorial-city.net/wp-content/uploads/2009/09/expand1.rar" target="_blank">Baixar Arquivos</a></p>
<p>Em primeiro lugar devemos criar a estrutura necessária para que nosso aplicativo possa viver.  Para isso criei um arquivo chamado expand.html, que será responsável pela estruturação do código, um arquivo chamando expand.css, que será responsável pelo visual de uma maneira geral, e um arquivo chamado expand.js, que será responsável pelos efeitos, além da pasta com as imagens que serão usadas no menu.</p>
<div class="image">
<img src="http://tutorial-city.net/wp-content/uploads/2009/09/diretorios.jpg" alt="diretorios" title="diretorios" width="157" height="92" class="aligncenter size-full wp-image-422" />
</div>
<p>Começando pelo começo, nada é mais importante que o arquivo HTML, então vamos à ele.<br />
a estrutura básica para iniciar o projeto é vista a seguir (repare como o framework jQuery já está carregado através da tag script):</p>
<pre class="brush: html">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
	&lt;head&gt;
		&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
		&lt;title&gt;expandindo menu com jQuery&lt;/title&gt;
		&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot;&gt;&lt;/script&gt;
	&lt;/head&gt;
	&lt;body&gt;

	&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Em seguida precisaremos de uma lista, onde cada item representará um item do menu.<br />
dentro de cada item teremos uma imagem, um título e uma descrição.</p>
<pre class="brush: html">
		&lt;ul id=&quot;expand&quot;&gt;
			&lt;li&gt;
				&lt;img src=&quot;drupal.jpg&quot; alt=&quot;&quot; width=&quot;80&quot; height=&quot;80&quot; /&gt;
				&lt;h2&gt;Drupal&lt;/h2&gt;
				&lt;p&gt;Drupal is a free and open source[1] Content Management System (CMS) written in PHP. It is used as a back-end system for many different types of websites, ranging from small personal blogs to large corporate and political sites. It is distributed under the GNU GPL.&lt;/p&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;img src=&quot;expressionengine.jpg&quot; alt=&quot;&quot; width=&quot;80&quot; height=&quot;80&quot; /&gt;
				&lt;h2&gt;Expression Engine&lt;/h2&gt;
				&lt;p&gt;EllisLab is a software developer based in Bend, Oregon which develops applications written in PHP. The company is privately owned and has to date accepted no venture capital funding of any kind. Since the company&#039;s founding in January 2002.&lt;/p&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;img src=&quot;frog.jpg&quot; alt=&quot;&quot; width=&quot;80&quot; height=&quot;80&quot; /&gt;
				&lt;h2&gt;Frog CMS&lt;/h2&gt;
				&lt;p&gt;Frog CMS is an open source content management system originally developed by the company Philippe Archambault. The design decision taken from its start was to use PHP5 as the language for the software, along with a MySQL database backend, although it also has support for SQLite (version 3). It is a port of the Ruby on Rails CMS known as Radiant, although Frog has begun to take its own development direction.&lt;/p&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;img src=&quot;joomla.jpg&quot; alt=&quot;&quot; width=&quot;80&quot; height=&quot;80&quot; /&gt;
				&lt;h2&gt;Joomla!&lt;/h2&gt;
				&lt;p&gt;Joomla! is a content management system platform for publishing content on the World Wide Web and intranets as well as a Model-view-controller (MVC) Web Application Development framework. The system includes features such as page caching to improve performance, RSS feeds, printable versions of pages, news flashes, blogs, polls, website searching, and language internationalization. It is written in the PHP programming language and uses the MySQL database system to store information. Joomla is the result of a fork of Mambo. Released under the terms of the GNU General Public License, Joomla is free software.&lt;/p&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;img src=&quot;magento.jpg&quot; alt=&quot;&quot; width=&quot;80&quot; height=&quot;80&quot; /&gt;
				&lt;h2&gt;Magento&lt;/h2&gt;
				&lt;p&gt;Magento is an Open Source ecommerce web application launched on March 31, 2008. It was created by Varien, building on components of the Zend Framework. Magento is available under the Open Software License version 3.0. Since version 1.1.7 some parts are licensed under the Academic Free License version 3.0. Magento Enterprise Edition, a paid for version of Magento aimed at larger companies, was launched on April 15, 2009.&lt;/p&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;img src=&quot;modx.jpg&quot; alt=&quot;&quot; width=&quot;80&quot; height=&quot;80&quot; /&gt;
				&lt;h2&gt;MODx&lt;/h2&gt;
				&lt;p&gt;MODx is a free, open source content management system and web application framework for publishing content on the world wide web and intranets. MODx is licensed under the GPL. MODx is written in the PHP programming language and uses the MySQL database.&lt;/p&gt;
			&lt;/li&gt;
		&lt;/ul&gt;
</pre>
<p>Feito isso devemos estilizar nosso trabalho, então é hora de visitar o arquivo expand.css.<br />
as instruções linha a linha são a seguinte:</p>
<ol>
<li>Zerar margin e padding de todos os elementos, além das bolinhas padrão que vem nas listas</li>
<li>Dar um tamanho à div que será usada mais afrente.</li>
<li>Dar uma cor de fundo à página</li>
<li>Mostrar o menu na horizontal e dimensioná-lo, a fim de mostrar todo o conteúdo de todos os itens, além de dar um visual legal pra cada item.</li>
<li>Estilizar a imagem e flutua-la para a esquerda, assim o título e a descrição podem fluir em volta dela.</li>
<li>Estilizar a descrição. Repare que a propriedade margin-left é igual à distância do texto à extrema esquerda de seu pai, e isso serve para que o mesmo não flua para baixo da imagem.</li>
<li>Estilizar o título.</li>
<li>Dar background rosa aos itens pares da lista.</li>
<li>Dar background verde aos itens impares da leta.</li>
<pre class="brush: css">
*{margin:0;padding:0;list-style:none;}
div{overflow:hidden; width:450px;}
html{background:#ccc;}
#expand li{float:left;width:390px;height:170px;margin:2px;overflow:hidden;border:1px solid #555;-moz-border-radius:10px;-webkit-border-radius:10px;}
#expand img{border:3px solid #686;background: #aaa;padding:3px;float:left;margin:3px 5px;}
#expand p{font:normal normal normal 11px/1.4 arial,sans-serif;float:none;padding:3px 12px 0 5px;margin:5px 0 0 102px;}
#expand h2{font:bold italic normal 15px/1 georgia,serif;margin:3px 0 0 108px;}
#expand li:nth-child(even){background: #dff;}
#expand li:nth-child(odd){background: #fdf;}
</pre>
<p>Repare que as duas últimas linhas são formadas por propriedades presentes somente em CSS3, mas são reconhecidas em todos os navegadores modernos (ou seja, Firefox, Safari, Chrome e Opera). Por último devemos criar o efeito usando jQuery. Abrindo arquivo expand.js, o primeiro que devemos fazer é iniciar o jQuery.</p>
<pre class="brush: javascript">
$(document).ready(function(){

});
</pre>
<p>O segundo passo é criar uma div que vai envolver todo o conteúdo dos itens.  Esta parte é importante para que o texto não flua quando o item expandir e retrair.</p>
<pre class="brush: javascript">
$(&#039;#expand li&#039;).wrapInner(&#039;&lt;div&gt;&#039;);
</pre>
<p>Em seguida usamos jQuery para diminuir todos os itens, e mostrar somente a imagem.</p>
<pre class="brush: javascript">
$(&#039;#expand li&#039;).css({
		 width:  &#039;102px&#039;
		,height: &#039;100px&#039;
	});
</pre>
<p>Cada item tem uma altura diferente, e para podermos expandir uma altura suficiente para mostrar todo o conteúdo devemos primeiro conhecer a altura do maior deles, então um loop é criado para rodar todos as divs e pegar a maior altura encontrada</p>
<pre class="brush: javascript">
	var alturaMax = 100;

	$(&#039;#expand li div&#039;).each(function(){
		alturaDiv = $(this).height();
		if(alturaDiv &gt; alturaMax){
			alturaMax = alturaDiv;
		}
	});
</pre>
<p>A seguir vem a animação em si</p>
<pre class="brush: javascript">
$(&#039;#expand li&#039;).hover(/*mouse em cima*/,/*mouse saindo*/);
</pre>
<p>Quando o mouse estiver em cima, queremos expandir o item para 450px de largura e para a altura do maior dos itens, mas somente depois de parar o que estava fazendo.</p>
<pre class="brush: javascript">
$(&#039;#expand li&#039;).hover(function(){
		$(this).stop().animate({
			 width:  &#039;450px&#039;
			,height: alturaMax + 5 + &#039;px&#039;
		});
	},/*mouse saindo*/);
</pre>
<p>Quando o mouse deixa o item, queremos que o mesmo pare o que estiver fazendo e volte a animar retornando à posição inicial</p>
<pre class="brush: javascript">
$(&#039;#expand li&#039;).hover(function(){
		$(this).stop().animate({
			 width:  &#039;450px&#039;
			,height: alturaMax + 5 + &#039;px&#039;
		});
	},function(){
		$(this).stop().animate({
			 width:  &#039;102px&#039;
			,height: &#039;100px&#039;
		});
	});
</pre>
<p>Nesse ponto o script já funciona e faz exatamente o que queremos, mas bons programadores sempre retornam ao seu código e tentam o tornar melhor. O arquivo criado, apesar de funcionar, apresentam um monte de más práticas quando se diz respeito a javascript, e a seguir tentaremos contornar esses problemas.</p>
<p>A primeira parte que devemos notar é que o seguinte fragmento do código é chamada inúmeras vezes</p>
<pre class="brush: javascript">
$(&#039;#expand li&#039;)
</pre>
<p>Chamadas por elementos do DOM são demasiadamente penosas em javascript, e como fazemos estas chamadas várias vezes usando jQuery, nosso script acaba se tornando bastante lento. Para solucionar este problema devemos armazenar todos as chamadas em cache, mas só faz sentido fazer isso caso esta chamada seja feita mais de uma vez. O mesmo deve ser feito com a variável $(this), porém nesse caso elas são chamadas somente uma vez em cada loop, então não se deve tocar nelas. Corrigindo este problema, nosso código fica da seguinte maneira</p>
<pre class="brush: javascript">
$(document).ready(function(){

	var $item = $(&#039;#expand li&#039;);

	$item.wrapInner(&#039;&lt;div&gt;&#039;);

	$item.css({
		 width:  &#039;102px&#039;
		,height: &#039;100px&#039;
	});

	var alturaMax = 100;

	$item.children(&#039;div&#039;).each(function(){
		alturaDiv = $(this).height();
		if(alturaDiv &gt; alturaMax){
			alturaMax = alturaDiv;
		}
	});

	$item.hover(function(){
		$(this).stop().animate({
			 width:  &#039;450px&#039;
			,height: alturaMax + 5 + &#039;px&#039;
		});
	},function(){
		$(this).stop().animate({
			 width:  &#039;102px&#039;
			,height: &#039;100px&#039;
		});
	});
});
</pre>
<p>Um passo adicional que podemos tomar é usar o que é conhecido em javascript como <em>chaining</em>. Isto significa aplicar seguidas funções sem sair de um contexto. Talvez fique mais claro no código abaixo</p>
<pre class="brush: javascript">
$(document).ready(function(){

	var $item = $(&#039;#expand li&#039;);
	var alturaMax = 100;

	$item.wrapInner(&#039;&lt;div&gt;&#039;)
		 .css({
		 width:  &#039;102px&#039;
		,height: &#039;100px&#039;
	  })//não se usa &#039;;&#039; aqui, para que os métodos possam ser acorrentados
	  	.children(&#039;div&#039;).each(function(){
		alturaDiv = $(this).height();
		if(alturaDiv &gt; alturaMax){
			alturaMax = alturaDiv;
		}
	 })//não se usa &#039;;&#039; aqui, para que os métodos possam ser acorrentados
		.hover(function(){
		$(this).stop().animate({
			 width:  &#039;450px&#039;
			,height: alturaMax + 5 + &#039;px&#039;
		});
	},function(){
		$(this).stop().animate({
			 width:  &#039;102px&#039;
			,height: &#039;100px&#039;
		});
	});
});
</pre>
<p>Neste momento o script já está bem mais rápido, e agora podemos criar mais um efeito onde a altura do item será animado o suficiente para mostrar todo o seu conteúdo, então se o item tiver pouco conteúdo a sua altura expandirá pouco ou não expandirá, e caso o item tenha bastante conteúdo a sua altura expandirá o necessário para que mostre todo o texto.</p>
<p>Para este efeito devemos descobrir a altura da div quando passamos o mouse por cima do item (repare que comentei o código que não será mais usado e modifiquei a variável que dá a altura do item da lista) .</p>
<pre class="brush: javascript">
$(document).ready(function(){

	var $item = $(&#039;#expand li&#039;);
	var alturaMax = 100,altura;

	$item.wrapInner(&#039;&lt;div&gt;&#039;)
		 .css({
		 width:  &#039;102px&#039;
		,height: &#039;100px&#039;
	  })//não se usa &#039;;&#039; aqui, para que os métodos possam ser acorrentados
//	  	.children(&#039;div&#039;).each(function(){
//		alturaDiv = $(this).height();
//		if(alturaDiv &gt; alturaMax){
//			alturaMax = alturaDiv;
//		}
//	 })
		.hover(function(){
		altura = $(this).children(&#039;div&#039;).height();
		$(this).stop().animate({
			 width:  &#039;450px&#039;
			,height: altura + 5 + &#039;px&#039;
		});
	},function(){
		$(this).stop().animate({
			 width:  &#039;102px&#039;
			,height: &#039;100px&#039;
		});
	});
});
</pre>
<p>Abaixo está o conteúdo de todos os arquivos criados.</p>
<h3>xHTML</h3>
<pre class="brush: html">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
	&lt;head&gt;
		&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot; /&gt;
		&lt;title&gt;sem t&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;iacute;tulo&lt;/title&gt;
		&lt;link type=&quot;text/css&quot; href=&quot;expand.css&quot; rel=&quot;stylesheet&quot;/&gt;
		&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot;&gt;&lt;/script&gt;
		&lt;script type=&quot;text/javascript&quot; src=&quot;expand.js&quot;&gt;&lt;/script&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;ul id=&quot;expand&quot;&gt;
			&lt;li&gt;
				&lt;img src=&quot;imagens/drupal.jpg&quot; alt=&quot;&quot; width=&quot;80&quot; height=&quot;80&quot; /&gt;
				&lt;h2&gt;Drupal&lt;/h2&gt;
				&lt;p&gt;Drupal is a free and open source[1] Content Management System (CMS) written in PHP. It is used as a back-end system for many different types of websites, ranging from small personal blogs to large corporate and political sites. It is distributed under the GNU GPL.&lt;/p&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;img src=&quot;imagens/expressionengine.jpg&quot; alt=&quot;&quot; width=&quot;80&quot; height=&quot;80&quot; /&gt;
				&lt;h2&gt;Expression Engine&lt;/h2&gt;
				&lt;p&gt;EllisLab is a software developer based in Bend, Oregon which develops applications written in PHP. The company is privately owned and has to date accepted no venture capital funding of any kind. Since the company&#039;s founding in January 2002.&lt;/p&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;img src=&quot;imagens/frog.jpg&quot; alt=&quot;&quot; width=&quot;80&quot; height=&quot;80&quot; /&gt;
				&lt;h2&gt;Frog CMS&lt;/h2&gt;
				&lt;p&gt;Frog CMS is an open source content management system originally developed by the company Philippe Archambault. The design decision taken from its start was to use PHP5 as the language for the software, along with a MySQL database backend, although it also has support for SQLite (version 3). It is a port of the Ruby on Rails CMS known as Radiant, although Frog has begun to take its own development direction.&lt;/p&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;img src=&quot;imagens/joomla.jpg&quot; alt=&quot;&quot; width=&quot;80&quot; height=&quot;80&quot; /&gt;
				&lt;h2&gt;Joomla!&lt;/h2&gt;
				&lt;p&gt;Joomla! is a content management system platform for publishing content on the World Wide Web and intranets as well as a Model-view-controller (MVC) Web Application Development framework. The system includes features such as page caching to improve performance, RSS feeds, printable versions of pages, news flashes, blogs, polls, website searching, and language internationalization. It is written in the PHP programming language and uses the MySQL database system to store information. Joomla is the result of a fork of Mambo. Released under the terms of the GNU General Public License, Joomla is free software.&lt;/p&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;img src=&quot;imagens/magento.jpg&quot; alt=&quot;&quot; width=&quot;80&quot; height=&quot;80&quot; /&gt;
				&lt;h2&gt;Magento&lt;/h2&gt;
				&lt;p&gt;Magento is an Open Source ecommerce web application launched on March 31, 2008. It was created by Varien, building on components of the Zend Framework. Magento is available under the Open Software License version 3.0. Since version 1.1.7 some parts are licensed under the Academic Free License version 3.0. Magento Enterprise Edition, a paid for version of Magento aimed at larger companies, was launched on April 15, 2009.&lt;/p&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;img src=&quot;imagens/modx.jpg&quot; alt=&quot;&quot; width=&quot;80&quot; height=&quot;80&quot; /&gt;
				&lt;h2&gt;MODx&lt;/h2&gt;
				&lt;p&gt;MODx is a free, open source content management system and web application framework for publishing content on the world wide web and intranets.&lt;/p&gt;
			&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/body&gt;
&lt;/html&gt;
</pre>
<h3>CSS</h3>
<pre class="brush: css">
*{margin:0;padding:0;list-style:none;}
div{overflow:hidden; width:450px;}
html{background:#ccc;}
#expand li{float:left;width:390px;height:220px;margin:2px;overflow:hidden;border:1px solid #555;-moz-border-radius:10px;-webkit-border-radius:10px;}
#expand img{border:3px solid #686;background: #aaa;padding:3px;float:left;margin:3px 5px;}
#expand p{font: normal normal normal 11px/1.4 arial,sans-serif;padding:3px 12px 0 5px;margin:5px 0 0 102px;}
#expand h2{font:bold italic normal 15px/1 georgia,serif;margin:3px 0 0 108px;}
#expand li:nth-child(even){background: #dff;}
#expand li:nth-child(odd){background: #fdf;}
</pre>
<h3>jQuery</h3>
<pre class="brush: javascript">
/**
 * @author http://tutorial-city.net/
 */

$(document).ready(function(){

	var $item = $(&#039;#expand li&#039;);
	var alturaMax = 100;

	$item.wrapInner(&#039;&lt;div&gt;&#039;)
		 .css({
		 width:  &#039;102px&#039;
		,height: &#039;100px&#039;
	  })
	  	.hover(function(){
		altura = $(this).children(&#039;div&#039;).height();
		$(this).stop().animate({
			 width:  &#039;450px&#039;
			,height: altura + 5 + &#039;px&#039;
		});
	},function(){
		$(this).stop().animate({
			 width:  &#039;102px&#039;
			,height: &#039;100px&#039;
		});
	});
});
</pre>
<p>O resultado final pode ser visualizado no link abaixo.</p>
<p><a href="http://tutorial-city.net/wp-content/uploads/2009/09/expand.html" target="_blank">Preview Online</a><br />
<a href="http://tutorial-city.net/wp-content/uploads/2009/09/expand.rar" target="_blank">Baixar Arquivos</a></p>
<p>Espero que tenha aprendido bastante com este tutorial, e sinta-se à vontade para comentar e acrescentar ao que foi passado. Abraços e até a próxima!</p>
<img src="http://feeds.feedburner.com/~r/tutorial-city/XDvR/~4/FwFwGSe3D5g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tutorial-city.net/web/criando-menu-expansivel-com-jquery/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		<enclosure url="http://tutorial-city.net/wp-content/uploads/2009/09/expand1.rar" length="2306" type="application/x-rar" /><media:content url="http://tutorial-city.net/wp-content/uploads/2009/09/expand1.rar" fileSize="2306" type="application/x-rar" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Neste tutorial você vai aprender a criar um menu que se expande usando jQuery. Preview Online Baixar Arquivos Em primeiro lugar devemos criar a estrutura necessária para que nosso aplicativo possa viver. Para isso criei um arquivo chamado expand.html, que</itunes:subtitle><itunes:summary>Neste tutorial você vai aprender a criar um menu que se expande usando jQuery. Preview Online Baixar Arquivos Em primeiro lugar devemos criar a estrutura necessária para que nosso aplicativo possa viver. Para isso criei um arquivo chamado expand.html, que será responsável pela estruturação do código, um arquivo chamando expand.css, que será responsável pelo visual de uma [...]</itunes:summary><itunes:keywords>web, css, javascript, jquery, xhtml</itunes:keywords><feedburner:origLink>http://tutorial-city.net/web/criando-menu-expansivel-com-jquery/</feedburner:origLink></item>
		<item>
		<title>Como passar um layout do Photoshop para xHTML/CSS (parte 3)</title>
		<link>http://feedproxy.google.com/~r/tutorial-city/XDvR/~3/AdUT14GwXC8/</link>
		<comments>http://tutorial-city.net/web/como-passar-um-layout-do-photoshop-para-xhtmlcss-parte-3/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 14:58:55 +0000</pubDate>
		<dc:creator>Tutorial City</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[tableless]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://tutorial-city.net/?p=405</guid>
		<description><![CDATA[Nesta terceira, e última, parte mostro como corrigir os bugs do internet explorer, para que o site possa ser visto &#8220;igualmente&#8221; em todos os navegadores. Felizmente dentro de alguns anos esse processo não será mais necessário, mas enquanto isso não acontece nós ainda devemos compensar para os navegadores mais antigos e fora dos padrões.


Downlaod dos [...]]]></description>
			<content:encoded><![CDATA[<p>Nesta terceira, e última, parte mostro como corrigir os bugs do internet explorer, para que o site possa ser visto &#8220;igualmente&#8221; em todos os navegadores. Felizmente dentro de alguns anos esse processo não será mais necessário, mas enquanto isso não acontece nós ainda devemos compensar para os navegadores mais antigos e fora dos padrões.<span id="more-405"></span><br />
<br />
<object width="640" height="400"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6221048&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6221048&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="400"></embed></object></p>
<p><a href='http://tutorial-city.net/wp-content/uploads/2009/08/ie-css.rar'>Downlaod dos arquivos criados</a></p>
<img src="http://feeds.feedburner.com/~r/tutorial-city/XDvR/~4/AdUT14GwXC8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tutorial-city.net/web/como-passar-um-layout-do-photoshop-para-xhtmlcss-parte-3/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		<enclosure url="http://vimeo.com/moogaloop.swf?clip_id=6221048&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" length="-1" type="application/x-shockwave-flash" /><media:content url="http://vimeo.com/moogaloop.swf?clip_id=6221048&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Nesta terceira, e última, parte mostro como corrigir os bugs do internet explorer, para que o site possa ser visto &amp;#8220;igualmente&amp;#8221; em todos os navegadores. Felizmente dentro de alguns anos esse processo não será mais necessário, mas enquanto isso</itunes:subtitle><itunes:summary>Nesta terceira, e última, parte mostro como corrigir os bugs do internet explorer, para que o site possa ser visto &amp;#8220;igualmente&amp;#8221; em todos os navegadores. Felizmente dentro de alguns anos esse processo não será mais necessário, mas enquanto isso não acontece nós ainda devemos compensar para os navegadores mais antigos e fora dos padrões. Downlaod dos [...]</itunes:summary><itunes:keywords>web, css, desenvolvimento, tableless, xhtml</itunes:keywords><feedburner:origLink>http://tutorial-city.net/web/como-passar-um-layout-do-photoshop-para-xhtmlcss-parte-3/</feedburner:origLink></item>
		<item>
		<title>Meu tema do Aptana</title>
		<link>http://feedproxy.google.com/~r/tutorial-city/XDvR/~3/hYMpCl1zE_U/</link>
		<comments>http://tutorial-city.net/web/meu-tema-do-aptana/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 01:17:26 +0000</pubDate>
		<dc:creator>Tutorial City</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[aptana]]></category>
		<category><![CDATA[ide]]></category>

		<guid isPermaLink="false">http://tutorial-city.net/?p=391</guid>
		<description><![CDATA[Não lembro ao certo quando comecei a usar o Aptana Studio, mas desde que comecei eu gostei muito dessa IDE, não só pelo fato de ser gratuita, mas também pelo fato de ser super poderosa e altamente customizável.

Várias pessoas já me perguntaram onde eu peguei meu tema atual, um tema escuro. A verdade é que [...]]]></description>
			<content:encoded><![CDATA[<p>Não lembro ao certo quando comecei a usar o Aptana Studio, mas desde que comecei eu gostei muito dessa IDE, não só pelo fato de ser gratuita, mas também pelo fato de ser super poderosa e altamente customizável.</p>
<p><span id="more-391"></span></p>
<p>Várias pessoas já me perguntaram onde eu peguei meu tema atual, um tema escuro. A verdade é que eu peguei um tema escuro (dark theme) e fiz algumas modificações que me agradavam.</p>
<p>O endereço do tema base que eu usei é o seguinte: <a href="http://gueschla.com/labs/green-chaud/">http://gueschla.com/labs/green-chaud/</a></p>
<p>Caso você queira baixa-lo e fazer suas própria modificações, fique à vontade, mas caso queira usar o mesmo tema que eu estou usando, você pode basta fazer o download no link seguinte: <a href="http://tutorial-city.net/wp-content/uploads/2009/08/Aptana-Tema-Escuro.rar">Aptana &#8211; Tema Escuro</a></p>
<p>O arquivo acima está comprimido. Quando descomprimi-lo verá que existe uma pasta, e dentro desta pasta haverá vários arquivos, que são os temas de cada linguagem (como pode-se ver pelo nome). Para instalar você precisa fazer o seguinte: Primeiro abra o Aptana, e em seguida vá até o menu <em>Window</em> e execute o comando <em>Preferences</em>.</p>
<div class="image"><img src="http://tutorial-city.net/wp-content/uploads/2009/08/aptana-1.gif" alt="aptana-1" title="aptana-1" width="324" height="396" class="aligncenter size-full wp-image-393" /></div>
<p>Em seguida clique na pequena seta que fica ao lado de <em>Aptana</em>, e depois em <em>editors</em>.</p>
<div class="image">
<img src="http://tutorial-city.net/wp-content/uploads/2009/08/aptana-2.gif" alt="aptana-2" title="aptana-2" width="242" height="245" class="aligncenter size-full wp-image-394" />
</div>
<p>Nesse momento você deverá ver várias opções de linguagens. Começando por CSS, clique na pequena seta que fica ao seu lado, e em seguida clique em <em>Colors</em>.</p>
<div class="image">
<img src="http://tutorial-city.net/wp-content/uploads/2009/08/aptana-3.gif" alt="aptana-3" title="aptana-3" width="262" height="276" class="aligncenter size-full wp-image-395" />
</div>
<p>No painel do lado direito, clique em <em>Import</em>, e importe o arquivo chamado CSS.col (um dos arquivos que estavam comprimidos).</p>
<div class="image">
<img src="http://tutorial-city.net/wp-content/uploads/2009/08/aptana-4.gif" alt="aptana-4" title="aptana-4" width="458" height="249" class="aligncenter size-full wp-image-396" />
</div>
<p>Faça este mesmo procedimento para HTML, Javascript, e XML. Para PHP tem de se tomar cuidado, pois existem duas opções, <em>Colors:PHP</em> e <em>Colors:PHPDoc</em>, a opção a ser escolhida deve ser <em>Colors:PHP</em>, e em seguida o processo é idêntico aos anteriores.</p>
<div class="image">
<img src="http://tutorial-city.net/wp-content/uploads/2009/08/aptana-5.gif" alt="aptana-5" title="aptana-5" width="375" height="270" class="aligncenter size-full wp-image-397" />
</div>
<p>Assim que finalizar você clica em Ok na parte inferior da tela que se abriu, e seus temas já estarão ativos.</p>
<div class="image">
<img src="http://tutorial-city.net/wp-content/uploads/2009/08/aptana-6.gif" alt="aptana-6" title="aptana-6" width="328" height="126" class="aligncenter size-full wp-image-398" />
</div>
<p>Caso queira retornar ao tema padrão, basta clicar em <em>Restore Defaults</em>.<br />
Você também pode brincar modificando as cores a seu bel prazer, então vai ficar exatamente como você quer.</p>
<p>Espero que este tema seja útil para você. Não se esqueça que qualquer dúvida pode ser postada aí em baixo.<br />Abraços e até a próxima!</p>
<img src="http://feeds.feedburner.com/~r/tutorial-city/XDvR/~4/hYMpCl1zE_U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tutorial-city.net/web/meu-tema-do-aptana/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://tutorial-city.net/web/meu-tema-do-aptana/</feedburner:origLink></item>
		<item>
		<title>Como passar um layout do Photoshop para xHTML/CSS (parte 2)</title>
		<link>http://feedproxy.google.com/~r/tutorial-city/XDvR/~3/KTS9ZYbsc_A/</link>
		<comments>http://tutorial-city.net/web/como-passar-um-layout-do-photoshop-para-xhtml-css-parte-2/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 12:06:30 +0000</pubDate>
		<dc:creator>Tutorial City</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[tableless]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://tutorial-city.net/?p=356</guid>
		<description><![CDATA[Nesta parte faço todo o design com CSS, e como bônus ainda mostro algumas técnicas no Photoshop e no Firefox sobre como agilizar o trabalho.
Na parte três farei o layout ficar compatível com o falecido internet explorer 6(e também a versão 7 e 8).
Como passar um layout do Photoshop para xHTML/CSS (parte 2)

Baixar Arquivos
]]></description>
			<content:encoded><![CDATA[<p>Nesta parte faço todo o design com CSS, e como bônus ainda mostro algumas técnicas no Photoshop e no Firefox sobre como agilizar o trabalho.<span id="more-356"></span><br />
Na parte três farei o layout ficar compatível com o falecido internet explorer 6(e também a versão 7 e 8).</p>
<h3>Como passar um layout do Photoshop para xHTML/CSS (parte 2)</h3>
<p><object width="640" height="400"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6112721&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6112721&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="400"></embed></object></p>
<p><img src="http://tutorial-city.net/wp-content/themes/starkers/style/images/download.png" alt="baixe os arquivos" /><br /><a href='http://tutorial-city.net/wp-content/uploads/2009/08/Trendy-Paper.rar'>Baixar Arquivos</a></p>
<img src="http://feeds.feedburner.com/~r/tutorial-city/XDvR/~4/KTS9ZYbsc_A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tutorial-city.net/web/como-passar-um-layout-do-photoshop-para-xhtml-css-parte-2/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		<enclosure url="http://vimeo.com/moogaloop.swf?clip_id=6112721&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" length="-1" type="application/x-shockwave-flash" /><media:content url="http://vimeo.com/moogaloop.swf?clip_id=6112721&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Nesta parte faço todo o design com CSS, e como bônus ainda mostro algumas técnicas no Photoshop e no Firefox sobre como agilizar o trabalho. Na parte três farei o layout ficar compatível com o falecido internet explorer 6(e também a versão 7 e 8). Como pa</itunes:subtitle><itunes:summary>Nesta parte faço todo o design com CSS, e como bônus ainda mostro algumas técnicas no Photoshop e no Firefox sobre como agilizar o trabalho. Na parte três farei o layout ficar compatível com o falecido internet explorer 6(e também a versão 7 e 8). Como passar um layout do Photoshop para xHTML/CSS (parte 2) Baixar Arquivos </itunes:summary><itunes:keywords>web, css, desenvolvimento, tableless, xhtml</itunes:keywords><feedburner:origLink>http://tutorial-city.net/web/como-passar-um-layout-do-photoshop-para-xhtml-css-parte-2/</feedburner:origLink></item>
		<item>
		<title>Como passar um layout do Photoshop para xHTML/CSS (parte 1)</title>
		<link>http://feedproxy.google.com/~r/tutorial-city/XDvR/~3/UKoV6VdiXn8/</link>
		<comments>http://tutorial-city.net/web/como-passar-um-layout-do-photoshop-para-xhtml-css-parte-1/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 20:02:30 +0000</pubDate>
		<dc:creator>Tutorial City</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[tableless]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://tutorial-city.net/?p=333</guid>
		<description><![CDATA[Neste tutorial você os detalhes de como transformar um layout do photoshop (ou qualquer outro programa) para xHTML válido, seguindo os padrões mais atuais da web. Nesta primeira parte abordo somente a parte de xHTML, já na segunda pretendo abordar os detalhes de como fatirar o layout e usar CSS para deixar o visual o [...]]]></description>
			<content:encoded><![CDATA[<p>Neste tutorial você os detalhes de como transformar um layout do photoshop (ou qualquer outro programa) para xHTML válido, seguindo os padrões mais atuais da web.<span id="more-333"></span> Nesta primeira parte abordo somente a parte de xHTML, já na segunda pretendo abordar os detalhes de como fatirar o layout e usar CSS para deixar o visual o mais parecido possível com o proposto.</p>
<h3>Como passar um layout do Photoshop para xHTML/CSS (parte 1)</h3>
<p><object width="640" height="400"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5482921&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=c9ff23&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=5482921&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=c9ff23&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="400"></embed></object>
<p><a href="http://vimeo.com/5482921">PSD para xHTML/CSS &#8211; parte 1</a> from <a href="http://vimeo.com/tutorialcity">Tutorial City</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p><img src="http://tutorial-city.net/wp-content/themes/starkers/style/images/download.png" alt="baixe os arquivos" /><br /><a href='http://tutorial-city.net/wp-content/uploads/2009/06/trendy-paper-layout.rar'>Baixar arquivos</a></p>
<img src="http://feeds.feedburner.com/~r/tutorial-city/XDvR/~4/UKoV6VdiXn8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tutorial-city.net/web/como-passar-um-layout-do-photoshop-para-xhtml-css-parte-1/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		<enclosure url="http://vimeo.com/moogaloop.swf?clip_id=5482921&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=c9ff23&amp;amp;fullscreen=1" length="-1" type="application/x-shockwave-flash" /><media:content url="http://vimeo.com/moogaloop.swf?clip_id=5482921&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=c9ff23&amp;amp;fullscreen=1" type="application/x-shockwave-flash" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Neste tutorial você os detalhes de como transformar um layout do photoshop (ou qualquer outro programa) para xHTML válido, seguindo os padrões mais atuais da web. Nesta primeira parte abordo somente a parte de xHTML, já na segunda pretendo abordar os deta</itunes:subtitle><itunes:summary>Neste tutorial você os detalhes de como transformar um layout do photoshop (ou qualquer outro programa) para xHTML válido, seguindo os padrões mais atuais da web. Nesta primeira parte abordo somente a parte de xHTML, já na segunda pretendo abordar os detalhes de como fatirar o layout e usar CSS para deixar o visual o [...]</itunes:summary><itunes:keywords>web, css, desenvolvimento, tableless, xhtml</itunes:keywords><feedburner:origLink>http://tutorial-city.net/web/como-passar-um-layout-do-photoshop-para-xhtml-css-parte-1/</feedburner:origLink></item>
		<item>
		<title>Lista completa de atalhos para várias versões de Photoshop</title>
		<link>http://feedproxy.google.com/~r/tutorial-city/XDvR/~3/1heOuQa32bo/</link>
		<comments>http://tutorial-city.net/photoshop/lista-completa-de-atalhos-para-varias-versoes-de-photoshop/#comments</comments>
		<pubDate>Sat, 16 May 2009 15:23:34 +0000</pubDate>
		<dc:creator>Tutorial City</dc:creator>
				<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[atalhos]]></category>

		<guid isPermaLink="false">http://tutorial-city.net/?p=300</guid>
		<description><![CDATA[Navegando pela internet, me deparei com um site que oferece uma lista maravilhosa com dezenas de atalhos para várias versões de Photoshop. Você pode baixar um arquivo contendo todos os atalhos (inúmeros deles customizados) e um arquivo em PDF com uma referência a estes atalhos.

Para você ter menos trabalho vou disponibilizar aqui os links pra [...]]]></description>
			<content:encoded><![CDATA[<p>Navegando pela internet, me deparei com um site que oferece uma lista maravilhosa com dezenas de atalhos para várias versões de Photoshop. Você pode baixar um arquivo contendo todos os atalhos (inúmeros deles customizados) e um arquivo em PDF com uma referência a estes atalhos.</p>
<p><span id="more-300"></span><br />
Para você ter menos trabalho vou disponibilizar aqui os links pra download destes arquivos assim como as instruções para instalação:</p>
<dl>
<dt>
<h3>Photoshop CS4</h3>
</dt>
<dd>
<p><a href="http://morris-photographics.com/photoshop/shortcuts/downloads/PSCS4_Keyboard_Shortcuts_PC.pdf" target="_blank">Lista PC</a><br />
<a href="http://morris-photographics.com/photoshop/shortcuts/downloads/PSCS4_Keyboard_Shortcuts_Mac.pdf" target="_blank">Lista Mac</a><br />
<strong><em><a href="http://morris-photographics.com/photoshop/shortcuts/downloads/PSCS4_Trevors_Shortcuts.zip" target="_blank">Baixar atalhos</a></em></strong></p>
<h4>Instalação</h4>
<ol>
<li> Copie o arquivo <em>Trevors CS4 Keyboard Shortcuts.kys</em> para o seguinte local:
<ul>
<li><strong>PC (Windows XP):</strong> C:\Documents and Settings\<em>nome do seu usuário</em>\Dados de Aplicativos\Adobe\Adobe Photoshop CS4\Presets\Keyboard Shortcuts\</li>
<li><strong>PC (Windows Vista):</strong> C:\Users\<em>nome do seu usuário</em>\AppData\Roaming\Adobe\Adobe Photoshop CS4\Presets\Keyboard Shortcuts\</li>
<li><strong>Mac:</strong> /Users/<em>nome do seu usuário</em>/Library/Application Support/Adobe/Adobe Photoshop CS4/Presets/Keyboard Shortcuts/</li>
</ul>
</li>
<li>Reinicie o Photoshop (caso esteja aberto)</li>
<li>Vá ao menu <em>Edit &gt; Keyboard Shortcuts</em></li>
<li>Selecione <em>Trevors CS4 Keyboard Shortcuts</em> no menu drop down</li>
<li>Clique em <em>Ok</em> para aplicar a mudança</li>
</ol>
</dd>
<dt>
<h3>Photoshop CS3</h3>
</dt>
<dd>
<p><a href="http://morris-photographics.com/photoshop/shortcuts/downloads/PSCS3_Keyboard_Shortcuts_PC.pdf" target="_blank">Lista PC</a><br />
<a href="http://morris-photographics.com/photoshop/shortcuts/downloads/PSCS3_Keyboard_Shortcuts_Mac.pdf" target="_blank">Lista Mac</a><br />
<strong><em><a href="http://morris-photographics.com/photoshop/shortcuts/downloads/PSCS3_Trevors_Shortcuts.zip" target="_blank">Baixar atalhos</a></em></strong></p>
<h4>Instalação</h4>
<ol>
<li>Copie este arquivo para o seguinte local: <em>Adobe Photoshop CS3\Presets\Keyboard Shortcuts\</em></li>
<li>Reinicie o Photoshop</li>
<li>Vá ao menu <em>Edit &gt; Keyboard Shortcuts</em> e selecione <em>Trevors CS3 Keyboard Shortcuts</em> no menu drop down</li>
<li>Clique em <em>Ok</em> para aplicar a mudança</li>
</ol>
</dd>
<dt>
<h3>Photoshop CS2</h3>
</dt>
<dd> <a href="http://morris-photographics.com/photoshop/shortcuts/downloads/PSCS2_Keyboard_Shortcuts_PC.pdf" target="_blank">Lista PC</a><br />
<a href="http://morris-photographics.com/photoshop/shortcuts/downloads/PSCS2_Keyboard_Shortcuts_Mac.pdf" target="_blank">Lista Mac</a><br />
<strong><em><a href="http://morris-photographics.com/photoshop/shortcuts/downloads/PSCS2_Trevors_Shortcuts.zip" target="_blank">Baixar atalhos</a></em></strong></p>
<h4>Instalação</h4>
<ol>
<li>Copie este arquivo para o seguinte local: <em>Adobe Photoshop CS2\Presets\Keyboard Shortcuts\</em></li>
<li>Reinicie o Photoshop</li>
<li>Vá ao menu <em>Edit &gt; Keyboard Shortcuts</em> e selecione <em>Trevors CS2 Keyboard Shortcuts</em> no menu drop down</li>
<li>Clique em <em>Ok</em> para aplicar a mudança</li>
</ol>
</dd>
<dt>
<h3>Photoshop CS</h3>
</dt>
<dd>
<p> <a href="http://morris-photographics.com/photoshop/shortcuts/downloads/PSCS_Keyboard_Shortcuts_PC.pdf" target="_blank">Lista PC</a><br />
<a href="http://morris-photographics.com/photoshop/shortcuts/downloads/PSCS_Keyboard_Shortcuts_Mac.pdf" target="_blank">Lista Mac</a><br />
<strong><em><a href="http://morris-photographics.com/photoshop/shortcuts/downloads/PSCS_Trevors_Shortcuts.zip" target="_blank">Baixar atalhos</a></em></strong></p>
<h4>instalação</h4>
<ol>
<li>Feche o Photoshop (caso esteja aberto)</li>
<li>Copie <em>Trevor&#8217;s Keyboard Shortcuts.kys</em> para sua pasta de <em>atalhos de teclado</em>, onde o local padrão de instalação no Windows é: <em>C:\Program Files\Adobe\Photoshop CS\Presets\Keyboard Shortcuts\</em></li>
<li>Inicie o Photoshop</li>
<li>Vá em <em>Edit &gt; Keyboard Shortcuts</em></li>
<li>Selecione <em>Trevor&#8217;s Keyboard Shortcuts.kys</em> no menu drop down</li>
<li>clique em <em>Ok</em> para aplicar as mudanças</li>
</ol>
</dd>
<dt>
<h3>Photoshop 7</h3>
</dt>
<dd> <a href="http://morris-photographics.com/photoshop/shortcuts/downloads/PS7_Keyboard_Shortcuts.pdf" target="_blank">Lista PC</a> </dd>
</dl>
<p>Para maiores informações você pode acessar o site do Trevor <a href="http://morris-photographics.com/photoshop/shortcuts/index.html">clicando aqui</a>.</p>
<p>Divirta-se <img src='http://tutorial-city.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/tutorial-city/XDvR/~4/1heOuQa32bo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tutorial-city.net/photoshop/lista-completa-de-atalhos-para-varias-versoes-de-photoshop/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<enclosure url="http://morris-photographics.com/photoshop/shortcuts/downloads/PSCS4_Keyboard_Shortcuts_PC.pdf" length="46310" type="application/pdf" /><media:content url="http://morris-photographics.com/photoshop/shortcuts/downloads/PSCS4_Keyboard_Shortcuts_PC.pdf" fileSize="46310" type="application/pdf" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Navegando pela internet, me deparei com um site que oferece uma lista maravilhosa com dezenas de atalhos para várias versões de Photoshop. Você pode baixar um arquivo contendo todos os atalhos (inúmeros deles customizados) e um arquivo em PDF com uma refe</itunes:subtitle><itunes:summary>Navegando pela internet, me deparei com um site que oferece uma lista maravilhosa com dezenas de atalhos para várias versões de Photoshop. Você pode baixar um arquivo contendo todos os atalhos (inúmeros deles customizados) e um arquivo em PDF com uma referência a estes atalhos. Para você ter menos trabalho vou disponibilizar aqui os links pra [...]</itunes:summary><itunes:keywords>Photoshop, atalhos</itunes:keywords><feedburner:origLink>http://tutorial-city.net/photoshop/lista-completa-de-atalhos-para-varias-versoes-de-photoshop/</feedburner:origLink></item>
		<item>
		<title>Photoshop para leigos – módulo 2 – parte 7</title>
		<link>http://feedproxy.google.com/~r/tutorial-city/XDvR/~3/ARbw0FZerms/</link>
		<comments>http://tutorial-city.net/photoshop/photoshop-para-leigos-modulo-2-parte-7/#comments</comments>
		<pubDate>Sat, 09 May 2009 14:05:26 +0000</pubDate>
		<dc:creator>Tutorial City</dc:creator>
				<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[básico]]></category>

		<guid isPermaLink="false">http://tutorial-city.net/?p=297</guid>
		<description><![CDATA[Neste tutorial você aprenderá a usar o painel de história

Trabalhando com o painel de história

]]></description>
			<content:encoded><![CDATA[<p>Neste tutorial você aprenderá a usar o painel de história</p>
<p><span id="more-297"></span></p>
<h3>Trabalhando com o painel de história</h3>
<p><embed src="http://tutorial-city.net/wp-content/themes/starkers/style/video/ps-mod2-7/ps-mod2-7_controller.swf" type="application/x-shockwave-flash" width="960" height="617" allowscriptaccess="always" allowfullscreen="true"></embed></p>
<img src="http://feeds.feedburner.com/~r/tutorial-city/XDvR/~4/ARbw0FZerms" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tutorial-city.net/photoshop/photoshop-para-leigos-modulo-2-parte-7/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<enclosure url="http://tutorial-city.net/wp-content/themes/starkers/style/video/ps-mod2-7/ps-mod2-7_controller.swf" length="408754" type="application/x-shockwave-flash" /><media:content url="http://tutorial-city.net/wp-content/themes/starkers/style/video/ps-mod2-7/ps-mod2-7_controller.swf" fileSize="408754" type="application/x-shockwave-flash" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Neste tutorial você aprenderá a usar o painel de história Trabalhando com o painel de história </itunes:subtitle><itunes:summary>Neste tutorial você aprenderá a usar o painel de história Trabalhando com o painel de história </itunes:summary><itunes:keywords>Photoshop, básico</itunes:keywords><feedburner:origLink>http://tutorial-city.net/photoshop/photoshop-para-leigos-modulo-2-parte-7/</feedburner:origLink></item>
	<media:rating>nonadult</media:rating></channel>
</rss>
