desenvolvimento para web

Rolagem com fundo transparente com CSS

Desde que o CSS foi criado, muita coisa mudou, atualizações foram feitas, especificações criadas, elementos revisados, enfim, a tecnologia evoluiu e vem evoluindo. O CSS alterou para muito melhor o modo como o desenvolvimento web é feito, deu ensejo à técnica de criação em camadas, dentre outras coisas.

E a comunidade CSS a cada dia desenvolve uma técnica nova, uma nova e melhor maneira de se fazer algo, um jeito diferente de sair de uma “enrascada CSS”, maneiras inovadoras de realizar algum efeito. É o caso da técnica de rolagem com fundo transparente com CSS. Uma técnica que confere um efeito muito peculiar, permitindo que uma imagem de background vá surgindo à medida em que a pessoa rola a barra de rolagem ao fundo da página.

Este é um artigo traduzido do original “CSS trick for a scrolling transparent background effect“, do blog FiveFingerCoding, e sofreu algumas adaptações.

Como a rolagem com fundo transparente funciona

Para realizar o efeito de rolagem com fundo transparente, são necessários 2 arquivos:

Os scrolls do gradiente sob o PNG transparente. Porque ele corresponde às cores do PNG, cada conjunto de imagens desaparece dependendo de qual parte do gradiente vão “chegando”.

HTML e CSS da rolagem com fundo transparente

Será necessária uma estrutura com 2 “divs-base”, como segue:

<html>
<head>
  <title>Rolagem com fundo transparente com CSS</title>
</head>
<body>
  <div id="wrapper">
    <div id="container">
 
    </div>
  </div>
</body>
</html>

O CSS de body (que precisa “zerar os elementos”, como explicado no artigo de CSS Mínimo), deve ser da seguinte forma:

body {
background: #900 url(gradient-tile.jpg) repeat-x bottom left; // hexadecimal é a mesma cor da imagem
}

Para a div “wrapper”, o CSS:

#wrapper {
background-attachment: fixed;
background: url(transparency.png) repeat-x center bottom;
width: 100%;
}
 
* html #wrapper { background-image: none; } /* IE6 */

É um CSS simples, maiores explicações não são necessárias, fora o fato de a largura da wrapper ser definida em 100% para o PNG transparente aparece em toda a largura da janela do navegador.

E o CSS da div “container”:

#container {
  width: 750px;
  margin: 0 auto;
  background-color: #000;
}

A largura de #container pode ser qualquer uma que se adapte ao seu layout (alguns preferem o padrão de 960px). Para o exemplo, está um pouco menor para que o efeito possa ser visto com mais clareza. A cor de fundo, também, pode ser o que quiser. As margens esquerda e direita são definidas como “auto” para centralizar a div na janela do navegador.

Observações sobre rolagem com fundo transparente (e o IE6)

Se você não tem conteúdo suficiente na div container para fazer scroll, o efeito não acontecerá e o que será visto é somente a cor de fundo. A solução é definir uma altura mínima na div container para forçar a rolagem, independentemente da quantidade de conteúdo.

Sobre a transparência do PNG, o IE6 não dá suporte à transparências… No caso, existem diversos scripts e macetes em CSS para sanar este bug, dentre eles o filtro AlphaImageLoader.

Como foi visto, há um hack para IE6 em #wrapper, mas não podemos negligenciar o fato de o IE6 não suportar a propriedade min-height (para o caso de acontecer o explicado no parágrafo anterior). Se for o seu caso, experimente usar o Tan Hack, que faz com que o IE6 interprete “height” como “min-height”.

Mas, sinceramente, o efeito só tem graça numa página extensa, quando o visitante é surpreendido com o efeito somente no fim da rolagem da tela, não é? ;-)

E aí, gostou? Comente!

3 interações em "Rolagem com fundo transparente com CSS"

  1. Acelio10/03/2010 

    Muito legal o efeito.

    Uma bela aplicação das noções de cor, luz e sombra. Parece aqueles truques visuais da época da “invenção” do cinema.

    Tinha visto uma técnica destas, bem mais simples, muuuito nas antigas.
    O bg do body, com a imagem em degradê, era fixed bottom, e o texto, da cor mais escura do degradê.
    Ao rolar a página o texto ia surgindo…

  2. Marcio Sales20/07/2010 

    muito boom esse efeito cara, cara. Em breve vou por no ar os artigos do meu site. Eu admiro os profissionais que compartilham conhecimento, acho q esse é o barato.. compartilhar conhecimento é uma forma de interagir com o universo. Slogan do meu site
    Parabéns…
    Tow querendo bolar um troço no CSS.. se puder me passa um email.. duas cabeças pensam que melhor juntas;; auhauahuaha

  3. Tárcio Zemel21/07/2010 

    @ Acelio,
    @ Marcio Sales

    Obrigado pela participação, pessoal! Quaisquer dúvidas sobre este e outros assuntos, basta comentarem! Abraços!

Comente!

O simples tem que ser bom por ele só. Tem que ser bom no primeiro olhar.

Walter Rodrigues