out 23
Web Standards código semântico, estrutura, padrões Web
Um desenvolvimento maduro para a Web conta com bons nomes de arquivos, um diretórios organizados e separação das camadas de estrutura, apresentação e comportamento.

Definimos assim cada uma destas camadas:
Estrutura
A camada de estrutura é formada por uma linguagem de marcação, como o XML, HTML e XHTML. Este arquivo contém o conteúdo do documento, além de informações de indexação e documentos relacionados.
O conteúdo deve ser marcado de modo que seja perfeitamente compreensível para qualquer tipo de usuário, seja ele quem for ou qual seja o dispositivo utilizado. Deve-se marcar cada trecho com seu correspondente, de acordo com a definição do tipo de documento (DTD). No HTML, por exemplo, usamos as tags:
- <p> para parágrafos;
- <a> para links de hipertexto;
- <h1>, <h2> e <h3> para títulos;
- <ul>, <ol>, <li>, <dl>, <dt> e <dd> para listas;
- <table>, <thead>, <tbody>, <caption>, <tr> e <td> para tabelas; e assim por diante.
Cada elemento deve procurar seu melhor correspondente no tipo de documento. Se um elemento ou um conjunto deles não tiver uma boa correlação deve-se usar elementos genéricos:
- <div> para elementos em bloco;
- <span> para elementos em linha (dentro de parágrafos, por exemplo).
A seguir, um exemplo de documento bem simples pronto para a publicação.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Meu site</title>
<link rel="stylesheet" type="text/css" href="styles.css"/>
<script type="text/javascript" src="behavior.js"></script>
</head>
<body>
<h1>Olá mundo!</h1>
<div id="avatar">
<img src="avatar.jpg" width="48" height="48" alt="Foto">
</div>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing
onummy nibh euismod tincidunt ut laoreet dolore erat
olutpat. Ut wisi enim ad minim veniam, quis nostation
llamcorper suscipit lobortis nisl ex.</p>
<p>Ut wisi enim ad minim veniam, quis nostrud exerci.
<a href="http://outrosite.com" rel="external"
title="Outro site">link abre uma nova janela</a>.
Lorem ipsum dolor sit amet, sectetuer cidunt ut
dolore magna aliquam erat volutpat.</p>
<p><a href="mailto:eu@provedor.com">mande um e-mail!</a></p>
</body>
</html>
Se somente este código for mostrado ao usuário, é muito provável que ele consiga realizar as tarefas possíveis nesta interface que incluem ler o texto, ver a foto, clicar no link externo e mandar uma mensagem eletrônica.
Nesta camada, são tomadas decisões de conteúdo, como a hierarquia das seções (definidas pelos seus títulos), como será o formato de data, como estruturar um menu de navegação ou um breadcrumb, entre outras. Além disso, é nesta camada que reside boa parte das definições de acessibilidade de uma interface.
Veja um exemplo de página apenas com a estrutura. Perceba que mesmo sem layout ela continua sendo compreensível e que continua funcionando sem JavaScript. Para ver a estrutura de qualquer página use uma extensão para como o WebDeveloper para Firefox e aperte Ctrl+Shift+S.
Apresentação
Na camada de apresentação, está tudo que caracteriza o layout da página. Com o CSS, definimos cores de fontes, fundos, posição dos elementos na página e todas as outras decisões estéticas.
Veja um exemplo de código CSS aplicado ao nosso exemplo de estrutura:
body{
font: 0.8em Arial, Helvetica, sans-serif;
background: url(fundo.jpg) no-repeat;
padding: 140px 0 0 100px;
}
p{
width: 400px;
margin:0;
padding:10px;
background: url(fundo.png);
}
p + p + p{
background: transparent;
}
h1{
width: 400px;
margin-left: -30px;
font: bold 3.5em Georgia,Times New Roman,serif;
color: #93360D;
}
div{
float: left;
margin: 0 10px 0 0;
}
img{
border: 1px solid #000;
}
a{
color: #000;
}
a:hover{
color: #93360D;
}
a[rel="external"]{
background: url(externo.png) center right no-repeat;
padding-right: 13px;
}
a[href ^="mailto:"]{
font-size: 0.85em;
font-weight: bold;
text-decoration: none;
padding: 2px 10px;
background: #E0C284;
}
Separando todas as definições de estilo num documento separado permite melhor gerenciamento de estilos diferenciados de acordo com a mídia. Pode haver um estilo diferenciado para impressão:
@media print{
* {
color: #000;
font-family: Georgia,Times New Roman,serif;
text-decoration: none;
}
p + p + p, img{
display: none;
}
}
Veja o exemplo anterior, agora com a camada de apresentação.
Comportamento
Já na camada de comportamento, estão todos os efeitos e todas as decisões funcionais da interface. Manter a programação separada da estrutura facilita a manutenção e evita erros. Além disso, é mais fácil tratar alternativas para usuários que não possuem suporte a esta camada, como usuários de celular e de quiosques.
No exemplo anterior, clique no link para abrir um site externo em nova janela.
Veremos um artigo mais detalhado sobre scripts não intrusivos mais adiante.
Referências:
out 15
Web Standards blog action day, desenvolvimento sustentável, Ecologia, meio ambiente

