Organização CSS
Danilo Vaz
Front-end na
Organizador da
Mestre Pokémon
Organizador do
@_danilovaz
/danilovaz
Cascading Style Sheet
Organizado
Manutenível
Escalável
O seu CSS é organizado?
CSS é tão difícil de manter organizado
Quanto mais você fuça, mais riscos corre
Qual a solução?
Não existe bala de prata
Mas podemos melhorar
RSCSS
ITCSS
&
RSCSS
Conjunto de regras para ajudar na construção do seu CSS
- O que é?
Quem nunca?
- Aumenta a especificidade
- Dependencia de tags
Nesting CSS nativo
DEMO
BEM
DEMO
Problemas
Nesting nativo
- Markup limpo
- CSS sujo
- Difícil de ler
BEM
- Markup sujo
- CSS limpo
- Fácil de ler
RSCSS
- Útil ao agradável
RSCSS
- DEMO
RSCSS
- Regra de ouro
Tudo é componente
RSCSS
- Nomeando Componentes
Os componentes devem ter pelo menos duas palavras, separadas por um traço. Exemplos:
Um botão de share = .share-button
Um form de busca = .search-form
Um preview de post = .preview-post
RSCSS
- Elementos
Elementos são os filhos do seu componente
RSCSS
- Nomeando Elementos
Os elementos devem ter classes com uma palavra. Exemplos:
RSCSS
- Elementos Seletores
Use o seletor filho > sempre que possível.
- Previne que a propriedade passe para componentes internos indesejados
- Performa melhor que seletores descendentes
RSCSS
- Elementos Multi-palavras
Elementos que precisam de uma ou mais palavras, concatene sem traços ou underscore
RSCSS
- Tags
Evite usar tags como seletores, pois não são descritivas e há perda de performance
RSCSS
- Variações
Componentes e elementos podem ter variações
RSCSS
- Variações em componentes
Classes de variações devem ser prefixadas por um traço
RSCSS
- Variações em elementos
Também podemos utilizar traços prefixados e não há problema em colocá-lo adjacente
ITCSS
- O que é?
Conjunto de regras para uma estrutura CSS sadia e escalável
ITCSS
- Como funciona?
Inverted Triangle CSS
ITCSS
- Settings
Aqui ficam as variáveis globais que vão definir cores, espaçamentos e outras configurações desejadas para o funcionamento do seu projeto.
ITCSS
- Tools
Aqui ficam os mixins e funções necessárias para a construção do layout .
ITCSS
- Generic
Camada destinada às propriedades mais genéricas (dã). Aqui ficam seletores com a menor especifidade possível, como os famosos resets.
ITCSS
- Base
Estilizações básicas diretamente em tags. Geralmente utilizada para estilizar as tags h1-h6. Mas apenas estilizações básicas
ITCSS
- Objects
Pequenos pedaços da interface reutilizáveis por todo o projeto, como botões por exemplo. Aqui só pode usar classes, nada de IDs e tags. Abstraia o máximo que puder
ITCSS
- Components
Aqui teremos que ser o mais específicos possível, mas sempre lembrando que um componente deve ser reutilizável. Então nada de positions e magins.
ITCSS
- Trumps
OPS!
ITCSS
- Trumps
Camada responsável pela maior especificidade de todas, inclusive aqui é plausível o uso de !important
ITCSS
- Recapitulando
- A especificidade vai crescendo linearmente e lentamente de camada a camada;
- Cada camada é mais detalhada e explícita que a anterior;
- Se você cria um objeto genérico, ele pode ser extendido/reutilizado;
- Tudo que você cria tem um lugar específico para ficar.
WAIIIIIIIIIIIIT! TEM MAIS
ITCSS
- Temas
Se você utiliza Testes A/B, pode criar uma camada extra chamada Theme, entre Componentes e Trumps.
Perguntas?
Organização CSS
By Danilo Vaz
Organização CSS
Organizando seu CSS com RSCSS e ITCSS
- 1,096