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á

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 dedesign 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 introduzuma 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.
  • 17.
  • 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.
  • 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 Gridcom 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.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
    Menu & WidgetLateral Header
  • 37.
    Menu & WidgetLateral Content
  • 38.
    Menu & WidgetLateral Footer
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 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: HTML4 <div class=”box”> <div class=”header”> ... </div> <div class=”content”> ... </div> <div class=”footer”> ... </div> </div>
  • 52.
    Pattern Box 2 <articleclass=”materia”> <header> ... </header> <section class=”content”> ... </section> <footer class=”base”> ... </footer> </article>
  • 53.
    Pattern Box 3 <asideclass=”box”> <header> ... </header> <section class=”content”> ... </section> <footer> ... </footer> </aside>
  • 54.
    Exemplo: Box Plantão <sectionclass=”box box-plantao”> <header> ... </header> <section class=”content”> ... </section> <footer> ... </footer> </section>
  • 55.
    Exemplo: Box Plantão <divclass=”box box-plantao”> <div class=”header”> ... </div> <div class=”content”> ... </div> <div class=”footer”> ... </div> </div>
  • 56.
    Exemplo: Box Plantão <divclass=”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 Gridcom 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.
  • 63.
  • 64.
    Microdados “Microdados é umaespecificaçã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 itemscopeitemtype="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 itemscopeitemtype="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 itemscopeitemtype="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=”boxbox-plantao”> <header> ... </header> <section class=”content”> ... </section> <footer> ... </footer> </section>
  • 75.
    Box Plantão <section class=”boxbox-plantao”> <header> ... </header> <section class=”content”> ... </section> <footer> ... </footer> </section>
  • 76.
    Box Plantão <section class=”boxbox-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.
  • 81.
  • 82.
    Box Previsão doTempo Vc consegue classificar semanticamente o content do box?
  • 83.
  • 84.
  • 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 Gridcom 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
  • 91.
  • 92.

Notas do Editor

  • #2 \n
  • #3 Falar sobre mim e minha carreira como client.\n
  • #4 \n
  • #5 Quando o PO pede um box no planning, ou o UX desenha um box novo: o que vc pensa em termos de HTML?\n
  • #6 Escada da Morte, Stairway to Hell\n
  • #7 Esses s&amp;#xE3;o os problemas que o Tableless trouxe.\n
  • #8 \n
  • #9 Primeira vez apresentando como GBD.\nAntes era Grid, Minidocumentos e Microsemantica.\n
  • #10 Falar sobre o que &amp;#xE9; a id&amp;#xE9;ia e como cheguei nela.\n\n
  • #11 Sem&amp;#xE2;ntico: que fa&amp;#xE7;a sentido para humanos\n
  • #12 \n
  • #13 \n
  • #14 \n
  • #15 \n
  • #16 \n
  • #17 - 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
  • #18 \n
  • #19 - 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
  • #20 - Vamos usar o grid do twitter como exemplo.\n
  • #21 \n
  • #22 \n
  • #23 \n
  • #24 \n
  • #25 \n
  • #26 - Na pr&amp;#xE1;tica, utilizamos mais span4, span8 e span12\n\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 \n
  • #49 - Lembrar rob&amp;#xF4;zinho do BBB\n
  • #50 \n
  • #51 \n
  • #52 Melhor n&amp;#xE3;o divs e classes demais! EVITE-AS!!\n
  • #53 Article = conte&amp;#xFA;do principal\nSection = Parte de um conte&amp;#xFA;do principal\n
  • #54 Aside = conte&amp;#xFA;do perif&amp;#xE9;rico\n
  • #55 \n
  • #56 \n
  • #57 - Coment&amp;#xE1;rios, de prefer&amp;#xEA;ncia, din&amp;#xE2;micos.\n
  • #58 \n
  • #59 \n
  • #60 \n
  • #61 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
  • #62 \n
  • #63 elementos sem&amp;#xE2;nticos: h1, p, form, table, input, a, etc...\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 \n
  • #77 Vamos dar um zoom!\n
  • #78 Perceba que s&amp;#xF3; utilizei elementos inline, nenhum block. Blocks estruturam, inlines apresentam.\nNunca, nunca colocar um block dentro de um inline.\n
  • #79 Sugest&amp;#xF5;es: chapeu, plantao-chapeu, box-plantao-chapeu\n
  • #80 \n
  • #81 \n
  • #82 \n
  • #83 \n
  • #84 \n
  • #85 \n
  • #86 \n
  • #87 Validar no W3C!\n
  • #88 \n
  • #89 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
  • #90 Inv&amp;#xE1;lido pelo W3C. N&amp;#xE3;o faz sentido.\n
  • #91 Sem&amp;#xE2;ntico: que fa&amp;#xE7;a sentido para humanos\n
  • #92 \n
  • #93 \n