Arquivo para Junho, 2007

Curso de Tableless (Aula 2 – final)

Vamos à aula 2…

Aula 02

  • Construindo uma estrutura mais elaborada
  • Falando sobre CSS
  • Diferentes navegadores. Diferentes resultados.
  • Comentário pessoal do autor

Construindo uma estrutura elaborada

Continuando então… blocos de notas abertos?! vamos fazer uma estrutura utilizando o exemplo anterior da estrutura simples. Vamos simular um site mais completo. Além de TOPO, MENU, CONTEÚDO E RODAPÉ, vamos encher mais com um menu e umas caixas flutuantes dentro do conteúdo. Algo assim:

estrutura_elaborada.jpg

Henrique, por que essas cores horríveis Jamaicanas? porque não uns degradês , um design bacana? desculpe desapontá-l@, mas isto não é um curso de design e sim de estrutura de site, vamos prosseguindo então… ;)

Copiar-colar e vamos recuperar a nossa estrutura simples:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>Henrique Araujo – Curso de Tableless (Aula 01)</title>
<style type=”text/css”>

#geral {
width:600px;
height:350px;
}

#topo {
width:600px;
height:80px;
background-color:#EC0002;
}

#menu {
height:210px;
width:200px;
float:left;
background-color:#006FD8;
}

#conteudo {
width:400px;
height:210px;
background-color:#FFEB01;
float:left;
}

#rodape {
height:60px;
width:600px;
background-color:#007D07;
float:left;
}
</style>

</head>

<body>
<div id=”geral”>

<div id=”topo”>Minha logomarca</div>
<div id=”menu”>menu</div>
<div id=”conteudo”>conteúdo</div>
<div id=”rodape”>rodapé</div>

</div>
</body>
</html>

Vamos ao menu! lembra da W3C? ok, ela diz que menus são listas! Veja abaixo:

<ul id=”menu”>
<li>opção 1</li>
<li>opção 2</li>
<li>opção 3</li>
</ul>

e o CSS disso aí seria:

#menu {
height:210px;
width:200px;
float:left;
background-color:#006FD8;
}

#menu ul {
list-style-type:none;
padding:0px;
}

#menu ul li {
margin:1px;
padding:3px;
}

#menu ul li a {
background-color:#FFFFFF;
border:0px;
display:block;
text-decoration:none;
}

#menu ul li a:hover {
background-color:#999999;
color:#FFFFFF;
}

O código completo com o MENU então seria:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>Henrique Araujo – Curso de Tableless (Aula 01)</title>
<style type=”text/css”>

#geral {
width:600px;
height:350px;
}

#topo {
width:600px;
height:80px;
background-color:#EC0002;
}

#menu {
height:210px;
width:200px;
float:left;
background-color:#006FD8;
}

#menu ul {
list-style-type:none;
padding:0px;
}

#menu ul li {
margin:1px;
padding:3px;
}

#menu ul li a {
background-color:#FFFFFF;
border:0px;
display:block;
text-decoration:none;
}

#menu ul li a:hover {
background-color:#999999;
color:#FFFFFF;
}

#conteudo {
width:400px;
height:210px;
background-color:#FFEB01;
float:left;
}

#rodape {
height:60px;
width:600px;
background-color:#007D07;
float:left;
}
</style>

</head>

<body>
<div id=”geral”>

<div id=”topo”>Minha logomarca</div>
<div id=”menu”>

<ul>
<li><a href=”#”>opção 1</a></li>
<li><a href=”#”>opção 2</a></li>
<li><a href=”#”>opção 3</a></li>
</ul>

</div>
<div id=”conteudo”>

</div>
<div id=”rodape”>rodapé</div>

</div>
</body>
</html>

Agora, vamos às nossas caixinhas no corpo do conteúdo do nosso site. Elas são DIVS que flutuarão à esquerda, com espaços entre eles afastando.

Assim:

       <div id=”box”>caixa 1</div>
<div id=”box”>caixa 2</div>
<div id=”box”>caixa 3</div>
<div id=”box”>caixa 4</div>

Vamos ao CSS:

#box {
background-color:#FFFFFF;
width:160px;
height:100px;
margin-left:20px;
margin-bottom:5px;
float:left;
}

Então o resultado disso seria:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>Henrique Araujo – Curso de Tableless (Aula 01)</title>
<style type=”text/css”>

#geral {
width:600px;
height:350px;
}

#topo {
width:600px;
height:80px;
background-color:#EC0002;
}

#menu {
height:210px;
width:200px;
float:left;
background-color:#006FD8;
}

