desenvolvimento para web

Gradiente CSS cross browser: degradês em CSS sem usar imagens

Gradiente CSS cross-browser: degrades css sem uso de imagens

CSS3 ainda não é um padrão W3C oficial e, até que chegue a este status, muita coisa muda. Para o caso de degradês com CSS puro, confira o artigo The new (and hopefully final) linear gradient syntax. Em função disto, este artigo está oficialmente desatualizado.

O recurso de gradiente (degradê) CSS foi introduzido pelo Webkit há cerca de 2 anos, mas raramente era utilizado devido à incompatibilidade com a maioria dos browsers. Mas agora, com o Firefox 3.6+, que suporta gradientes, é possível criar degradês sem usar imagens! E o código CSS para gradiente funciona nos principais navegadores: IE, Firefox 3.6+, Safari e Chrome.

Este é um artigo traduzido do original “Cross-Browser CSS Gradient“, do blog WebDesignerWall, e sofreu algumas adaptações.

Gradiente CSS para browsers Webkit

A seguinte linha de código é para navegadores WebKit, como Safari, Chrome, etc. Serve para exibir um gradiente linear de cima (#CCC) para baixo (#000).

background: -webkit-gradient(linear, left top, left bottom, from(#CCC), to(#000));

Degradê CC cross browser em webkit

Degradê CSS para Firefox 3.6+

Para Firefox 3.6+, usa-se -moz-linear-gradient:

background: -moz-linear-gradient(top, #CCC, #000);

Degrade CSS cross browser: Firefox 3.6+

CSS Gradient em Internet Explorer

No IE, é preciso recorrer a um filtro:

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#CCCCCC', endColorstr='#000000');

CSS Gradient cross browser: Internet ExplorerDegradê com CSS em todos os navegadores (cross-browser)

background: #999; /* para browsers sem suporte a CSS 3 */
 
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#000000'); /* IE */
background: -webkit-gradient(linear, left top, left bottom, from(#ccc), to(#000)); /* webkit browsers */
background: -moz-linear-gradient(top,  #ccc,  #000); /* Firefox 3.6+ */
Exemplo de CSS degradê (gradiente) crossbrowser

Clique para ver o exemplo direto no navegador

<update>
Existe uma ótima ferramenta para gerar degradês com CSS: Ultimate CSS Gradient Generator.
</update>

Limitações do Internet Explorer

O filtro de gradiente do Internet Explorer não suporta color-stop, gradient angle e radial gradient. Isso significa que só é possível especificar degradês lineares na horizontal ou vertical com duas cores: StartColorStr e EndColorStr.

<update>
O leitor Renatho indicou uma maneira de trabalhar com gradientes no Internet Explorer 9.
</update>

Notas finais sobre degradês com CSS puro

É importante ter em mente que nem todos os navegadores suportam gradiente com CSS puro. Por garantia, o ideal é não depender do CSS para fazer degradês; o ideal é utilizar o recurso para melhorar o web design.

16 interações em "Gradiente CSS cross browser: degradês em CSS sem usar imagens"

  1. Acelio09/06/2010 

    Muito boa esta "chamada" para este recurso.

    Já havia testado este filtro do IE, "nas antigas". Sempre achei ele bem produtivo.

    Não usava por que só funcionava nele.

    Muita coisa que só o "vilão" IE tinha, há tempos, está sendo implantado agora (transitions, gradient e @font-face)

    Tem uns geradores de CSS gradientes bem legais, que aceleram o processo

    - para -moz- e -webkit- : http://gradients.glrzad.com/
    - para o filtro do IE: http://samples.msdn.microsoft.com/workshop/sample… – tem que acessar o link com o IE, claro :-)

  2. Thiago Cavalcanti11/06/2010 

    Você sabe de algum site onde possamos obter as três versões a partir de uma delas? Ajudaria bastante…

  3. Tárcio Zemel11/06/2010 

    @ Acelio

    Excelentes indicações de ferramentas! Obrigado por contribuir com o artigo!

    @ Thiago Cavalcanti

    Rapaz, não sei… Se descobrir, compartilha com a gente! ;-)

  4. Renatho09/11/2010 

    Solução de gradiente para IE9 http://migre.me/256ge

  5. Tárcio Zemel23/11/2010 

    Maravilha, Renatho! Obrigado por contribuir para o artigo ficar melhor! ;-)

  6. redmaster13/01/2011 

    cara simplsmente vc é demais, muito bom o tutorial funciona mesmo gostei demis, poste mais tutoriais iguais a este , abraços redmaster.

  7. Tárcio Zemel04/02/2011 

    Que bom que gostou! Com certeza muitos outros tutoriais do mesmo nível serão publicados, fique ligado!

  8. Brenno14/02/2011 

    Não funcionou com o meu google chrome… mas para ie e ffox ta otimo!

  9. Tárcio Zemel15/02/2011 

    Pois é, como ainda não é um padrão W3C, funciona em alguns browsers e, em outros, não. Normal.

  10. plikbrasil01/03/2011 

    excelente, funciona no firefox, IE e Chrome. Só não funciona no Opera (para 2% dos usuários)

    òtimo, valeu!!!!!!!

  11. banzaroli11/03/2011 

    Amigos, uma pergunta… É possível fazer esse mesmo gradiente mas ao invés de ser linear ser em Radial? Se sim, por favor, me responda via twitter @banzaroli

    abraço!

  12. Tárcio Zemel14/03/2011 

    É, funcionando na grande maioria, já está bom. O jeito é esquematizar o CSS para, mesmo quando gradientes não forem exibidos, ficar bem apresentado.

  13. Guilherme Encinas08/11/2011 

    Meu amigo não funciona mais no IE7, você saberia como fazer isso agora no IE7?

    Obrigado

  14. Tárcio Zemel16/11/2011 

    Poxa, nem acompanho as "novidades" do IE7 e não sabia que deixou de funcionar. Obrigado por avisar!

    Tente procurar uma solução em javascript/jQuery. Certamente tem mais garantia de ser cross-browser.

    Abraços!

  15. Alexandre Broggio23/11/2011 

    No ie eu não sabia vlw pelo post

  16. Leandro Lopes03/01/2012 

    Na tag background ñ está aceitando o value: -moz-linear-gradient(top, #FFF, #CCC) url("../images/bgHeaderDown.jpg") repeat-x bottom. Quero além do background uma imagem no bottom do background. Alguém pode me ajuda?

    Comente!

    Seja uma versão de primeira categoria de si mesmo, não uma versão de segunda categoria de outra pessoa.

    Judy Garland
    Quer ganhar 1 ano grátis da Conta Negócios Basekit, uma das melhores ferramentas de criar sites do mundo? Saiba como!