SlideShare a Scribd company logo
1 of 92
globo
 .com
        GBD Pattern
        Leonardo Quixadá
1   Apresentação
2   Problema
Problemas em HTML
‣   Não existe um pattern para solucionar os problemas
    mais comuns de implementação
‣   Div-itis
‣   Class-itis
Problemas em HTML
‣   Div-itis
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
Problemas em HTML
‣   Class-itis
<div class="cnn_adtitle"><img src="http://i.cdn.turner.com/cnn/.e/img/3.0/
global/misc/advertisement.gif" alt="" border="0" height="5" width="58"/></div>
<div class="cnn_divline"></div>
</div>
<div class="cnn_hppersonal">
<div class="cnn_pad12top"></div>
<div class="cnn_hppersonalhdr">
<div class="cnn_hppersonalhdr1"><a href="/SPORT/olympics/results-and-schedule/?
hpt=hp_r1">LATEST OLYMPICS RESULTS »</a></div>
<div class="cnn_divline"></div>
</div>
<div id="cnn_olympic_widget"></div>
</div>
<div class="cnn_hppersonal">
<div class="cnn_pad12top"></div>
<div class="cnn_hppersonalhdr">
<div class="cnn_hppersonalhdr1">MARKETS</div>
<div class="cnn_divline"></div>
</div>
Padrões de Desenvolvimento
‣   Rails: MVC
‣   Django: MTV
‣   CSS: Grid e Reset.css
‣   HTML: Tableless
3   GBD Pattern
GBD Pattern
‣   Grid
‣   Box
‣   Data
GBD Pattern
‣   Válido (W3C friendly)
‣   Semântico
‣   Enxuto
‣   Otimizado para SEO (Google friendly)
‣   Acessível
‣   Progressive Enhancement
‣   Fácil de entender
3.1   Grids
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
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
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
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.
Grids
colunas
Grids
Grids

        linhas
Grids: Colunas
‣   1 unidade ou coluna de 1:

            <div class=”span1”></div>


                        width (60px)
Grids: Colunas
‣   2 unidades:

                   span1                span1

                   60px    20px         60px




‣   coluna de 2:
                           span2

                           140px

            <div class=”span2”></div>
Grids: Colunas
‣   3 unidades:
            span1          span1           span1

            60px    20px   60px    20px    60px


            span1                  span2

            60px    20px           140px

‣   coluna de 3:
                           span3

                           220px

            <div class=”span3”></div>
Grids: Colunas
‣   4 unidades:
          span1           span1           span1          span1

          60px     20px   60px    20px    60px    20px   60px


          span1                   span2                  span1

          60px     20px           140px           20px   60px

‣   coluna de 4:
                                  span4

                                  300px

             <div class=”span4”></div>
Grids
Grids: Linhas
‣   As linhas são definidas pela classe .row

     row

           span2             span8            span2




    <div class=”row”>
     <div class=”span2”></div>
     <div class=”span8”></div>
     <div class=”span2”></div>
    </div>
Grids: Aninhamento
‣   Pode-se ter linhas dentro de outras linhas

     span4

             span1           span2               span1



    <div class=”span4”>
     <div class=”row”>
       <div class=”span1”></div>
       <div class=”span2”></div>
       <div class=”span1”></div>
     </div>
    </div>
Grids: Exemplo
            header



        1            2



    3         4      5

            footer
Demo de Grid com Box
http://jsfiddle.net/lquixada/xp8fC/
3.2   Box
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.
Box
‣   Podem ser utilizados por widgets, destaques, forms,
    menus, etc...
‣   Baseado nas novas tags do HTML 5: article, section,
    aside, header e footer.
Página
Página
Página
Página
Menu & Widget Lateral
Menu & Widget Lateral


          Header
Menu & Widget Lateral


          Content
Menu & Widget Lateral


          Footer
Form
Form
Form
Form
Widgets Centrais
Widgets Centrais
Widgets Centrais
Widgets Centrais
Pattern Visual
 Container

  Header



  Content



  Footer
Pattern Visual
 Container

  Títulos, menus, logos...



  Todo o conteúdo



  Links “veja mais”, botões, informações extras...
Pattern Box
<section class=”box”>
 <header>
   ...
 </header>
 <section class=”content”>
   ...
 </section>
 <footer>
   ...
 </footer>
