12. Grids
“Todo trabalho de design envolve a solução de problemas
em níveis visuais e organizativos. Figuras, símbolos, massa de
textos, títulos e tabelas devem se reunir para transmitir
informação. O grid é uma maneira de juntar esses
elementos.”
- Luiz Agner, designer, arquiteto e professor
Fonte: http://www.slideshare.net/agner/a-construo-do-grid
13. Grids
“O grid introduz uma ordem sistemática num leiaute e
permite que o designer diagrame uma grande quantidade de
informação. Também permite vários colaboradores num
mesmo projeto.”
- Luiz Agner, designer, arquiteto e professor
Fonte: http://www.slideshare.net/agner/a-construo-do-grid
14. Grids
“Vantagens do grid:
- Clareza
- Eficiência
- Economia
- Identidade”
- Luiz Agner, designer, arquiteto e professor
Fonte: http://www.slideshare.net/agner/a-construo-do-grid
15. Grids
‣ Padrão de-facto para layouts em CSS.
‣ Permite o intercâmbio de componentes entre
produtos
‣ Define o espaço horizontal que os componentes
podem ocupar (o conteúdo dos componentes
definem o espaço vertical)
‣ Dada uma largura fixa, pode-se compor “linhas” com
até 12 colunas.
29. Box
‣ Pattern que subdivide páginas web em pequenos
“módulos” autosuficientes.
‣ É como um pequeno chassi para os componentes
que vão preencher os compartimentos da estante.
‣ Juntando-se vários componentes formam-se
composições sólidas.
30. Box
‣ Podem ser utilizados por widgets, destaques, forms,
menus, etc...
‣ Baseado nas novas tags do HTML 5: article, section,
aside, header e footer.
57. Pattern Box: Aninhamento
‣ Pattern como uma estrutura HTML qualquer
<ul> <form> <table>
<li></li> <fieldset> <tr><th></th></tr>
<li></li> <label></label> <tr><td></td></tr>
<li></li> <input /> <tr><td></td></tr>
</ul> </fieldset> </table>
...
</form>
58. Pattern Box: Aninhamento
‣ E como tal ele pode ser aninhado.
<section class=”box”>
<header></header>
<section class=”content”>
<section class=”box”>
<header></header>
<section class=”content”></section>
</section>
<section class=”box”>
<header></header>
<section class=”content”></section>
<footer></footer>
</section>
</section>
</section>
59. Demo de Grid com Box
http://jsfiddle.net/lquixada/scTcU/
60. Pitfalls
‣ Favor, não misturar box com classes do grid
Exemplo: <section class=”box box-plantao span4”>
‣ Evitar qualquer tipo de <div> dentro do
box, inclusive do próprio grid.
62. Dados
‣ Utilização de elementos semânticos para descrever
dados através de tags e/ou classes.
‣ É uma inspiraçao que veio de Microformatos e, mais
recentemente, de Microdados.
‣ Não serve paras os search engines, apenas melhora a
clareza do código.
64. Microdados
“Microdados é uma especificação WHATWG HTML5
usada para aninhar semântica dentro de conteúdos
existentes em páginas web.
Isso é feito usando atributos específicos: itemscope,
itemtype, itemid, itemprop e itemref.
Search engines, web crawlers, e navegadores podem
extrair e processar microdados a partir de uma página
web e usar isso para prover uma experiência de
navegação mais rica para os usuários.”
- Wikipedia
65. Microdados: Exemplo
<div>
<h1>Avatar</h1>
<span>
Director:
James Cameron
(born August 16, 1954)
</span>
<span>Science fiction</span>
<a href="/movies/avatar.html">Trailer</a>
</div>
66. Microdados: Exemplo
<div itemscope>
<h1>Avatar</h1>
<span>
Director:
James Cameron
(born August 16, 1954)
</span>
<span>Science fiction</span>
<a href="/movies/avatar.html">Trailer</a>
</div>
67. Microdados: Exemplo
<div itemscope itemtype="http://schema.org/Movie">
<h1>Avatar</h1>
<span>
Director:
James Cameron
(born August 16, 1954)
</span>
<span>Science fiction</span>
<a href="/movies/avatar.html">Trailer</a>
</div>
85. Outro exemplo....
cite.brother-tweet
span.brother-idade
span.brother-cidade-natal
span.brother-signo cite.brother-tweet-tempo
span.brother-time
86. Demo de Grid com Box com Dados
http://jsfiddle.net/lquixada/WLZ8V/
87. Dica!
‣ Div e span são “tags fallback,” quando não
houver uma tag mais semântica, use-as.
‣ Use <div> para descrever estrutura
‣ Use <span> para descrever dados
88. Pitfalls
‣ Favor, não misturar box com classes do grid
Exemplo: <section class=”box box-plantao span4”>
‣ Evitar qualquer tipo de <div> dentro do
box, inclusive do próprio grid.
89. Pitfalls
‣ Não colocar elementos nativamente block
dentro de elementos nativamente inline
<li>
<a class=”noticia” href=”#”>
<img class=”thumb”
src=”foto.jpg” />
<div class=”chapeu”>(chapeu)</div>
<h6>(titulo da noticia)</h6>
</a>
</li>
90. GBD Pattern
‣ Válido (W3C friendly)
‣ Semântico
‣ Enxuto
‣ Otimizado para SEO (Google friendly)
‣ Acessível
‣ Progressive Enhancement
‣ Fácil de entender
Quando o PO pede um box no planning, ou o UX desenha um box novo: o que vc pensa em termos de HTML?\n
Escada da Morte, Stairway to Hell\n
Esses s&#xE3;o os problemas que o Tableless trouxe.\n
\n
Primeira vez apresentando como GBD.\nAntes era Grid, Minidocumentos e Microsemantica.\n
Falar sobre o que &#xE9; a id&#xE9;ia e como cheguei nela.\n\n
Sem&#xE2;ntico: que fa&#xE7;a sentido para humanos\n
\n
\n
\n
\n
\n
- Grids s&#xE3;o como estantes que alocam espa&#xE7;os para os componentes\n- &#xC9; como se os espa&#xE7;os verticais dos compartimentos pudessem variar\n
\n
- Existem v&#xE1;rios tipos de grid na web: blueprint, 960 (mais famoso), YUI Grids, etc.\n- Em geral seguem os mesmos princ&#xED;pios, s&#xF3; mudando alguns detalhes de implementa&#xE7;&#xE3;o.\n
- Vamos usar o grid do twitter como exemplo.\n
\n
\n
\n
\n
\n
- Na pr&#xE1;tica, utilizamos mais span4, span8 e span12\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
- Lembrar rob&#xF4;zinho do BBB\n
\n
\n
Melhor n&#xE3;o divs e classes demais! EVITE-AS!!\n
Article = conte&#xFA;do principal\nSection = Parte de um conte&#xFA;do principal\n
Aside = conte&#xFA;do perif&#xE9;rico\n
\n
\n
- Coment&#xE1;rios, de prefer&#xEA;ncia, din&#xE2;micos.\n
\n
\n
\n
Deixa o componente mais desacoplado do grid. Assim &#xE9; poss&#xED;vel alterar o grid da p&#xE1;gina sem afetar o componente.\n
\n
elementos sem&#xE2;nticos: h1, p, form, table, input, a, etc...\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Vamos dar um zoom!\n
Perceba que s&#xF3; utilizei elementos inline, nenhum block. Blocks estruturam, inlines apresentam.\nNunca, nunca colocar um block dentro de um inline.\n