Tem um thread bastante instigante no StackOverFlow p/ os que tem essa questão ainda mal esclarecida:
Eu achei melhor a explicação do HeadFirst Hmlt5.
Table é para dados e não para estruturar tela. [=
[quote=Hebert Coelho]Eu achei melhor a explicação do HeadFirst Hmlt5.
Table é para dados e não para estruturar tela. [=[/quote]
Legal tb.
Achei muito interessante a tese do cara, veja só:
"It seems to be the general opinion that tables should not be used for layout in HTML.
Why?
I have never (or rarely to be honest) seen good arguments for this. The usual answers are:
It’s good to separate content from layout
But this is a fallacious argument; Cliche Thinking. I guess it’s true that using the table element for layout has little to do with tabular data. So what? Does my boss care? Do my users care?"[color=red] [/color]
Ou seja, partindo deste princípio, opinião dele, o importante é o “bom” resultado final incluindo o desempenho da equipe e o acordo c/ o cliente/usuário.
[quote=andredecotia][quote=Hebert Coelho]Eu achei melhor a explicação do HeadFirst Hmlt5.
Table é para dados e não para estruturar tela. [=[/quote]
Legal tb.
Achei muito interessante a tese do cara, veja só:
"It seems to be the general opinion that tables should not be used for layout in HTML.
Why?
I have never (or rarely to be honest) seen good arguments for this. The usual answers are:
It’s good to separate content from layout
But this is a fallacious argument; Cliche Thinking. I guess it’s true that using the table element for layout has little to do with tabular data. So what? Does my boss care? Do my users care?"[color=red] [/color]
Ou seja, partindo deste princípio, opinião dele, o importante é o “bom” resultado final incluindo o desempenho da equipe e o acordo c/ o cliente/usuário.[/quote]
Vendo por este lado, com certeza há razão.
Agora, temos que analisar o seguinte, esse “pensamento falacioso”, como ele coloca, é causado pela exploração do desenvolvedor. No meu modo de ver, design é uma coisa e desenvolvimento outra. Como eu sempre digo, design de desenvolvedor é letras pretas em fundo branco e fundo preto com letras brancas.
Eu vejo alguns pontos importantes nessa comparação.
O primeiro ponto é que a estrutura de uma tabela é mais complexa do que a de uma div, enquanto preciso de 3 grupos de tags pra escrever um Oi [code]
oi |
Você não consegue tirar uma célula da tabela e movê-la pra outro lugar, com a mesma facilidade que move uma div, não concorda?
E não vamos dizer que é mais complexo desenvolver com divs, porque é necessário aprender CSS, pois hoje CSS é uma obrigação em qualquer tipo de estrutura, seja ela com tabelas ou não.
Também é importante dizer que tabelas HTML demoram pra renderizar, uma busca rápida no google retorna resultados interessantes, o ponto principal é que o browser tem que ler a tabela toda antes de mostrá-la na tela, então enquanto ele não encontrar a tag que fecha a tabela, a tela fica branca para o usuário.
Há quem diz que os computadores estão tão rápidos hoje que não se percebe mais isso, pode ser até verdade, mas pra que fazer algo mais pesado sem um bom motivo?
Enfim, há diversas razões pra dizer que desenvolver com divs é melhor, não discordo que pro usuário final possa não fazer tanta diferença, mas utilizar tabelas não é algo muito legal, o código fica com aparência suja, difícil de manter, e bem mais propenso a erros (minha opinião).
Para layout com certeza é má prática. Só use para fazer data grids pequenos (ou paginados), mas trabalho com designers que reclamam até assim, sendo que por acordo valeu o bom senso pois para data grids é mais produtivo e não onera em nada na performance tabela pequena. Hoje com frameworks a coisa ficou mais fácil de layoutar com divs, a exemplo do Grid System do Bootstrap e outro que usava antigamente, o formee.
Eu penso o seguinte, do mesmo modo que é possível criar uma classe com atributos publicos ao invés de privado é possível usar table ao invés de div.
É boa prática? Não. É possível utilizar, sim.
Eu acho que utilizar divs é a melhor maneira (atualmente) para sites.
Com layouts complexos é muito prático ter a flexibilidade que um layout tableless te dá.
Para sistemas já não tenho tanta certeza, já que o html não está lá pra representar conteúdo apenas para fazer interface (o valor semântico meio que perde a razão).
Algumas observações relativas ao tableless que não vejo ninguém comentar:
- O html fica cheio de divs. E como é uma tag curinga, fica dificil saber o que ela representa, se não tiver um class pra avisar (E nem sempre tem).
- Algumas coisas simples de se fazer com atributos html não tem equivalentes diretos no css ( centralizar um div dentro de outro div).
- O html fica mais limpo, mas o CSS é cheio de hacks por conta de incompatibilidades e falta de recursos.
Em geral, acho que usar tabelas é uma má idéia mas a alternativa em si está longe de ser boa.
O argumento comum é que tabela é para dado tabular, mas div serve para que? Hoje é usado pra tudo. Qual a semântica disso?
Tem novas tags previstas no html 5, menos genéricas, que espero, melhorem esse mau uso do div também.
[quote=AbelBueno]Eu acho que utilizar divs é a melhor maneira (atualmente) para sites.
Com layouts complexos é muito prático ter a flexibilidade que um layout tableless te dá.
Para sistemas já não tenho tanta certeza, já que o html não está lá pra representar conteúdo apenas para fazer interface (o valor semântico meio que perde a razão).
Algumas observações relativas ao tableless que não vejo ninguém comentar:
- O html fica cheio de divs. E como é uma tag curinga, fica dificil saber o que ela representa, se não tiver um class pra avisar (E nem sempre tem).
- Algumas coisas simples de se fazer com atributos html não tem equivalentes diretos no css ( centralizar um div dentro de outro div).
- O html fica mais limpo, mas o CSS é cheio de hacks por conta de incompatibilidades e falta de recursos.
Em geral, acho que usar tabelas é uma má idéia mas a alternativa em si está longe de ser boa.
O argumento comum é que tabela é para dado tabular, mas div serve para que? Hoje é usado pra tudo. Qual a semântica disso?
Tem novas tags previstas no html 5, menos genéricas, que espero, melhorem esse mau uso do div também.[/quote]
Mas aí acho que tem um conflito de ideias.
Você está dizendo que div não é bom porque tem gente que não usa direito, mas a discussão é entre qual das estruturas é melhor para montar o seu layout.
Ser melhor não significa que será mais fácil, nem mais fácil de aprender, mas que o resultado terá uma qualidade melhor em algum sentido
Pegue um desenvolvedor que desenvolve excelentes interfaces com table, e outro que o faz com divs, qual é melhor? Qual mantem um código mais organizado e mais fácil de manter? Essa que é a ideia.
Gente fazendo besteira vai existir em todo lugar, mas não quer dizer que a estrutura seja ruim.
Na verdade, quis dizer que div não é bom por não ter significado. É uma caixa genérica.
Para sites normalmente vale a pena o layout necessitar ser muito flexível.
Para sistemas típicos, onde tem muitos campos e informação distribuídas de forma uniforme, ele mais complica que ajuda.
Repare que o html dessa thread aqui do guj, por exemplo, é baseado em tables e atende muito bem.
Concordo, mas qual é a vantagem absoluta da div afinal?
Olha, raramente vejo desenvolvedor criando excelentes interfaces.
Mas em matéria de organização do código html, um código html puro com table tem informação suficiente para você imaginar como a informação está estruturada.
O código com div depende do css para o posicionamento, e você consegue analisar direto no browser.
Veja que não estou defendendo o uso de tables ao invés de divs.
Estou defendendo um equílibrio.
Usar tables virou um tabu em html (tem gente construindo tabela com div para ser tableless) enquanto um uso balanceado simplificaria o serviço.
Eu concordo que existem os 2 extremos, existem atrocidades com tabelas, e com divs também.
Tem gente que cria tabelas pra montar a estrutura do site? É errado? Não sei dizer, mas eu não acho que seja a melhor forma.
Tabelas são fixas, mais pesadas, geram arquivos maiores, temos que lembrar que com o avanço do mobile, o peso de uma página pode pesar sim, e acaba fazendo diferença pro usuário, principalmente se ele não tiver uma conexão rápida.
Usar tabelas também complica o layout em diferentes ambientes. Você planeja um layout para ser visto em um monitor de PC, se for fazer outro para mobile, dificilmente poderá usar o mesmo, pode até precisar de um novo arquivo, o que significa mais custos de desenvolvimento e manutenção.
Agora por outro lado, divs também são ruins se usadas em excesso, como você mesmo disse, tem gente que usa div pra tudo, o que não é bom.
Eu acho que no fim o que conta é o bom senso, saber balancear as coisas e usar a ferramenta certa na hora certa. Acho que essa discussão de divs vs tables realmente nunca vai morrer
mas div nao é o mesmo que table? sei que table nao é o mesmo que div.
Se table não é o mesmo que div, então div não é o mesmo que table 8)
Ops, mandei 2x
Se table não é o mesmo que div, então div não é o mesmo que table 8) [/quote]Que poético isso.
Quase um Shakespeare! :shock:
Se table não é o mesmo que div, então div não é o mesmo que table 8) [/quote]Que poético isso.
Quase um Shakespeare! :shock: [/quote]
Hehehe… Me divirto no GUJ…
Acho q entendi o q a mariazinhahappy quis dizer (me corrija se estiver errado), no sentido d q <div></div>
faz o o mesmo que um <table></table>
faz (pois tem gente querendo aplicar tableless em tudo e até tabulação faz com div), contudo um <table></table>
não deveria fazer o que um <div></div>
faz (por melhores práticas p/ layout poderia-se usar técnicas mais convencionadas).
Entendi o que você quis dizer, André, porém ainda não acho que é válido dizer isso.
Tabelas são tabelas e divs são divs, ambos tem funcionalidades diferentes, apesar de um poder fazer (visualmente) o que o outro faz.
O grande problema é tentar fazer divs trabalharem como tabelas, sendo que elas não são. A ideia de tabela é clara pra todos, pois as vemos sempre, portanto planejar algo nesse sentido fica mais fácil.
Agora divs são divisões, a maneira como é dividido depende muito, é muito mais aberto do que o conceito de tabela.
Agora usar divs pra simular tabelas… Credo
[quote=AbelBueno]Eu acho que utilizar divs é a melhor maneira (atualmente) para sites.
Com layouts complexos é muito prático ter a flexibilidade que um layout tableless te dá.
Para sistemas já não tenho tanta certeza, já que o html não está lá pra representar conteúdo apenas para fazer interface (o valor semântico meio que perde a razão).
Algumas observações relativas ao tableless que não vejo ninguém comentar:
- O html fica cheio de divs. E como é uma tag curinga, fica dificil saber o que ela representa, se não tiver um class pra avisar (E nem sempre tem).
- Algumas coisas simples de se fazer com atributos html não tem equivalentes diretos no css ( centralizar um div dentro de outro div).
- O html fica mais limpo, mas o CSS é cheio de hacks por conta de incompatibilidades e falta de recursos.
Em geral, acho que usar tabelas é uma má idéia mas a alternativa em si está longe de ser boa.
O argumento comum é que tabela é para dado tabular, mas div serve para que? Hoje é usado pra tudo. Qual a semântica disso?
Tem novas tags previstas no html 5, menos genéricas, que espero, melhorem esse mau uso do div também.[/quote]
Concordo com o seu ponto de vista. Lendo outro artigo “Table Layouts vs. Div Layouts: From Hell to? Hell?” Fonte: http://coding.smashingmagazine.com/2009/04/08/from-table-hell-to-div-hell/
Onde o autor fala q muitos desenvolvedores estão saindo do inferno dos tables pra acabarem no inferno dos divs…
Fala do futuro, conforme vc cita, o HTML 5, possibilidade de usar tags com melhor semântica (vide exemplo anexo).
Enfim, meu ponto de vista é q não devemos ser radicais em erradicar o uso de tables como conheço muitos fazendo e usando div pra tudo.
[quote=Rodrigo Sasaki]Entendi o que você quis dizer, André, porém ainda não acho que é válido dizer isso.
Tabelas são tabelas e divs são divs, ambos tem funcionalidades diferentes, apesar de um poder fazer (visualmente) o que o outro faz.
O grande problema é tentar fazer divs trabalharem como tabelas, sendo que elas não são. A ideia de tabela é clara pra todos, pois as vemos sempre, portanto planejar algo nesse sentido fica mais fácil.
Agora divs são divisões, a maneira como é dividido depende muito, é muito mais aberto do que o conceito de tabela.
Agora usar divs pra simular tabelas… Credo :)[/quote]
1+
Sim, com certeza.
Tudo depende muito do bom senso do desenvolvedor, eu não abomino o uso de tabelas, só acho que elas devem ser usadas no momento certo.
Também não super-incentivo divs :), o excesso delas também causa problemas.
Só uma coisa, quem falou do HTML 5 foi o AbelBueno, não eu
Segue um outro link sobre o assunto, caso alguém se interesse: http://www.vanseodesign.com/css/css-divs-vs-tables/