Degradés radiais com CSS3

Veremos agora como conseguir degradés CSS3 em um gradiente de cor que se distribuirá de forma radial, criando tanto círculos quanto elipses.

Por Miguel Angel Alvarez - Tradução de Celeste Veiga


Publicado em: 08/7/11
Valorize este artigo:
Neste quarto artigo que estamos dedicando aos degradês com CSS3 vamos ver os degradés radiais, que formam desenhos circulares, com uma distribuição radial uniforme, ou degradés em elipse, com uma distribuição radial variável.

Os degradés radiais, que incluem tanto os que têm forma circular em geral, quanto os que têm forma de elipse, são obtidos através do atributo radial-gradient, de CSS3. De modo que, mediante a aplicação de diferentes parâmetros, conseguiremos todas as possibilidades. Como veremos a continuação, têm uma forma de serem definidos muito parecida à que vimos com os degradés lineares, embora neste caso tenhamos que levar em conta alguns outros parâmetros, o que pode dificultar um pouquinho mais seu entendimento.

A sintaxe resumida será a seguinte:

background: radial-gradient(parâmetros);

Ou então:

background-image: radial-gradient(parâmetros);

Os parâmetros que podemos indicar na declaração radial-gradient() é onde realmente radica a dificuldade e ao mesmo tempo a potência deste tipo de degradés. Não obstante, a maioria dos parâmetros é opcional, razão pela qual podemos fazer degradés radiais bastante simples, que tomarão parâmetros por padrão. Na realidade, como veremos, o único que necessitaremos sempre será definir dois ou mais cores para realizar o gradiente de cor.

A lista de parâmetros que poderemos indicar é a seguinte:

A) Posição inicial do gradiente circular:
Os degradés radiais começam em um ponto qualquer do fundo de um elemento e se estendem para fora desse ponto com formas circulares ou de elipse. Em seguida, para defini-los, necessitaremos uma forma de especificar dito ponto de inicio do degradé. O ponto se especifica com uma ou duas coordenadas, que podem ter distintas unidades CSS. Se omitido, se entende que o degradé tem que começar no ponto central do fundo do elemento.

B) Forma e/ou dimensão:
A forma pode ser circular ou elíptica, para o qual especificamos as palavras "circle" ou "ellipse". O tamanho é expresso com outra série de palavras chave, que indicam até onde deve crescer o círculo ou elipse: closest-side | closest-corner | farthest-side | farthest-corner | contain | cover. Por exemplo, closest-side indica que o círculo ou elipse deve crescer até o lado mais próximo. A palavra farthest-corner indica que deve crescer até o canto mais distante. Contain seria o mesmo que dizer closest-side e cover sinônimo de farthest-corner.

Alternativa a B) Tamanho:
Como maneira alternativa a especificar a forma e a dimensão do degradé -ponto B) anterior-, podemos indicar duas medidas em qualquer unidade CSS ou porcentagens. Essas medidas seriam utilizadas para gerar um círculo ou uma elipse do tamanho desejado para nosso gradiente. A primeira medida seria para a largura da elipse e a segunda seria para a altura (se ambas forem iguais aparece uma forma circular no degradé. Se são distintas, seria uma elipse. O tamanho deve ser sempre positivo.

Nota: esta forma alternativa de especificar a forma não está implementada totalmente em nenhum navegador. No momento em que estamos escrevendo este artigo, Firefox não a contempla, Chrome só representa formas circulares e nem Opera nem Explorer suportam degradés radiais.

C) Cores do degradé:
Para terminar, devem indicar-se quantas cores se queiram, separadas por vírgulas, com a possibilidade de indicar as paradas de cor desejadas.

Agora, vejamos uma série de exemplos que esperamos esclareçam as ideias com respeito à declaração de fundos radiais.

Nota: Os fundos radiais são suportados em pouca medida neste momento nos navegadores. Todos têm ao menos algum detalhe que precisa ser melhorado. De momento nem Opera nem IE9 os mostram. Chrome não tem possibilidade de fazer degradés com forma de elipse e Firefox ainda não implementa a alternativa B), comentada anteriormente, para a definição do tamanho do gradiente por meio dos valores da largura e da altura.

Nos exemplos que se mostrarão a seguir, se apresenta unicamente o código com o atributo de estilo definitivo, que estará disponível quando as CSS3 sejam um standard.

