<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Internet Affiliate Marketing &#187; tutorial</title>
	<atom:link href="http://blue.muiomuio.net/tag/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://blue.muiomuio.net</link>
	<description>Find great deals online</description>
	<lastBuildDate>Tue, 24 Jan 2012 12:43:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PHP tutorial: Criar uma Tag Cloud</title>
		<link>http://blue.muiomuio.net/php-tutorial-criar-uma-tag-cloud/</link>
		<comments>http://blue.muiomuio.net/php-tutorial-criar-uma-tag-cloud/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 20:21:17 +0000</pubDate>
		<dc:creator>Lounge22</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://blue.muiomuio.net/?p=805</guid>
		<description><![CDATA[Uma das formas de navegação introduzidas com o surgimento da Web 2.0 foi a navegação através de Tags. Uma tag é nada mais nada menos que uma keyword que define algo. Se escrevo num site de informática sobre um processador, esse artigo pode ser marcado com uma keyword processadores, desta forma a pesquisa por artigos [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das formas de navegação introduzidas com o surgimento da Web 2.0 foi a navegação através de Tags.<br />
Uma tag é nada mais nada menos que uma keyword que define algo. Se escrevo num site de informática sobre um processador, esse artigo pode ser marcado com uma keyword processadores, desta forma a pesquisa por artigos relacionados com processadores é simplificada.</p>
<p>Criar uma tag cloud não é um processo complexo. Básicamente precisas de ter uma fonte onde vais buscar as tags, normalmente é um vector onde são definidas e depois armazenadas em base de dados e a partir daí trabalhas o código. Vamos então começar.</p>
<p><code>< ?php<br />
// cria a ligação á base de dados<br />
$query = "SELECT coluna_da_bd AS tag, COUNT(id) AS quantity<br />
FROM tabela<br />
GROUP BY coluna_da_bd<br />
ORDER BY coluna_da_bd ASC";<br />
$result = mysql_query($query);<br />
</code></p>
<p>No código em cima vamos seleccionar qual é a coluna da base de dados que vamos usar para definir as tags.</p>
<p><code>while ($row = mysql_fetch_array($result)) {<br />
    $tags[$row['tag']] = $row['quantity'];<br />
}<br />
</code></p>
<p>$tags[$row['tag']] &#8211; vector $tag recebe as keywords da base de dados.<br />
$row['quantity'] &#8211; devolve a quantidade de vezes que a keyword existe.</p>
<p>Exemplo</p>
<p>$tag[processadores] = 2; &#8211; A palavra processadores existe 2x na pesquisa efectuada.<br />
A quantidade de vezes que a palavra existe é útil para definir o tamanho da tag.</p>
<p><code><br />
$max_size = 300;<br />
$min_size = 100;<br />
</code></p>
<p>Aqui defines o tamanho mínimo e máximo das fontes. Para que funcione bem com qualquer estilo definido no CSS prefiro interpretar os valores em percentagem (%) em vez de pixels ou qualquer outra medida.</p>
<p><code>$max_qty = max(array_values($tags));<br />
$min_qty = min(array_values($tags));<br />
</code></p>
<p>Agora é preciso definir quais as keywords com os valores máximos e mínimos do vector $tags e saber qual é o alcance desses valores de forma a podermos calcular o tamanho da fonte.</p>
<p><code>$spread = $max_qty - $min_qty;<br />
if (0 == $spread) {<br />
    $spread = 1;<br />
}</code></p>
<p>Uma vez feito isso vamos agora determinar o tamanho da fonte. </p>
<p><code>$step = ($max_size - $min_size)/($spread);<br />
foreach ($tags as $key => $value) {<br />
    // Vamos encontrar o $value superior a $min_qty<br />
    // multiplicamos esse valor pelo tamanho da fonte ($size)<br />
    // E adicionamos o $min_size definido anteriormente<br />
    $size = $min_size + (($value - $min_qty) * $step);<br />
    // Colocamos o valor em forma de poder ser calculado em percentagem (%)<br />
    $size = ceil($size);</code></p>
<p><code>    // Adicionar link ás tags<br />
    echo '&lt;a href="#" style="font-size: '.$size.'%"';<br />
    // ajustar o tooltip gerado pelo atributo title do link<br />
    echo ' title="'.$value.' ( '.$key.' )"';<br />
    echo '>'.$key.' ';<br />
}<br />
?><br />
</code></p>
<p>E pronto se tudo correu bem deverás ter uma tag cloud. Para limitar os resultados mostrados na tagcloud basta definires o limite quando fazes a consulta á base de dados:</p>
<p><code>$query = "SELECT coluna_da_bd AS tag, COUNT(id) AS quantity LIMIT 25</code><br />
Desta forma a tua tagcloud mostra 25 tags.</p>
]]></content:encoded>
			<wfw:commentRss>http://blue.muiomuio.net/php-tutorial-criar-uma-tag-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial PHP: Techorati Inbound Links</title>
		<link>http://blue.muiomuio.net/tutorial-php-techorati-inbound-links/</link>
		<comments>http://blue.muiomuio.net/tutorial-php-techorati-inbound-links/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 10:50:56 +0000</pubDate>
		<dc:creator>Lounge22</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[technorati]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://blue.muiomuio.net/?p=770</guid>
		<description><![CDATA[O Technorati Ã© um dos mais conhecidos agregadores de conteÃºdos de blogs em toda a web que pussui uma API. No tutorial de hoje vou mostrar com Ã© fÃ¡cil usar a API do Technorati para mostrar o nÃºmero de reacÃ§Ãµes (links) Ã¡ tua pÃ¡gina. Para poderes usar a API do Technorati precisas da API key. [...]]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://www.technorati.com">Technorati</a> Ã© um dos mais conhecidos agregadores de conteÃºdos de blogs em toda a web que pussui uma API.</p>
<p>No tutorial de hoje vou mostrar com Ã© fÃ¡cil usar a <a href="http://technorati.com/developers/api/">API do Technorati</a> para mostrar o nÃºmero de reacÃ§Ãµes (links) Ã¡ tua pÃ¡gina.</p>
<p>Para poderes usar a API do Technorati precisas da <a href="http://technorati.com/developers/apikey.html">API key</a>. Para isso tens de te registar no Technorati depois procura pela documentaÃ§Ã£o da API e lÃ¡ poderÃ¡s obter a tua API Key.</p>
<p>Uma vez que jÃ¡ tens a tua API key cria uma constante usando a funÃ§Ã£o define() que te permitirÃ¡ passar a variÃ¡vel para outras funÃ§Ãµes sem teres de a declarar global ou escrever a API Key vezes sem conta.</p>
<p>Para definires a tua constante basta adicionares esta linha onde XXXXXXXX Ã© obviamente a tua API Key:</p>
<pre lang="php">< ?php define('TECHNORATI_KEY','xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); ?></pre>
<p>No exemplo que se segue o cÃ³digo apresentado serÃ¡ para mostrar as recÃ§Ãµes para a pÃ¡gina em questÃ£o. </p>
<pre lang="php" line="1">
< ?php
    function get_technorati_reactions($page=NULL){
        $page = empty($page) ? 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] : $page;

        $apicall = 'http://api.technorati.com/cosmos';
        $apicall .= '?key='.TECHNORATI_KEY;
        $apicall .= '&#038;url='.urlencode($page);
        $apicall .= '&#038;format=xml';
        $result = simplexml_load_file($apicall);

        return intval($result->document->result->inboundlinks);
    }
?>
</pre>
<p>O script faz isto de forma automÃ¡tica, caso queiras restar terÃ¡s de alterar</p>
<pre lang="php">$page =
empty($page) ? 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] : $page;</pre>
<p>para</p>
<pre lang="php">
empty($page) ? 'http://blue.muiomuio.net' : $page;</pre>
<p>Neste caso usei o endereÃ§o do meu blog, podes usar o endereÃ§o que quiseres.</p>
<p>O script em cima sÃ£o as funÃ§Ãµes para obter os resultados, falta agora mostra-los na pÃ¡gina:</p>
<pre lang="php" line="1">
< ?php
    #Para a pÃ¡gina que estÃ¡ a ser vista
    echo 'Reac&ccedil;&otilde;es:  ', get_technorati_reactions();

    #Usando a funÃ§Ã£o para outra pÃ¡gina que nÃ£o a que estÃ¡ a ser visualizada
    $count = get_technorati_reactions('http://muiomuio.net');
    echo 'Muiomuio.net tem', $count ,' Reac&ccedil;&otilde;es';
?>
</pre>
<p>Este script vai buscar o nÃºmero de reacÃ§Ãµes (links) no <a href="http://technorati.com">technorati</a> que pode ser usado como medidor de popularidade. </p>
]]></content:encoded>
			<wfw:commentRss>http://blue.muiomuio.net/tutorial-php-techorati-inbound-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial PHP: Leitores RSS do Feedburner</title>
		<link>http://blue.muiomuio.net/tutorial-php-leitores-rss-do-feedburner/</link>
		<comments>http://blue.muiomuio.net/tutorial-php-leitores-rss-do-feedburner/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 13:27:11 +0000</pubDate>
		<dc:creator>Lounge22</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[feed count]]></category>
		<category><![CDATA[feedburner]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://blue.muiomuio.net/?p=765</guid>
		<description><![CDATA[Este tutorial vai ensinar como mostrar os leitores RSS do feedburner em texto. O script usa a API do Feedburner. Podes ver um exemplo na Smashing Magazine na sidebar no topo direito onde usaram o script para criar um botÃ£o personalizado com o nÃºmero de leitores RSS. < ?php //a linha que se segue vai [...]]]></description>
			<content:encoded><![CDATA[<p>Este tutorial vai ensinar como mostrar os leitores RSS do feedburner em texto. O script usa a API do Feedburner.</p>
<p>Podes ver um exemplo na <a href="http://www.smashingmagazine.com/">Smashing Magazine</a> na sidebar no topo direito onde usaram o script para criar um botÃ£o personalizado com o nÃºmero de leitores RSS.</p>
<pre lang="php" line="1">
< ?php
//a linha que se segue vai buscar o numero de leitores a tua feed (feed count)
$whaturl="http://api.feedburner.com/awareness/1.0/GetFeedData?uri=http://feeds.feedburner.com/bluemuiomuio";

//inicializa o a sessÃ£o do Curl
$ch = curl_init();

//devolve o valor em vez de imprimir no browser
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//especifica o URL
curl_setopt($ch, CURLOPT_URL, $whaturl);

//executa um fetch para ir buscar o valor dos leitores feed
$data = curl_exec($ch);
//Fecha a sessÃ£o do cUrl
curl_close($ch);

$xml = new SimpleXMLElement($data);
$fb = $xml->feed->entry['circulation'];

//finito
?>
</pre>
<p>Agora para colocares o nÃºmero de leitores na pÃ¡gina basta fazeres um simples echo da variÃ¡vel $fb:</p>
<pre lang="php">< ?php echo $fb;?></pre>
<p>Ã‰ importante relembrar que Ã© necessÃ¡rio alterar o endereÃ§o da tua feed na variÃ¡vel $whaturl <img src='http://blue.muiomuio.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blue.muiomuio.net/tutorial-php-leitores-rss-do-feedburner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ValidaÃ§Ã£o de campos com JavaScript</title>
		<link>http://blue.muiomuio.net/validacao-de-campos-com-javascript/</link>
		<comments>http://blue.muiomuio.net/validacao-de-campos-com-javascript/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 21:50:16 +0000</pubDate>
		<dc:creator>Lounge22</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://blue.muiomuio.net/?p=748</guid>
		<description><![CDATA[Em junho escrevi um artigo sobre a validaÃ§Ã£o de campos usando o jQuery. Ã‰ uma forma eficaz, pratica e moderna mas que nem sempre o cliente gosta. Esta semana vi-me forÃ§ado a criar uma validaÃ§Ã£o de campos Ã¡ maneira antiga devido a uma escolha do cliente. O cÃ³digo que se segue Ã© bastante bÃ¡sico portanto [...]]]></description>
			<content:encoded><![CDATA[<p>Em junho escrevi um artigo sobre a <a href="http://blue.muiomuio.net/validar-formularios-com-jquery/">validaÃ§Ã£o de campos usando o jQuery</a>. Ã‰ uma forma eficaz, pratica e moderna mas que nem sempre o cliente gosta.<br />
Esta semana vi-me forÃ§ado a criar uma validaÃ§Ã£o de campos Ã¡ maneira antiga devido a uma escolha do cliente.</p>
<p>O cÃ³digo que se segue Ã© bastante bÃ¡sico portanto se algum especialista em javascript quiser ajudar a criar um cÃ³digo igualmente simples e eficaz com uma estrutura melhor eu agradeÃ§o.</p>
<p><code>&lt;SCRIPT&gt;<br />
function validate() {<br />
var nome=form1.nome.value;<br />
var empresa=form1.empresa.value;<br />
var telefone=form1.telefone.value;<br />
if (nome=='') {<br />
alert('O seu Nome Ã© um campo obrigatÃ³rio');<br />
return false;<br />
}<br />
if (empresa=='') {<br />
alert('Por favor indique qual a Empresa');<br />
return false;<br />
}<br />
if (telefone=='') {<br />
alert('O campo Telefone Ã© um campo obrigatÃ³rio');<br />
return false;<br />
}<br />
}<br />
&lt;/SCRIPT&gt;<br />
</code></p>
<p>Na primeira parte declaro variÃ¡veis caso tenha de adicionar mais cÃ³digo para trabalhar com o valor dos campos. A seguir faÃ§o a comparaÃ§Ã£o caso os campos estejam vazios lanÃ§a o alerta.<br />
De forma a tornar o formulÃ¡rio mais coeso deveria verificar tambÃ©m se os campos nÃ£o tiverem um determinado numero de caracteres para nÃ£o validar.<br />
Por agora este cÃ³digo chega para o que pretendo que Ã© lanÃ§ar um alert caso o cliente nÃ£o preencha os campos obrigatÃ³rios.</p>
<p>Agora de forma a que o formulÃ¡rio nÃ£o processe antes de verificar se os campos obrigatÃ³rios estÃ£o preenchidos Ã© necessÃ¡rio antes da action declarar o seguinte: </p>
<p><code>onsubmit="return validate();"</code></p>
<p>Assim quando o formulÃ¡rio for submetido primeiro chama a funÃ§Ã£o validate().<br />
Como podes ver o cÃ³digo Ã© relativamente simples, pode ser melhorado em vÃ¡rios aspectos e adaptados como verificar se o telefone possui apenas valores numÃ©ricos, se o nome ou empresa nÃ£o tem espaÃ§os apenas para nÃ£o ficarem vazios e se tÃªm mais de 1 ou 2 caracteres, etc&#8230;</p>
<p>Ficam as sugestÃµes para melhorares o cÃ³digo e caso o faÃ§as, partilha-o comigo.</p>
<p>Caso queiras aprender mais sobre JavaScript aconselho-te por comeÃ§ares a ler o tutorial de javascript da <a href="http://www.w3schools.com/JS/default.asp">w3Schools</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blue.muiomuio.net/validacao-de-campos-com-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validar formulÃ¡rios com jQuery</title>
		<link>http://blue.muiomuio.net/validar-formularios-com-jquery/</link>
		<comments>http://blue.muiomuio.net/validar-formularios-com-jquery/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 17:45:36 +0000</pubDate>
		<dc:creator>Lounge22</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[validar campos formulario]]></category>

		<guid isPermaLink="false">http://blue.muiomuio.net/?p=743</guid>
		<description><![CDATA[Normalmente quando crio um formulÃ¡rio apenas depois de o processar Ã© que o PHP envia a mensagem de erro o que pode ser chato para o cliente especialmente se o formulÃ¡rio for algo extenso. NÃ£o quero que o cliente desista apenas porque o formulÃ¡rio complicou tudo. A soluÃ§Ã£o Ã© entÃ£o usar JavaScript para detectar se [...]]]></description>
			<content:encoded><![CDATA[<p>Normalmente quando crio um formulÃ¡rio apenas depois de o processar Ã© que o PHP envia a mensagem de erro o que pode ser chato para o cliente especialmente se o formulÃ¡rio for algo extenso. NÃ£o quero que o cliente desista apenas porque o formulÃ¡rio complicou tudo.</p>
<p>A soluÃ§Ã£o Ã© entÃ£o usar JavaScript para detectar se os campos estÃ£o bem preenchidos ou nÃ£o e nos dias de hoje nÃ£o se justifica usar prompts para alertar o cliente de algo.<br />
A soluÃ§Ã£o Ã© relativamente simples com <a href="http://jquery.com/">jQuery</a>.</p>
<p><code><strong>//Filtros</strong><br />
var filters = {<br />
    requerido: function(el) {return ($(el).val() != â€ &#038;&#038; $(el).val() != -1);},<br />
    email: function(el) {return /^[A-Za-z][A-Za-z0-9_]*@[A-Za-z0-9_]+\.[A-Za-z0-9_.]+[A-za-z]$/.test($(el).val());},<br />
    telefono: function(el){return /^[0-9]*$/.test($(el).val());}};<br />
<strong>// ExtenÃ§Ãµes</strong><br />
$.extend({<br />
	stop: function(e){<br />
        if (e.preventDefault) e.preventDefault();<br />
        if (e.stopPropagation) e.stopPropagation();<br />
    }<br />
});<br />
<strong>// CÃ³digo</strong><br />
$(document).ready(function(){<br />
	$(â€form.validableâ€).bind(â€submitâ€, function(e){<br />
		if (typeof filters == â€˜undefinedâ€™) return;<br />
	    $(this).find(â€input, textarea, selectâ€).each(function(x,el){<br />
	        if ($(el).attr(â€classNameâ€) != â€˜undefinedâ€™) {<br />
	        $.each(new String($(el).attr(â€classNameâ€)).split(â€ â€œ), function(x, klass){<br />
	            if ($.isFunction(filters[klass]))<br />
	                if (!filters[klass](el))  $(el).addClass(â€errorâ€);<br />
	        });<br />
	        }<br />
	    });<br />
		if ($(this).find(â€.errorâ€).size() > 0) {<br />
			$.stop(e || window.event);<br />
			return false;<br />
		}<br />
	    return true;<br />
	});<br />
});<br />
	</code></p>
<h2>ExplicaÃ§Ã£o</h2>
<p>A parte de processamento do script comeÃ§a com <strong>$(document).ready</strong> o que faz com que o script seja processado apenas quando a pÃ¡gina for carregada.</p>
<p>Quando o conteÃºdo Ã© carregado o script percorre todos os formulÃ¡rios procurando uma class de CSS chamada <strong>validable</strong> (class=&#8221;validable&#8221;), podes editar esta variÃ¡vel no cÃ³digo do script, e adiciona um listener quando o formulÃ¡rio for submetido.</p>
<p>ApÃ³s o formulÃ¡rio ser submetido o script percorre todos os elementos <strong>&lt;input /&gt;, &lt;textarea /&gt; e &lt;select /&gt;</strong> procurando as suas classes e comparando-as com as declaradas na zona dos filtros.<br />
O objecto filters Ã© composto de uma sÃ©rie de mÃ©todos que sÃ£o efectuados para validar os elementos de acordo com as classes. </p>
<p>Se o elemento do html nÃ£o tiver uma classe declarada Ã© adicionada a class error (class=&#8221;error&#8221;) ao elemento e nÃ£o Ã© efectuada a verificaÃ§Ã£o do campo.</p>
<p>Podes testar o script <a href="http://www.anieto2k.com/demo/validable/">aqui</a>. Este tutorial foi adaptado para portuguÃªs. O tutorial original pode ser visto no <a href="http://www.anieto2k.com/2008/06/25/validar-formularios-con-jquery/">anieto2k.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blue.muiomuio.net/validar-formularios-com-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BotÃµes Liquidos com CSS &amp; HTML</title>
		<link>http://blue.muiomuio.net/html-css-liquid-button/</link>
		<comments>http://blue.muiomuio.net/html-css-liquid-button/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 20:37:03 +0000</pubDate>
		<dc:creator>Lounge22</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[botao liquido]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[liquid button]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://blue.muiomuio.net/html-css-liquid-button/</guid>
		<description><![CDATA[Por vezes na construÃ§Ã£o de sites deparo-me com um problema, nÃ£o quero criar uma imagem para cada botÃ£o que crio e nÃ£o me apetece ter um botÃ£o quadrado completamente plano, por vezes pode mesmo quebrar o design do site. CÃ³digo HTML A tag BUTTON tem uma maior capacidade de personalizaÃ§Ã£o que usando input type=submit. Esta [...]]]></description>
			<content:encoded><![CDATA[<p>Por vezes na construÃ§Ã£o de sites deparo-me com um problema, nÃ£o quero criar uma imagem para cada botÃ£o que crio e nÃ£o me apetece ter um botÃ£o quadrado completamente plano, por vezes pode mesmo quebrar o design do site.</p>
<h2>CÃ³digo HTML</h2>
<p>A tag BUTTON tem uma maior capacidade de personalizaÃ§Ã£o que usando input type=submit.<br />
Esta tag foi introduzido com a versÃ£o 4.01 do HTML e permite, por exemplo, que sejam adicionadas imagens dentro dele. </p>
<p>Fica aqui algumas referencias Ãºteis:</p>
<ul>
<li><a href="http://particletree.com/features/rediscovering-the-button-element/">http://particletree.com/features/rediscovering-the-button-element/</a></li>
<li><a href="http://www.htmlhelp.com/reference/html40/forms/button.html">http://www.htmlhelp.com/reference/html40/forms/button.html</a></li>
<li><a href="http://www.w3schools.com/tags/tag_button.asp">http://www.w3schools.com/tags/tag_button.asp</a></li>
</ul>
<p>Sem dÃºvida que a grande vantagem da TAG BUTTON Ã© a sua capacidade de ter conteÃºdo e Ã© essa capacidade que vou explorar.</p>
<p><code>&lt;button&gt;&lt;span&gt;&lt;em&gt;Texto BotÃ£o&lt;/em&gt;&lt;/span&gt;&lt;/button&gt;</code></p>
<p>O objectivo com este cÃ³digo Ã© criar um botÃ£o que permita ter um comprimento variÃ¡vel adaptando-se ao seu conteÃºdo de forma a que nÃ£o seja necessÃ¡rio editar o CSS cada vez que quero criar um novo botÃ£o.<br />
<span id="more-677"></span><br />
ApÃ³s o cÃ³digo HTML Ã© necessÃ¡rio criar uma imagem suficientemente larga para que independente da largura do botÃ£o ela se adapte sem quebras. De preferÃªncia crio sempre uma imagem com a largura do contentor onde o texto se encontra. Por exemplo se o texto tiver dentro de um DIV com 550 pixels de largura crio uma imagem com 550 pixels. Desta forma sei que por mais longo que o texto seja nÃ£o irÃ¡ quebrar.</p>
<p><span style="font-size:7pt;">Imagem usada no tutorial:</span><br />
<img src="http://muiomuio.net/lab/botao-liquido/btn_bg.png" alt="fundo botÃ£o liquido css html" /></p>
<h2>CSS</h2>
<p>Em seguida vamos aplicar a imagem. A TAG BUTTON irÃ¡ funcionar como contentor, o elemento SPAN e EM ficam com um estilo geral:</p>
<p><code>button {<br />
	border:none;<br />
	background:none;<br />
	padding:0;<br />
	margin:0;<br />
	width:auto;<br />
	text-align:center;<br />
	height:40px;<br />
	}<br />
</code></p>
<p><code>button span, button em{<br />
	display:block;<br />
	margin:0;<br />
	height:40px;<br />
	font:9pt Helvetica, Verdana, Arial, sans-serif;<br />
	color:#000000;<br />
	}</p>
<p></code></p>
<p>Em seguida aplicamos a imagem como background do SPAN, a imagem ficarÃ¡ da esquerda para a direita mostrando o canto esquerdo e o fundo do centro do botÃ£o:</p>
<p><code>button span{<br />
	padding-left:20px; /* mostrar canto esquerdo arredondado */<br />
	background:url(btn_bg.png) no-repeat 0 0;<br />
	}<br />
</code></p>
<p>Agora o elemento EM a onde se encontra o texto:</p>
<p><code>button em{<br />
	padding-right:20px;<br />
	background:url(btn_bg.png) no-repeat 100% 0; /* os 100% serve para adaptar a largura do botÃ£o */<br />
	line-height:38px;<br />
	}</code></p>
<div style="background:#ddd; padding:5px; border-top:1px dashed #333; border-bottom:1px dashed #333; width:80%; margin:10px auto; text-align:center;"><a href="http://muiomuio.net/lab/botao-liquido/">Exemplo</a> / <a href="http://muiomuio.net/lab/botao-liquido/botao-liquido.zip">Download do cÃ³digo</a></div>
<p>Este cÃ³digo foi testado em Firefox 2, Internet Explorer 7 e 8 em Windows XP. AgradeÃ§o se alguÃ©m testar nos outros browsers e sistemas operativos.</p>
<p>ReferÃªncia: <a href="http://www.alistapart.com/articles/slidingdoors/">http://www.alistapart.com/articles/slidingdoors/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blue.muiomuio.net/html-css-liquid-button/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial: SecÃ§Ãµes ExtensÃ­veis</title>
		<link>http://blue.muiomuio.net/tutorial-seccoes-extensiveis/</link>
		<comments>http://blue.muiomuio.net/tutorial-seccoes-extensiveis/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 17:48:55 +0000</pubDate>
		<dc:creator>Lounge22</dc:creator>
				<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[secÃ§Ã£o extensivel]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://blue.muiomuio.net/tutorial-seccoes-extensiveis/</guid>
		<description><![CDATA[Neste tutorial irei explicar como criar uma secÃ§Ã£o extensÃ­vel com conteÃºdo. O resultado final pode ser visto aqui. Breve descriÃ§Ã£o A secÃ§Ã£o extensÃ­vel Ã© composta por 2 partes: O cabeÃ§alho O conteÃºdo O cabeÃ§alho O cabeÃ§alho Ã© composto por um &#60;span&#62; e por uma de cabeÃ§alho (h2) que ambos serÃ£o estilizados com CSS. Ao clicar [...]]]></description>
			<content:encoded><![CDATA[<p>Neste tutorial irei explicar como criar uma secÃ§Ã£o extensÃ­vel com conteÃºdo. O resultado final pode ser visto <a href="http://pwp.netcabo.pt/lounge-22/tutoriais/secExtensivel/" title="SecÃ§Ãµes ExtensÃ­veis">aqui</a>.</p>
<p><img src="http://pwp.netcabo.pt/lounge-22/tutoriais/secExtensivel/seccao_extensivel.jpg" alt="secÃ§Ã£o extensÃ­vel show hide div" /></p>
<h2>Breve descriÃ§Ã£o</h2>
<p>A secÃ§Ã£o extensÃ­vel Ã© composta por 2 partes:</p>
<ol>
<li>O cabeÃ§alho</li>
<li>O conteÃºdo</li>
</ol>
<p><span id="more-680"></span></p>
<h3>O cabeÃ§alho</h3>
<p>O cabeÃ§alho Ã© composto por um &lt;span&gt; e por uma de cabeÃ§alho (h2) que ambos serÃ£o estilizados com CSS.<br />
Ao clicar no cabeÃ§alho irÃ¡ mostrar ou ocultar o conteÃºdo.</p>
<h3>O conteÃºdo</h3>
<p>O conteÃºdo terÃ¡ um texto de exemplo e um link que permitirÃ¡ ocultar todo o conteÃºdo.</p>
<h2>Primeiro Passo, o cÃ³digo HTML:</h2>
<div class="code">
<span style="color: rgb(0, 0, 153);">&lt;h2&gt;&lt;span&gt;</span><span style="color: rgb(0, 153, 0);">&lt;a href=</span><span style="color: rgb(51, 51, 255);">&#8220;#&#8221;</span> <span style="color: rgb(0, 153, 0);">onclick=</span><span style="color: rgb(51, 51, 255);">&#8220;cabracega(&#8216;noticias&#8217;)&#8221;</span><span style="color: rgb(0, 153, 0);">&gt;</span>Noticias<span style="color: rgb(0, 153, 0);">&lt;/a&gt;</span><span style="color: rgb(0, 0, 153);">&lt;/span&gt;&lt;/h2&gt;</span><br /><span style="color: rgb(0, 0, 153);">&lt;div id=</span><span style="color: rgb(51, 51, 255);">&#8220;noticias&#8221;</span> <span style="color: rgb(0, 0, 153);">class=</span><span style="color: rgb(51, 51, 255);">&#8220;seccao&#8221;</span><span style="color: rgb(0, 0, 153);">&gt;</span><span style="color: rgb(0, 0, 153);"><br />&lt;span&gt;</span><br />O conteÃºdo Ã© colocado aqui<br /><span style="color: rgb(0, 0, 153);">    &lt;/span&gt;</span><br /><span style="color: rgb(0, 0, 153);">&lt;/div&gt;</span>
</div>
<p>O link chama uma funÃ§Ã£o em javascript chamada cabracega que mostra ou oculta o conteÃºdo do div com a ID de noticias. Este cÃ³digo pode ser usado para mais de uma secÃ§Ã£o extensÃ­vel. Para tal basta atribuir nomes diferentes as secÃ§Ãµes. (noticias1, noticias2, noticias3&#8230;)<br />
Caso contrÃ¡rio poderÃ¡ causar algum conflito.</p>
<h2>Segundo Passo: CÃ³digo CSS</h2>
<div class="code"><span style="color: rgb(204, 51, 204);"> h2{ </span><span style="color: rgb(0, 0, 153);">margin</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(51, 51, 255);">0px</span><span style="color: rgb(204, 51, 204);">;</span><br />
<span style="color: rgb(0, 0, 153);">padding</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(51, 51, 255);">0px</span><span style="color: rgb(204, 51, 204);">;</span><br />
  <span style="color: rgb(0, 0, 153);">border</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(51, 51, 255);">0px</span><span style="color: rgb(204, 51, 204);">;<br />
  </span><span style="color: rgb(0, 0, 153);">color</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(51, 51, 255);">#00f</span><span style="color: rgb(204, 51, 204);">;</span><br />
<span style="color: rgb(0, 0, 153);">font-size</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(51, 51, 255);">13px</span><span style="color: rgb(204, 51, 204);">;</span><br /><span style="color: rgb(0, 0, 153);">display</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(51, 51, 255);">block</span><span style="color: rgb(204, 51, 204);">;</span><br />
<span style="color: rgb(204, 51, 204);">}</span> <span style="color: rgb(204, 51, 204);"></p>
<p>h2 span{</span><br /><span style="color: rgb(0, 0, 153);">padding</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(51, 51, 255);">10px</span><span style="color: rgb(204, 51, 204);">;</span><br />
<span style="color: rgb(0, 0, 153);">display</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(51, 51, 255);">block</span><span style="color: rgb(204, 51, 204);">;</span><br />
<span style="color: rgb(204, 51, 204);">}</span> <span style="color: rgb(204, 51, 204);"></p>
<p>h2 a:</span><span style="color: rgb(204, 51, 204);">link, h2 a</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(204, 51, 204);">visited{</span><br />
<span style="color: rgb(0, 0, 153);">color</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(51, 51, 255);">#00f</span><span style="color: rgb(204, 51, 204);">;</span><br />
<span style="color: rgb(0, 0, 153);">text-decoration</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(51, 51, 255);">none</span><span style="color: rgb(204, 51, 204);">;</span><br /><span style="color: rgb(0, 0, 153);">display</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(51, 51, 255);">block</span><span style="color: rgb(204, 51, 204);">;</span> <span style="color: rgb(204, 51, 204);"><br />
}</span><br />
<span style="color: rgb(204, 51, 204);"><br />
div.seccao {</span><br />
<span style="color: rgb(0, 0, 153);"> font-size</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(51, 51, 255);">12px</span><span style="color: rgb(204, 51, 204);">;</span> <span style="color: rgb(204, 51, 204);">}</span></p>
<p><span style="color: rgb(204, 51, 204);">div.seccao span{</span><br />
<span style="color: rgb(0, 0, 153);">padding</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(51, 51, 255);">10px</span><span style="color: rgb(204, 51, 204);">;</span><br />
<span style="color: rgb(0, 0, 153);">display</span><span style="color: rgb(204, 51, 204);">:</span><span style="color: rgb(204, 51, 204);"></span><span style="color: rgb(51, 51, 255);">block</span><span style="color: rgb(204, 51, 204);">;</span> <span style="color: rgb(204, 51, 204);"><br />
}</span>
</div>
<h2>Terceiro Passo: CÃ³digo Javascript</h2>
<div class="code"><span style="color: rgb(204, 0, 0);">&lt;script type=</span><span style="color: rgb(51, 51, 255);">&#8220;text/javascript&#8221;</span><span style="color: rgb(204, 0, 0);">&gt;</span><br /><span style="font-weight: bold;">function</span> cabracega<span style="color: rgb(0, 0, 153); font-weight: bold;">(</span>id<span style="font-weight: bold; color: rgb(0, 0, 153);">){</span><br /><span style="color: rgb(0, 0, 153); font-weight: bold;">var</span> mySection <span style="color: rgb(51, 51, 255);">=</span> <span style="color: rgb(204, 51, 204);">document</span>.getElementById<span style="font-weight: bold; color: rgb(0, 0, 153);">(</span>id<span style="font-weight: bold; color: rgb(0, 0, 153);">);</span><br /><span style="color: rgb(0, 153, 0);">if</span><span style="font-weight: bold; color: rgb(0, 0, 153);">(</span>mySection.style.display<span style="color: rgb(51, 51, 255);">==&#8221;none&#8221;</span><span style="font-weight: bold; color: rgb(0, 0, 153);">){</span><br />mySection.style.display<span style="color: rgb(51, 51, 255);">=&#8221;block&#8221;</span><span style="font-weight: bold; color: rgb(0, 0, 153);">;</span><br /><span style="font-weight: bold;"> <span style="color: rgb(0, 0, 153);">} </span></span><span style="color: rgb(0, 153, 0);">else</span> <span style="font-weight: bold; color: rgb(0, 0, 153);">{</span><span style="color: rgb(0, 0, 153);"> </span><br />mySection.style.display<span style="color: rgb(51, 51, 255);">=&#8221;none&#8221;</span><span style="font-weight: bold; color: rgb(0, 0, 153);">;</span><br /><span style="font-weight: bold; color: rgb(0, 0, 153);">    }</span> <span style="font-weight: bold; color: rgb(0, 0, 153);">}</span><br /><span style="color: rgb(204, 0, 0);">&lt;/script&gt;</span>
</div>
<p>O JavaScript vai buscar a ID da secÃ§Ã£o atravÃ©s de um link:</p>
<div class="code"><span style="color: rgb(0, 153, 0);">&lt;a href=</span><span style="color: rgb(51, 51, 255);">&#8220;#&#8221;</span> <span style="color: rgb(0, 153, 0);">onclick=</span><span style="color: rgb(51, 51, 255);">&#8220;cabracega(<span style="font-weight: bold;">&#8216;noticias&#8217;</span>)&#8221;</span><span style="color: rgb(0, 153, 0);">&gt;</span></div>
<h2><a href="http://pwp.netcabo.pt/lounge-22/tutoriais/secExtensivel/">Resultado final</a></h2>
]]></content:encoded>
			<wfw:commentRss>http://blue.muiomuio.net/tutorial-seccoes-extensiveis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

