Category: Web Design

Conheça o maravilhoso mundo do HTML 5

Pra fechar minha série de posts sobre os substitutos do HTML, vou falar agora do HTML 5, desenvolvido por um grupo liderado pela Apple, Opera e Mozilla. Senta que lá vem história texto.

Se você chegou agora, pode ser interessante ler meus textos anteriores sobre o assunto:

A primeira coisa que preciso dizer é em que o HTML 5 é diferente do XHTML 2. Sua maior preocupação não é separar definitivamente o conteúdo da apresentação. O HTML 5 é feito para ser uma linguagem de desenvolvimento de aplicações online. Nada de se preocupar com XML, nada de evitar usar um elemento só porque ele também interfere na aparência do conteúdo.

Pro inferno com as frescuras, eu quero é sites bons.

Esta nova versão do HTML começou a ser desenvolvida em um grupo fora do grande W3C. Fizeram isso justamente porque o W3C estava demorando demais pra criar uma nova versão (0 xhtml 1.0 foi publicado em 2000) e eles estavam trabalhando em algo que não resolvia os problemas dos sites ricos que temos hoje em dia.

O HTML 5 é feito para facilitar o desenvolvimento de aplicações web (e não apenas sites simples) e padronizar as coisas em todos os browsers.

Vamos ver todas as coisas legais que o HTML 5 traz pra nós.

Elementos estruturais

Aquele monte de <div> que a gente usa pra montar a estrutura do site vai ter um bom substituto agora. Pra facilitar uma padronização e permitir que os elementos tenham significado, criaram vários elementos estruturais que vão funcionar como o <div>, mas cada um com seu próposito.

Por exemplo, teremos o <header> para criar o cabeçalho do site (geralmente onde fica o logotipo, etc). Temos o <nav> para definir o menu de navegação, <article> para colocar o conteúdo principal do site, <aside> pra criar uma seção lateral, e <footer> pro rodapé.

Estrutura de um site padrão

Estrutura de um site padrão

Read more »

Redes Sociais:
  • del.icio.us
  • TwitThis
  • Google
  • E-mail this story to a friend!
  • Rec6
  • StumbleUpon
  • Technorati
  • LinkedIn
  • Facebook
  • Live
  • MySpace
  • Tumblr

Use a Cabeça! (Head First) HTML com CSS & XHTML

Use a Cabeça (Head First) HTML COM CSS & XHTML

Use a Cabeça! (Head First) HTML com CSS & XHTML

Há um bom tempo atrás eu comprei o livro Use a Cabeça! (Head First) HTML com CSS & XHTML, e apesar de já ter começado a lê-lo várias vezes, somente no início desse ano eu tomei vergonha na cara e o li do início ao fim. Sendo assim, aqui está a minha opinião sobre o livro.

Assim como os demais títulos da série Use a Cabeça, esse livro tem uma abordagem bastante inteligente, focada num texto fácil e extremamente agradável de ler. Esta característica, combinada com algumas outras, faz com que o nosso cérebro preste mais atenção no conteúdo, além de aumentar as chances de memorização, conforme os livros da série explicam em seus capítulos introdutórios.

Outra tática inteligente do livro é dar exemplos para cada novo tópico apresentado, só que limitando o escopo, de forma que os exemplos sejam bem simples e diretos. Isso evita que o leitor fique cansado lendo longos exemplos onde apenas um pequeno trecho é realmente relevante.

Essa abordagem mais direta também é aplicada nos exercícios, que aparecem com razoável frequência, mas sempre bem focados no tópico que está sendo discutido no momento. Além disso, muitos dos exercícios são divertidos, e o obrigam a pensar fora da caixa, principalmente os exercícios de palavras cruzadas, presente em quase todos os capítulos.

Uma outra característica que torna o livro mais eficiente na tarefa de ensinar o conteúdo é o fato dele ser redundante sobre muitas coisas importantes. Dessa forma, alguns tópicos são apresentados mais de uma vez, só que em contextos e de formas diferentes, muitas vezes adicionando uma pequena novidade, e facilitando que o assunto em questão seja memorizado através da ocorrência repetida.

