Front-end na
Organizador da
Mestre Pokémon
Organizador do
@_danilovaz
/danilovaz
Cascading Style Sheet
Organizado
Manutenível
Escalável
- Aumenta a especificidade
- Dependencia de tags
- Markup limpo
- CSS sujo
- Difícil de ler
- Markup sujo
- CSS limpo
- Fácil de ler
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
Elementos são os filhos do seu componente
Os elementos devem ter classes com uma palavra. Exemplos:
Use o seletor filho > sempre que possível.
- Previne que a propriedade passe para componentes internos indesejados
- Performa melhor que seletores descendentes
Elementos que precisam de uma ou mais palavras, concatene sem traços ou underscore
Evite usar tags como seletores, pois não são descritivas e há perda de performance
Componentes e elementos podem ter variações
Classes de variações devem ser prefixadas por um traço
Também podemos utilizar traços prefixados e não há problema em colocá-lo adjacente
Aqui ficam as variáveis globais que vão definir cores, espaçamentos e outras configurações desejadas para o funcionamento do seu projeto.
Aqui ficam os mixins e funções necessárias para a construção do layout .
Camada destinada às propriedades mais genéricas (dã). Aqui ficam seletores com a menor especifidade possível, como os famosos resets.
Estilizações básicas diretamente em tags. Geralmente utilizada para estilizar as tags h1-h6. Mas apenas estilizações básicas
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
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.
Camada responsável pela maior especificidade de todas, inclusive aqui é plausível o uso de !important
- 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.
Se você utiliza Testes A/B, pode criar uma camada extra chamada Theme, entre Componentes e Trumps.