</section>
Pattern Box
<section class=”box”>
 <header>
   ...
 </header>
 <section class=”content”>   opcionais
   ...
 </section>
 <footer>
   ...
 </footer>
</section>
Pattern Box: HTML 4
<div class=”box”>
 <div class=”header”>
   ...
 </div>
 <div class=”content”>
   ...
 </div>
 <div class=”footer”>
   ...
 </div>
</div>
Pattern Box 2
<article class=”materia”>
 <header>
   ...
 </header>
 <section class=”content”>
   ...
 </section>
 <footer class=”base”>
   ...
 </footer>
</article>
Pattern Box 3
<aside class=”box”>
 <header>
   ...
 </header>
 <section class=”content”>
   ...
 </section>
 <footer>
   ...
 </footer>
</aside>
Exemplo: Box Plantão
<section class=”box box-plantao”>
 <header>
   ...
 </header>
 <section class=”content”>
   ...
 </section>
 <footer>
   ...
 </footer>
</section>
Exemplo: Box Plantão
<div class=”box box-plantao”>
 <div class=”header”>
   ...
 </div>
 <div class=”content”>
   ...
 </div>
 <div class=”footer”>
   ...
 </div>
</div>
Exemplo: Box Plantão
<div class=”box box-plantao”>
 <div class=”header”>
   ...
 </div> <!-- .header -->
 <div class=”content”>
   ...
 </div> <!-- .content -->
 <div class=”footer”>
   ...
 </div> <!-- .footer -->
</div> <!-- .box-plantao -->
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>
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>
Demo de Grid com Box
http://jsfiddle.net/lquixada/scTcU/
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.
3.3   Dados
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.
Mas antes...
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
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>
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>
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>
Microdados: Exemplo
<div itemscope itemtype="http://schema.org/Movie">
  <h1 itemprop="name">Avatar</h1>
  <span>
    Director:
    <span itemprop="director">James Cameron</span>
    (born August 16, 1954)
  </span>
  <span itemprop="genre">Science fiction</span>
  <a href="/movies/avatar.html" itemprop="trailer">Trailer</a>
</div>
Microdados: Exemplo
<div itemscope itemtype="http://schema.org/Movie">
  <h1 itemprop="name">Avatar</h1>
  <span itemprop="director" itemscope itemtype="http://schema.org/
Person">
    Director:
    <span itemprop="name">James Cameron</span>
    (born <span itemprop="birthDate">August 16, 1954)</span>
  </span>
  <span itemprop="genre">Science fiction</span>
  <a href="/movies/avatar.html" itemprop="trailer">Trailer</a>
</div>
Microdados
‣   Mais exemplos em: http://schema.org
Microformatos
‣   Cartões
    <div class="vcard">
           <span class="fn">Nome</span>
           <span class="org">Organização</span>
           <span class="tel">604-555-1234</span>
           <a class="url" href="http://site.com/">Website</a>
    </div>



‣   Calendário
‣   Reviews
De volta à nossa
programação normal...
Dados
‣   Por que não fazer nosso próprio formato?
‣   HTML com mais semântica e mais entendível.
Box Plantão
<section class=”box box-plantao”>
 <header>
   ...
 </header>
 <section class=”content”>
   ...
 </section>
 <footer>
   ...
 </footer>
</section>
Box Plantão
<section class=”box box-plantao”>
 <header>
   ...
 </header>
 <section class=”content”>
   ...
 </section>
 <footer>
   ...
 </footer>
</section>
Box Plantão
<section class=”box box-plantao”>
 ...
 <section class=”content”>
     <ul>
      <li> ... </li>
      <li> ... </li>
      ...
     </ul>
 </section>
 ...
</section>
Box Plantão
 <ul>
  <li>
      <a class=”noticia” href=”#”>
       <img class=”thumb”
           src=”foto.jpg” />
       <span class=”chapeu”></span>
       <span class=”titulo”></span>
      </a>
  </li>
  ...
 </ul>
Box Plantão
 <ul>
  <li>
      <a class=”noticia” href=”#”>
       <img class=”thumb”
           src=”foto.jpg” />
       <span class=”chapeu”></span>
       <span class=”titulo”></span>
      </a>
  </li>
  ...
 </ul>        não dizem nada