background: radial-gradient(ellipse cover, #66f, #f80, #ffc);

Em realidade, no momento, para que funcione em Firefox e Chrome há que colocar seus atributos com os nomes proprietários de cada navegador.

background: -webkit-radial-gradient(ellipse cover, #66f, #f80, #ffc);
background: -moz-radial-gradient(ellipse cover, #66f, #f80, #ffc);

A marca -webkit-radial-gradient serve para navegadores baseados em Webkit, como Chorme, e -moz-radial-gradient serve para navegadores baseados em Mozilla, como Firefox.

background: radial-gradient(#0f0, #06f);

Isto faz um degradé do verde ao azul turquesa, com todos os outros parâmetros pré- determinados. Faria um gradiente de forma circular, com seu ponto de início no centro do elemento, em verde, fazendo com que chegasse ao azul turquesa nas bordas do elemento.

background: radial-gradient(top left, #fff, #f66);

Neste caso definimos o ponto de inicio do gradiente com "top left". Trata-se do canto superior esquerdo, onde aparecerá o branco e o degradé teria forma circular tendendo para o rosa, ocupando 100% do elemento.

background: radial-gradient(200px 30px, #f0f, #000);

Este degradé também declara a posição inicial do gradiente, porém o faz mediante as coordenadas definidas com medidas em píxels. É circular e ocupa 100% do espaço disponível no elemento.

background: radial-gradient(center, #00f, #000 50%);

Neste declaramos a posição inicial com center, o comportamento predeterminado, que coloca o início do degradé no centro, tanto vertical quanto horizontal. O detalhe é que o degradé se realiza desde o centro até 50% do tamanho do elemento, já que colocamos uma parada de cor ("color stop") de 50% na última cor.

Nota: as paradas de cor, ou "color stop", foram explicadas quando se tratou dos degradés lineares.

background: radial-gradient(circle, #66f, #f80, #ffc);

Este é o primeiro dos exemplos no que definimos a forma do degradé, ainda que só indiquemos "circle". Portanto, o degradé começará no centro e ocupará 100% do espaço disponível no elemento, embora sempre com o mesmo raio.

background: radial-gradient(ellipse cover, #66f, #f80, #ffc);

Este degradé é exatamente igual ao anterior, mas em vez de circular é de elipse, cobrindo 100% do espaço disponível, e começando no centro. Este é o comportamento predeterminado do estilo.

Nota: Entretanto, à hora de escrever este artigo só Firefox implementa a forma de elipse. E o comportamento pré-determinado em Chrome continua sendo o circular.

background: radial-gradient(10%, ellipse closest-side, #66f 60%, #f80 85%, #ffc);

Este exemplo tem definida a posição do degradé e a forma. É o primeiro que especifica esses dois valores ao mesmo tempo. Neste caso, sobre a posição só se declara 10%, assim que aparecerá centrado na vertical e na horizontal aparecerá em 10% do espaço do container pela parte da esquerda. É em forma de elipse e closest-side significa que se expande em forma de elipse até se completar no lado mais próximo.

background: radial-gradient(10%, ellipse farthest-corner, #66f 60%, #f80 85%, #ffc);

Este degradé é igual ao anterior, na mesma posição e em forma de elipse, porém, o tamanho foi definido com farthest-corner, o que fará com que o degradé seja muito maior, expandindo-se até o canto mais distante.

background: radial-gradient(20px 100px, 30% 80%, #fff, #666, #66f);

Neste caso definimos a posição inicial com as coordenadas em píxels e, o que é novidade, definimos tanto a forma quanto o tamanho do degradé em porcentagem. A largura será 30% do elemento e a altura 80%.

Nota: Esta alternativa de definir a forma e as dimensões do degradé, que vemos neste exemplo e as três seguintes, não funciona em Firefox no momento de escrever o artigo, e só chrome mostrará um degradé no elemento. No entanto, Chrome é incapaz por agora de produzir elipses,e por isso o degradé terá forma circular, apesar de haver definido dimensões menores na largura que na altura. Não obstante, o mais certo é que em breve se melhore a compatibilidade dos navegadores com este tipo de definição do degradé.

background: radial-gradient(top left, 150px 100px, #ffc, #f96, #963, #630);

Definimos a posição inicial por meio dos valores top e left e o tamanho por meio de unidades em píxels.

background: radial-gradient(20% 80%, 100% 50%, red, blue 50px, red);

A posição do centro do degradé está em porcentagem, assim como o tamanho da elipse, também em porcentagens.

background: radial-gradient(left, 200px 200px, #f00 20%, #f80, #ff0, #0f0, #00f, #60f, #c0f);

Neste definimos o tamanho da largura e da altura com dois valores em píxels, mas como são iguais, em lugar de uma elipse veríamos uma forma circular, cujo raio é sempre igual.

Recordem que podem ver o exemplo em funcionamento, embora só em navegadores que suportem os degradés radiais. Os outros usuários podem ver os degradés produzidos nos exemplos na seguinte imagem:

No próximo artigo falaremos do último tipo de degradés CSS3 que falta ver, os degradés radiais de repetição.





Manual: CSS 3

Comentários do artigo
Foi enviado 1 comentário ao artigo
1 comentário não revisado
0 comentários revisados

Usuários :    login / registro
Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato