Transparência CSS3 + Gradiente

286

RGBA é extremamente divertido, e assim é -webkit-gradient, -moz-gradiente, uh ... progid:DXImageTransform.Microsoft.gradient... sim. :)

Existe uma maneira de combinar os dois, RGBA e gradientes, para que haja um gradiente de transparência alfa usando as especificações CSS atuais / mais recentes.

Jourkey
fonte
1
O comentário de @ geo1701 deve se tornar o aceito, pois é mais relevante para os padrões modernos.
Dmytro Shevchenko

Respostas:

326

Sim. Você pode usar o rgba nas declarações gradiente webkit e moz:

/* webkit example */
background-image: -webkit-gradient(
  linear, left top, left bottom, from(rgba(50,50,50,0.8)),
  to(rgba(80,80,80,0.2)), color-stop(.5,#333333)
);

( src )

/* mozilla example - FF3.6+ */
background-image: -moz-linear-gradient(
  rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 95%
);

( src )

Aparentemente, você pode fazer isso no IE, usando uma sintaxe "hex estendida" ímpar. O primeiro par (no exemplo 55) refere-se ao nível de opacidade:

/* approximately a 33% opacity on blue */
filter: progid:DXImageTransform.Microsoft.gradient(
  startColorstr=#550000FF, endColorstr=#550000FF
);

/* IE8 uses -ms-filter for whatever reason... */
-ms-filter: progid:DXImageTransform.Microsoft.gradient(
  startColorstr=#550000FF, endColorstr=#550000FF
);

( src )

Owen
fonte
20
Para sua informação, "hex estendido" é apenas um ARGB de 32 bits em vez de valores de cores RGB de 24 bits.
Macke
2
eu gostaria que eles funcionassem em css padrão também, mas com o alfa no final (parece mais natural): #0001seria um hexadecimal curto para "preto quase transparente" e #ffcc00ffseria o mesmo que #ffcc00, por exemplo , "amarelo tangerina completamente opaco"
ovelha voadora
56
também verificar a Gradient Generator CSS3 em cima da ColorZilla que tem um monte de presets agradáveis e todas as variações compatíveis cross browser para atingir o seu gradiente desejado
andrhamm
então, eu verifiquei, funciona em todos os principais navegadores, mas não funciona em ópera, alguma pista?
precisa saber é o seguinte
deixa pra lá, acabei de encontrá-lo;)background-image: -o-linear-gradient(top,rgba(255,255,255,0),rgba(210, 230, 250,1));
WhoSayIn:
101

A nova sintaxe é suportada há algum tempo por todos os navegadores modernos (a partir do Chrome 26, Opera 12.1, IE 10 e Firefox 16): http://caniuse.com/#feat=css-gradients

background: linear-gradient(to bottom, rgba(0, 0, 0, 1), rgba(0, 0, 0, 0));

Isso renderiza um gradiente, começando do preto sólido na parte superior e totalmente transparente na parte inferior.

Documentação em MDN .

George Filippakos
fonte
7
.. cria preta sólida na parte superior para totalmente transparente, na parte inferior
commonpike
Presumo que isso seja uma sugestão e não funcione de verdade?
Bart
15

Isso é muito legal! Eu precisava praticamente do mesmo, mas com gradiente horizontal de branco a transparente. E está funcionando muito bem! Aqui está o meu código:

.gradient{
        /* webkit example */
        background-image: -webkit-gradient(
          linear, right top, left top, from(rgba(255, 255, 255, 1.0)),
          to(rgba(255, 255, 255, 0))
        );

        /* mozilla example - FF3.6+ */
        background-image: -moz-linear-gradient(
          right center,
          rgba(255, 255, 255, 1.0) 20%, rgba(255, 255, 255, 0) 95%
        );

        /* IE 5.5 - 7 */
        filter: progid:DXImageTransform.Microsoft.gradient(
          gradientType=1, startColor=0, endColorStr=#FFFFFF
        );

        /* IE8 uses -ms-filter for whatever reason... */
        -ms-filter: progid:DXImageTransform.Microsoft.gradient(
          gradientType=1, startColor=0, endColoStr=#FFFFFF
        );
    }
Misha
fonte
1
para referência, na implementação da Microsoft, gradientType = 1 é horizontal, 0 é vertical.
Brooks
Os gradientes IE7 e IE8 não especificam nenhuma cor alfa? Eles realmente se tornam transparentes?
precisa saber é o seguinte
3