#menu ul {
list-style-type:none;
padding:0px;
}

#menu ul li {
margin:1px;
padding:3px;
}

#menu ul li a {
background-color:#FFFFFF;
border:0px;
display:block;
text-decoration:none;
}

#menu ul li a:hover {
background-color:#999999;
color:#FFFFFF;
}

#conteudo {
width:400px;
height:210px;
background-color:#FFEB01;
float:left;
}

#box {
background-color:#FFFFFF;
width:160px;
height:100px;
margin-left:20px;
margin-bottom:5px;
float:left;
}

#rodape {
height:60px;
width:600px;
background-color:#007D07;
float:left;
}
</style>

</head>

<body>
<div id=”geral”>

<div id=”topo”>Minha logomarca</div>
<div id=”menu”>

<ul>
<li><a href=”#”>op&ccedil;&atilde;o 1</a></li>
<li><a href=”#”>op&ccedil;&atilde;o 2</a></li>
<li><a href=”#”>op&ccedil;&atilde;o 3</a></li>
</ul>

</div>
<div id=”conteudo”>

<div id=”box”>caixa 1</div>
<div id=”box”>caixa 2</div>
<div id=”box”>caixa 3</div>
<div id=”box”>caixa 4</div>

</div>
<div id=”rodape”>rodap&eacute;</div>

</div>
</body>
</html>

Diferentes navegadores. Diferentes resultados

easycalendar

Como eu já havia falado antes, desenvolver páginas requer que você teste em vários navegadores. O IE 6,0 e o Firefox chegam a ser suficientes, mas o ideal mesmo é que os testes ocorram em:  IE 6.0 (se possível IE7.0 também), Firefox e Safari, presente nas 3 plataformas mais utilizadas hoje respectivamente: Windows, Linux e MAC.

Porque ocorrem diferentes resultados? simples, os padrões estão ai colocados pela W3C, mas as empresas (leia-se principalmente a Microsoft) fabricam seus navegadores sem obedecê-los.  Felizmente, ela – a microsoft – se redimiu quando lançando o IE7.0, assemelhou o seu motor com o do Firefox; este último o navegador que atualmente mais chega próximo dos padrões.

Então eu vou ter que testar na base do “F5″ neste navegadores todos? Sim.

Comentários

Falar do TABLELESS sem falar de CSS é um troço complicado. Os dois são casados na igreja e no “civil”, e a separação hoje é improvável e inviável. O método “sem-tabelas” exige que por trás da nossa estrutura tenhamos folhas de estilos (CSS) extensas, que serão de qualquer jeito carregadas e desenhadas pelo navegador. Isto caracteriza mão-de-obra intensa, ou seja, um trabalhão muitas vezes, mesmo para quem conhece bem o CSS. Eu não pretendo (pelo menos tão cedo) abordar CSS aqui no blog, por se tratar de algo que exige muito conteúdo teórico e muita prática agregada também. Seria muita audácia da minha parte. Resta a mim esperar que, primeiro, você que se interessou mesmo por este conteúdo, navegue um pouco pelo Google estudando CSS (sugestão: W3SCHOOLS) e reutilize os códigos aqui apresentados para te ajudar, e segundo, que soluções revolucionárias como Microsoft Silverlight e Adobe FLEX venham em breve ORGANIZAR esta forma de desenvolvimento que temos hoje ;) .

A grande lição que eu gostaria que ficasse (pronto, agora deu a louca no cara, ele tá se achando um mix de professor sabe-tudo e profeta) é: não importa o que você faça na vida, organização deve estar sempre à frente.

Curso de Tableless (Aula 1)

leia-se:

Curso Claro Desenrolado e Descontraído de Tableless Para Todo Mundo

Isso mesmo. Pra você que não aguenta mais tanta tabela gordurosa cheia de formatação e gambiarras esquisitas, chegou a hora disso começar a acabar! E pra você que quer apenas entender melhor o que está por trás dos sites. Resolvi elaborar minha versão própria de aula tudo de forma muito clara e direta sem rodeios, porque sempre tive raiva – ódio mortal – de aulas/tutoriais/livros que abusam de formalidade, falam muito e fazem entender muito pouco porque não são nada claros. O mundo é da SIMPLIFICAÇÃO!. O objetivo não é fazer você abandonar as tabelas, mas sim utilizá-las da maneira correta. É bom lembrar que o interesse aqui não é fazer ninguém sair trocando as tabelas pelos <divs> do dia pra noite. Tudo exige paciência e muito exercício.

Ah, você nunca viu esse troço estranho? Não se preocupe porque esse curso é para todos, até quem nunca tentou criar nada pra web.