Box Plantão
 <ul>
  <li>
      <a class=”noticia” href=”#”>
       <img class=”thumb”
           src=”foto.jpg” />
       <span class=”chapeu”></span>
       <span class=”titulo”></span>
      </a>
  </li>
  ...
 </ul>
              semântico!!!
Vejamos rapidamente
    outro box...
Box Previsão do Tempo
Box Previsão do Tempo
Vc consegue classificar semanticamente o
           content do box?
Outro exemplo....
Outro exemplo....


div.brother-main
Outro exemplo....


                                                 cite.brother-tweet
span.brother-idade
                     span.brother-cidade-natal




span.brother-signo                                cite.brother-tweet-tempo
                  span.brother-time
Demo de Grid com Box com Dados
 http://jsfiddle.net/lquixada/WLZ8V/
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
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.
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>
GBD Pattern
‣   Válido (W3C friendly)
‣   Semântico
‣   Enxuto
‣   Otimizado para SEO (Google friendly)
‣   Acessível
‣   Progressive Enhancement
‣   Fácil de entender
GBD Pattern
Obrigado!
 Leonardo Quixadá

More Related Content

Similar to GBD Pattern

Design Responsivo com Sass
Design Responsivo com SassDesign Responsivo com Sass
Design Responsivo com SassVitor Garcia
 
Como montar uma App em diversas resoluções de tela
Como montar uma App em diversas resoluções de telaComo montar uma App em diversas resoluções de tela
Como montar uma App em diversas resoluções de telaMicrosoft Mobile Developer
 
Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017
Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017
Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017Fernando Freitas Alves
 
CSS {Grid} Layout: It's evolution baby
CSS {Grid} Layout: It's evolution babyCSS {Grid} Layout: It's evolution baby
CSS {Grid} Layout: It's evolution babyCriciúma Dev
 
SUIT CSS como padrão de escrita de estilos
SUIT CSS como padrão de escrita de estilosSUIT CSS como padrão de escrita de estilos
SUIT CSS como padrão de escrita de estilosJoão Paulo Barbosa Neto
 
Dicas para criação rápida de projectos WEB
Dicas para criação rápida de projectos WEBDicas para criação rápida de projectos WEB
Dicas para criação rápida de projectos WEBMarco Pinheiro
 
Gráficos Vetoriais na Web com SVG
Gráficos Vetoriais na Web com SVGGráficos Vetoriais na Web com SVG
Gráficos Vetoriais na Web com SVGHelder da Rocha
 
Gabarito ad1 web_2012_2
Gabarito ad1 web_2012_2Gabarito ad1 web_2012_2
Gabarito ad1 web_2012_2paulofa
 
Caelum html-css-javascript-php
Caelum html-css-javascript-phpCaelum html-css-javascript-php
Caelum html-css-javascript-phpLindomar ...
 
Otimização de Seletores
Otimização de SeletoresOtimização de Seletores
Otimização de SeletoresFábio M. Costa
 
Desenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralDesenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralHelder Lopes
 
Um guia bem básico de Bootstrap + Less
Um guia bem básico de Bootstrap + LessUm guia bem básico de Bootstrap + Less
Um guia bem básico de Bootstrap + LessBruno Said
 

Similar to GBD Pattern (20)

HTML/CSS Patterns
HTML/CSS PatternsHTML/CSS Patterns
HTML/CSS Patterns
 
Design Responsivo com Sass
Design Responsivo com SassDesign Responsivo com Sass
Design Responsivo com Sass
 
Como montar uma App em diversas resoluções de tela
Como montar uma App em diversas resoluções de telaComo montar uma App em diversas resoluções de tela
Como montar uma App em diversas resoluções de tela
 
Arquitetura CSS
Arquitetura CSSArquitetura CSS
Arquitetura CSS
 
Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017
Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017
Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017
 
CSS
CSSCSS
CSS
 
CSS {Grid} Layout: It's evolution baby
CSS {Grid} Layout: It's evolution babyCSS {Grid} Layout: It's evolution baby
CSS {Grid} Layout: It's evolution baby
 
XHTML Básico
XHTML BásicoXHTML Básico
XHTML Básico
 
SUIT CSS como padrão de escrita de estilos
SUIT CSS como padrão de escrita de estilosSUIT CSS como padrão de escrita de estilos
SUIT CSS como padrão de escrita de estilos
 
