> > jQuery + CSS - Botões

jQuery + CSS - Botões

Postado em quarta-feira, 1 de agosto de 2012 | Comments Off


Não foi à toa que o jQuery se firmou como uma das melhores bibliotecas javascript disponíveis. Além de levar o desenvolvimento cross-browser a sério e ser muito fácil de usar, o jQuery tem uma enorme quantidade de plugins. Nesse post vou mostrar como você pode usá-lo para adicionar facilmente um efeito de Fade sutil e elegante aos seus botões.


Como funciona

A mecânica é simples: a função jQuery identifica o elemento onde deve ser aplicado o efeito e insere dentro dela uma tag<span>, que é quem realmente receberá o Fade. Tudo o que você precisa saber e fazer é colocar um pequeno trecho javascript na sua página, ajustar seu CSS e adicionar uma classe ao botão que receberá o efeito.
É exatamente o mesmo efeito que está aplicado nos botões que você pode ver clicando em DEMO no inicio do Post. Você também pode acessar a demonstração e baixar os arquivos para visualizar melhor o código.

O Javascript

O primeiro passo é importar o jQuery normalmente. Depois é só inserir a função abaixo. Perceba que logo no início do código, na segunda linha, você deve colocar a classe dos botões que receberão o efeito (nesse caso: efeito_fade). Todos os elementos com essa classe serão animados.
<script type="text/javascript" src="jquery.js"></script><script type="text/javascript">$(document).ready(function() {$('.efeito_fade').append('<span class="hover"></span>').each(function () {var $span = $('> span.hover', this).css('opacity', 0);$(this).hover(function () {$span.stop().fadeTo(500, 1);}, function () {$span.stop().fadeTo(500, 0);});});});</script>

O CSS

No CSS, a primeira coisa a fazer é criar um botão comum, com a técnica clássica de image replacement para diferenciar o estado normal (“apagado”) do estado :hover (“aceso”). Ou seja, criar uma imagem que contenha os dois estados do botão e então estilizá-lo usando a propriedade background-position para fazer a troca de um estado para o outro quando o usuário passa o mouse sobre ele.
A única diferença é que ao invés de estilizar o estado :hover em si, você irá estilizar a tag <span> que será criada dentro do botão como se fosse o :hover, com algumas pequenas mudanças:
A primeira é posicionar o botão relativamente (position:relative), para que o <span> fique corretamente colocado dentro dele. A segunda é posicionar o <span> absolutamente (position:absolute) e repetir as mesmas propriedades do botão, ajustando apenas o background. Eu sei, parece complicado, mas veja como o código não tem nada demais:

/* botao 1 */
#seu_botao {
clear: both;
position:relative;
display:block;
height: 64px;
width: 570px;
background:url(images/botao.png) no-repeat;
background-position:0 0;
cursor: pointer;
}
#seu_botao span.hover {
position: absolute;
display: block;
height: 64px;
width: 570px;
background: url(images/botao.png) no-repeat;
background-position: bottom;
}

/* botao 2 */
#outro_botao {
clear: both;
position:relative;
display:block;
height: 64px;
width: 570px;
background:url(images/outro.png) no-repeat;
background-position:0 0;
cursor: pointer;
}
#outro_botao span.hover {
position: absolute;
display: block;
height: 64px;
width: 570px;
background: url(images/outro.png) no-repeat;
background-position: bottom;
} 

O HTML

Como eu disse, a única coisa que você precisa fazer no seu HTML é atribuir a classe indicada na função javascript em todos os elementos que receberão o fade. Nesse caso a classe é a “efeito_fade”. Veja o código dos dois botões desse exemplo:


<a href="#" id="seu_botao" class="efeito_fade"></a>
<br />
<a href="#" id="outro_botao" class="efeito_fade"></a> 

Uma dica é experimentar usar essa técnica não apenas para botões, mas também para menus, imagens e outros elementos interativos, tomando sempre cuidado para não exagerar na dose. 

Busca Avançada