Tableless - Desenvolvimento inteligente com Padrões Web

06/12/2007
Artigos

Image-Replacement x Imagens

Este assunto é muito abrangente e divertido de ser debatido. Portanto, se você discordar deste texto, quero que lembre que é minha opinião… claro, sempre podemos mudar de idéia. Para não viajarmos muito, vamos pegar como pauta deste texto, o …

Por


Este assunto é muito abrangente e divertido de ser debatido.
Portanto, se você discordar deste texto, quero que lembre que é minha opinião… claro, sempre podemos mudar de idéia. :-D

Para não viajarmos muito, vamos pegar como pauta deste texto, o ponto que discutimos na “Lições Sobre Semântica #3″.
O ponto era fazer títulos com imagens ou image-replacement?

Bem, felizmente temos uma base para nos guiar… O código deve ficar o mais semântico possível.
Se o código deve ser semântico, já sabemos que as tags Hn que são usadas para definir títulos não podem ser descartadas, então elas devem continuar.

Ótimo, sabendo disso, vamos analisar as opções:

  1. Colocoar a imagem dentro de uma tag Hn.
  2. Fazer image-replacement sem tag span.

Eu poderia colocar como opção a técnica de image-replacement com tag span. Acontece que a tag span, suja nosso código, e queremos ter um código descomplicado.

Colocando a imagem dentro de uma tag Hn

A solução seria:
<h1> <img src=”imagem.jpg” alt=”Texto” /> </h1>

Hmm… Essa solução é bastante atraente…
Se o usuário desabilitar as imagens, ou se por ventura a imagem aparecer quebrada, o texto alternativo (alt) irá aparecer no lugar da imagem.
Os browsers mais modernos como Firefox tratam esse texto como um texto normal, dando até para você selecionar. E esse texto pode ficar com o estilo que você definiu no CSS para a tag de título.

Fazer image-replacement

A solução seria:
<h1> Texto </h1>

E assim, sumir com o texto pelo css e colocar a imagem como background.

Essa solução é muito, muito atraente…
Seu código não fica sujo com tags span ou tags img. Se a pessoa entra no site com algum tipo de browser baseado em texto, ela não terá problemas… Existe um porém.
Se o usuário desabilitar apenas as imagens, o texto não aparece.

Mas, agora vem a vantagem que fará você decidir o que fazer.

Se você optar por Image-Replacement, você terá uma flexibilidade que se colocando apenas imagens, você não teria.
Imagine que você tenha um site grande, e que todos os títulos tem que usar uma fonte maluca que o designer escolheu… Fatalmente estes títulos terão que ser imagem.

Um certo dia, o cliente se encheu da fonte maluca e decidiu que a fonte dos títulos devem mudar para Verdana.
Se você tivesse colocado as imagens direto no código, você teria que procurar cada uma das imagens e mudar para texto.
Se você fez com image-replacement, bastava desabilitar a image do background e fazer o texto aparecer… Muito, mas muito mais fácil.

Agora é com você. Essa é a principal diferença.
Os robos de busca, indexam os texto alternativos das imagens bem como o texto do image-replacement, então, não há problemas com isso.

Como disse, o assunto é bastante abrangente. E não é só este “problema” que existe. Mas o importante é analisar o caso, e aplicar a melhor solução para o caso.

Por Diego Eis

Diego Eis criou o Tableless para disseminar os padrões web no Brasil. Como consultor já treinou equipes de empresas como Nokia, Globo.com, Yahoo! e iG. É palestrante e empreendedor.

http://twitter.com/diegoeis/

