Caixa Expansivel - Update
18 Novembro 2008
Escrito por Gonçalo Martins
À algum tempo atrás forneci um exemplo de uma caixa expansível que poderia criar em Mootools. O exemplo dessa mesma caixa pode ser visto aqui. Ao longo dos últimos tempos tenho recebido alguns e-mails a perguntar como implementar um indicador de que a caixa está aberta ou fechada.
Em relação à caixa expansível que criei anteriormente a única coisa que mudará é o javascript, e a adição de uma nova classe ao HTML e um pouco de CSS.
O novo Javascript ficará algo do género:
<script type="text/javascript">
window.addEvent('domready', function(){
var mySlide = new Fx.Slide('section');
$('toggle').addEvent('click', function(e){
e = new Event(e);
mySlide.toggle();
if($('toggle').hasClass('icon')){
$('toggle').removeClass('icon');
$('toggle').addClass('icon2');
} else {
$('toggle').removeClass('icon2');
$('toggle').addClass('icon');
}
e.stop();
});
});
</script>
A unica coisa que muda no código em relação ao anterior é a adição das seguintes linhas:
if($('toggle').hasClass('icon')){ //detecta se possui a class 'icon' junto a id="toggle" no HTML
$('toggle').removeClass('icon'); //Se a class for 'icon', remove a class
$('toggle').addClass('icon2'); //Depois de remover a class icon adiciona a classe 'icon2', que irá mudar a imagem
} else { //para abrir
$('toggle').removeClass('icon2');//detecta a class 'icon2' adicionada quando se fechou, e remove-a
$('toggle').addClass('icon'); //adiciona de novo a class 'icon'
}
O HTML:
<h2><span>
<a href="#" id="toggle" class="icon">Secção</a>
</span></h2>
<div id="section">
<div>
<!-- O seu conteúdo aqui -->
</div>
</div>
O CSS:
.icon {background:url(img/close.png)bottom left no-repeat;
font-size: 16px;
padding-left: 17px;
margin-left: 2px;
margin-bottom: 5px;
List-style:none;}
.icon2 {background:url(img/open.png)bottom left no-repeat;
font-size: 16px;
padding-left: 17px;
margin-left: 2px;
margin-bottom: 5px;
List-style:none;}
Como melhorar:
O meu conselho é utilizar uma CSS Sprite para realizar o load das imagens open e close! Desta forma não se notará um pequeno desfasamento da primeira vez que o utilizador carregar na caixa para a fechar!
Trackback(0)
Novembro 30, 2008