Dicas para criação rápida de projectos WEB
Dicas para criação rápida de projectos WEBDicas para criação rápida de projectos WEB
Dicas para criação rápida de projectos WEB
 
Web design responsivo e adaptativo - HTML5/CSS3
Web design responsivo e adaptativo - HTML5/CSS3Web design responsivo e adaptativo - HTML5/CSS3
Web design responsivo e adaptativo - HTML5/CSS3
 
Gráficos Vetoriais na Web com SVG
Gráficos Vetoriais na Web com SVGGráficos Vetoriais na Web com SVG
Gráficos Vetoriais na Web com SVG
 
Modular CSS - Projetando CSS para aplicativos
Modular CSS - Projetando CSS para aplicativosModular CSS - Projetando CSS para aplicativos
Modular CSS - Projetando CSS para aplicativos
 
Gabarito ad1 web_2012_2
Gabarito ad1 web_2012_2Gabarito ad1 web_2012_2
Gabarito ad1 web_2012_2
 
Caelum html-css-javascript-php
Caelum html-css-javascript-phpCaelum html-css-javascript-php
Caelum html-css-javascript-php
 
Otimização de Seletores
Otimização de SeletoresOtimização de Seletores
Otimização de Seletores
 
Desenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralDesenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geral
 
SVG Essencial
SVG EssencialSVG Essencial
SVG Essencial
 
Mini curso de c#.net
Mini curso de c#.netMini curso de c#.net
Mini curso de c#.net
 
Um guia bem básico de Bootstrap + Less
Um guia bem básico de Bootstrap + LessUm guia bem básico de Bootstrap + Less
Um guia bem básico de Bootstrap + Less
 

