Tableless - Desenvolvimento inteligente com Padrões Web

02/05/2011
CSS

CSS3 – Breve introdução ao RGBA

Normalmente em web trabalhamos com cores na forma de hexadecimal. Agora o RGBA nos permite que você aplique em uma determinada cor transparência.

Por


Introdução ao RGB

Normalmente em web trabalhamos com cores na forma de hexadecimal. É a forma mais comum e mais utilizada desde os primórdios do desenvolvimento web. Mesmo assim, há outros formatos menos comuns que funcionam sem problemas, um destes formatos é o RGB. O RGB são 3 conjuntos de números que começam no 0 e vão até 255 (0% até 100%), onde o primeiro bloco define a quantidade de vermelho (Red), o segundo bloco a quantidade de verde (Green) e o último bloco a quantidade de azul (Blue). A combinação destes números formam todas as cores que você pode imaginar.

No HTML o RGB pode ser usado em qualquer propriedade que tenha a necessidade de cor, como: color, background, border etc. Exemplo:

1
2
3
4
5
    p {
        background:rgb(255,255,0);
        padding:10px;
        font:13px verdana;
    }

Este código RGB define que o background o elemento P será amarelo.

Aplicando o RGBA e a diferença da propriedade OPACITY

Até então nós só podíamos escrever cores sólidas, sem nem ao menos escolhermos a opacidade dessa cor. O CSS3 nos trouxe a possibilidade de modificar a opacidade dos elementos via propriedade opacity. Lembrando que quando modificamos a opacidade do elemento, tudo o que está contido nele também fica transparente e não apenas o background ou a cor dele. Veja o exemplo e compare. É aí que entra o RGBA.

O RGBA funciona da mesma forma que o RGB. No caso do RGBA, além dos 3 canais RGB (Red, Green e Blue) há um quarto canal, A (Alpha) que controla a opacidade da cor. Nesse caso, podemos controlar a opacidade da cor de background, borda, color ou qualquer propriedade que contenha cor sem afetar a transparência dos outros elementos:

Veja um exemplo aplicado abaixo:

1
2
3
4
5
    p {
        background:rgba(255,255,0, 0.5);
        padding:10px;
        font:13px verdana;
    }

O último valor é referente ao canal Alpha, onde 1 é totalmente visível e 0 é totalmente invisível. No exemplo acima está com uma opacidade de 50%.

Como o Hexadecimal, você não precisa decorar todos estes números. Hoje, qualquer programa gráfico já dá o código do RGB da cor utilizada. O Hexadecimal não foi descontinuado. Se caso você tenha alguma cor que não ficará transparente ou algo do tipo, você pode continuar utilizando hexa e para aqueles que tem transparência, você pode utilizar o RGBA sem problemas.

Veja novamente o exemplo aqui e o código no github do Tableless.

Por Diego Eis

Diego Eis criou o Tableless para disseminar os padrões web no Brasil. Como consultor já treinou equipes de empresas como Nokia, Globo.com, Yahoo! e iG. É palestrante e empreendedor.

http://twitter.com/diegoeis/

Veja os outros posts de

  • Bruno

    hsla não é melhor?

  • http://twitter.com/diegoeis/ Diego Eis

    Não sei, porque seria Bruno?
    No fundo no fundo é tudo questão de gosto. Eu prefiro escrever em Hexa. O código fica menor.
    Vou pesquisar para ver se tem alguma relação entre HSLA e RGBA.

  • Kleber

    A ideia é boa! Gostei muito.
    Sugestão: acho que você poderia adicionar ao seus posts a compatibilidade dos elementos com os navegadores.

  • http://www.jamesclebio.com.br James Clébio

    @Bruno Não sei, mas acredito que o problema de se usar HSLA é mais de compatibilidade mesmo… :/

  • http://wbruno.com.br William Bruno

    “Mesmo assim, há outros formatos menos comuns que funcionam sem problemas, um destes formatos é o RGB. ”

    Acho que ficou mal escrito este trecho.
    o hexadecimal não é nada mais que uma notação. Apenas isso.
    Na verdade, hexadecimal é RGB.
    vermelho = #ff 00 00, ou seja 100% Red, 0% Green e 0% Blue.

    o ‘formato’ do hexadecimal, continua sendo o RGB. Leia por formato: CYMK, RGB… #f00 ou rgb(255,0,0); são apenas notações que usam o formato RGB.

  • Bruno Ferreira

    Muito bom o artigo!

    abraço.

  • estenio

    só por curiosidade será que não tem a mesma função pra fazer um degrade tb?

  • Diego

    Otimo artigo, obrigado por compartilhar….

    Abrs

  • http://www.cubico.com.br Gustavo Macedo

    Muito bom o post, Diego! Sempre tive este problema, resolvia removendo o texto de dentro do elemento que recebia a opacidade, uma big gambiarra! hahahaha.
    Me diga uma coisa, é possivel aplicar o canal alpha em declaração hexadecimal, tipo background:#FF0; ?

  • http://leobetosouza.com/ Leonardo Alberto Souza

    Diferença principal entre rgb e hsl (e rgba e hsla também) é no javascript:

    Se você vai variar a cor de acordo com a quantidade de vermelho, verde e azul, usa rgb() ou rgba();

    Se você vai variar de acordo com o nível de saturação, luminosidade e hue, usa hsl() ou hsla().

  • http://tutsmais.com.br/blog/ Ofelquis

    Isso é muito bom mas não tem algum parecido com este que funfa no IE não ?

  • Pingback: CSS3 – Sombras em textos e elementos | Tableless - Desenvolvimento com Padrões Web

  • Pingback: RGB e HSL | Tableless - Desenvolvimento com Padrões Web

  • Juliano Vince

    Estou Conhecendo o site agora e estou gostando de todos os artigos que já li. Muito boa as explicações, tutoriais e dicas, Parabéns!! Esse artigo de RGB, me fez lembrar de um jogo de futebol que tinha no nintendo, que vc ia mudando a cor dos uniformes. Ai vc ia aumentando e diminuindo dessa maneira Showw!! ;D

  • http://inocenti.com.br/blog André Inocenti

    Olá pessoal.

    Muito legal o artigo. Não sabia do rgba, porém é necessário frisar que ele não funciona nos pseudo-navegadores (IE8-7). De qualquer forma excelente dica