Aqui está o meu código:

background: #e8e3e3; /* Old browsers */
  background: -moz-linear-gradient(top,  rgba(232, 227, 227, 0.95) 0%, rgba(246, 242, 242, 0.95) 100%); /* FF3.6+ */
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(232, 227, 227, 0.95)), color-stop(100%,rgba(246, 242, 242, 0.95))); /* Chrome,Safari4+ */
  background: -webkit-linear-gradient(top,  rgba(232, 227, 227, 0.95) 0%,rgba(246, 242, 242, 0.95) 100%); /* Chrome10+,Safari5.1+ */
  background: -o-linear-gradient(top,  rgba(232, 227, 227, 0.95) 0%,rgba(246, 242, 242, 0.95) 100%); /* Opera 11.10+ */
  background: -ms-linear-gradient(top,  rgba(232, 227, 227, 0.95) 0%,rgba(246, 242, 242, 0.95) 100%); /* IE10+ */
  background: linear-gradient(to bottom,  rgba(232, 227, 227, 0.95) 0%,rgba(246, 242, 242, 0.95) 100%); /* W3C */
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='rgba(232, 227, 227, 0.95)', endColorstr='rgba(246, 242, 242, 0.95)',GradientType=0 ); /* IE6-9 */
Miloš Miljković
fonte
3
#grad
{
    background: -webkit-linear-gradient(left,rgba(255,0,0,0),rgba(255,0,0,1)); /*Safari 5.1-6*/
    background: -o-linear-gradient(right,rgba(255,0,0,0),rgba(255,0,0,1)); /*Opera 11.1-12*/
    background: -moz-linear-gradient(right,rgba(255,0,0,0),rgba(255,0,0,1)); /*Fx 3.6-15*/
    background: linear-gradient(to right, rgba(255,0,0,0), rgba(255,0,0,1)); /*Standard*/
}

Encontrei isso na w3schools e atendi às minhas necessidades enquanto procurava por gradiente e transparência. Estou fornecendo o link para se referir a w3schools. Espero que isso ajude se alguém estiver procurando por gradiente e transparência.

http://www.w3schools.com/css/css3_gradients.asp

Também tentei na w3schools mudar a opacidade colando o link para verificá-la

http://www.w3schools.com/css/tryit.asp?filename=trycss3_gradient-linear_trans

Espero que ajude.

sagar buddhi
fonte
1

A seguir, é o que eu estou usando para gerar um gradiente vertical de completamente opaco (superior) a 20% em transparência (inferior) da mesma cor:

background: linear-gradient(to bottom, rgba(0, 64, 122, 1) 0%,rgba(0, 64, 122, 0.8) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
background: -o-linear-gradient(top, rgba(0, 64, 122, 1) 0%, rgba(0, 64, 122, 0.8) 100%); /* Opera 11.10+ */
background: -moz-linear-gradient(top, rgba(0, 64, 122, 1) 0%, rgba(0, 64, 122, 0.8) 100%); /* FF3.6-15 */
background: -webkit-linear-gradient(top, rgba(0, 64, 122, 1) 0%,rgba(0, 64, 122, 0.8) 100%); /* Chrome10-25,Safari5.1-6 */
background: -ms-linear-gradient(top, rgba(0, 64, 122, 1) 0%,rgba(0, 64, 122, 0.8) 100%); /* IE10+ */
-ms-filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00407a', endColorstr='#cc00407a',GradientType=0 ); /* IE8 */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00407a', endColorstr='#cc00407a',GradientType=0 ); /* IE 5.5 - 9 */
Riccardo Volpe
fonte
0

Acabei de encontrar este exemplo mais recente. Para simplificar e usar os exemplos mais recentes, fornecendo ao css uma classe seletora de 'grad' (incluí compatibilidade com versões anteriores)

.grad {
    background-color: #F07575; /* fallback color if gradients are not supported */
    background-image: -webkit-linear-gradient(top left, red, rgba(255,0,0,0));/* For Chrome 25 and Safari 6, iOS 6.1, Android 4.3 */
    background-image: -moz-linear-gradient(top left, red, rgba(255,0,0,0));/* For Firefox (3.6 to 15) */
    background-image: -o-linear-gradient(top left, red, rgba(255,0,0,0));/* For old Opera (11.1 to 12.0) */
    background-image: linear-gradient(to bottom right, red, rgba(255,0,0,0)); /* Standard syntax; must be last */
}

de https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient

davidrynn
fonte