Padrão de desenvolvimento e organização de SASS para framework Hyojun, da F.biz. Esta primeira parte foca na estrutura de diretório e os conceitos por trás desta organização.
mais baixo ou alto. Roubando a explicação do Brad Frost sobre Atomic Design, metáfora organizada em: • átomos - nível mais baixo do módulo, maior abstração • moléculas - nível intermediário, pequenos módulos • organismos - agrupamento ou “componentes” standalone • templates - layouts Níveis dos Módulos
p o r t dentro de módulos • 1 módulo + variações por arquivo • Granulação depende do projeto • Criar diretórios por categoria. Ex.: • boxes, navigation, texts • Módulos podem ser usados dentro de outros módulos Módulos - organização
regras de diagramação de uma página do projeto • No final, módulos são “inseridos” nos espaços definidos no template • Normalmente temos um template por área do projeto • Cada template tem seu arquivo próprio. Ex.: • _structure.scss, _home.scss, _search.scss Layouts
saídas CSS em um lugar • Raíz do diretório que vai pra produção • Apenas se alimenta dos módulos, layouts, etc. (somente import, sem regras de CSS) Output
parecido com isso: @ i m p o r t " . . / s o u r c e / 3 2 0 - m o b i l e / w r a p p e r s / l i b " , " . . / s o u r c e / 3 2 0 - m o b i l e / w r a p p e r s / c o r e " , " . . / s o u r c e / 3 2 0 - m o b i l e / w r a p p e r s / s t r u c t u r e " , " . . / s o u r c e / c o m m o n / m o d u l e s / m o d u l e 1 " , " . . / s o u r c e / c o m m o n / m o d u l e s / m o d u l e 2 " , " . . / s o u r c e / c o m m o n / m o d u l e s / m o d u l e 3 " , . . . " . . / s o u r c e / 3 2 0 - m o b i l e / m o d u l e s / m o d u l e 1 " , " . . / s o u r c e / 3 2 0 - m o b i l e / l a y o u t s / h o m e " ; Output - exemplo 0 1 . 0 2 . 0 3 . 0 4 . 0 5 . 0 6 . 0 7 . 0 8 . 0 9 .
mixins e configuração ficaria: @ i m p o r t " . . / s o u r c e / c o m m o n / c o r e / c o n f i g / c o l o r s " , " . . / s o u r c e / c o m m o n / c o r e / c o n f i g / u n i t s " , " . . / s o u r c e / c o m m o n / c o r e / m i x i n s / m i x i n 1 " , " . . / s o u r c e / c o m m o n / c o r e / m i x i n s / m i x i n 2 " , . . . " . . / s o u r c e / c o m m o n / m o d u l e s / b o x e s / m o d u l o 1 " , " . . / s o u r c e / c o m m o n / m o d u l e s / b o x e s / m o d u l o 2 " , " . . / s o u r c e / c o m m o n / m o d u l e s / b o x e s / m o d u l o 3 " , arquivo ~/output/home.scss Exemplo 0 1 . 0 2 . 0 3 . 0 4 . 0 5 . 0 6 . 0 7 . 0 8 .
imports em todos os outputs, um wrapper c o r e pode ser criado: @ i m p o r t " . . / s o u r c e / c o m m o n / c o r e / c o n f i g / c o l o r s " , " . . / s o u r c e / c o m m o n / c o r e / c o n f i g / u n i t s " , " . . / s o u r c e / c o m m o n / c o r e / m i x i n s / m i x i n 1 " , " . . / s o u r c e / c o m m o n / c o r e / m i x i n s / m i x i n 2 " ; arquivo ~/source/common/wrappers/_core.scss Exemplo 0 1 . 0 2 . 0 3 . 0 4 .
i m p o r t " . . / s o u r c e / c o m m o n / w r a p p e r s / c o r e " , " . . / s o u r c e / c o m m o n / m o d u l e s / b o x e s / m o d u l o 1 " , " . . / s o u r c e / c o m m o n / m o d u l e s / b o x e s / m o d u l o 2 " , " . . / s o u r c e / c o m m o n / m o d u l e s / b o x e s / m o d u l o 3 " ; arquivo ~/output/home.scss Exemplo 0 1 . 0 2 . 0 3 . 0 4 .
facilitar a organização de sites responsivos. • c o m m o n tem conteúdo importado em todas as versões • 3 2 0 - m o b i l e, por exemplo na versão específica • Import de c o m m o n para dentro de 3 2 0 - m o b i l e • Output recebe apenas 1 import Wrappers - organização
principais (bastante diferença no HUE) • Cores da paleta • variações do tema para claro e escuro, que formam a paleta de cores • Exceções • não fazem parte da paleta como logos de terceiros e selos Cores - como funciona
- m a i n - c o l o r : # 8 0 8 0 7 8 ; $ t h e m e - n e u t r a l - c o l o r : # 3 3 3 ; $ t h e m e - h i g h l i g h t - c o l o r : # 3 A 8 7 A D ; $ g r o u p - l i g h t e s t : # F F F F F F ; $ g r o u p - d a r k e s t : # 0 0 0 0 0 0 ; $ g r o u p - m a i n - l i g h t 1 0 : # 6 5 4 7 9 3 ; $ g r o u p - m a i n - d a r k 1 0 : # 4 3 2 F 6 2 ; $ g r o u p - m a i n - d a r k 2 0 : # 3 8 2 7 5 3 ; $ b a s e - b o r d e r - c o l o r : $ g r o u p - n e u t r a l - l i g h t 2 0 ; $ b a s e - b g - l i g h t - c o l o r : $ g r o u p - n e u t r a l - l i g h t 3 0 ; $ b a s e - b g - d a r k - c o l o r : $ g r o u p - n e u t r a l - l i g h t 2 0 ; Cores - Exemplo 0 1 . 0 2 . 0 3 . 0 4 . 0 5 . 0 6 . 0 7 . 0 8 . 0 9 . 1 0 . 1 1 . 1 2 . 1 3 .
Centralizar todas as unidades estruturais em um lugar • Análise e normalização de espaçamentos • Análise e normalização de tamanhos de fontes • Nomenclatura e melhor manutenção Unidades
f o n t - s i z e : $ b a s e - f o n t - s i z e ; $ h e a d - f o n t - s i z e : 6 0 p x ; $ t i t l e - f o n t - s i z e : 3 6 p x ; $ s u b - t i t l e - f o n t - s i z e : 3 0 p x ; $ i t e m - t i t l e - f o n t - s i z e : 2 4 p x ; $ l e a d - f o n t - s i z e : 2 1 p x ; $ d i s c r e e t - t i t l e - f o n t - s i z e : 1 8 p x ; $ c o n t e n t - f o n t - s i z e : 1 6 p x ; $ d i s c r e e t - f o n t - s i z e : 1 4 p x ; $ f o o t n o t e - f o n t - s i z e : 1 2 p x ; Unidades - Exemplo (fonts) 0 1 . 0 2 . 0 3 . 0 4 . 0 5 . 0 6 . 0 7 . 0 8 . 0 9 . 1 0 .
s p a c e - s i z e : 1 0 p x ; $ d o u b l e - s p a c e - s i z e : ( $ b a s e - s p a c e - s i z e * 2 ) ; $ s e p a r a t o r - s p a c e - s i z e : ( $ b a s e - s p a c e - s i z e * 4 ) ; $ h i g h l i g h t - s p a c e - s i z e : ( $ b a s e - s p a c e - s i z e * 8 ) ; $ h a l f - s p a c e - s i z e : ( $ b a s e - s p a c e - s i z e / 2 ) ; $ m i n o r - s p a c e - s i z e : ( $ b a s e - s p a c e - s i z e / 5 ) ; Exemplo de aplicação: . c a t e g o r y - t i l t e { m a r g i n - t o p : $ d o u b l e - s p a c e - s i z e - 1 2 p x ; } Unidades - Exemplo (space) 0 1 . 0 2 . 0 3 . 0 4 . 0 5 . 0 6 . 0 1 . 0 2 . 0 3 .
SOURCE • Arquivos que darão saída para produção em OUTPUT • Apenas OUTPUTs e WRAPPERs podem ter imports • Diretórios organizados por regras comuns (COMMON) e específicos (320-MOBILE, 760-TABLET, etc.) • MODULES recebe todos os elementos com regras de CSS que são escritas na saída Resumo
por categorias • Todas as diagramações em LAYOUTS, que também dão escritas na saída • Toda configuração no core • Cores apenas declaradas em COLORS. Módulos apenas usam as variáveis Resumo
• Tamanho de fontes apenas em UNITS. Módulos apenas usam as variáveis • Para espaçamentos, módulos podem fazer o cálculo para ajustes finos de line-height, por exemplo Resumo