Veja os outros posts de

  • http://rufspace.com Fellipe Cicconi

    Concordo com a solução escolhida.

    Outra vantagem do image-replacement é a possibilidade de abrigar em um único CSS todos os textos que estejam estilizados desta maneira… Assim, sua localização seria mais veloz.

    E além: caso exista uma internacionalização do conteúdo, facilmente poderíamos criar CSSs de replacement multilanguage com import controlado via JS ou alguma class no body…

    Os arquivos de replacement poderiam chamar-se replacement-pt-br.css, replacement-en-us.css, replacement-es.css e assim por diante.

  • http://dgmike.wordpress.com DGmike

    Diego, me tira uma dúvida. Sempre usei o image-replacement usando sua solução do video-tutorial (acompanho o tableless faz tempo, uns 4,5 anos :) ) usando o text-indent: -99999em;

    Agora, poderiamos fazer uma solução masi complexa que usaria o javascript para fazer o replacement? Eu sei, vai dar mais trabalho, mas como ficaria em questões semanticas? Digo, carrega a página com o seu belo [h1]Titulo[/h1] e carrega o seu CSS apenas com estilos, nada de imagem por enquanto. Por fim carrega o js que vai inserir o bom e velho css com o iR (image-replacement). Sim, assim poderiamos ter certeza que o iR irá funcionar somente com o js.

    Então o js (se tiver como é claro, pergunta pro Élcio que entende mais que eu :D ) percebe se a imagem foi carregada e se for, carrega o iR.

    Seria mais semantico, mais trabalho pra nada? Uma vez eu vi uma solução parecida no site do revolucao[ponto]etc[ponto]br e gostei do resultado, ele criava em PHP o texto com a biblioteca GD, dinamizando qualquer texto e a carregava usando img mesmo, substituindo o conteudo da tag [h1]

    O que acha disto?

  • http://project47.viscountbox.com Carlos Eduardo

    Hmmm… Bom ponto de vista!

    Também sou a favor do uso do image-replacement sem uso de span’s e nunca utilizei uma imagem dentro de um h1, por exemplo.

    Porém, nunca tinha pensado nesse fato de, quando precisamos atualizar a imagem, o cara teria que mudar todas as tags ao invés de simplesmente alterar a regra definida para o h1 com background…

    É um debate que sempre vem à tona e realmente é bem relevante.

  • Junior

    Olá Diego,
    já utilizo dessa maneira e realmente é muito melhor. Quanto a questão do DGMike, quando preciso utilizo o Sifr.

    Abraços

  • Felipe Elia

    Acho que não é absurdo pensar que existem muitos usuários que desabilitam o uso de imagens e para estes o título não apareceria com o image-replacement.

    Pensando pelo lado de programação: um título que aparece em todas as páginas certamente é um “include” e assim a questão da manutenção é mínima: alterando o arquivo que é incluído a alteração se propaga pra onde ele é utilizado.

    Apesar de ser mais semântico o uso do image-replacement eu encaro como perda de acessibilidade, mas como diz o início do post: “se você discordar deste texto, quero que lembre que é minha opinião”.

    Abraços e parabéns pelo blog!!!

  • http://www.giganertz.com Bruno

    A minha opinião é que você trabalha com hipóteses malucas. Que cliente pediria pra mudar as fontes para verdana?

  • Thalisson S. Pereira

    Muito bom esse artigo, não conhecia muito esse metodo image-replacement, pelo que entendi e olhando no codigo do site da tableless, vocês usam esse image-replacement. vou dar para ultilizar o image-replacement…Muito Bom Mesmo !!!

  • Renan Reis

    Prezado Diego, ótimo artigo.

    Com relação a frase:

    “Os robos de busca, indexam os texto alternativos das imagens bem como o texto do image-replacement, então, não há problemas com isso.”

    Gostaria de saber onde encontro informações a respeito de como os robos de busca indexam os textos.

  • Alex Batista

    Bem, sobre a solução que foi apresentado com relação ao alt da imagem isso especificamente está incorreto. Poderá ser usado como solução ao invez de o CSS da seguinte forma: E.g.

    CSS

    img[alt]{font-size:1.8em; color:red}

    (X)HTML

  • http://felipesetlik.blogspot.com felipe setlik

    desculpa ressucitar a parada, mas queria tirar dúvida sobre a indexação dos robots da imagem dentro do Hn. os robots indexam o alt da imagem como uma alt comum, como um texto ou como Hn? Isso é importante!

  • Pingback: Image Replacement « Marcos Paiva

  • http://www.rafaelcaye.com Rafael Caye

    Minha experiência com o método foi, muitas vezes, de grande valia, tremenda solução. Mas tudo que é bom dura pouco…

    O problema do método é que ele tem características do grupo de penalidades do Google, vide: http://www.google.com.br/support/webmasters/bin/answer.py?answer=66353

    A charada é: “Porque você diz que tem tal conteúdo mas na verdade você não o exibe para quem acessa seu site? Você está enganando seu usuário, é isso?”

    Hehehehe… e olha que logicamente isso está mais que certo.

    Será que o método SWFIR pode ajudar de agora em diante?

  • http://www.rafaelcaye.com Rafael Caye

    E tem também essa nova solução: http://www.mikeindustries.com/blog/sifr

    Que parece ser uma “baita” solução para todos os problemas.

    Abraço!

  • Pingback: Image-replacement… « Marcelo Torres

  • Pingback: Image Replacement « Blog do marcos paiva

  • Pingback: Convertido – Menu (Livraria Cultura) | Boas práticas de Desenvolvimento com Padrões Web

  • Pingback: Image-replacement… | Marcelo Torres