Estou reciclando este texto para o Blog Action Day 2007.
Sua família separa o lixo para reciclagem? Você prefere deixar o carro na garagem e ir para o trabalho utilizando transportes públicos ou não poluentes? Você todos os equipamentos eletrônicos e as luzes quando deixa um cômodo? Então você está pronto para um novo nível de conscientização de preservação do meio ambiente. Veja como medidas simples no desenvolvimento Web podem fazer a diferença na utilização de recursos naturais.Os educadores ambientais trabalham com os princípios dos 4 R’s para a redução no consumo de insumos naturais e controle de resíduos: Reduzir, Reciclar, Reutilizar e Recuperar. No desenvolvimento Web podemos trabalhar principalmente com o princípio de redução do consumo de papel e energia. Veja algumas idéias:
Otimizando o CSS de impressão
A produção de papel é um dos procedimentos mais nocivos à natureza. É necessário o desmatamento de grandes áreas para o plantio de uma ou duas espécies de árvores. O impacto no ecossistema é irreversível.
Não é possível impedir a impressão das interfaces e nem é aconselhável, mas é possível reduzir o número de páginas impressas disponibilizando para esta media apenas o essencial. Limpe o CSS eliminando fundos, cores, banners, menus e todo tipo de informação que não é útil para quem está imprimindo aquele conteúdo.
Utilizando protótipos navegáveis
No projeto de desenvolvimento Web o arquiteto de informação deve ser o maior consumidor de papel. Ele precisa de dezenas de impressões de wireframes para testes, correções e validação do cliente, sem mencionar a prototipação utilizando post-its. Protótipos navegáveis são de longe a melhor forma de fechar o escopo do projeto com o cliente, principalmente em sistemas altamente interativos. E podem ser reutilizados para a integração com as camadas de apresentação e comportamento.
Trabalhando a acessibilidade em dispositivos móveis
O futuro da Web não depende exclusivamente de acesso nos computadores desktop como conhecemos hoje. Notebooks já são mais acessíveis para usuários finais e usuários corporativos estão obtendo acesso aos sistemas Web por dispositivos móveis cada vez menores. A fonte de energia destes dispositivos ainda são baterias recarregáveis com uma vida útil limitada. Nem sempre o despejo destas baterias, que são compostas por diversas substâncias tóxicas, é adequado. Estes despejos acabam em aterros sanitários comuns, contaminando o solo e as águas.
Trabalhando um pouco a media handheld no seu CSS é possível diminuir o tempo de uso de alguns destes dispositivos, mas a diferença aparece mesmo na verificação de acessibilidade. Passe suas interfaces nos verificadores automáticos e assegure-se de conseguir o maior nível de acessibilidade de acordo com os prazos disponíveis.
Lendo este artigo, esta iniciativa pode parecer ineficaz ou mesma utópica, mas são nas pequenas atitudes que conseguimos as pequenas economias que farão a diferença. É cada um fazendo a sua parte. Todos lucram.
set 03
Web Standards code show, html, python, svn, visie
Code Show
17 de Agosto de 2007.
E duas semanas depois, alguns notas sobre o Code Show:
- Ótima dica do Élcio para separar entregas de um grande aplicativo em pequenos módulos. O cliente vê que o projeto está andando, os projetos mais fáceis de gerenciar e o tesãozinho de trabalho cumprido quase que diariamente.
- Que nervoso me deu com Diego espalhando aquele
font-family no código todo! Lembrete para mim mesma: escrever algo sobre boas práticas para CSS, reset.css ou mesmo sobre CSS frameworks. Update: Escrevi! Uma outra visão sobre CSS Frameworks.
- Outro ponto que me deixou tensa foi a estrutura da página. Quando começo a montar um conteúdo, coloco apenas as tags indispensáveis para a compreensão do conteúdo. Qualquer
div ou span de estrutura só entra quando estou feliz com o conteúdo e começo a montar o CSS. Isto minimiza a ocorrência de tags desnecessárias, principalmente para quem está começando com o CSS design.
- Não vi os meninos validarem o código HTML durante o processo. Não vi se o CODA já faz isso e eu perdi a deixa. Estou sempre validando para evitar erros de renderização bizarros e evitar o acúmulo de erros em todas as páginas. O mesmo serve para a verificação de acessibilidade e usabilidade. Assim que estou com o HTML montadinho em todo site navego para ver se faz algum sentido. Isso antes mesmo de ter um layout! Eu sei que era apenas um exercício, mas era o lugar para aprendermos um pouco das práticas uns dos outros.
- Subversion é tudo nesta vida. Ainda vou ter um! *:D
- Estava curiosa sobre o Python, mas foi só isso. Não me apaixonei.
- Foi ótimo finalmente conhecer Elcio, Diego, Rafael e Jader, e conhecer o menino Victor, que levou a gente para almoçar, e todo mundo mais!

