Google+
Google+
Facebook
Facebook
Linkedin
Linkedin
Twitter
Twitter
SlideShare
SlideShare
Homepage
Homepage

quarta-feira, 12 de outubro de 2011

Efeito de brilho com jQuery

A intenção é criar um efeito semelhante ao das abas do Chrome ou da barra de ferramentas do Windows 7, no qual um brilho se move sobre o botão acompanhando o cursor. Seguindo esse tutorial, nosso resultado será esse:


Vamos lá. O primeiro passo é baixar a biblioteca jQuery e ligá-la ao documento HTML. Se você não sabe como fazer eu já postei aqui no blog (Utilizando o jQuery). No nosso arquivo HTML nós teremos dois elementos div para cada botão, um para o botão em si (a depender da implementação pode ser um item de uma lista) e outro para o brilho. Vamos fazer três botões, então nosso código HTML ficará assim:

<html>
    <head>
        <script type="text/javascript" src="jquery.min.js"></script>
    </head>
    <body>
        <div class="botao twitter"><div class="brilho"></div></div>
        <div class="botao orkut"><div class="brilho"></div></div>
        <div class="botao facebook"><div class="brilho"></div></div>
    </body>
</html>

Agora o CSS. Você pode baixar as imagens aki: link
Para o elemento com a classe 'botão': definimos altura e largura, deixamos os elementos flutuando à esquerda (dessa forma o menu aparecerá como se estivesse inline), espaçamento de 10px à esquerda, overflow: hidden para esconder a parte do brilho que exceder o espaço do botão e borda arredondada na div para que a sombra fique da mesma forma e se adeque às imagens utilizadas.

(Atenção: certifique-se de ajeitar a sombra e as bordas porque são especificas do CSS3 e portanto sensíveis à inconsistências de renderização. Para esse exemplo usei o Chrome e não me preocupei com outros navegadores). 

Para o elemento com a classe 'brilho': definimos apenas altura e largura. Além disso, definimos o background de cada item. Nosso CSS ficará assim:

.botao{
    width:48px;
    height:48px;
    float:left;
    padding:0;
    margin-left:10px;
    overflow:hidden;
    border-radius: 8px;  
    box-shadow:3px 3px 5px #ddd;
}
.brilho{
    width:55px; 
    height:55px;
}
.twitter{
    background:url(images/twitter.png);
}
.orkut{
    background:url(images/orkut.png);
}
.facebook{
    background:url(images/facebook.png);
}

Por fim, o JavaScript utilizando jQuery. É nesse momento que adicionaremos a imagem do brilho ao elemento de classe 'brilho', para que não seja obstrutivo. Ou seja, caso o JavaScript não funcione não haverá o efeito, mas o menu continuará usável. Quando o mouse se mover sobre o botão o brilho aparecerá com uma margem à esquerda equivalente à distância do cursor subtraída da distância do botão, ambas a partir da borda esquerda do navegador. Para colocar a imagem exatamente no centro do cursor basta subtrair o valor anterior da metade do tamanho da imagem usada como brilho. Definimos a margem superior num processo semelhante. Ocultamos a imagem do brilho através do JavaScript e permitimos que ela apareça apenas quando o cursor estiver sobre o botão e torne a desaparecer caso contrário. Desse forma nosso código ficará assim:

$(document).ready(function() {
    var half = 27; // Metade do tamanho da imagem
    var pos; // Posição do botão
    $(".brilho").css("background","url(images/light.png)").hide();

    $(".botao").mousemove(function(mouse){
        pos = $(this).offset();
        $(this).find(".brilho").show();
        $(".brilho").css("margin-left",mouse.pageX - half - pos.left);
        $(".brilho").css("margin-top",mouse.pageY - half - pos.top);
    }).mouseout(function(){
        $(".brilho").hide();
    });
});


Nosso efeito está pronto. Veja o resultado: Demo.
Você pode substituir o show/hide do jQuery por fadeIn/fadeOut se quiser suavizar o efeito. Além disso a imagem que você criar para o brilho fará a diferença, essa que usei fiz às pressas. 

É isso aí, espero que tenham gostado.

Nenhum comentário:

Postar um comentário