Blog da Improve It

O denominador comum

Publicado por Leandro Mello há 3 meses.

Na internet, mesmo que você não consiga mostrar uma imagem, ainda consegue dizer as mil palavras.

Hoje descobri um detalhe no meu método de escrever CSS que pretendo adotar como "best practice" pra mim em todo projeto futuro: a única folha de estilo que, num projeto que abranja tela/impressão/mobile, deve levar atributo media="all". Eu a chamo de "typography.css".

Inspiração de fora da web

Cheguei a esta prática aplicando no webdesign um tanto do modus operandi adotado por publicitários e designers fora da web.

Em design e publicidade, costuma-se lidar separadamente com layout e tipografia. Isso porque o design aplicado ao texto carrega por si só uma personalidade tão forte, que merece atenção à parte. Há aos montes empresas dedicadas exclusivamente à tipografia, que passam dias, semanas, para criar uma única fonte, completa e bela. O visual do texto tem um poder só seu.

Na web, sofremos sérias restrições à tipografia. Não é possível usar fontes realmente únicas em um site porque elas podem não existir no computador do usuário. O uso de imagens com texto bonitão apresenta alguns riscos à acessibilidade, e a prática de incluir as próprias fontes no código tem suas próprias complicações. Em resumo, paciência: o jeito é usar o rozfejão mesmo e saber brincar com ele. O que é bom, já que este texto não trata mesmo de tipografia, mas do que podemos aprender com o hábito de separá-la do layout.

Consistência e identidade visual

O bom do CSS é que ele garante a consistência das páginas do seu site. Uma mudança num seletorzinho qualquer e pronto, milhares de páginas são atualizadas de uma vez só, que beleza! Isso tem tudo a ver com o que chamamos identidade visual.

Uma empresa que respeita a própria identidade visual faz questão de que, no mínimo, sua tipografia seja consistente em todos os meios de comunicação, tanto em impressos como em eletrônicos, tanto quanto for possível. O layout é muito mais sujeito a pequenos ajustes aqui e ali por causa da variedade de suportes a que pode ser aplicado, mas o modo como o texto é apresentado tem que respeitar uma consistência ainda mais globalizada — o designer um dia pode se ver tendo que fazer uma peça que confie unicamente na tipografia, e as pessoas têm que reconhecer que tal peça pertence a tal empresa. E na web esta situação é bastante recorrente.

O denominador comum

Imagine que seu site é poderosão, pode ser impresso, visto em mobiles, transformado numa transparência etc. Agora tire todos os luxos. Imagens, firulas de layout e tudo mais. O que sobra? Texto. Na internet, mesmo que você não consiga mostrar uma imagem, ainda consegue dizer as mil palavras. E de quebra transmiti-las para as outras mídias. Então por que não criar uma folha de estilo que lide só com o que tem a ver com texto?

Como aconteceu comigo

À medida que os projetos em que eu trabalho cresciam, ficava complicado navegar pelo mar de seletores. Como eu escrevo CSS de modo incrivelmente regular, com todas propriedades aparecendo sempre na mesma ordem (ok, podem me chamar de maníaco) percebi que as propriedades que regiam o texto vinham sempre antes do grupo que controlava o layout. Para diminuir o tamanho de arquivo, resolvi pegar as propriedades de texto e jogar todas num arquivo separado, a que chamei typography.css.

Então, por exemplo:

.rss_links a, 
.podcast_files h4 a {
    font-size:              80%;
    text-transform:         uppercase;
    text-decoration:        none;
    padding:                .3em 1em;
    background:             #F7F7F7 url(/images/background/gradient_light_to_dark.png) repeat-x bottom left;
    border:                 1px outset #F7F7F7;
}

... dividiu-se em um trecho que foi para o typography.css:

.rss_links a, 
.podcast_files h4 a {
    font-size:              80%;
    text-transform:         uppercase;
    text-decoration:        none;
}

... e outro que permaneceu no original application.css:

.rss_links a, 
.podcast_files h4 a {
    padding:                .3em 1em;
    background:             #F7F7F7 url(/images/background/gradient_light_to_dark.png) repeat-x bottom left;
    border:                 1px outset #F7F7F7;
}

E assim por diante, com todos seletores. A cisão foi bem fácil. A decisão de fazer a divisão e o nome que arranjei para a nova folha de estilos foi mais guiada pelo meu velho hábito de designer gráfico — e por uma leve esperança de que isso tornasse menores os arquivos — do que por alguma noção de onde isso ia dar. Mal sabia que ia ter resultados bem interessantes.

Ora, em um ponto chega a hora de fazer um CSS de impressão e um para mobile. Em minha primeira experiência desde que resolvi usar o método typography, resolvi expandir a dobradinha para o print e o handheld, criando assim as folhas de estilo application_print e typography_print, e application_handhled e typography_handheld.

Minha pasta "stylesheets" então ficou assim:

Que beleza! Mas pô... seis folhas de estilo só por um capricho de designer de separar o layout da tipografia? "Tem que ter um jeito de fazer melhor", pensei. E tinha. Com a sacação sutil, já dita lá em cima, de que a tipografia tem que ser global.

