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

CSS em Larga Escala

CSS em Larga Escala

Avatar for Filipe Kiss

Filipe Kiss

July 10, 2018

Other Decks in Programming

Transcript

  1. CSS em larga escala CSS em larga escala (e porque

    larga escala não quer dizer "projeto grande") (e porque larga escala não quer dizer "projeto grande")
  2. Culpa do CSS • Pouco expressivo • Muito solto •

    Cascata e Herança • Especificidade
  3. Nossa culpa • Falta de documentação • Falta de estrutura

    e garantia de qualidade • Falta de conhecimento (seja sobre o CSS ou sobre o projeto em si) • Estilos diferentes de organização, preferências e modo de escrever • Incapacidade de saber o que já existe • Adicionar novos estilos no fim dos arquivos
  4. CSS é uma árvore de dependências gigantes Toda regra do

    CSS precisa saber tudo que vem antes dela e tudo que vem depois
  5. Como ordenar sua folha de estilos Seguindo o fluxo da

    página Separar por componentes/temas - tipografia, botões, forms, etc Simplesmente colocar no fim da folha de estilos
  6. Não importa o quanto você pense na ordem; o quão

    corretamente você utilize a cascata; quais convenções de nomenclatura você use; especificidade pode desfazer tudo isso
  7. Necessidades • Um ambiente saudável, acessível para várias pessoas •

    Conseguir organizar e controlar a ordem das regras e a cascata • Ter um lugar apropriado para todas as coisas (novas e antigas) • Diminuir repetição e desgaste
  8. ITCSS • Não é um framework, é uma maneira de

    pensamento • Altamente escalável • Facilmente gerenciável • Não depende de pre-processador, padrão de nomenclatura e é incrivelmente simples
  9. Camadas Padrão Definições: Variáveis Globais, Configurações Ferramentas: Mixins e funções

    Genericos: Resets e normalizes, box-sizing Base: Estilos de tags HTML (a, h1, p, ul, li) Objetos: Definições estruturais sem aparência Components: Componentes desenhados, pedaços da UI Helpers: Classes reativas como '.hidden', '.open'
  10. Base Elementos HTML sem classe H1-H6, links básicos, lists, etc

    Última camada onde aparecem 'type selectors' (a {}, blockquote{}, ul{}, etc)
  11. Components Elementos desenhados da UI Ainda utilizando apenas classes Nomes

    de classes mais específicos (.products-lists {})
  12. Helpers Classes reativas, normalmente utilizadas pelo JavaScript Afeta apenas um

    elemento do DOM por vez Normalmente possuem !important
  13. Pontos Principais Especificidade aumenta gradativamente a cada camada Cada camada

    afeta menos partes do DOM por vez Estilos são adicionados progressivamente; Nunca são desfeitos
  14. Resultados Cada regra tem um lugar específico As pessoas sabem

    onde procurar cada regra Diminuição de redundância Maior escalabilidade Fim das brigas por especificidade
  15. Escalando o CSS Muito mais fácil de escalar o código

    Fácil também de escalar a arquitetura
  16. Adicionando camadas Adicione camadas sempre no lugar correto Especificidade dos

    seletores vai definir onde essa camada entra Mantenha o gráfico de especificidade (sempre crescente)
  17. Outras dicas Diminua as falhas humanas Os pontos de entrada

    são "índices" do conteúdo Mantenha o padrão do código alto Evite seletores aninhados Faça comentários úteis
  18. Outras dicas Diminua as falhas humanas Os pontos de entrada

    são "índices" do conteúdo Mantenha o padrão do código alto Evite seletores aninhados Faça comentários úteis
  19. Outras dicas Diminua as falhas humanas Os pontos de entrada

    são "índices" do conteúdo Mantenha o padrão do código alto Evite seletores aninhados Faça comentários úteis
  20. Resumo Escreva CSS em ordem de especificidade Mantenha o gráfico

    de especificidade crescente Todas as regras devem apenas adicionar e herdar das regras anteriores Organize as folhas de estilos das mais abrangentes para as mais localizadas Remova e adicione camadas, mas somente no lugar certo
  21. Lembre-se Não é porque você leu um post, assistiu um

    vídeo ou participou de um meetup que você deve chegar no seu trabalho amanhã e refatorar a sua codebase inteira. Converse com seu time, entenda a necessidade e faça isso de forma gradual