Obrigado, Ricardo. Consegui fazer mais ou menos de acordo com o que você falou. Diminuí mais o número de linhas no busca.js
function alteraStatusBusca(mostra, esconde) {
if (mostra == "on") {
busca.addClass("busca-ativada").removeClass("busca-desativada");
} else {
busca.addClass("busca-desativada").removeClass("busca-ativada").css("height", alturaBuscaDesativada);
}
tituloBusca.addClass(mostra).removeClass(esconde);
formBusca.addClass(mostra).removeClass(esconde);
if (mostra == "on") {
botaoBuscaAtivado = false; // desativa o botao para no proximo clique desativar a busca
} else {
botaoBuscaAtivado = true; // ativa o botao para no proximo clique ativar a busca
}
}
E no evento de clique ajustei aplicando o método acima:
$(".botao-mostra-busca").click(function(){
busca.css("height", ""); // limpa o tamanho para ficar de acordo com a ativacao/desativacao
if (botaoBuscaAtivado) {
botaoBuscaClicar = true // ativa o clique para mostrar a busca
} else {
botaoBuscaClicar = false // desativa o clique para esconder a busca
}
if (botaoBuscaClicar) {
alteraStatusBusca("on", "off");
} else {
alteraStatusBusca("off", "on");
}
});
No CSS modifiquei de id para classe o "titulo-busca" e "form-busca" para considerar o hidden ou visible das classes "on" e "off":
.titulo-busca {
color: #fff;
visibility: hidden;
}
.form-busca {
visibility: hidden;
position: absolute;
left: 20em;
top: 0.7em;
}
.off {
visibility: hidden;
opacity: 0;
...
}
.on {
visibility: visible;
opacity: 1;
...
}
Atualizei no GitHub