Vamos ao roteiro:

Aula 01

  • Tableless?
  • Por que / Pra que?
  • <div>
  • Construindo uma estrutura simples

Aula 02

  • Construindo uma estrutura mais elaborada
  • Falando sobre CSS
  • Diferentes navegadores. Diferentes resultados.
  • Comentário pessoal do autor

Tableless?

Table + less. Sem tabelas. Ou seja, nada de <table> para construir a estrutura da página.
Ela é a forma padrão de criação de páginas. Como assim padrão? Vamos lá…

Os padrões da Web

O órgão W3C(link) é um serviço que estipula padrões para o desenvolvimento web e para a forma de se confeccionar páginas.
Criou-se a forma amadora e a forma profissional. Ela diz por exemplo que uma imagem deve ter um “alt” (<img src=”../caminho/logomarca.jpg” alt=”Blog do Henrique”>) ou que um <br/> deve ser assim.

E o que eu uso então? <DIV>. Vou falar sobre isso lá na frente.

E pra que isso? leia abaixo.

Por que / Pra que?

Padrões existem para tornar de entendimento geral determinada coisa. Tornando assim essa coisa manipulável por qualquer tipo de pessoa e de um só jeito.

O tableless existe…

  • Pra que você tenha fácil entendimento e manutenção do seu código já que seu uso faz você criar código enxuto e limpo;
  • Pra que se tenha uma forma organizada e igual de se trabalhar em qualquer lugar do mundo;
  • Pra que as empresas desenvolvedoras de navegadores padronizem suas formas de carregar páginas (o que hoje muitas não fazem)

De quebra, você ganha em banda de tráfego, no momento em que ele reduz o número de informação HTML a ser carregado pelo navegador. Como assim? o site carrega muito mais rápido!

<DIV>

O div é uma tag HTML simples de entender. Ela delimita determinada área da página. Pode conter qualquer tipo de coisa: imagem, objeto flash, texto, outras divs, etc.

como implementa?

<div>isto aqui é o conteúdo da div</div>

Os divs naturalmente ficam um abaixo do outro. Apenas a opção FLOAT:LEFT/RIGHT/NONE/INHERIT do CSS aplicado à ele fará com que por exemplo, ele fique assim:

CÓDIGO:<style type=”text/css”>#div1 {
float:left;
background-color:#CF2323;
width:70px;
height:90px;
}#div2 {
float:left;background-color:#001582;
width:70px;
height:90px;
}
</style>

O mundo não é perfeito. Trabalhar com o método Tableless pode lhe causar alguns stresses iniciais. Existe uma diferença entre 2-3 pixels entre Firefox

e Internet Explorer 6.0 , isso quer dizer que podem aparecer resultados diferentes durante seus testes nos dois navegadores. Mas o motor do Internet Explorer 7.0 foi elaborado de forma a se aproximar mais dos padrões da W3C, e se assemelha bastante à do Firefox. Se você está tentando trabalhar de forma profissional com os divs, deve testar no IE 6.0, IE7.0 e no Firefox.

Construindo uma estrutura simples

Nada de Dreamweaver! encorajo o uso abusivo do Bloco de Notas se você quiser aprender realmente. Então, com ele aberto, vamos fazer algo mais ou menos assim:

Vamos às medidas, cores e outros estilos… O css é quem vai desenhar tudo na tela, no momento em que terá MEDIDAS EXATAS do que precisamos.

Vamos à ele:

#geral {
width:600px;
height:350px;
}

#topo {
width:600px;
height:80px;
background-color:#EC0002;
}

#menu {
height:210px;
width:200px;
float:left;
background-color:#006FD8;
}

#conteudo {
width:400px;
height:210px;
background-color:#FFEB01;
float:left;
}

#rodape {
height:60px;
width:600px;
background-color:#007D07;
float:left;
}

Estamos então com o documento HTML estritamente nos padrões W3C criado. Agora a estrutura (os divs) deve ficar clara e fácil de manter.
Temos um topo, um menu, um espaço para o conteúdo e um rodapé para a nossa página já definidos os seus tamanhos e cores ali no CSS.
Agora, vamos à estrutura:

<div id=”geral”>

<div id=”topo”></div>
<div id=”menu”></div>
<div id=”conteudo”></div>
<div id=”rodape”></div>

</div>

Colocamos um DIV para conter todas as nossas seções (menu, topo..). Ele é chamado de container neste caso. Teremos dentro dele, identados em

mesmo nível, as demais. Simples!

easycalendar

