Start Debugging

Fundo de gradiente com textura/ruído em CSS

Como criar fundos de gradiente com textura e ruído em CSS combinando camadas de gradiente e imagens de ruído com a propriedade background-image.

Fundos de gradiente com textura são feitos combinando gradientes e imagens de ruído. Para gradientes CSS você pode usar um gerador como este. Para imagens de ruído, também dá para usar este gerador de ruído.

O truque para criar fundos texturizados está em combinar as propriedades de background do CSS. Em vez de usar só gradientes como fundo, ou só imagens, por que não combinar assim:

background-image: url('../images/noise.png'), -moz-linear-gradient(top, #87e0fd 0%, #53cbf1 40%, #05abe0 100%); /* FF3.6+ */
background-image: url('../images/noise.png'), -webkit-gradient(linear, left top, left bottom, color-stop(0%,#87e0fd), color-stop(40%,#53cbf1), color-stop(100%,#05abe0)); /* Chrome,Safari4+ */
background-image: url('../images/noise.png'), -webkit-linear-gradient(top, #87e0fd 0%,#53cbf1 40%,#05abe0 100%); /* Chrome10+,Safari5.1+ */
background-image: url('../images/noise.png'), -o-linear-gradient(top, #87e0fd 0%,#53cbf1 40%,#05abe0 100%); /* Opera 11.10+ */
background-image: url('../images/noise.png'), -ms-linear-gradient(top, #87e0fd 0%,#53cbf1 40%,#05abe0 100%); /* IE10+ */
background-image: url('../images/noise.png'), linear-gradient(top, #87e0fd 0%,#53cbf1 40%,#05abe0 100%); /* W3C */

Sim, dá para fazer. Use a propriedade background-image como de costume, adicione uma vírgula e em seguida um gradiente. Use o gerador de ruído para gerar a imagem e o gerador de gradientes para criar o gradiente desejado.

Aqui está uma versão completa e autocontida que você pode colar em um arquivo HTML: usa ruído SVG inline como data URL, então não há dependências de imagens externas:

<!doctype html>
<html>
<head>
  <style>
    body {
      min-height: 100vh;
      margin: 0;
      background-image:
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='0.35'/></svg>"),
        linear-gradient(to bottom, #87e0fd 0%, #53cbf1 40%, #05abe0 100%);
    }
  </style>
</head>
<body></body>
</html>

O mesmo truque funciona com qualquer gradiente: coloque o ruído (ou qualquer imagem de textura) primeiro no valor background-image separado por vírgulas para empilhá-lo por cima do gradiente.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Voltar