Ainda sobre a didática do livro, é interessante notar que a série segue essa fórmula não porque está dando certo, ou baseada em achismo, mas porque estudos relacionados a metacognição indicam que as técnicas de apresentação de conteúdo usadas no livro estão entre as mais eficientes.

Em relação ao conteúdo propriamente dito, é impossível não destacar positivamente a preocupação do livro em focar desde o início a separação da estrutura e da apresentação de uma página Web. Para ter uma idéia do quão engajados eles são em relação a este assunto, já no capítulo que explica sobre a metodologia da série, ou seja, antes mesmo do primeiro capítulo com conteúdo sobre HTML, XHTML e CSS, há uma breve e clara explicação sobre a função dessas tecnologias.

Adicionalmente, o livro menciona com frequência que devem ser utilizados os elementos do HTML/XHTML que melhor representarem o conteúdo que está sendo marcado, enfatizando assim a importância da semântica no desenvolvimento de uma página Web.

No entanto, nada é perfeito, e este livro não é diferente. Pra começar, a tradução é péssima. A Alta Books, que é a editora do livro, fez um trabalho extremamente descuidado na tradução, o que não me surpreendeu, já que o único outro livro traduzido que eu tenho deles, o Use a Cabeça! Java, também tem uma tradução sofrível.

Aliás, ao meu ver, este é o maior defeito do livro, pois realmente complica a compreensão do texto por parte de quem não sabe nada sobre HTML, XHTML e CSS, sendo que este é exatamente o público alvo do livro. Como exemplo deste péssimo trabalho de tradução, eu posso citar nomes de elementos sendo traduzidos, sendo o elemento head o campeão no número de ocorrências.