O nosso documento então ficaria:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>Henrique Araujo – Curso de Tableless (Aula 01)</title>
<style type=”text/css”>

#geral {
width:600px;
height:350px;
}

#topo {
width:600px;
height:80px;
background-color:#EC0002;
}

#menu {
height:210px;
width:200px;
float:left;
background-color:#006FD8;
}

#conteudo {
width:400px;
height:210px;
background-color:#FFEB01;
float:left;
}

#rodape {
height:60px;
width:600px;
background-color:#007D07;
float:left;
}
</style>

</head>

<body>
<div id=”geral”>

<div id=”topo”>Minha logomarca</div>
<div id=”menu”>menu</div>
<div id=”conteudo”>conteúdo</div>
<div id=”rodape”>rodapé</div>

</div>
</body>
</html>

Coloque asas na sua criatividade agora. Invente sua própria página tableless, e boa sorte. Até o próximo post, ou melhor, a próxima aula. ;)

AJAX não é coisa de outro mundo

mais nerdices pra vocês…

Tá na moda né, AJAX pra cá, AJAX pra lá. Minha monografia está sendo sobre o AJAX. Porque de fato o conjunto Javascript + XML (que é o AJAX :p ) é bastante poderoso no sentido de facilitar a vida do usuário.

O Google deu o ponta-pé em 2005, com o Google Suggest (não sei o link pra lá porque mudou) , onde você ia digitando aos poucos o que queria buscar e o campo de texto ia enviando para o banco de dados Google, que retornava possíveis palpites.

De lá pra cá ninguém mais quer o tal do “clica-espera” nessas páginas da web, ele é um saco! mas o que existe por trás do AJAX não é nada de novo, nova é somente a idéia de utilizá-lo tão “inteli-eficientemente”. É lindo, especialmente do lado dos resultados. Agora mesmo o WordPress salvou um rascunho deste post equanto digito similar às threads do MS Word. Ah! falando nisso, o WordPress (este sistema de blog que você está vendo aqui, o qual ainda pretendo elogiá-lo neste blog) é todo baseado em AJAX, e um belo de um AJAX!. Os ganhos que tenho encima de um serviço clássico de blog são vários.

O que me deixa mais desmotivado digamos assim, é o quanto de linha código temos por trás pra criar uma simples coisa. Amigos, 90% que fica bonito pra você no browser geralmente dá uma mão de obra e tanta pra fazer. Se vale a pena estudar? vale, tem coisas legais (e úteis) pra se fazer em AJAX. Mas não há porque aprofundar demais porque certamente estão inventando por aí ferramentas que digamos “organize” a implementação dele, e vem aquela velha história do conhecimento que se torna absoleto. Um exemplo é o FLEX da Adobe, uma IDE de desenvolvimento web de linguagem própria de resultado lindo (ele gera um SWF com toda a sua aplicação lá dentro!). É a tentativa de trazer o comportamento desktop para o mundo da web. Eita velho DELPHI poderoso!…

Descobri dia desses o Hotmail Live. Tá a cara do MS Outlook. Me amarrei na forma rápida e simples (até mais que a do Gmail) de fazer as coisas! aliás… a Microsoft chamou de LIVE, tudo que tem o comportamento “ao vivo”, ou seja, que utilize AJAX ou similar pra facilitar a vida dos seus usuários. Claro que também tem o “embromation” marketeiro de uma nova nomenclatura que represente sofisticação, bla bla bla…

A pergunta é: tudo bem, o AJAX é uma forma de solicitar que não utiliza POST ou GET, bonito, ok. Mas…….. até que ponto o tempo de espera do usuário diminui? e aonde ele deve ser aplicado de forma eficiente? estive visitando alguns sites e observando, e não sei não ein… tive que esperar carregar a “dinamicidade mordeníssima” da página :P .

Se você tem algo à acrescentar, por favor fique à vontade.

A tal da Rich Media

Hoje no mundo da web temos clientes exigindo a tal da Rich Media com muito mais frequência que uns tempos atrás, principalmente as do tipo float (flutuante). Corresponde à um anúncio qualquer que abre no corpo da página geralmente no momento que ela termina de ser carregada e possui um botão para fazer ela desaparecer, logicamente. Ela é uma propaganda na minha opinião – e na análise de especialistas experientes do assunto – invasiva, no momento em que “se joga” na sua tela promovendo algum anúncio animado (flash) ou mesmo estático. Tudo bem que é um negócio interessante de se ver a nível tecnológico, mas já que ela existe não pode ser usada excessivamente.