GBD Pattern

  • 1. globo .com GBD Pattern Leonardo Quixadá
  • 2. 1 Apresentação
  • 3. 2 Problema
  • 4. Problemas em HTML ‣ Não existe um pattern para solucionar os problemas mais comuns de implementação ‣ Div-itis ‣ Class-itis
  • 5. Problemas em HTML ‣ Div-itis </div> </div> </div> </div> </div> </div> </div> </div>
  • 6. Problemas em HTML ‣ Class-itis <div class="cnn_adtitle"><img src="http://i.cdn.turner.com/cnn/.e/img/3.0/ global/misc/advertisement.gif" alt="" border="0" height="5" width="58"/></div> <div class="cnn_divline"></div> </div> <div class="cnn_hppersonal"> <div class="cnn_pad12top"></div> <div class="cnn_hppersonalhdr"> <div class="cnn_hppersonalhdr1"><a href="/SPORT/olympics/results-and-schedule/? hpt=hp_r1">LATEST OLYMPICS RESULTS »</a></div> <div class="cnn_divline"></div> </div> <div id="cnn_olympic_widget"></div> </div> <div class="cnn_hppersonal"> <div class="cnn_pad12top"></div> <div class="cnn_hppersonalhdr"> <div class="cnn_hppersonalhdr1">MARKETS</div> <div class="cnn_divline"></div> </div>
  • 7. Padrões de Desenvolvimento ‣ Rails: MVC ‣ Django: MTV ‣ CSS: Grid e Reset.css ‣ HTML: Tableless
  • 8. 3 GBD Pattern
  • 9. GBD Pattern ‣ Grid ‣ Box ‣ Data
  • 10. GBD Pattern ‣ Válido (W3C friendly) ‣ Semântico ‣ Enxuto ‣ Otimizado para SEO (Google friendly) ‣ Acessível ‣ Progressive Enhancement ‣ Fácil de entender
  • 11. 3.1 Grids
  • 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.
  • 16. Grids
  • 18. Grids linhas
  • 19. Grids: Colunas ‣ 1 unidade ou coluna de 1: <div class=”span1”></div> width (60px)
  • 20. Grids: Colunas ‣ 2 unidades: span1 span1 60px 20px 60px ‣ coluna de 2: span2 140px <div class=”span2”></div>
  • 21. Grids: Colunas ‣ 3 unidades: span1 span1 span1 60px 20px 60px 20px 60px span1 span2 60px 20px 140px ‣ coluna de 3: span3 220px <div class=”span3”></div>
  • 22. Grids: Colunas ‣ 4 unidades: span1 span1 span1 span1 60px 20px 60px 20px 60px 20px 60px span1 span2 span1 60px 20px 140px 20px 60px ‣ coluna de 4: span4 300px <div class=”span4”></div>
  • 23. Grids
  • 24. Grids: Linhas ‣ As linhas são definidas pela classe .row row span2 span8 span2 <div class=”row”> <div class=”span2”></div> <div class=”span8”></div> <div class=”span2”></div> </div>
  • 25. Grids: Aninhamento ‣ Pode-se ter linhas dentro de outras linhas span4 span1 span2 span1 <div class=”span4”> <div class=”row”> <div class=”span1”></div> <div class=”span2”></div> <div class=”span1”></div> </div> </div>
  • 26. Grids: Exemplo header 1 2 3 4 5 footer
  • 27. Demo de Grid com Box http://jsfiddle.net/lquixada/xp8fC/
  • 28. 3.2 Box
  • 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.
  • 35. Menu & Widget Lateral
  • 36. Menu & Widget Lateral Header
  • 37. Menu & Widget Lateral Content
  • 38. Menu & Widget Lateral Footer
  • 39. Form
  • 40. Form
  • 41. Form
  • 42. Form
  • 47. Pattern Visual Container Header Content Footer
  • 48. Pattern Visual Container Títulos, menus, logos... Todo o conteúdo Links “veja mais”, botões, informações extras...
  • 49. Pattern Box <section class=”box”> <header> ... </header> <section class=”content”> ... </section> <footer> ... </footer> </section>
  • 50. Pattern Box <section class=”box”> <header> ... </header> <section class=”content”> opcionais ... </section> <footer> ... </footer> </section>
  • 51. Pattern Box: HTML 4 <div class=”box”> <div class=”header”> ... </div> <div class=”content”> ... </div> <div class=”footer”> ... </div> </div>
  • 52. Pattern Box 2 <article class=”materia”> <header> ... </header> <section class=”content”> ... </section> <footer class=”base”> ... </footer> </article>
  • 53. Pattern Box 3 <aside class=”box”> <header> ... </header> <section class=”content”> ... </section> <footer> ... </footer> </aside>
  • 54. Exemplo: Box Plantão <section class=”box box-plantao”> <header> ... </header> <section class=”content”> ... </section> <footer> ... </footer> </section>
  • 55. Exemplo: Box Plantão <div class=”box box-plantao”> <div class=”header”> ... </div> <div class=”content”> ... </div> <div class=”footer”> ... </div> </div>
  • 56. Exemplo: Box Plantão <div class=”box box-plantao”> <div class=”header”> ... </div> <!-- .header --> <div class=”content”> ... </div> <!-- .content --> <div class=”footer”> ... </div> <!-- .footer --> </div> <!-- .box-plantao -->
  • 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.
  • 61. 3.3 Dados
  • 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>
  • 68. Microdados: Exemplo <div itemscope itemtype="http://schema.org/Movie"> <h1 itemprop="name">Avatar</h1> <span> Director: <span itemprop="director">James Cameron</span> (born August 16, 1954) </span> <span itemprop="genre">Science fiction</span> <a href="/movies/avatar.html" itemprop="trailer">Trailer</a> </div>
  • 69. Microdados: Exemplo <div itemscope itemtype="http://schema.org/Movie"> <h1 itemprop="name">Avatar</h1> <span itemprop="director" itemscope itemtype="http://schema.org/ Person"> Director: <span itemprop="name">James Cameron</span> (born <span itemprop="birthDate">August 16, 1954)</span> </span> <span itemprop="genre">Science fiction</span> <a href="/movies/avatar.html" itemprop="trailer">Trailer</a> </div>
  • 70. Microdados ‣ Mais exemplos em: http://schema.org
  • 71. Microformatos ‣ Cartões <div class="vcard"> <span class="fn">Nome</span> <span class="org">Organização</span> <span class="tel">604-555-1234</span> <a class="url" href="http://site.com/">Website</a> </div> ‣ Calendário ‣ Reviews
  • 72. De volta à nossa programação normal...
  • 73. Dados ‣ Por que não fazer nosso próprio formato? ‣ HTML com mais semântica e mais entendível.
  • 74. Box Plantão <section class=”box box-plantao”> <header> ... </header> <section class=”content”> ... </section> <footer> ... </footer> </section>
  • 75. Box Plantão <section class=”box box-plantao”> <header> ... </header> <section class=”content”> ... </section> <footer> ... </footer> </section>
  • 76. Box Plantão <section class=”box box-plantao”> ... <section class=”content”> <ul> <li> ... </li> <li> ... </li> ... </ul> </section> ... </section>
  • 77. Box Plantão <ul> <li> <a class=”noticia” href=”#”> <img class=”thumb” src=”foto.jpg” /> <span class=”chapeu”></span> <span class=”titulo”></span> </a> </li> ... </ul>
  • 78. Box Plantão <ul> <li> <a class=”noticia” href=”#”> <img class=”thumb” src=”foto.jpg” /> <span class=”chapeu”></span> <span class=”titulo”></span> </a> </li> ... </ul> não dizem nada
  • 79. Box Plantão <ul> <li> <a class=”noticia” href=”#”> <img class=”thumb” src=”foto.jpg” /> <span class=”chapeu”></span> <span class=”titulo”></span> </a> </li> ... </ul> semântico!!!
  • 80. Vejamos rapidamente outro box...
  • 82. Box Previsão do Tempo Vc consegue classificar semanticamente o content do box?
  • 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

