Busca

Boas práticas de Desenvolvimento com Padrões Web


HTML simples com XML e CSS

Qualquer um que codifique HTML, ou mesmo use um editor WYSIWYG, já esbarrou no problema. Se você trabalha com internet, já deve ter tido também esse problema. O código se tornou complexo, com várias tabelas, uma dentro da outra. Vários frames, com uma porção de scripts para manter o conteúdo atualizado entre eles. Uma parte da [...]

06/12/2007 por Elcio Ferreira
7 Comentários

Qualquer um que codifique HTML, ou mesmo use um editor WYSIWYG, já esbarrou no problema. Se você trabalha com internet, já deve ter tido também esse problema. O código se tornou complexo, com várias tabelas, uma dentro da outra. Vários frames, com uma porção de scripts para manter o
conteúdo atualizado entre eles. Uma parte da aplicação rodando em um pop-up, com um script
que atualiza o conteúdo principal.

Então, cumprindo a lei de Murphy, um dos seguintes fatos indesejáveis acontece:

  1. Um cliente liga reclamando que o site está dando um tal de “erro de script” quando clica num link, você
    tenta, mas não consegue reproduzir o erro em nenhum navegador.
  2. Alguém da diretoria resolve que os títulos devem ser azuis, não vermelhos. E você se
    põe a localizar <font face=”verdana” size=”5″ color=”red”> para poder mudar a cor.
  3. Alguma tabela não fechada corretamente estádando problemas no Netscape, mas o código tem cincotabelas aninhadas e você perde um dia tentando acharo defeito.
  4. Você percebe uma certa demora para carregar algumaspáginas, vai conferir o código e descobrealgumas coisas assim: <font face=”Verdana”><b></b><i></i><fontsize=”1″><b></b></font><fontface=”Arial”>Texto</font></font>

Que fazer? É claro que com muito cuidado e talentoesse tipo de problema pode ser evitado, mas isso envolve umaquantidade de trabalho insana. Já vi muitos projetosonde se gastou mais tempo preso nas entranhas de umcódigo complexo do que em qualquer outra fase doprojeto.

Tem um pessoal na web que propõe umasolução bastante interessante para isso.É a turma do WaSP (www.webstandards.org.) Assoluções não são apenas uma listade novas tecnologias, mas também uma filosofia dedesenvolvimento baseada na simplicidade.

Baseado nessa filosofia da simplicidade, que tem me rendidoresultados surpreendentes, gostaria de fazer algumassugestões interessantes:

XHTML

Quem já trabalha com XML certamente percebeu o poderda flexibilidade e da simplicidade. Éimpossível escrever um XML com erros de sintaxe,porque os interpretadores reclamam imediatamente. Émuito simples escrever documentos XML, sendo fácilextrair dados de qualquer banco de dados etransformá-los em XML (a maioria dos SGBDs incorporaou tem planos de incorporar o suporte nativo a XML.)Através da poderosa linguagem XSL e da farta oferta deparsers gratuitos, XML pode ser transformado em praticamentequalquer formato de arquivo.

