Às vezes é bom repetir os fatos básicos, principalmente porque tem sempre gente chegando e começando a aprender.
Uma dúvida muito comum, que eu vejo se repetir há alguns anos, é onde usar e onde não usar imagens no background via CSS. Para quem está chegando agora, a questão básica é que existem duas maneiras de se fazer uma imagem aparecer na tela. Cada uma delas tem suas vantagens e desvantagens e é melhor usada para um fim específico. Mas muita gente usa apenas um método ou o outro.
Uma delas é inserir uma tag HTML:
<img src="seta.gif" alt="Prosseguir" />
A outra é inserir essa imagem como background de uma tag qualquer através do CSS:
a.prosseguir {
background: white url(seta.gif) top left no-repeat;
}
As diferenças entre eles, embora não apareçam à primeira olhada no site, são substanciais. Experimente, por exemplo, desligar o CSS daqui do Tableless. Você vai ver que todas as imagens que compôem o layout, incluindo logotipo e as sombras laterais, vão desaparecer. Vão sobrar apenas umas imagenzinhas do Feedburner e da barra lateral direita.
Quem trabalha com tabelas geralmente usa apenas o primeiro método. Infelizmente muita gente aprendendo a construir layouts Tableless com CSS, ao aprender o segundo método, tem abandonado completamente o uso da tag img. É um exagero comum entre os novatos, assim como abandonar completamente o uso da tag table.
Por que o Diego escolheu algumas imagens para ir no meio do código HTML e outras para inserir como background CSS? A regra é simples, como todo o resto na dobradinha XHTML+CSS, imagens que fazem parte de seu conteúdo vão no HTML, imagens que são apenas elementos de layout vão no CSS.
Veja, por exemplo, este meu post sobre o Performancing. Há, no topo e no rodapé, dois gradientes. Experimente desligar o CSS. Você vai ver que algumas imagens foram mantidas. Todas elas fazem parte do conteúdo da página:
- O banner para o Workshop Produtividade Web 2.0.
- O screenshot do Performancing.
- A setinha para cima do Rec6 e a corretinha do Linkk.
- O banner do Firefox
- Minha foto.
Há outra maneira, que talvez você ache mais simples, para explicar isso. Imagine-se fazendo o redesign do site. Todas as imagens que você deve manter exatamente como estão são conteúdo. Todas as que você vai querer mudar são layout. Veja isso no exemplo acima. Você não muda um banner, a foto do autor do site ou o screenshot de um programa porque fez um redesign em seu site. Mas, claro, bordas, sombras, fundos, chanfros, linhas separadoras, logotipos, tudo isso pode mudar.
Uma última coisa em que você pode pensar é na indexação pelo Google Bot. Ao fazer uma pesquisa de imagens, você vai querer que as pessoas encontrem em seu site um screenshot de programa, a foto de uma celebridade, um diagrama de explicação de uma teoria ou uma foto de um animal. Mas as imagens decorativas só vão atrapalhar.
Há ainda um terceiro caso que pode confundí-lo, que é o image replacement. Mas sobre isso o Diego já escreveu bastante.
25 Comentários
25 Comentários
Carlos André Ferrari 16/03/2007 às 09:47
^^ Caramba, texto super detalhado.. espero que ninguem mais tenha dúvidas quanto a isso!.
mas a ideia basica consiste em um dos principios dos web standards: “separar conteúdo da exibição”.
Diego, aproveitando a oportunidade, queria saber se tem como vc criar uma area com os bugs relacionados a cada navegador, suas causas e soluções, isso seria uma mão na roda, ajudaria muita gente.
flw
silici0 16/03/2007 às 10:29
Muito legal, os layouts em tableless que eu fiz usei tudo Background, agora percebi a gravidade do meu erro, como na verdade sou coder em PHP e não design, acho um absurdo ouvir que um site bom so tem tableless e nada de nada de tabela.
Muitas vezes acredito que é um absurdo fazer tudo em tableless, ainda mais problemas como de diversas div com alturas diferentes, corrigidas por script em JS. Dando um trabalho muito maior. ;/
Abraços
Igor Escobar 16/03/2007 às 10:39
Bingo
Excelente artigo Elcio!
Parabens!
Não troque todas as suas imagens por background! « [REF] 16/03/2007 às 13:48
[...] Link [...]
Alexandre 16/03/2007 às 15:14
Só acho que o logotipo tem que ser adicionado com a tag <img>, ele faz parte do conteúdo da página.
Inclusive se enquadra em todos os exemplos do artigo:
-Você quer manter o logotipo na versão sem CSS
-Você quer que o logotipo seja indexado (imagine pesquisar por “Volkswagen” e não achar o logotipo deles?? que frustrante)
-O logotipo permanece depois do redesign da página.
Conclusão: o logotipo pode mudar de formato, mas sempre fará parte do conteúdo.
Alexandre 16/03/2007 às 16:56
@Carlos André Ferrari,
Preparei nessa página uma tabela de compatibilidade CSS, com os navegadores e links (em inglês) para as soluções.
Camilo 16/03/2007 às 17:27
Gostei do texto, Elcio.
Tinha algumas dúvidas em relação a isso, mas agora ficou claro!
Zephon 16/03/2007 às 17:34
Completando o que o Alexandre citou sobre conteúdo:
Em versões para impressão formatadas com CSS, o background, tanto com imagens como em cores é ignorado.
Pedro Rogério 16/03/2007 às 19:39
Só que é o seguinte Élcio, você esqueceu de tocar em outro ponto, questão de acessibilidade, caso você insira as imagens via CSS e não defina também uma cor de fundo, dependendo da cor do texto em contraste com o fundo, quando o usuário navega com CSS abilitado e imagens desabilitadas, ele não consegue ler nada, experimente fazer isso aqui no Tableless pra você ver, até dá pra ler bem, mas cansa um pouco a visão.
Vinícius Krolow 16/03/2007 às 21:36
bem interessante o texto.
Canha 16/03/2007 às 22:23
Eu sempre usei a tag img, achando que não havia diferença. Agora que sei, posso racionalizar ^^
Ótimo texto! Parabéns!
Rochester 17/03/2007 às 01:25
Faltou um caso meio especifico que é pra imagens que vao em marcadores de menu por exemplo.
que vão como imagem de marcador da lista.
Alexandre 17/03/2007 às 16:47
Marcadores de lista são decorativos, não adicionam nenhum valor semântico… devem ser adicionados com list-style-image ou background nos elementos por css e não diretamente no código.
Fill 18/03/2007 às 17:44
Bom texto, agora clareou!
silici0 23/03/2007 às 18:45
FEED ta com erro..
Abraços
Daniel 23/03/2007 às 23:45
muito bom o artigo!
Micox 03/04/2007 às 18:57
Por favor, ajudem-nos a descobrir:
http://www.marketingdebusca.com.br/cade-o-tableless-no-google/
Acorda pra Web! » Semântica no HTML - Logomarca não é só texto! - Web Semântica, Programação e Tecnologia que vai mudar nossas vidas, só depois do café 13/04/2007 às 06:25
[...] em usuários de portáteis, tanto faz, mas deixo aqui minha pequena dica, que é só um complemento dessa dica aqui dada pelo [...]
Lorena 08/06/2007 às 11:06
tenho uma duvidaa
Como faço para pegar o link de um background para colocar no HTML do meu layout?
Mística 04/04/2008 às 02:41
Dou a minha cara a tapa!!! Tableless é maravilhoso, resolvi estudar pra ver se era mesmo, mas com aquele pensamento antigo de Web Designer preguiçoso que não quer mexer com código: “Esse tal de tableless…vai limitar meu design e vai ser um saco fazer…”.
Depois que estudei o pensamento mudou para: “Putz! Como eu estava sendo burra!! Tableless é maravilhoso!”
É isso aí…tô gostando…e essa dica das imagens clareou mais ainda…Valew!
Kleberson Leite 13/05/2008 às 08:03
Muito Bom Tutorial Cara =D…
Vc trabalha muito bem e seus tutoriais sao bem elaborado.
Se alguem da comunidade quiser trocar informações na área de webdesign estou à disposta é só add.
gok12_rio@hotmail.com.
By: Kel
João F. Melo 31/05/2008 às 02:19
Gostei muito do assunto.
)
Antes eu também só trabalhava mais com table agora somente com tableless.
Tenho aprendido muito com este site e seus tutoriais.
Muito obrigado por compartilhar seus conheçimentos.
Fique com Deus.
Patrick 03/08/2008 às 14:42
Sou iniciante em CSS, to tentando fazer um topo pra uma oscommerce, mas, esbarrei num probleminha, o conteúdo do meu site está “quebrado”. Se alguém puder dar uma dica ficarei grato.
Lucia 21/10/2008 às 09:36
Texto muito bom. Parabéns!!
Eder Lima 30/07/2010 às 14:29
Tá, mas e enquanto ao uso de imagens como fundo em headings e links? Farão elas mesmo parte do conteúdo ou são apenas itens de layout.
Afinal um h2:
My h2
h2.my{
text-indent:-99999999px;
overflow:hidden;
background:url(myheadingimg.png)
}
Ainda é um texto e a imagem de fundo seria irrelevante, pois ela é apenas decorativa.
Como funciona nesse caso, e para links, onde o texto do link tb está escrito, sendo apenas ‘indentado’ para a esquerda e mostrando a imagem de fundo?
Qaunto ao conteúdo sim, mas acho que precisa de mais consideração essa prática.
Até porque leitores de tela irão ler uma imagem como
“image title TÍTULO DO CABEÇALHO”
Enquanto com cabeçalhos usando a técnica do indent serão lindos apenas como
“TÍTULO DO CABEÇALHO”
Se você puder fazer uma ponderação sobre esses dois aspectos, agradeço!
Grande abraço!