Editor's Notes

  1. \n
  2. Falar sobre mim e minha carreira como client.\n
  3. \n
  4. Quando o PO pede um box no planning, ou o UX desenha um box novo: o que vc pensa em termos de HTML?\n
  5. Escada da Morte, Stairway to Hell\n
  6. Esses s&amp;#xE3;o os problemas que o Tableless trouxe.\n
  7. \n
  8. Primeira vez apresentando como GBD.\nAntes era Grid, Minidocumentos e Microsemantica.\n
  9. Falar sobre o que &amp;#xE9; a id&amp;#xE9;ia e como cheguei nela.\n\n
  10. Sem&amp;#xE2;ntico: que fa&amp;#xE7;a sentido para humanos\n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. - Grids s&amp;#xE3;o como estantes que alocam espa&amp;#xE7;os para os componentes\n- &amp;#xC9; como se os espa&amp;#xE7;os verticais dos compartimentos pudessem variar\n
  17. \n
  18. - Existem v&amp;#xE1;rios tipos de grid na web: blueprint, 960 (mais famoso), YUI Grids, etc.\n- Em geral seguem os mesmos princ&amp;#xED;pios, s&amp;#xF3; mudando alguns detalhes de implementa&amp;#xE7;&amp;#xE3;o.\n
  19. - Vamos usar o grid do twitter como exemplo.\n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. - Na pr&amp;#xE1;tica, utilizamos mais span4, span8 e span12\n\n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. - Lembrar rob&amp;#xF4;zinho do BBB\n
  49. \n
  50. \n
  51. Melhor n&amp;#xE3;o divs e classes demais! EVITE-AS!!\n
  52. Article = conte&amp;#xFA;do principal\nSection = Parte de um conte&amp;#xFA;do principal\n
  53. Aside = conte&amp;#xFA;do perif&amp;#xE9;rico\n
  54. \n
  55. \n
  56. - Coment&amp;#xE1;rios, de prefer&amp;#xEA;ncia, din&amp;#xE2;micos.\n
  57. \n
  58. \n
  59. \n
  60. Deixa o componente mais desacoplado do grid. Assim &amp;#xE9; poss&amp;#xED;vel alterar o grid da p&amp;#xE1;gina sem afetar o componente.\n
  61. \n
  62. elementos sem&amp;#xE2;nticos: h1, p, form, table, input, a, etc...\n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. Vamos dar um zoom!\n
  77. Perceba que s&amp;#xF3; utilizei elementos inline, nenhum block. Blocks estruturam, inlines apresentam.\nNunca, nunca colocar um block dentro de um inline.\n
  78. Sugest&amp;#xF5;es: chapeu, plantao-chapeu, box-plantao-chapeu\n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. Validar no W3C!\n
  87. \n
  88. Deixa o componente mais desacoplado do grid.\nAssim &amp;#xE9; poss&amp;#xED;vel alterar o grid da p&amp;#xE1;gina sem afetar o componente.\n
  89. Inv&amp;#xE1;lido pelo W3C. N&amp;#xE3;o faz sentido.\n
  90. Sem&amp;#xE2;ntico: que fa&amp;#xE7;a sentido para humanos\n
  91. \n
  92. \n