XHTML nada mais é do que uma forma de escrever umdocumento HTML de modo que ele também seja umdocumento XML válido. Ou seja, seu documento HTMLganha a coerência e flexibilidade de um documento XML,podendo ser facilmente lido por ferramentasautomáticas e convertido em outros formatos dearquivos. Com XHTML torna-se muito fácil oferecer osdados do seu site através de WAP ou de um RSS(http://rssficado.pilger.inf.br)por exemplo. Torna-se fácil também transformaro resultado de uma consulta a banco de dados ou um documentoXML numa página web.

A boa notícia é que é muito fácilescrever XHTML. Qualquer um que escreva HTML pode aprender afazê-lo sem muita dificuldade. Existem inclusive umasérie de ferramentas interessantes para tornar esseprocesso mais produtivo, como o excelente HTML Tidy(http://tidy.sourceforge.net)que tem uma eficiência impressionante para umaferramenta automática.

CSS e a Abordagem Semântica

Como você cria um título num documento HTML?

O meio comum hoje em dia para fazê-lo é:<font face=”Arial” size=”4″ color=”blue”>Texto doTítulo</font>.

Quando eu estudei HTML, em 1996, aprendi que existia uma tagespecífica para criação detítulos. É a tag h1. Assim, a maneira de secriar um título em HTML seria: <h1>Texto doTítulo</h1>.

Extremamente mais simples, não é verdade? Etorna o código também mais significativo. Assimum interpretador pode saber, por exemplo, onde estãoos títulos no meio do texto. Ou seja, esta abordagemdá significado semântico ao código.Aquele tag passa a significar alguma coisa, mesmo quenão seja vista num browser que renderize a fonte maiore azul que você tinha planejado.

Aliás, por falar no texto azul, se você usar asegunda abordagem seu título será exibido comos estilos padrão do navegador, e seu azul vai para obeleléu. Como você não quer perder abonita formatação que havia planejado, aquientra uma segunda linguagem, o CSS. Com CSS você podecolocar toda essa informação sobreformatação num arquivo externo. Assimvocê fica com um arquivo HTML apenas cominformação (que fica muito mais simples,organizado e rápido de se escrever) e mantémtoda a formatação num arquivo externo. Se umdia seu chefe resolver que todos os títulos do sitetem que ser vermelhos ao invés de azuis (acredite,isso é muito comum) você sóprecisará alterar uma palavra em um únicoarquivo e todos os títulos do site estarãoautomaticamente ajustados.

No Tables

Tabelas são um recurso muito útil do HTML. Semtabelas como exibiríamos informaçõescomo uma lista de produtos, um extrato bancário ou umcalendário? O problema é que tabelas tem sidousadas para muito mais do que isso. É preciso colocaro menu ao lado do texto? Cria-se uma tabela. É precisoque o texto tenha uma largura delimitada? Cria-se uma tabela.Imagem junto ao texto? Menu no cabeçalho? Duas colunasde texto? Tabela neles!

E como fica, nessa situação, a semânticado documento? Como você deve imaginar, nãohá aqui aquela prática separaçãoentre informação e formatação.Além disso, temos um outro sério problema: embrowsers antigos, ou mesmo em browsers modernos maldesenvolvidos, como o Internet Explorer, as tabelas sósão exibidas depois que a última tag</table> chega ao navegador.

É por isso que, quando você estáconectado via dial-up, em alguns sites a tela fica em brancodurante longos segundos (às vezes minutos) atéque é exibido de uma vez só.

Abrir mão de tabelas para montar layouts vai tornarseu código muito menor, mais simples e organizado. Vaitambém centralizar a formatação,colocando tudo que se refere a layout em um únicoarquivo. Imagine a facilidade de manutenção.Melhora também a experiência do usuário,pois a informação é exibida instantaneamente, assim que chega ao browser.

Dá-se a esta abordagem o nome de tableless. Apesar donome, não é a ausência total de tabelas,mas o seu uso apenas onde é semanticamentejustificável. De lambuja, um documento tableless bempensado vai funcionar em qualquer navegador, em qualquer sistema operacional, mesmo em PDAs.

No Frames, No Pop-ups, No DHTML

Pense muito antes de aplicar uma solução
baseada em frames, DHTML, scripts absurdos, pop-ups, plugins,
ActiveX, Applets ou qualquer outra tecnologia que quebre
essas duas premissas da internet:

- A web é um ambiente multiplataforma.

- Cada documento na web tem um endereço associado a
ele.

Não vou me alongar nesse tópico, mas gostaria que você tomasse um tempo para ler:

Vamos com calma

O interessante dessa abordagem baseada na simplicidadeé que você não precisa fazer tudo de umavez. Se está inseguro para começar, pode apenaseliminar as tags <font> e criar um arquivo CSSúnico. Ou pode começar usando os recursos deXML do seu banco de dados para gerar XHTML, ou criando umRSS. O importante é começar a simplificar antes que você fique maluco!

7 Comentários

Sua opinião:

Vamos elevar o nível de discussão. Exponha sua opinião, sua crítica.



RSS dos comentários deste post
URL para Trackback

7 Comentários

Camilo VItorino da Costa 06/12/2007 às 21:01

Excelente artigo introdutório. Só achei que faltou mais detalhes sobre XML em XHTML, mas já ta tudo lindo. parabéns

Camilo VItorino da Costa 06/12/2007 às 21:02

deveria ter escrito isso no comentário anterior…..

Layout novo? interessante…. Ta melhorando :D

vinicius 07/12/2007 às 16:40

Muito bom, parabéns, mas também acho que faltou detalhes sobre XML e XHTML.

Parabéns pelo novo Layout…..apenas encontrei um problema.

O site não está sendo visualizado corretamente no
FireFox.

Abraços

Acelio Filho 12/12/2007 às 16:40

É sempre bom recomeçar…
Explicando tudo novamente pra quem está chegando agora.

Não comecei tão cedo quando o Elcio, mas também acompanhei a modificação.

Haviam dois navegadores e dois tamanhos de tela a se preocupar. Só havia conexão discada (para 99% da população).

Em meados de 2000, começou a se falar em tempo de renderização com a tela em branco. Fator citado neste post (… até fechar a tag ).

Por causa deste fator (tempo) é que surgiu a solução:
Usar divs.
Umas depois das outras, na ordem de carregamento desejada, todas com position:absolute. Assim podia-se mandar carregar primeiro o conteúdo principal(no meio do site), depois os enfeites (que eram muitos e bem pesados) e, por último, aquele banner pessadíssimo em flash3 ou gifAnimado.

conteúdo principal, lendo o banco-de-dados
menu, enfeitado com imagens ou em flash
lateral, submenu, enfeites
banner no topo

O navegador ia lendo e apresentando na ordem desejada, daí o usuário não ficava esperando carregar o banner antes de esperar carregar a próxima célula da tabela… O defeito era o alinhamento do site. Ficavam sempre à esquerda. O CSS era limitado.

Hoje, o conceito Tableless não é mais assim.
O tempo não é mais problema, e este fator tela-branca não importa mais. O que importa é deixar o site no meio da tela.

Quando há uma div principal(), com outra div, contendo outras div dentro, dá na mesma que usar uma tabela com as divs dentro. o navegador só mostra as divs que estão dentro da principal, depois de ler a tag dela…

Como neste site.
Faça um teste com conexão discada. Fica tudo branco por instantes e, de repente, puf!
Vem o texto, e depois as imagens de fundo.

Fazeroquê, se ninguém quer um site alinhado à esquerda da tela, nem um site que tome a tela toda…

“The divs on the table”

Daniel Luz 19/12/2007 às 13:54

Acelio, a não ser que eu tenha entendido errado o que você está descrevendo, o problema não é o browser depender da div estar carregada. O caso aí é que a maioria dos browsers evita renderizar qualquer coisa até receber todo o CSS externo, o que muitas vezes (especialmente na primeira visita) pode acabar ocorrendo apenas depois de boa parte do conteúdo já ter sido carregada. Uma exceção notável na forma de lidar com CSS externo é o Opera, que vai exibindo o que pode, mesmo que tudo mude radicalmente pouco depois.

Riacardo Beck 19/01/2008 às 11:12

Gostei muito do artigo, agora só um detalhe eu construi um site todo com apenas 1% de utilização de tabelas.No restante, usei listas quando da exibição de dados que antes eram tabulados ou div. O resultado é simplesmente fantástico. Meu cliente percebeu uma diferença na forma como ele renderiza, agora é percebido que se monta linha alinha, o que antes em formato tabular, no IE só aparecia quando o último registro era exibido. Aboli de vez o uso de tabela, somente em algumas situações.

Aaron 29/01/2008 às 01:52

Diego. definitivamente o space do seu teclado nao funciona as vezes. mas o artigo tah a nivel profissional. parabens.