Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CSS: Boas práticas e metodologias

CSS: Boas práticas e metodologias

Palestra sobre boas práticas e metodologias utilizadas no desenvolvimento CSS.

Apresentada no DevInCompany | http://devincompany.org/ em Belo Horizonte.

Carolina Bigonha

November 30, 2013
Tweet

More Decks by Carolina Bigonha

Other Decks in Technology

Transcript

  1. Tudo | regra p | seletor color: #663; | declaração

    font-size | propriedade 16px | valor
  2. Há quatro categorias de regras: #main | regras de ID

    .box | regras de classe a | regras de tag * | regras universais
  3. Nem regras de id, nem regras de classe. IDs são

    naturalmente únicos. Qualificá-los com tags afeta a performance. E se o HTML mudar? Estrutura x estilo NO NO OK
  4. Browsers interpretam seletores da direita para a esquerda. Procura por

    todos os elementos a do DOM e verifica qual deles possui pai #home. NO
  5. O uso de hierarquia nos seletores pode afetar a performance.

    Principalmente se houver hierarquia em regras de tag. Seja objetivo. As regras de classe mais específicas são mais rápidas de serem processadas. NO OK
  6. Tenha cuidado ao utilizar parentesco. Seletores descendentes são de longe

    os mais caros de serem calculados no CSS. Principalmente para regras universais e de tags. NO AVOID
  7. Crie regras que façam sentido. O estilo não deve ser

    afetado por mudanças mínimas no DOM. NO OK
  8. Bons nomes não mudam. Os nomes das classes não devem

    ser afetados pelo seu conteúdo. NO WAY NO
  9. Usar nomenclatura específica para classes atreladas a comportamento Javascript. O

    uso do prefixo js- reduz risco de quebra quando há mudanças. Uma classe com o prefixo js- jamais deve estar dentre os estilos CSS. Regras de classe compartilhadas entre CSS e Javascript devem ter o prefixo is-.
  10. Eles provavelmente não fazem sentido. O famoso top:3px que vai

    resolver o problema no Chrome e estragar em todos os outros browsers. NO
  11. Você não está sozinho. Algum dia alguém vai tentar entender

    seu código. Algum dia você vai tentar entender seu código.
  12. Single source of truth Andy Hunt e Dave Thomas,The Pragmatic

    Programmer, 1999 Cada peça de conhecimento deve ter uma única definição em um sistema Uma mudança na regra afeta todo o sistema Não há necessidade de réplica Jeremy Clarke, DRY CSS
  13. Dê nomes lógicos aos grupos Uma dica seria utilizar ID

    e classe com mesmo nome para delimitar os seletores.
  14. Adicione seletores aos vários grupos Para cada grupo de regras,

    você adiciona os elementos que possuem tais características.
  15. Defina itens visuais repetíveis: crie aparências "separadas", que formarão os

    diversos objetos. Objeto modular + sua aparência. Dê nome aos objetos utilizando classes e não apenas utilizando a semântica do HTML.
  16. Defina itens visuais repetíveis: crie aparências "separadas", que formarão os

    diversos objetos. Objeto modular + sua aparência. Dê nome aos objetos utilizando classes e não apenas utilizando a semântica do HTML.
  17. Um objeto deve aparecer da mesma maneira não importa onde

    ele for colocado. Todos os <h2> vão ter a mesma aparência. Todos os elementos com a classe . category vão ter a mesma aparência. Para que .my-object h2 fique com a aparência padrão, não há necessidade de sobrescrever estilo. NO OK
  18. Componentes genéricos headings | listas | headers | footers |

    grids | botões Componentes selecionados HTML: composição de componentes.
  19. Melhorias na performance arquivos de estilo significativamente menores "Freebies", o

    código CSS já está lá Organização, reúso. Fácil manutenção dos módulos.
  20. BASE A configuração default do projeto. Estilo para tags. Toda

    vez que tal elemento aparecer, ele terá esse aspecto.
  21. LAYOUT Grandes componentes de uma página. Geralmente um único seletor.

    Podem ser afetados por outros fatores. Nomenclatura: l-, layout- ou grid-
  22. Subclassing MODULE O mesmo módulo pode estar em vários locais.

    A primeira intuição é especificar o pai.
  23. Subclassing MODULE O mesmo módulo pode estar em vários locais.

    A primeira intuição é especificar o pai. Se houver muitas variações do módulo, começa a batalha da especificidade. NO NO
  24. Subclassing MODULE Diferenciar o que é padrão e o que

    seria uma sub-classe. No HTML, se aplica tanto a classe base quanto a sub-classe. OK
  25. STATE Regras de estado podem ser aplicadas a layout e

    a module. Indicam uma dependência Javascript Há estados genéricos ou particulares a um módulo.
  26. STATE Estados podem mudar em três sentidos: Class-name Pseudo-class Media

    query - mesma media query pode ser declarada múltiplas vezes para que a noção de módulo não seja perdida.
  27. THEME Define o tema visual. Idealmente, em um arquivo separado,

    facilita a troca do esquema de cores. Afeta base, modules e state.
  28. A categorização pode não ser trivial em um primeiro momento.

    O que é module e o que é layout? Complexo? HTML pode ficar sobrecarregado.
  29. Imagens | CreativeCommons Lego | http://www.flickr.com/photos/chefgue/844400583/sizes/o/ Livros | http://www.flickr.com/photos/hashir/936394705/sizes/l/ Orquestra

    | http://www.flickr.com/photos/ewang0692/6919870763/sizes/l/ Estrada | http://www.flickr.com/photos/mkrigsman/2852232536/sizes/l/ Cachorro | http://www.flickr.com/photos/byakuchan/4768113295/sizes/l/