Refatoração, resultados e vantagens

Percebi que os seletores dos três arquivos de tipografia eram muito similares. Assim, misturei tudo o que eu tinha no typography, typography_handheld e typography_print em um único arquivo typography.css. Fim da duplicação: ele passou a cuidar de tudo — tamanho da fonte, cor da letra, itálicas, negritos, maiúsculas e tudo mais. No CSS de impressão, como geralmente as pessoas preferem imprimir textos em preto, foi só escrever html * { color: #000; } que tudo foi resetado para preto (sobra meia dúzia de seletores teimosos, é só fazer o mesmo).

Por último, no head do HTML, atribuí ao typography.css media="all". E só a ele. As outras folhas de estilo que se preocupassem com suas mídias específicas. Todas estas outras folhas herdariam as mesmas propriedades de texto e, assim, estaria garantida a consistência não só entre as páginas de um mesmo site, mas entre as várias mídias que uma empresa e seu site disponibilizam. Identidade visual, caro leitor!

Outras vantagens que este método me trouxe:

Enfim, a nova prática tem-me rendido bons resultados. Há ressalvas, claro: num projeto pequeno, que não se pretende imprimir ou ver em mobile, não vale a pena separar typography de application. Por sua vez, um projeto gigantesco, ainda que bom candidato a ganhar um typography.css, tem muito mais chances de ter folhas de estilo auxiliares que provavelmente jogariam por terra minha contagem "n+1" de folhas. Mas no todo, meu trabalho com CSS tem sido bem mais bacana tendo que me preocupar com uma coisa de cada vez. É algo que com certeza vou adotar como best practice nos meus trabalhos... até aparecer uma prática melhor! :)

Este foi meu primeiro post no blog da Improve It. Espero que as informações sejam úteis de alguma forma, e inspirem boas práticas em designers e programadores por aí. Até onde experimentei, foi dos métodos que mais facilitou o trabalho por aqui. Claro que, ou eu não li o suficiente sobre CSS, ou esse assunto de separar tipografia já cansou de ser discutido lá fora, ou as duas coisas. Por isso, convido meus caros compadres designers a participarem da discussão. Quem sabe até onde esta metodologia pode ser aprimorada?

Tags , , , ,  | 11 comentários

O que você achou? Coloque seus comentários e sugestões abaixo!

Acompanhe o RSS dessa página.

Comentários (11 até o momento)

  1. Tapajós disse aproximadamente 24 horas depois:

    Demorou mas saiu esse post! Parabéns Leandro, eu que tenho trabalhado ao seu lado posso garantir que realmente esse seu modo de fazer CSS tem funcionado muito bem!

    Toda hora você muda tudo com um único seletor!

    Como eu queria ter essa habilidade!

    []'s

  2. André Luiz Kupkovski disse aproximadamente 24 horas depois:

    Muito interessante Leandro. Ótima idéia essa do typography.css

    O artigo ficou mto bem escrito... vc deveria postar mais xD

    Abração!

  3. Afonso França disse 1 dia depois:

    Muito bom Leandro. Estou começando um novo projeto de tamanho médio agora e vou testar separar a tipografia.

    Abraço!

  4. Frederico.Zveiter disse 1 dia depois:

    Meu querido irmão, parabéns!!! Excelente artigo, começou com o pé direito!!!

    Lembro-me de nossas conversas há não muito tempo com você dando seus primeiros passos em web design e hoje estou aqui, cheio de orgulho, vendo você publicar uma 'best prectice' de CSS que tenho certeza de que será adotada por todos nós.

    Continue assim!

    Abraços fraternos! Fred

  5. Rafael disse 1 dia depois:

    Salve camarada.

    Excelente post, e excelente idéia. Estou começando a desenvolver projetos maiores para web agora, e posts como esses ajudam muito a fazer a coisa certa desde o começo. Uma série de best-practices seria muito bem vinda. Continue postando.

    Atenciosamente, Rafael.

  6. Leandro Heuert disse 4 dias depois:

    Bastante interessante essa sua abordagem ao separar a parte que envolve a tipografia em si. Em alguns projetos costumo usar também o "color.css", que também vem me ajudando muito.

  7. Sergio Ronand Guimarães pinto disse 4 dias depois:

    Parabéns pelo Blog!! Sinto orgulho de você. Esteja sempre focado nos seus objetivos que você vencerá! Beijos, Seu pai!!

  8. Eleudson Queiroz disse 4 dias depois:

    Caro Leandro, valeu pelo post!

    Me caiu como uma luva, porque fiquei ontem até a madrugada pesquisando alguns templates para organizar um layout de uma pequena aplicação e esta sua dica já irei utilizar e compartilhar com amigos.

  9. André Faria disse 4 dias depois:

    Parabéns! Muito boa. Obrigado por compartilhar suas experiências... Abraço.

  10. Juarez P. A. Filho disse 5 dias depois:

    Acredito que vai facilitar muito na estrutura dos meus próximos projetos. Grato por compartilhar suas experiências.

  11. Sylvestre Mergulhao disse 10 dias depois:

    Nosso designer melhor a cada dia ;)

    Grande abraço, Leandro!