<?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>Como Criar Sites &#124; Aprenda grátis como fazer seu site &#187; tableless</title>
	<atom:link href="http://www.comocriarsites.com/tag/tableless/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.comocriarsites.com</link>
	<description>Aprenda a criar sites, html e manhas para fazer seu site.</description>
	<lastBuildDate>Wed, 06 Jan 2010 12:51:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Criando layout tableless (div), com Ajax.</title>
		<link>http://www.comocriarsites.com/ajax/criando-layout-tableless-div-com-ajax/</link>
		<comments>http://www.comocriarsites.com/ajax/criando-layout-tableless-div-com-ajax/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 20:09:39 +0000</pubDate>
		<dc:creator>Raoni Novellino</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tableless]]></category>

		<guid isPermaLink="false">http://www.comocriarsites.com/?p=224</guid>
		<description><![CDATA[Vamos fazer um site com Ajax, e para quem não souber o que é Ajax, vai um breve comentário.
Ajax significa Asynchronous Javascript And XML. Quer dizer que Ajax nada mais é do que uma capacidade (ferramenta, biblioteca), de fazer com que, em Javascript, eu possa fazer requisições HTTP (e, dependendo do navegador, posso fazer outros [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: xx-large; font-family: Algerian;">V</span>amos fazer um site com Ajax, e para quem não souber o que é Ajax, vai um breve comentário.</p>
<p>Ajax significa Asynchronous Javascript And XML. Quer dizer que Ajax nada mais é do que uma capacidade (ferramenta, biblioteca), de fazer com que, em Javascript, eu possa fazer requisições HTTP (e, dependendo do navegador, posso fazer outros tipo de conexões). As requisições que o Ajax faz, podem ser síncronas ou assíncronas. Se for síncrona, o script ficará esperando o retorno da requisição para continuar a executar o seu código. Se for assíncrona, o script enviará a requisição e continuará a sua execução normalmente, e o retorno dessa requisição deverá ser tratado por uma outra função.</p>
<p>O XML nem sempre é usado para trafegar as informações em Ajax, mas como o nome já pegou, então ficou assim mesmo, mas podemos utilizar qualquer tipo de protocolo texto (como <em><strong>JSON</strong></em>), para trafegar as informações via Ajax.</p>
<p>O principal motivo para desenvolver uma página (web site) com Ajax, é faze-la ficar mais interativa com o usuário, mais dinâmica e criativa.</p>
<p>Para saber um pouco mais sobre Ajax, acesse <a href="http://pt.wikipedia.org/wiki/AJAX_%28programa%C3%A7%C3%A3o%29">AJAX (programação)</a>.</p>
<h2>O Código <em>HTML</em> do Layout em <em>Div</em></h2>
<p>Vamos pegar o layout do post <a href="http://www.comocriarsites.com/html/definindo-um-layout-de-website-sem-tabelas-tableless/">Definindo um Layout de Website sem Tabelas (Tableless)</a>, e retirar a parte mais a direita dele, para que a parte do meio do layout, contenha somente o menu e o miolo.</p>
<p>O código ficará como abaixo (arquivo <em>index.html</em>):</p>
<div style="background-color: white; overflow-x: auto;">
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-type" content="text/html;charset=ISO-8859-1" /&gt;
&lt;title&gt;Exemplo Estrutura de Site Tableless&lt;/title&gt;

&lt;link rel="stylesheet" type="text/css" href="estilo.css" /&gt;
&lt;script language="javascript" src="script.js"&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&lt;div id="todo"&gt;
	&lt;div id="topo"&gt;
		&lt;div id="logo"&gt;Logo&lt;/div&gt;

		Aqui pode ser uma imagem de background e um texto.
	&lt;/div&gt;

	&lt;div id="meio"&gt;
		&lt;div id="esquerda"&gt;
			&lt;div id="menu"&gt;
				&lt;div&gt;&lt;a href="javascript: void(0);" onclick="ajaxHTMLmiolo('miolo', 'principal');"&gt;Principal&lt;/a&gt;&lt;/div&gt;
				&lt;div&gt;&lt;a href="javascript: void(0);" onclick="ajaxHTMLmiolo('miolo', 'empresa');"&gt;Empresa&lt;/a&gt;&lt;/div&gt;
				&lt;div&gt;&lt;a href="javascript: void(0);" onclick="ajaxHTMLmiolo('miolo', 'produtos');"&gt;Produtos&lt;/a&gt;&lt;/div&gt;

				&lt;div&gt;&lt;a href="javascript: void(0);" onclick="ajaxHTMLmiolo('miolo', 'servicos');"&gt;Serviços&lt;/a&gt;&lt;/div&gt;
				&lt;div&gt;&lt;a href="javascript: void(0);" onclick="ajaxHTMLmiolo('miolo', 'contato');"&gt;Contato&lt;/a&gt;&lt;/div&gt;
			&lt;/div&gt;
		&lt;/div&gt;

		&lt;div id="miolo"&gt;
			&lt;div&gt;Seção 1&lt;/div&gt;
			&lt;div&gt;Seção 2&lt;/div&gt;

			&lt;div&gt;Seção 3&lt;/div&gt;
		&lt;/div&gt;

		&lt;div style="clear: both;"&gt;&lt;/div&gt;
	&lt;/div&gt;

	&lt;div id="rodape"&gt;
		&lt;div id="rodape_direita"&gt;
			Av. xxx yyy zzz, No 765&lt;br/&gt;
			Manaus - AM - CEP: 89000-000&lt;br/&gt;
			Email: &lt;a href="mailto:seuemail@seudominio.com.br"&gt;seuemail@seudominio.com.br&lt;/a&gt;

		&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>Maiores explicações sobre o layout, pode encontrar no link passado para o post.</p>
<p>As únicas mudanças foram a parte direita do layout que foi deletada, os menus agora são links (tag <em><strong>&lt;a&gt;</strong></em> com atributo <em>onclick</em> para chamada do <em><strong>Javascript</strong></em>), e foi inserida uma linha chamando o script <strong><em>script.js</em></strong>. Esse script contém a programação em <strong><em>Javascript</em></strong> para fazer a requisição em Ajax.</p>
<p>Uma outra mudança foi no arquivo de folhas de estilo <strong><em>estilo.css</em></strong>. Ele está sem os estilos da parte direita do layout e foi adicionado uma classe, para a frase que indica que o Ajax está carregando uma página, no nosso caso, a frase é simplesmente &#8220;Carregando&#8230;&#8221;, mas a classe está vazia, adicione os estilos que achar necessário.</p>
<h2>O Código <em>Javascript</em></h2>
<p>O código Javascript precisa fazer tudo que o navegador faz automáticamente quando se coloca um link no web site: enviar a requisição, esperar pela resposta, pegar a resposta quando essa estiver pronta, tratar a resposta e exibir o que for necessário.</p>
<p>O código do arquivo <strong><em>script.js</em></strong> vai abaixo:</p>
<div style="background-color: white; overflow-x: auto;">
<pre>function getNewHttpRequest() {
	try {
		xmlhttp = new XMLHttpRequest();
	} catch(ee) {
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(E) {
				xmlhttp = false;
			}
		}
	}

	return(xmlhttp);
}

oAjax = getNewHttpRequest();

//Fila de conexões
fila = [];
ifila = 0;

// funcao para altear o conteudo do miolo
function ajaxHTMLmiolo(id, conteudo) {
	ajaxHTML(id, 'conteudo.php?conteudo='+conteudo);
}

//Executa a próxima conexão da fila
function ajaxRun() {
	//Abre a conexão
	oAjax.open("GET", fila[ifila][1], true);
	//Função para tratamento do retorno
	oAjax.onreadystatechange = function() {
		if (oAjax.readyState == 4) {
			//Mostra o HTML recebido
			retorno = unescape(oAjax.responseText.replace(/\+/g, " "));
			document.getElementById(fila[ifila][0]).innerHTML = retorno;
			//Roda o próximo
			ifila++;
			if(ifila &lt; fila.length) setTimeout("ajaxRun()", 20);
		}
	};

	//Executa
	oAjax.send(null);
}

function ajaxHTML(id, url) {
	//Carregando...
	document.getElementById(id).innerHTML="&lt;span class='carregando'&gt;"+"Carregando...&lt;/span&gt;";
	//Adiciona à fila
	fila[fila.length] = [id, url];
	//Se não há conexões pendentes, executa
	if((ifila+1) == fila.length) ajaxRun();
}</pre>
</div>
<p>Agora vamos as explicações.</p>
<p>Começando pela função <em><strong>getNewHttpRequest</strong></em>, que não recebe parâmetro, e retorna um objeto <em>XMLHTTP</em>. Esse objeto é o responsável pelas requisições que iremos fazer. Os blocos <em>try {&#8230;} catch() {&#8230;}</em>, tentam pegar o objeto <em>XMLHTTP</em> de várias formas, por causa das várias formas de pegar esse objeto de navegadores diferentes. Se não conseguir nenhuma, retorna <em>false</em>.</p>
<p>Abaixo pego o objeto XMLHTTP e coloco na variável <em><strong>oAjax</strong></em> e logo abaixo defino as minhas variáveis da fila de requisições.</p>
<h3>Por que uma fila de requisições?</h3>
<p>Tenho uma fila de requisições para organizar as minhas requisições <strong><em>Ajax</em></strong>, pois sem ela, se o usuário clicar em vários links antes de esperar a resposta de uma requisição, ou eu tenho que instanciar vários objetos do <strong><em>Ajax</em></strong> (<em>XMLHTML</em>), ou vai dar um erro no script que executa a requisição, quando uma outra requisição é feita antes de esperar a primeira terminar. A fila resolve esse problema, pois somente uma requisição é feita por vez, e se houver outra requisição na fila, ela é chamada logo após a requisição atual terminar.</p>
<p>A função <strong><em>ajaxHTMLmiolo</em></strong> serve para fazer uma requisição em <em><strong>Ajax</strong></em> que pega o conteúdo do miolo da página, que é o conteúdo da tag <strong><em>div</em></strong> que tem o atributo <em>id</em> igual a <em>miolo</em>, nesse layout é onde o conteúdo do web site será exibido. Essa função recebe dois argumentos, o primeiro é o id do elemento que vai ser exibido o resultado da requisição, o segundo é uma string que é enviada para o servidor para saber qual conteúdo buscar para exibir. Ela chama a função genérica de requisição <strong><em>Ajax</em></strong>, a <strong><em>ajaxHTML</em></strong>, que recebe o id do elemento que vais ser alterado e a URL que vai ser requisitada.</p>
<p>A função <strong><em>ajaxHTML</em></strong> coloca uma requisição na fila de requisições e tenta fazer essa requisição, se a fila estiver vazia, chamando a função <em><strong>ajaxRun</strong></em>, se não estiver vazia, ela não faz nada, pois assim que for a vez da requisição colocada, ela será feita.</p>
<p>A função<em><strong> ajaxRun</strong></em> pega a requisição que está na vez, na fila de requisições, e a executa, pelo método<em> GET</em>. A linha</p>
<div style="background-color: white; overflow-x: auto;">
<pre>	oAjax.open("GET", fila[ifila][1], true);</pre>
</div>
<p>diz que é para abrir a conexão com a <em>URL</em> que está na fila, pelo método <em>GET</em>. O último parâmetro quer dizer que essa requisição tem que ser feita pelo modo assíncrono. Se o último parâmetro for <em>false</em>, a requisição seria feita no modo síncrono.</p>
<p>Para saber mais sobre o método GET, acesse <a href="http://www.comocriarsites.com/html/como-funciona-os-metodos-get-e-post-diferencas/">Como Funciona os Métodos GET e POST – Diferenças</a>.</p>
<p>Na linha</p>
<div style="background-color: white; overflow-x: auto;">
<pre>	oAjax.onreadystatechange = function() {</pre>
</div>
<p>estou informando ao objeto que a função seguinte é a função que eu quero que ele execute quando o estado da minha requisição mudar. Essa função normalmente é chamada de função de <em>callback</em>, ela fica esperando algum evento acontecer para executar, sem interromper a execução do código. Nesse caso, ela espera o evento de alteração de estado da requisição ocorrer para ser chamada, logo, ela provavelmente será chamada mais de uma vez, pois durante uma requisição o estado muda algumas vezes.</p>
<p>Essa função de <em>callback</em> vai testar se o estado atual da requisição é o estado que eu quero, com a linha:</p>
<div style="background-color: white; overflow-x: auto;">
<pre>		if (oAjax.readyState == 4) {</pre>
</div>
<p>O estado do objeto <strong><em>Ajax</em></strong> que eu quero é igual a 4, que é o estado onde a resposta foi lida por completo. Para ver uma lista dos estados do objeto <em><strong>Ajax</strong></em>, acesse <a href="http://www.w3.org/TR/XMLHttpRequest/">XMLHttpRequest</a>.</p>
<p>Após a resposta estar pronta, eu a pego e coloco em uma variável, fazendo uma substituição de todos os sinais de &#8220;mais&#8221; (&#8217;+'), por um espaço em branco. Se faz essa substituição, pois a resposta vem codificada como <em>URL</em>, e nessa codificação, os espaços são convertidos em sinais de &#8220;mais&#8221; (&#8217;+'). A linha que faz isso é a linha abaixo:</p>
<div style="background-color: white; overflow-x: auto;">
<pre>		retorno = unescape(oAjax.responseText.replace(/\+/g, " "));
		document.getElementById(fila[ifila][0]).innerHTML = retorno;</pre>
</div>
<p>A outra linha pega o elemento que tem o atributo <em>id</em> igual ao que foi passado para a requisição e coloca a resposta como conteúdo desse elemento, no caso do elemento em questão (<em>div</em>), faz o conteúdo ser exibido, mas pode ser feito para qualquer tipo de conteúdo, até um campo <em>hidden</em> (escondido) ou para preencher um <em>selectbox</em>.</p>
<div style="background-color: white; overflow-x: auto;">
<pre>		ifila++;
		if(ifila &lt; fila.length) setTimeout("ajaxRun()", 20);</pre>
</div>
<p>As linhas acima fazem o controle da fila, a primeira incrementa a posição da fila, fazendo a próxima requisição ser lida, se houver. A segunda linha verifica se o tamanho da fila é maior que a posição atual de leitura da fila, se for, é porque ainda existe requisição a ser feita, então ele programa um <em>timer</em> para em 20 milisegundos, para ser executada essa requisição.</p>
<p>Aqui termina a função de <em>callback</em>, ela será executada após o envio da requisição.</p>
<p>A última linha da função <em><strong>ajaxRun</strong></em></p>
<div style="background-color: white; overflow-x: auto;">
<pre>	oAjax.send(null);</pre>
</div>
<p>faz com que a requisição seja feita (enviada). O parâmetro dela, passado como <em>null</em>, indica que não estou enviando nada na requisição, porque já enviei o que eu queria pela <em>URL</em> passada.</p>
<h2>O Código <em>PHP</em></h2>
<p>O código em <strong><em>PHP</em></strong> serve para fornecer o conteúdo requisitado pelo <em><strong>Ajax</strong></em>, perceba que a nossa <em>URL</em> da requisição <em>Ajax</em> tem como endereço o arquivo <em><strong>conteudo.php</strong></em>, lá na função <em><strong>ajaxHTMLmiolo</strong></em>, e o código desse arquivo (<em><strong>conteudo.php</strong></em>), vai abaixo:</p>
<div style="background-color: white; overflow-x: auto;">
<pre>&lt;?php

$conteudo = $_GET["conteudo"];

if($conteudo == "principal") {
	$fileToRead = "conteudo/principal.html";
}
else if($conteudo == "empresa") {
	$fileToRead = "conteudo/empresa.html";
}
else if($conteudo == "produtos") {
	$fileToRead = "conteudo/produtos.html";
}
else if($conteudo == "servicos") {
	$fileToRead = "conteudo/servicos.html";
}
else if($conteudo == "contato") {
	$fileToRead = "conteudo/contato.html";
}

$conteudoArquivo = file_get_contents($fileToRead);

print(urlencode($conteudoArquivo));

?&gt;</pre>
</div>
<p>Ele simplesmente pega o valor do <strong><em>&#8220;conteudo&#8221;</em></strong>, que foi passado pelo método <em>GET</em> (olha novamente a <em>URL</em> passada na função <em><strong>ajaxHTMLmiolo</strong></em>), e compara com as strings acima. Cada <em>if</em> faz ele colocar na variável <strong><em>$fileToRead</em></strong> um caminho para um arquivo. Na penúltima linha ele joga todo o conteúdo do arquivo para a variável <em><strong>$conteudoArquivo</strong></em>, e na última linha ele codifica para <em>URL</em> e imprime na <em>&#8220;tela&#8221;</em> com a função <em><strong>print</strong></em>. A impressão na tela, é a resposta que o <strong><em>Ajax</em></strong> pega. QUALQUER coisa que você imprima na tela, vai ser o retorno da sua requisição <em><strong>Ajax</strong></em>, até mesmo se der um erro no script <em>PHP</em>, caso esteja configurado para exibir o erro na tela, o <em><strong>Ajax</strong></em> vai pegar como retorno.</p>
<p>Não vou colocar o conteúdo dos arquivos <em>HTML</em> de resposta, mas você pode ver o exemplo todo rodando em <a href="http://www.comocriarsites.com/exemplos/SiteTablelessAjax/">http://www.comocriarsites.com/exemplos/SiteTablelessAjax/</a>. Lá você mesmo pode pegar os arquivos <em>HTML</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.comocriarsites.com/ajax/criando-layout-tableless-div-com-ajax/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Definindo um Layout de Website sem Tabelas (Tableless)</title>
		<link>http://www.comocriarsites.com/html/definindo-um-layout-de-website-sem-tabelas-tableless/</link>
		<comments>http://www.comocriarsites.com/html/definindo-um-layout-de-website-sem-tabelas-tableless/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 01:30:39 +0000</pubDate>
		<dc:creator>Raoni Novellino</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[como criar site]]></category>
		<category><![CDATA[como fazer site]]></category>
		<category><![CDATA[criar site de graça]]></category>
		<category><![CDATA[criar site div]]></category>
		<category><![CDATA[div]]></category>
		<category><![CDATA[fazer site de graça]]></category>
		<category><![CDATA[gratis]]></category>
		<category><![CDATA[tableless]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://www.comocriarsites.com/?p=137</guid>
		<description><![CDATA[Vou apresentar nesse post como fazer o código do layout de um website sem utilizar tabelas (tableless), e utilizando muito &#60;div&#62;. Para continuar lendo esse post, você deve estar familiarizado com CSS (folha de estilos ou cascading style sheets) e com alguns estilos, principalmente com o estilo float.
Para um bom entendimento de como utilizar CSS, [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: xx-large;">V</span>ou apresentar nesse post como fazer o código do <em>layout</em> de um website sem utilizar tabelas (<em>tableless</em>), e utilizando muito <strong><em>&lt;div&gt;</em></strong>. Para continuar lendo esse post, você deve estar familiarizado com CSS (folha de estilos ou <em>cascading style sheets</em>) e com alguns estilos, principalmente com o estilo <em>float</em>.</p>
<p>Para um bom entendimento de como utilizar CSS, acesse <a title="Entendendo CSS (folhas de estilo): Cascading Style Sheet - Parte 1" href="http://www.comocriarsites.com/html-css/entendendo-css-folhas-de-estilo-cascading-style-sheet-parte-1/">Entendendo CSS (folhas de estilo): Cascading Style Sheet &#8211; Parte 1</a> e <a title="Entendendo CSS (folhas de estilo): Cascading Style Sheet - Parte 2" href="http://www.comocriarsites.com/html-css/entendendo-css-folhas-de-estilo-cascading-style-sheet-parte-2/">Entendendo CSS (folhas de estilo): Cascading Style Sheet &#8211; Parte 2</a>.</p>
<p>Para saber utilizar o estilo <em>float</em>, acesse <a title="Estilo Float (CSS Style Float)" href="http://www.comocriarsites.com/html-css/estilo-float-css-style-float/">Estilo Float (CSS Style Float)</a>.</p>
<p>Sabendo um pouco de CSS, vamos focalizar agora no que vai fazer o nosso <em>layout</em>, o <em><strong>&lt;div&gt;</strong></em>. Eu posso encaixar vários <em><strong>divs</strong></em> em um documento, dando estilos diferentes a eles, formando um <em>layout</em> agradável. Aqui vou abordar um <em>layout</em> normalmente utilizado, que é com um topo, um corpo e um rodapé, sendo o corpo dividido em 3 partes, uma barra de menu a esquerda, um espaço para conteúdo e uma barra lateral a direita.</p>
<p>Vamos ao código de exemplo, e se você quer vê-lo funcionando, acesse <a title="Exemplo Estrutura de Site Tableless" href="http://www.comocriarsites.com/exemplos/site_tableless/estrutura_site_tableless.html">Exemplo Estrutura de Site Tableless</a>.</p>
<p>Vou colocar o código por partes para melhor explica-lo, e no final do post está o código completo de como fazer o site com <em><strong>div</strong></em> e sem tabela (tableless).</p>
<h3>O Cabeçalho (<strong><em>&lt;head&gt;</em></strong>)</h3>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-type" content="text/html;charset=ISO-8859-1" /&gt;
&lt;title&gt;Exemplo Estrutura de Site Tableless&lt;/title&gt;

&lt;link rel="stylesheet" type="text/css" href="estilo.css" /&gt;

&lt;/head&gt;</pre>
</div>
<p>A primeira linha do seu código sempre que for fazer um site, tem que ser a definição do <em><strong>DOCTYPE</strong></em>, que diz aos navegadores como deve ser tratado o seu código, e para saber mais sobre o <em><strong>DOCTYPE</strong></em> (DTD &#8211; Document Type Definition), acesse <a title="O que é e para que serve o DOCTYPE ou DTD (Document Type Definition)" href="http://www.comocriarsites.com/html/o-que-e-e-para-que-serve-o-doctype-ou-dtd-document-type-definition/">O que é e para que serve o DOCTYPE ou DTD (Document Type Definition)</a>.</p>
<p>O atributo <em>xmlns</em> da tag <strong><em>&lt;html&gt;</em></strong> serve para ficar nos padrões de um documento XHTML, esse atributo serve para definir o <em>namespace</em> que o documento utilizará. Esse valor que está no exemplo é o valor padrão.</p>
<p>Já dentro do cabeçalho do site (<em><strong>&lt;head&gt;</strong></em>), devemos dizer aos navegadores que tipo de codificação de texto estamos utilizando, isso se faz com a tag <strong><em>&lt;meta&gt;</em></strong>, como definido do exemplo, diz que o texto do documento está com a codificação <em>ISO-8859-1</em>, que é o padrão para nossa língua portuguesa, mas existe uma codificação padrão mundial que é o famoso <em>UNICODE</em> (<em>UTF-8</em>). Se seu documento estiver escrito em um tipo de código e sua tag <em><strong>&lt;meta&gt;</strong></em> de definição de conteúdo estiver dizendo que está em outro, o navegador poderá exibir caracteres estranhos.</p>
<p>A próxima tag interessante é a <em><strong>&lt;link&gt;</strong></em>, que serve para adicionar algum conteúdo externo ao documento, comumente utilizada para adicionar um arquivo de folha de estilos (CSS &#8211; Cascading Style Sheet) a um documento, como feito no exemplo. A tag <em><strong>&lt;link&gt;</strong></em> adiciona no documento a folha de estilos do arquivo <em><strong>estilo.css</strong></em>.</p>
<p>Para fazer um site, você deve ter em mente sempre como o navegador vai vizualizar o site, então quando for criar o site, defina seu <em>DTD &#8211; Document Type Definition</em> sempre e também defina sempre na criação do seu site, o código de caracteres a ser utilizado (como<em> UTF-8</em> e <em>ISO-8859-1</em>).</p>
<h3>A Folha de Estilos do Site (<em>CSS &#8211; Cascading Style Sheet</em>)</h3>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>body {
	margin:0px;
	background-color: #cccccc;
	font-family:"Trebuchet MS", Tahoma, Arial, Verdana;
	font-size:12px;
	color:#000;
}

#todo {
	position: relative;
	width: 750px;
	border: 1px solid black;
	margin:0px auto;
	background-color: white;
}

#topo {
	position: relative;
	width: 746px;
	height: 100px;
	border: 2px solid red;
}

#meio {
	position: relative;
	width: 750px;
	min-height: 400px;
	background-color: #eeeeee;
}

#rodape {
	width: 746px;
	height: 75px;
	border: 2px solid brown;
}

#esquerda {
	float: left;
	width: 150px;
	min-height: 400px;
	border: 2px solid green;
}

#miolo {
	float: left;
	width: 438px;
	min-height: 400px;
	border: 2px solid blue;
}

#direita {
	float: right;
	width: 150px;
	min-height: 400px;
	border: 2px solid yellow;
}

#menu {
	width: 150px;
	height: 400px;
}

.itemMenu {
	width: 140px;
	height: 21px;
	background-color: lightyellow;
	padding: 3px 0px 0px 10px;
	border-bottom: 1px solid black;
}

#logo {
	float: left;
	width: 200px;
	height: 100px;
	text-align: center;
	background-color: #cccccc;
	margin-right: 20px;
}

.secao_miolo {
	width: 428px;
	height: 150px;
	text-align: center;
	background-color: #cccccc;
	margin: 2px 5px 4px 5px;
}

.secao_direita {
	width: 140px;
	height: 100px;
	text-align: center;
	background-color: #cccccc;
	margin: 4px 5px 4px 5px;
}

#rodape_direita {
	float: right;
	width: 200px;
	text-align: right;
	margin: 5px 10px 0px 0px
}

#rodape_direita a{color: #cc6600; text-decoration: none;}
#rodape_direita a:hover{color: #cc6600; text-decoration: underline;}</pre>
</div>
<p>Os estilos do seu site devem ser todos definidos nesse arquivo, ou você pode separar os arquivos por parte do site, por exemplo, eu tenho um arquivo para o estilo do site todo, mas do banner e do menu (<em><a title="Fazendo um Menu com MouseOver e MouseOut (Menu RollOver)" href="http://www.comocriarsites.com/html/fazendo-um-menu-com-mouseover-e-mouseout-menu-rollover/">rollover</a></em> ou popup), que já tenho prontos e bem definidos, eu coloco em outro arquivo, como se fosse modularizar o código, se não quero o banner, só retiro os arquivos do banner, se não quero o menu, só retiro os arquivos do menu, e assim podemos fazer com outras partes do site.</p>
<p>Explicando rapidamente, o elemento com o identificador <em>todo</em>, vai ser o elemento pai de todos os outros elementos do conteúdo do site, ele vai definir o tamanho do site e alguns estilos do site, como no exemplo, a cor de fundo do site (<em>background</em>). O elemento com o identificador <em>todo</em>, vai ser dividido verticalmente em 3 partes, o <em>topo</em>, o <em>meio</em> e o <em>rodape</em>.</p>
<p>Nesse exemplo eu coloco bordas e cor de fundo nos elementos para demonstrar onde eles estão e o tamanho deles. As partes verticais do site, tem a mesma largura, que é a largura total do site. O elemento com identificador <em>meio</em> vai ser dividido em 3 partes horizontais: <em>esquerda</em>, <em>miolo</em> e <em>direita</em>.</p>
<p>Normalmente na esquerda fica o menu do site (se o site tiver menu), se você quiser um menu horizontal, normalmente ficaria na parte de baixo do <em>topo</em>, ou logo abaixo do <em>topo</em>, em um outro <strong><em>&lt;div&gt;</em></strong>. Fazer os ajustes para o seu site ficar com um menu diferente é fácil, coloque outro <em><strong>&lt;div&gt;</strong></em>, coloque alguns estilos nele e pronto. Ainda na parte esquerda, colocamos o estilo <em>float: left</em>, pois queremos que essa parte fique na esquerda, e a próxima parte fique a direita dela.</p>
<p>O <em>miolo</em> do site também fica com o estilo <em>float: left</em>, pois queremos que ele fique a esquerda da próxima parte que iremos colocar. Como ele vem depois do <strong><em>&lt;div&gt;</em></strong> da esquerda, o <em>miolo</em> ficará colado a direita deste.</p>
<p>A parte da direita do site fica com o estilo <em>float: right</em>, para ficar a direita e os outros elemento a esquerda dele.</p>
<p>Uma parte da nossa folha de estilos que é bem interessante são as últimas duas linhas, elas dizem que qualquer tag <em><strong>&lt;a&gt;</strong></em>, dentro do elemento com o identificador <em>rodape_direita</em>, deve ter esses estilos atribuídos a elas. Isso é bem útil quando tenho em diferentes partes do meu site, diferentes estilos da mesma tag.</p>
<p>Para saber mais sobre a tag <em><strong>&lt;a&gt;</strong></em>, acesse <a title="A Tag &lt;a&gt; - Fazendo Link (Hyperlink)" href="http://www.comocriarsites.com/html/a-tag-a-fazendo-link-hyperlink/">A Tag &lt;a&gt; &#8211; Fazendo Link (Hyperlink)</a>.</p>
<h3>O Código HTML do Site sem Tabelas (com <em><strong>&lt;div&gt;</strong></em> &#8211; Tableless)</h3>
<p>Vamos colocar o site por partes, primeiro o topo, depois o meio e por fim o rodapé. Abaixo o código do topo.</p>
<h4>O Topo</h4>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;body&gt;

&lt;div id="todo"&gt;
	&lt;div id="topo"&gt;
		&lt;div id="logo"&gt;Logo&lt;/div&gt;
		Aqui pode ser uma imagem de background e um texto.
	&lt;/div&gt;</pre>
</div>
<p>No corpo do documento temos um elemento <em><strong>&lt;div&gt;</strong></em> que vai englobar todo o nosso site. Esse elemento <em><strong>&lt;div&gt;</strong></em> está ai para definir a largura e altura do site, qualquer tipo de fundo (cores e imagens) e o alinhamento do site no navegador. Colocamos o identificador <em>todo</em> nesse <em><strong>&lt;div&gt;</strong></em>. Sempre que for fazer um site, defina bem a largura do site, pois se a largura for variável, o conteúdo do site pode &#8220;quebrar&#8221; o layout, fazendo o site ficar diferente do planejado.</p>
<p>O primeiro elemento dentro do nosso <em><strong>&lt;div&gt;</strong></em> <em>todo</em>, é um <em><strong>&lt;div&gt;</strong></em> que ficará responsável pela parte de cima do site, onde podemos colocar o nome do site, um logo do site e mais coisas como propagandas e até mesmo o menu do site (se o menu for horizontal). Esse <em><strong>&lt;div&gt;</strong></em> identificamos por <em>topo</em>. Normalmente ele ocupa a parte de cima inteira do site, com a mesma largura do <em><strong>&lt;div&gt;</strong></em> <em>todo</em>. A altura é variável, depende muito do que queremos colocar no topo. Uma dica é, não colocar a altura do <em>topo</em> muita, pois poderá esconder muitas partes do conteúdo do site, que ficará logo abaixo, mas também não colocar a altura pouca, pois se for um site de empresa, a logo, o título ou o nome do site tem que serbem visualizado.</p>
<h4>O Meio</h4>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>	&lt;div id="meio"&gt;
		&lt;div id="esquerda"&gt;
			&lt;div id="menu"&gt;
				&lt;div class="itemMenu"&gt;Principal&lt;/div&gt;
				&lt;div class="itemMenu"&gt;Empresa&lt;/div&gt;
				&lt;div class="itemMenu"&gt;Produtos&lt;/div&gt;
				&lt;div class="itemMenu"&gt;Serviços&lt;/div&gt;
				&lt;div class="itemMenu"&gt;Contato&lt;/div&gt;
			&lt;/div&gt;
		&lt;/div&gt;

		&lt;div id="miolo"&gt;
			&lt;div class="secao_miolo"&gt;Seção 1&lt;/div&gt;
			&lt;div class="secao_miolo"&gt;Seção 2&lt;/div&gt;
			&lt;div class="secao_miolo"&gt;Seção 3&lt;/div&gt;
		&lt;/div&gt;

		&lt;div id="direita"&gt;
			&lt;div class="secao_direita"&gt;Seção 1&lt;/div&gt;
			&lt;div class="secao_direita"&gt;Seção 2&lt;/div&gt;
			&lt;div class="secao_direita"&gt;Seção 3&lt;/div&gt;
		&lt;/div&gt;
		&lt;div style="clear: both;"&gt;&lt;/div&gt;
	&lt;/div&gt;</pre>
</div>
<p>Logo após o <em>topo</em>, colocamos um <strong><em>&lt;div&gt;</em></strong> identificado por <em>meio</em>. Nesse meio teremos o conteúdo do nosso site. No exemplo, dividimos o meio em três partes, horizontalmente. A primeira parte, mais a esquerda, colocamos um menu.</p>
<p>Na parte do meio colocamos algumas seções que o site pode ter, tipo algumas notícias na página principal, ou chamadas para artigos e outros. Nessa parte fica o conteúdo do nosso site, quando clicar em um item do menu, só é necessário mudar essa parte do site, e se necessário ou quiser, mudar também a terceira parte do <em>meio</em>, a parte da direita.</p>
<p>Na parte da direita podemos colocar algumas seções do site mais importantes, para dar melhor destque a elas, ou podemos colocar propagandas de todos os tipos, ou informações fixas que se quer ter em todas as seções do site.</p>
<p>Como essas partes do site requerem o estilo <em>float</em>, colocamos um <em><strong>&lt;div&gt;</strong></em> na penúltima linha com o estilo <em>clear</em>, para corrigir o problema de ajuste de altura. Esse jeito de corrigir pode não ser o mais elegante, mas foi o que eu achei mais fácil de fazer e sem problemas de fazer.</p>
<h4>O Rodapé</h4>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>	&lt;div id="rodape"&gt;
		&lt;div id="rodape_direita"&gt;
			Av. xxx yyy zzz, No 765&lt;br/&gt;
			Manaus - AM - CEP: 89000-000&lt;br/&gt;
			Email: &lt;a href="mailto:seuemail@seudominio.com.br"&gt;seuemail@seudominio.com.br&lt;/a&gt;
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>Na parte de baixo do site, temos normalmente um rodapé, que diz quem fez o site, algumas informações sobre contatos da empresa do site, tipo endereço, email, telefones e outros. Nós colocamos um <em><strong>&lt;div&gt; </strong></em>com o identificador <em>rodape</em> para fazer o rodapé do site. No exemplo coloquei um outro <em><strong>&lt;div&gt;</strong></em> dentro do <em>rodape</em>, para fazer ele ficar a direita com alguns dados de contato do site.</p>
<h3>O Código Inteiro do Site em <em><strong>&lt;div&gt;</strong></em> &#8211; Tableless</h3>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-type" content="text/html;charset=ISO-8859-1" /&gt;
&lt;title&gt;Exemplo Estrutura de Site Tableless&lt;/title&gt;

&lt;link rel="stylesheet" type="text/css" href="estilo.css" /&gt;

&lt;/head&gt;

&lt;body&gt;

&lt;div id="todo"&gt;
	&lt;div id="topo"&gt;
		&lt;div id="logo"&gt;Logo&lt;/div&gt;
		Aqui pode ser uma imagem de background e um texto.
	&lt;/div&gt;

	&lt;div id="meio"&gt;
		&lt;div id="esquerda"&gt;
			&lt;div id="menu"&gt;
				&lt;div class="itemMenu"&gt;Principal&lt;/div&gt;
				&lt;div class="itemMenu"&gt;Empresa&lt;/div&gt;
				&lt;div class="itemMenu"&gt;Produtos&lt;/div&gt;
				&lt;div class="itemMenu"&gt;Serviços&lt;/div&gt;
				&lt;div class="itemMenu"&gt;Contato&lt;/div&gt;
			&lt;/div&gt;
		&lt;/div&gt;

		&lt;div id="miolo"&gt;
			&lt;div class="secao_miolo"&gt;Seção 1&lt;/div&gt;
			&lt;div class="secao_miolo"&gt;Seção 2&lt;/div&gt;
			&lt;div class="secao_miolo"&gt;Seção 3&lt;/div&gt;
		&lt;/div&gt;

		&lt;div id="direita"&gt;
			&lt;div class="secao_direita"&gt;Seção 1&lt;/div&gt;
			&lt;div class="secao_direita"&gt;Seção 2&lt;/div&gt;
			&lt;div class="secao_direita"&gt;Seção 3&lt;/div&gt;
		&lt;/div&gt;
		&lt;div style="clear: both;"&gt;&lt;/div&gt;
	&lt;/div&gt;

	&lt;div id="rodape"&gt;
		&lt;div id="rodape_direita"&gt;
			Av. xxx yyy zzz, No 765&lt;br/&gt;
			Manaus - AM - CEP: 89000-000&lt;br/&gt;
			Email: &lt;a href="mailto:seuemail@seudominio.com.br"&gt;seuemail@seudominio.com.br&lt;/a&gt;
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>Não esqueca do arquivo de folha de estilo (CSS), e ajustar o nome dele ao nome colocado na tag <em><strong>&lt;link&gt;</strong></em> do cabeçalho do site.</p>
<p>Agora já podemos fazer várias modificações para o site ficar visualmente atrativo e também já sabemos como fazer um site em <em><strong>&lt;div&gt;</strong></em> de graça (grátis).</p>
<p>Se você quiser um site ou hospedagem profissional, acesse <a title="site hospedagem profissional" href="http://www.panasoft.com.br">Panasoft</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.comocriarsites.com/html/definindo-um-layout-de-website-sem-tabelas-tableless/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fazendo um Menu com MouseOver e MouseOut (Menu RollOver)</title>
		<link>http://www.comocriarsites.com/html/fazendo-um-menu-com-mouseover-e-mouseout-menu-rollover/</link>
		<comments>http://www.comocriarsites.com/html/fazendo-um-menu-com-mouseover-e-mouseout-menu-rollover/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 18:37:05 +0000</pubDate>
		<dc:creator>Raoni Novellino</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[mouseout]]></category>
		<category><![CDATA[mouseover]]></category>
		<category><![CDATA[rollover]]></category>
		<category><![CDATA[style]]></category>
		<category><![CDATA[tableless]]></category>

		<guid isPermaLink="false">http://www.comocriarsites.com/?p=63</guid>
		<description><![CDATA[Um menu RollOver é aquele menu que muda alguma coisa quando o mouse passa sobre um item do menu, normalmente muda as cores de fundo, mas pode mudar imagens também. Nesse post vou mostrar o código HTML para gerar o menu e também um pouco de Javascript que precisaremos para fazer a mudança.
Primeiro mostrarei o [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: xx-large;">U</span>m menu RollOver é aquele menu que muda alguma coisa quando o mouse passa sobre um item do menu, normalmente muda as cores de fundo, mas pode mudar imagens também. Nesse post vou mostrar o código HTML para gerar o menu e também um pouco de Javascript que precisaremos para fazer a mudança.</p>
<p>Primeiro mostrarei o código, HTML, Javascript e um pouco de CSS. Depois vai as explicações e um exemplo de funcionamento.</p>
<h2>Código HTML do Menu</h2>
<p>Primeiro o código HTML do menu:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>	&lt;div id="menu"&gt;
		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/index.html"&gt;PRINCIPAL&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/empresa.html"&gt;A EMPRESA&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/noticia.html"&gt;NOTÍCIAS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/boletim.html"&gt;BOLETINS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/artigo.html"&gt;ARTIGOS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/bancoimagem.html"&gt;GALERIAS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/link.html"&gt;LINKS ÚTEIS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/faleconosco.html"&gt;FALE CONOSCO&lt;/a&gt;&lt;/div&gt;
	&lt;/div&gt;</pre>
</div>
<p>Esse menu é feito sem tabela (tableless), que é um &#8220;novo&#8221; conceito de desenvolvimento de páginas. Para ser feito assim, normalmente usa-se muito a tag <strong><em>&lt;div&gt;</em></strong>. No código acima temos um <strong><em>&lt;div&gt;</em></strong> externo, que tem uma classe associada a ele, essa classe veremos na segunda parte do código. Dentro desse <strong><em>&lt;div&gt;</em></strong> externo, temos um <strong><em>&lt;div&gt;</em></strong> interno para cada item do menu. Cada <strong><em>&lt;div&gt;</em></strong> interno tem os atributos <em>class</em>, <em>onmouseover</em> e <em>onmouseout</em>, explicados abaixo:</p>
<h4>class</h4>
<p>- esse atributo é usado para definir uma classe de estilo (CSS) para uma tag, e todas as tags dentro dessa tag herdam parte desse estilo.</p>
<h4>onmouseover</h4>
<p>- esse atributo especifica uma ação a fazer quando o mouse passar por cima do que essa tag exibe, no nosso caso um item do menu. E esse atributo executa um script em <em>Javascript</em>, logo a função que está lá dentro (<em>mouse_over_menu(this);</em>) é uma função <em>Javascript</em>.</p>
<h4>onmouseout</h4>
<p>- esse atributo especifica uma ação a fazer quando o mouse sai de cima do que essa tag exibe, no nosso caso, quando o mouse sair de cima de um item do menu, esse atributo diz que é para executar a função &#8220;<em>mouse_out_menu(this);</em>&#8220;, essa é uma função <em>Javascript</em>.</p>
<h2>Código CSS (estilos).</h2>
<p>A seguir vem o código da classe de estilos (CSS):</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;style type="text/css"&gt;

#menu{
	width:160px;
	height:263px;
	background-color:#fff;
}

.itemOn{
	width:150px;
	height:23px;
	padding-left:10px;
	padding-top:2px;
	background-color:#fff;
}
.itemOn a{color:#336600; text-decoration:none; font-size:16px; font-weight:bold;}
.itemOn a:hover{text-decoration:none; font-size:16px; font-weight:bold;}

.itemOver{
	width:150px;
	height:23px;
	padding-left:10px;
	padding-top:2px;
	background-image: url(bg-menu.gif);
}
.itemOver a{color:#fff; text-decoration:none; font-size:16px; font-weight:bold;}
.itemOver a:hover{text-decoration:none; font-size:16px; font-weight:bold;}

&lt;/style&gt;</pre>
</div>
<p>O estilo para o identificador <em>menu</em> (#menu), define a largura (width), altura (height) e cor de fundo (background-color) do menu. Podemos ver que o <em><strong>&lt;div&gt;</strong></em> externo do nosso menu está com esse identificador (id=&#8221;menu&#8217;), Ele irá receber esses estilos para começar a construção do nosso menu rollover.</p>
<p>Para saber um pouco mais sobre folha de estilos (CSS) acesse: <a title="Entendendo CSS (folhas de estilo): Cascading Style Sheet - Parte 1" href="http://www.comocriarsites.com/html-css/entendendo-css-folhas-de-estilo-cascading-style-sheet-parte-1/">Entendendo CSS (folhas de estilo): Cascading Style Sheet &#8211; Parte 1</a> e <a title="Entendendo CSS (folhas de estilo): Cascading Style Sheet - Parte 2" href="http://www.comocriarsites.com/html-css/entendendo-css-folhas-de-estilo-cascading-style-sheet-parte-2/">Entendendo CSS (folhas de estilo): Cascading Style Sheet &#8211; Parte 2</a>.</p>
<p>Como vemos nos estilos acima, a única diferença entre as classe de estilo <em>ItemOn</em> e<em> ItemOver</em> é que o último tem uma imagem de fundo (<em>background-image</em>).</p>
<p>Agora a única coisa que falta fazer é o nosso código em <em>Javascript</em> para fazer a troca das classes de estilo dos itens do menu quando o mouse passar por cima ou sair de cime do item.</p>
<h2>O Javascript do Menu</h2>
<p>Como sempre, o código depois as explicações:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>function mouse_over_menu(objDiv)
{
	objDiv.className = 'itemOver';
}

function mouse_out_menu(objDiv)
{
	objDiv.className = 'itemOn';
}</pre>
</div>
<p>Vou explicar o básico sobre funções em <em>Javascript</em>. Para definir uma função em <em>Javascript</em> você deve escrever o cabeçalho da função seguido do corpo da função. No cabeçalho da função você deve colocar a palavra<strong><em> function</em></strong> seguida do nome da sua função (no caso das funções acima, <strong><em>mouse_over_menu</em></strong> e <strong><em>mouse_out_menu</em></strong>, respectivamente), seguido dos parametros passados para a função, entre parenteses.</p>
<p>O corpo da função deve estar todo entre chaves, e nele você coloca códigos <em>Javascript</em> para fazerem o que você quiser. No nosso menu, esse código vai apenas mudar a classe de estilo do objeto do elemento passado pelos parametros da função. Lá no nosso código HTML, podemos ver que foi passado um <strong><em>this</em></strong> como parametro da função, esse <em><strong>this</strong></em> indica que é para passar o objeto do elemento de onde a função está sendo chamada. No nosso caso, cada item do menu vai ser passado como um objeto <em>Javascript</em> para podermos modificar a sua classe.</p>
<h2>O Código inteiro &#8211; Menu RollOver</h2>
<p>Abaixo vai como ficaria o código inteiro do nosso menu rollover.</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;html&gt;
&lt;head&gt;

&lt;style type="text/css"&gt;

#menu{
	width:160px;
	height:263px;
	background-color:#fff;
}

.itemOn{
	width:150px;
	height:23px;
	padding-left:10px;
	padding-top:2px;
	background-color:#fff;
}
.itemOn a{color:#336600; text-decoration:none; font-size:16px; font-weight:bold;}
.itemOn a:hover{text-decoration:none; font-size:16px; font-weight:bold;}

.itemOver{
	width:150px;
	height:23px;
	padding-left:10px;
	padding-top:2px;
	background-image: url(bg-menu.gif);
}
.itemOver a{color:#fff; text-decoration:none; font-size:16px; font-weight:bold;}
.itemOver a:hover{text-decoration:none; font-size:16px; font-weight:bold;}

&lt;/style&gt;

&lt;script language="JavaScript"&gt;

function mouse_over_menu(objDiv)
{
	objDiv.className = 'itemOver';
}

function mouse_out_menu(objDiv)
{
	objDiv.className = 'itemOn';
}

&lt;/script&gt;

&lt;/head&gt;
&lt;body&gt;
	&lt;div id="menu"&gt;
		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/index.html"&gt;PRINCIPAL&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/empresa.html"&gt;A EMPRESA&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/noticia.html"&gt;NOTÍCIAS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/boletim.html"&gt;BOLETINS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/artigo.html"&gt;ARTIGOS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/bancoimagem.html"&gt;GALERIAS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/link.html"&gt;LINKS ÚTEIS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/faleconosco.html"&gt;FALE CONOSCO&lt;/a&gt;&lt;/div&gt;
	&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>Nesse link você pode ver esse código funcionando: <a title="exemplo de menu rollover html javascript" href="http://www.comocriarsites.com/exemplos/menu_rollover.html">Menu RollOver</a></p>
<p>Se gostou comente. <img src='http://www.comocriarsites.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.comocriarsites.com/html/fazendo-um-menu-com-mouseover-e-mouseout-menu-rollover/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