- Preciso de um destes aparelhinhos wi-fi. Me senti em 1986 com bloquinho de notas e lapiseira.
- Ainda não vi a gravação do CodeShow! Tenho que fazer isso logo!!!
- Não comi pizza, mas tomei um chopp preto ótimo no Prainha Paulista (que infame!).
- Nunca vá de vestidinho para SP no inverno. Você vai congelar.
Uma resenha mais profunda no blog do Jader.
jun 07
Web Standards padrões Web
Cada novo dia que abrimos nosso navegador para acessar mais um dos milhares de mash-ups, APIs e XMLs que facilitam nossa vida estamos nos afastando cada vez mais da função primordial da Web e da forma como foi planejada para ser: um imenso e estático repositório de documentos. Alternativa fácil para a colaboração online, a Web facilita a publicação e a recuperação de informações para um público que não é informata por vocação ou formação. O HTML foi estabelecido e interpretado pelos navegadores para facilitar a vida destes marcadores amadores, resultando em uma linguagem simplória, sem muitos recursos e sem a obrigatoriedade de ser corretamente desenvolvida.
O uso comercial da Internet e o surgimento dos primeiros profissionais da Web não alteraram o curso do desenvolvimento desta plataforma até o final da década de 1990 com as primeiras versões das recomendações XML (e XHTML), CSS e DOM. Estas foram as primeiras tentativas para o estabelecimento de paradigmas para a criação profissional de documentos para a Web e para o desenvolvimento de aplicativos simples para auxiliar a publicação e a recuperação de informações. Ainda hoje, mesmo com Ajax, Ahah, Amass e hypes similares, algumas destas recomendações são as nossas ferramentas essenciais no desenvolvimento Web. Nos últimos meses isto vem sido questionado como no caso da picuinha do WHATWG e a polêmica do HTML 5 x XHTML 2.
No entanto, a Internet comercial já estava a pleno vapor quando estas recomendações saíram. Muitos de nós, os primeiros profissionais da Web, estávamos mais do que formados empiricamente durante os anos da bolha. E com estas recomendações ainda não corretamente implementadas pelos navegadores e nossa formação profissional comprometida pelo cotidiano, não há de se admirar a quantidade de maus hábitos criados, documentados e perpetuados desde então.
Citemos alguns dos vícios do profissional Web e como começar a abandoná-los:
- Não ligamos para a marcação do código
Seja lá como o código estiver marcado, o navegador irá tentar solucionar e apresentar aquele conteúdo da melhor forma possível. Se for um conteúdo simples não teria problema algum, mas em interfaces com alto nível de interatividade (como Ajax) ou qualquer acesso à árvore do HTML (como CSS e DOM) a queda de performance e o surgimento de bugs de renderização acontecem o tempo todo.
Escolha um doctype que melhor se adeque às necessidade do projeto e tente validá-lo. Nem sempre é possível conseguir a marca de zero erros e zero alertas de primeira. Apenas tentar ser válido já é um ótimo começo no caso de integração com produtos legados ou de terceiros. Validadores em tempo real como o HTML Validator são uma ótima opção para manter a produtividade.
- Usamos marcação ignorando sua verdadeiras finalidades
Sem uma camada de apresentação estabelecida através de uma recomendação e com a devida implementação nos navegadores, conseguir uma boa identidade visual em um website é impossível. Para isso, por muito tempo, usamos marcações para gerar tabelas para montar estruturas de página. Para muitos desenvolvedores e designers, CSS design ou tableless resume o desenvolvimento de acordo com os padrões Web, enquanto é apenas uma parte dele. A marcação semântica do código vai além de trocar tds por divs.
Leia a lista de tags HTML e adicione em seus favoritos de consulta rápida. A marcação semântica é essencial para a indexação automática de documentos e um facilitador na portabilidade para outros dispositivos.
- Desenvolvemos de acordo com o navegador e não seguindo as especificações
Em um mundo onde só se acessa a Web de um computador com monitor, teclado e mouse, com um único sistema operacional dominante e dois navegadores Web com mais de 95% do market share, fazer uma interface que funcione em qualquer situação é tão fácil quanto um “se” e um “senão”. Não vivemos mais neste mundo. Hoje podemos escolher entre vários navegadores, sistemas operacionais e dispositivos. Testar uma interface em todas as possibilidades não é só uma tarefa ingrata. É praticamente impossível.
Devemos trabalhar com o que é comum a todos, que é a Web e seus padrões. Há diferenças de renderização e funcionamento de um navegador para outro? Claro, não há navegador perfeito. Trabalhe com o que melhor implemente as especificações abertas (atualmente Opera, Firefox e Safari) e trate as exceções.
No CSS, aprenda como não ser prisioneiro dos CSS hacks contornando propriedades que são problemáticas, como por exemplo no caso do box model do Internet Explorer.
No JavaScript, use a detecção de objetos ao invés da detecção de navegadores. A lógica é simples: se tem o objeto que preciso, faça; senão, não. Mesmo entre as diferentes versões de um mesmo navegador há diferenças na implementação dos objetos.
Não estamos mais nos anos da primeira euforia da Web. Estamos na Web 2.0, na fase áurea dos aplicativos de publicação e indexação de documentos! Muitas das recomendações tiveram problemas de implementação e outras foram duramentemente criticadas, mas o espírito da Web prevalece o mesmo. Podem continuar tentando transformar a Web em uma plataforma avançada de desenvolvimento de software, mas o objetivo continua o mesmo: criação, colaboração e publicação de documentos.
O princípio fundamental do desenvolvimento dos padrões passa por esta definição. Qualquer interface gerada a partir deste princípio terá potencial de ser acessível para qualquer tipo de usuário, ser automaticamente indexável por qualquer mecanismo de busca e portável para qualquer navegador, sistema operacional e dispositivo.
mais antigos
Redes