Existem outros tipos de Mídia Rica. Quase todos eles são invasivas e incômodas. Não encorajaria jamais meus clientes a usá-las, mas às vezes, somente às vezes, é necessário. Quando? hm… digamos que quando é extremamente necessário se usar um pop-up para chamar a atenção do internauta sobre determinado assunto ou acontecimento.

Se não interessa a você aprender como se faz um floater, então este é o final do post pra você. Senão, lá vai…

1. CRIE UMA ANIMAÇÃO FLASH (OU APENAS UMA IMAGEM ESTÁTICA NO HTML). GERALMENTE USAMOS ENTRE 300-350px E 200-250px AS DIMENSÕES. MAS É VOCÊ, OU O CLIENTE, QUEM SABE.

2. EXISTIRÁ UM BOTÃO FECHAR NESTA ANIMAÇÃO/IMAGEM, A SEU CRITÉRIO, AFIM DE POSSIBILITAR QUE O INTERNAUTA FAÇA O FLOATER SUMIR DA TELA. NESTE BOTÃO, FAÇA:

No caso de flash:

on (press) {

getURL(“javascript:MM_showHideLayers(‘floater’,”,’hide’);”);

}

Caso o seu botão fechar seja um link normal:

<a href=”javascript:;” onclick=”MM_showHideLayers(‘floater’,”,’hide’);”>FECHAR ESTA JANELA</a>

3. NO PASSO ACIMA, VOCÊ DEFINIU QUE “floater” É O QUE VOCÊ VAI FECHAR. ENTÃO VOCE TEM QUE CRIAR UM “<DIV ID=”floater”>” NO SEU HTML, ANTES DA TAG <BODY>, PARA CHAMAR NO HTML ESTE FLOATER. FICANDO:

#floater{

position:absolute; /* obrigatório */

left: tamanho em pixels do afastamento esquerdo do floater; /* obrigatório */

top: tamanho em pixels do afastamento superior do floater; /* obrigatório */

width: largura do seu floater; /* obrigatório */

height:?; algura /* obrigatório */

z-index:200; /* (afastamento em camadas dos outros elementos da página) obrigatório */

}

4. COLOQUE O JAVASCRIPT ABAIXO DENTRO DA TAG <HEAD>, SE JÁ HOUVER UM JAVASCRIPT NO SEU HTML, BASTA COPIAR AS FUNÇÕES (que funções? ah então copie logo tudo):

<script type=”text/JavaScript”>

<!–

//FUNÇÃO VAI ACHAR O “OBJETO”, NO CASO A DIV, AFIM DE FECHÁ-LA.

function MM_findObj(n, d) { //v4.01

var p,i,x; if(!d) d=document; if((p=n.indexOf(“?”))>0&&parent.frames.length) {

d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}

if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];

for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);

if(!x && d.getElementById) x=d.getElementById(n); return x;

}

// FUNÇÃO QUE VAI FECHAR O “OBJETO”, NO CASO A DIV.

function MM_showHideLayers() { //v6.0

var i,p,v,obj,args=MM_showHideLayers.arguments;

for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];

if (obj.style) { obj=obj.style; v=(v==’show’)?’visible’:(v==’hide’)?’hidden’:v; }

obj.visibility=v; }

}

//–>

</script>

5. INSIRA O SEU FLOATER AGORA. ASSIM:

<head>

bla bla bla…

</head>

<div id=”floater”>

pode colocar o flash ou a imagem que você criou aqui

se for uma imagem, não esqueça do link para fechá-lo:

<a href=”javascript:;” onclick=”MM_showHideLayers(‘floater’,”,’hide’);”>FECHAR ESTA JANELA</a>

</div>

<body>

bla bla bla bla..

</body>

E PRONTO!

Você achou este post util a você? porque não me diz a sua opinião?

Visite o meiocodigo.com

O meu colega de trabalho e agora considerado amigo, Fábio Costa, programador especialista em Javascript da MAXMEIO, está lançando o blog Meiocodigo.com. Também usando o belo serviço de blog da WordPress. Vai aí uma propaganda explícita.

foto_meiocodigo.jpg

Eu aconselho você a dar uma passada lá não só porque o cara é inteligente, mas porque o blog tem conteúdo ESSENCIAL pra quem trabalha com web. Vale muito a pena.

PS: muita sorte pra você em Atlanta, Fábio!


Esse aí na foto...

Yeah! Este sou eu!

Henrique Eduardo Araujo

Twitter

Categorias

Leituras Importantes:

Dias p/ o Aniversário do Blog

Aniversário deste blog

Catraca

  • 26,321 visitantes
Licença Creative Commons