Outro erro bizarro está nos exemplos de regras do CSS. A extrema maioria delas não possuem um par de chaves tradicional, ou seja, { e }, e sim um bizonho par de chaves { e {. Exemplo:

p
{
  color: maroon;
{

O exemplo acima foi tirado do próprio livro, no capítulo que começa a explicar o CSS. Ou seja, quem nunca ouvir falar sobre a linguagem vai ficar bem confuso sobre a forma correta de combinar as chaves. E o mais curioso é que a versão original do livro não contém estes erros, portanto, a Alta Books fez besteira até onde nem precisava traduzir.

Contudo, nem todos os defeitos do livro são culpa da Alta Books, uma vez que há também alguns poucos deslizes na versão original em inglês. Por exemplo, o livro usa com certa frequência o elemento <br />, o que, ao me ver, é errado, uma vez que este elemento insera uma quebra de linha, o que caracteriza uma função relacionada a apresentação, não representando absolutamente nada em relação à semântica da página Web.

Outro erro relacionado ao uso incorreto de um elemento no que diz respeito a semântica está presente no exemplo abaixo:

  <h1>BEVERAGES</h1>

  <p>House Blend, $1.49</p>

  <p>Mocha Cafe Latte, $2.35</p>

  <p>Cappuccino, $1.89</p>

  <p>Chai Tea, $1.85</p>

Neste caso, novamente de acordo com a minha opinião, há vários elementos p sendo usados para representar itens de uma lista, portanto o correto seria envolver toda a lista com o elemento ul, que representa listas não ordenadas, e então usar o elemento para itens de lista, li, para cada bebida individual. O resultado seria esse:

  <h1>BEVERAGES</h1>

  <ol>
    <li>House Blend, $1.49</li>
    <li>Mocha Cafe Latte, $2.35</li>
    <li>Cappuccino, $1.89</li>
    <li>Chai Tea, $1.85</li>
  </ol>

Mas nesse caso podemos deixar passar, já que na verdade este exemplo está presente na página de recursos do livro.

Enfim, o Use a Cabeça! (Head First) HTML com CSS & XHTML é um excelente livro. Ainda que ele cometa alguns poucos deslizes, é de longe o melhor livro que eu conheço para quem quer aprender HTML, XHTML e CSS, uma vez que ensina desde o início a desenvolver páginas Web da maneira correta: usando o HTML ou XHTML para estruturar o conteúdo da página, respeitando a semântica de cada elemento, e definindo a apresentaçao através do CSS.

P.S.: Uma dica para quem se interresou pelo livro: compre a versão original e se livre de uma péssima tradução.

Redes Sociais:
  • del.icio.us
  • TwitThis
  • Google
  • E-mail this story to a friend!
  • Rec6
  • StumbleUpon
  • Technorati
  • LinkedIn
  • Facebook
  • Live
  • MySpace
  • Tumblr

As mudanças do XHTML 2.0

Outro dia eu fiz um resumo das duas tecnologias que estão vindo pra substituir o atual XHTML: XHTML 2.0 e HTML 5. Agora é hora de olhar mais a fundo pra proposta do W3C. Será que ele é tudo que precisamos? Será que é a resposta pros nossos problemas?

Desde a versão 1.0 do XHTML o consórcio W3C tem empurrado cada vez mais o HTML pro lado do XML. Mas essa versão foi feita pra tentar manter uma grande semelhança e compatibilidade com o HTML 4.01, e por isso acabaram mantendo muitos elementos de apresentação no XHTML. Agora, querem dar um grande passo. Querem remover tudo, querem fazer o XHTML que o W3C sempre sonhou. E com isso podem dizer adeus à retrocompatibilidade.

Quanto mais as coisas mudam, mais elas mudam

A idéia do W3C para o XHTML 2.0 é remover TODOS os elementos de apresentação. Ou seja, qualquer coisa no código XHTML que indique como o elemento vai aparecer na tela vai ser removido. Isso é trabalho do CSS. Nessa nova versão morrem as tags <img>, <a>, <br> e algumas outras.

Vai ter uma série de mudanças tão grandes que não existe compatibilidade com versões anteriores. Os sites precisarão ser refeitos para validar com as especificações do XHTML 2.0. O problema é que a maioria dos profissionais são ruins. Ainda hoje a maioria dos sites não cumpre nem as especificações do HTML 4.01, imagina se vão mudar pra se adequar a essa nova “linguagem estranha”.

Eu conheço ainda pessoas que nem sabem direito o que é CSS ou XHTML. Profissionais que montam seus sites usando a tag <font> pra formatar o texto, e outras coisas igualmente bizarras. Esse tipo de pessoa nunca vai querer reaprender tudo pra adotar o XHTML 2.0.

XHTML

Vamos dar uma olhada em algumas das principais mudanças:

- Mataram o <a>. Agora tudo é link.

Todos os elementos do XHTML possuem alguns parâmetros padrão, como “id”. E agora o parâmetro “href” se junta a essa lista. Qualquer elemento poderá receber o parâmetro href e se tornar um link. Você vai poder fazer coisas como <p href=”http://disney.com”>…um monte de texto…</p> e terá um parágrafo inteiro funcionando como link.

- Adeus <br>. Olá <line>

Eles não querem que o XHTML tenha nada que force um jeito específico do conteúdo aparecer na página, então uma das primeiras tags a morrerem foi a tag de quebra de linha. Não tinha jeito de impedir, ela só servia pra uma coisa e pronto.

No lugar dela, entre a tag <line></line>. O padrão é que sempre que você fechar a tag o browser vai quebrar a linha, mas agora você pode evitar esse comportamento se quiser.

Read more »

Redes Sociais:
  • del.icio.us
  • TwitThis
  • Google
  • E-mail this story to a friend!
  • Rec6
  • StumbleUpon
  • Technorati
  • LinkedIn
  • Facebook
  • Live
  • MySpace
  • Tumblr

XHTML2, HTML5 e outras coisas futurísticas

Nós, gênios modestos que desenvolvem para a web, trabalhamos usando tecnologias que são bem antigas, se levarmos em conta a velocidade com que as coisas mudam. Em 1999 foi definido o XHTML 4.01, e no ano 2000 saiu o XHTML 1.0, que é a tecnologia mais atual para desenvolver os sites. O grande problema é que o foco dos sites (e o modo como são usados) mudou bastante nestes últimos 9 anos, e precisamos de algo diferente. Precisamos de algo que resolva nossos problemas. Precisamos do Batman!

(Acabei de receber um fax me proibindo de fazer piadas com super-heróis num site sobre programação. Eu garanto que não há nenhuma referência a um personagem famoso pelos próximos três parágrafos)

Duas grandes tecnologias estão sendo desenvolvidas e deverão estar disponíveis antes de 2099: XHTML 2.0, e HTML 5. A principal diferença entre elas é que o HTML 5 é uma evolução de tudo que temos hoje, e o XHTML 2.0 é tão diferente que é quase uma linguagem nova.

Explicando de uma forma clara, é como se o HTML 5 fosse o seu carro atual, mas com neón azul, turbina e aerofólios, e o XHTML 2.0 seria como vender o seu carro, tirar o seu dinheiro da poupança e comprar um novo importado, com marcha no volante e formato esquisito.

HTML5 está pronto pra briga!

HTML5 está pronto pra briga!

O que me parece é que alguém perdeu completamente a noção da realidade. Mesmo hoje, a maioria dos sites não consegue validar nem contra as especificações do HTML 4.01. Uma boa parte dos programadores é tão ignorante que nem faz idéia do que é XHTML e com qual garfo se come isso. É muito otimismo acreditar que uma revolução completa na linguagem conseguiria uma grande adoção. Não quero ser muito pessimista, mas não acredito no futuro do XHTML, que é desenvolvido pelo consórcio W3C (World Wide Web Consortium).

Já o HTML 5 está sendo sendo desenvolvido pelo grupo WHATWG (na minha cabeça, isso é sigla para Why Have A Tomato With Guitars, “por que ter um tomate com guitarras”), formado pela Apple, Mozilla, e Opera. Sim, as grandonas do desenvolvimento de navegadores bons. A proposta do HTML 5 é pegar tudo de bom que temos até agora, acrescentar coisas ainda melhores, e corrigir as falhas para que todos os navegadores renderizem os sites da mesma forma. Incluindo os sites que não validam nem com o HTML 4.01. Isso sim parece bom. O que o Batman faria?

Vou te dizer o que o Batman faria. O Batman sabe que não é muito bom ter duas linguagens concorrendo pra substituir as tecnologias atuais. Ele vai esperar e observar até que, num futuro não tão distante (2030 é perto, não é?) as duas linguagens vão dividir os programadores por um tempo, mas depois uma delas vai ser esquecida e morrer. Porque o Batman é esperto. Ele sabe que HTML é como Highlander: só pode haver um. E apenas um dos grupos tem guitarras.

Redes Sociais:
  • del.icio.us
  • TwitThis
  • Google
  • E-mail this story to a friend!
  • Rec6
  • StumbleUpon
  • Technorati
  • LinkedIn
  • Facebook
  • Live
  • MySpace
  • Tumblr

Organizando seu código CSS

Uma coisa que eu costumava fazer bastante há alguns anos atrás era subestimar o meu código CSS. Sempre começava a escrever achando que ia ser uma coisa pequena e simples, e aí quando me dava conta eu tinha um código de centenas de linhas, confuso, e impossível de achar alguma coisa sem Ctrl + F.

Então eu desenvolvi 5 regrinhas que ajudaram meu CSS a ficar mais organizado, e mais fácil de mexer.

1- Usar um CSS Reset

CSS Reset é como tomar uma droga bem forte. Quem nunca usou acha que não é algo útil, ou até ruim. Mas depois que você experimenta não quer mais voltar atrás e ainda tenta convencer os outros a usarem também.

Apesar dos navegadores terem um ótimo suporte ao CSS, muitos deles tem padrões diferentes. Se você não definiu uma coisa, ela é exibida com o padrão do navegador, e isso pode fazer o seu site ficar com caras diferentes de acordo com o navegador do usuário.

O CSS Reset pega uma grande parte dos elementos visuais e padroniza eles, geralmente zerando ou definindo um novo padrão. Ele tira as bordas, as margens, os paddings, padroniza o tamanho da fonte, etc. A partir daí, você sabe que as coisas vão ficar mais certinhas em todos os navegadores e não vai ter nenhuma surpresa desagradável.

Recomendo Eric Meyer Reset, ou o fantástico YUI Reset.

Read more »

Redes Sociais:
  • del.icio.us
  • TwitThis
  • Google
  • E-mail this story to a friend!
  • Rec6
  • StumbleUpon
  • Technorati
  • LinkedIn
  • Facebook
  • Live
  • MySpace
  • Tumblr

Os Elementos Perdidos do HTML/XHTML

Se você é um desenvolvedor Web que faz o seu dever de casa, já deve estar cansado de saber que o HTML/XHTML serve para estruturar o conteúdo de uma página Web. Sendo assim, você usa elementos como p para parágrafos, h1, h2, h3, h4, h5 e h6 para títulos, ol para listas ordenadas, entre outros igualmente populares. No entanto, existem alguns outros elementos com tanto valor semântico quanto estes, mas que são bem menos conhecidos. Veja alguns destes abaixo:

address

O elemento address define um conteúdo como uma informação de contato do autor ou dono da página Web.

Avenida Expedicionário José Amáro, número 500, Apartamento 13, Vila São Luís, Duque de Caxias/RJ.

del

Tem a função de marcar um texto que foi removido da página.

<p>
  O Jogo Final Fantasy XIII é a continuação da famosa saga de RPG da Square
  ,sendo o seu lançamento exclusivo para o Playstation 3.
</p>

ins

Especifica um texto que foi inserido no documento, sendo muitas vezes usado em conjunto com o elemento del, como forma de corrigir uma informação anterior.

  <p>
    A atual versão do Rails é a 2.22.3.2.
  </p>

abbr

O elemento abbr serve para marcar um texto que é a forma abreviada de uma frase ou de uma expressão composta, ou seja, ele marca abreviações. Adicionalmente, é bom utilizar o atributo title neste elemento para especificar a palavra ou frase inteira que está sendo abreviada. Além disso, é válido mencionar que este elemento não é suportado pelo Internet Explorer 6.

  <p>
    O <abbr title = "EXtensible HyperText Markup Language">XHTML</abbr> deve ser
    usado para estruturar o conteúdo.
  </p>

acronym

Este elemento tem a função semântica de identificar acrônimos, que são um tipo especial de abreviação, onde cada letra do acrônimo corresponde à primeira letra de uma das palavras da expressão ou frase abreviada.

<p>
  Para definir a apresentação de uma página Web você deve usar o
  <acronym title = "Cascading Style Sheets">CSS</acronym>.
</p>

cite

Define o autor ou a fonte de uma citação, podendo, e devendo, ser usado em conjunto comos elemento q e blockquote, que identificam a citação em si.

<p>
  Conforme Martin Fowler disse:
</p>

<blockquote>
  <p>
    Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand.
  </p>
</blockquote>

dl, dt e dd

Estes elementos são usados para criar listas de definição em uma página Web, sendo muito usados, por exemplo, para a criação de FAQs. O elemento dl representa a lista em si, enquanto os elementos dt e dd representam o termo a ser definido e a sua definição, respectivamente.

<dl>
  <dt>Ruby</dt>
  <dd>Linguagem de script orientada a objetos e criada por Yukihiro Matsumoto.</dd>

  <dt>Ruby on Rails</dt>
  <dd>Framework Web desenvolvido com a linguagem de programação Ruby</dd>

  <dt>ActiveRecord</dt>
  <dd>Um dos principais sub-frameworks do Ruby on Rails</dd>
</dl>

dfn

O elemento dfn é utilizado para marcar um termo que está sendo definido, sendo que pode-se usar o atributo title para resumir a sua definição. A diferença entre o dfn e uma lista de definição, é que o primeiro é utilizado para marcar uma definição isolada no texto, enquanto o segundo agrupa várias definições em uma lista.

<p>
  O <dfn title = "Framework Ruby">Merb</df> é um framework Web escrito em Ruby.
</p>

Conclusão

Existem muitos elementos no XHTML/HTML além daqueles que são amplamente conhecidos, e uma vez que estes elementos adicionais são mais precisos quanto à semântica do seu conteúdo, não há porquê não usá-los. Dessa forma, suas páginas Web ficarão mais corretas semanticamente, o que significa uma maior acessibilidade.

Além disso, não se limite aos elementos extras mostrados aqui, uma vez que a idéia deste post era apenas mostrar através de exemplos que quase sempre há um elemento mais preciso para marcar o seu conteúdo. Portanto, quando tiver dúvidas se está usando o elemento correto em sua página Web, pesquise pare descobrir se não há uma opção mais adequada.

Por fim, embora alguns destes elementos possuam um estilo padrão definido pelo browser, a regra de ouro continua valendo, ou seja, para definir a apresentação deles você deve usar o CSS.

Redes Sociais:
  • del.icio.us
  • TwitThis
  • Google
  • E-mail this story to a friend!
  • Rec6
  • StumbleUpon
  • Technorati
  • LinkedIn
  • Facebook
  • Live
  • MySpace
  • Tumblr

A maldição do outline no firefox

O Firefox é um navegador muito bacana, muito legal. Eu o respeito muito por ser o principal responsável por roubar fatia de mercado do Internet Explorer. Mas tem uma coisa que me irrita muito nele: o outline obrigatório que ele coloca nos links e botões.

A maldição do outline no firefox

A maldição do outline no firefox

Veja a imagem acima. Se você usa o Firefox, com certeza já viu esse pontilhado ao redor de algum botão. Sabe por que eu o odeio? Porque ele é obrigatório. Não dá pra tirar. Na verdade, até dá pra tirar o outline dos links, mas caso use <input type=”submit”> ou <button> o seu botão vai ter o pontilhado ao redor e não tem nada que você possa fazer.

Só pra constar: Esse outline no firefox não é um bug! Esse marcador é colocado ao redor dos elementos por motivos de usabilidade. A idéia é sempre indicar visualmente onde está o foco. Aí o problema vem quando eu mesmo quero implementar uma forma diferente de indicar o foco, porque ele me obriga a continuar com o outline.

Outro dia eu estava trabalhando no meu projeto secreto com os outros fundadores do blog, e queria fazer um botão super bonito. Eu usei a tag <button> pra poder inserir imagens e texto lá dentro, pra criar um botão tão maneiro que seus olhos explodiriam de prazer. Depois de um tempão criando o botão, me deparei com o outline do firefox, que acabou com todo o mojo.

Sério, um quadrado pontilhado estraga completamente aquele botão super bonito, arredondado, com degradê e efeitos de mouse over.

Se você também se irrita com isso, fique feliz porque você pode pelo menos impedir que o outline apareça nos seus links. Basta declarar o seguinte no CSS para os seus links:

a {
    outline: none;
}

Isso não funciona nos submits e buttons, entretanto. Não adianta nem tentar.

Ah, e se você procurar bastante na internet vai ter algum super gênio por aí sugerindo usar um código em javascript que tira o outline dos botões. Não faça isto em hipótese alguma! O que essa solução em javascript faz é tirar instantaneamento o foco do botão assim que ele recebe foco. Fazendo isso o usuário não pode manusear seu formulário (ou seu botão) pelo teclado, não pode chegar ao seu botão apertando TAB. Ou seja, fica uma porcaria.

Esse tipo de coisa acaba forçando o desenvolvedor a fazer algo totalmente não semântico, como usar <a> pra criar o seu botão de submit, só pra se livrar do outline. Algumas vezes essas bobeiras do navegador vão tão longe que até o google acabou usando <div> pra criar os “botões” que ele usa hoje em dia no Google Reader e no GMail. Pode ir lá olhar, é div!

Até onde eu sei, apenas o Firefox tem essa obsessão por outline. Espero que desistam disso em versões futuras. Na 3.5, quem sabe.

Redes Sociais:
  • del.icio.us
  • TwitThis
  • Google
  • E-mail this story to a friend!
  • Rec6
  • StumbleUpon
  • Technorati
  • LinkedIn
  • Facebook
  • Live
  • MySpace
  • Tumblr

WordPress Themes