Animação para div aparecer gradativamente (alterando dimensões)
Hopa.
Que tal ao invés de usar simplesmente o velho "display: block" pra deixar determinada div visível, usar uma animaçãozinha pra dar um efeito especial melhor no seu site.
Este tipo de coisa está disponível em todo framework javascript que se preze. Mas se você não tá afim de mexer com frameworks, é só adicionar a função abaixo na sua biblioteca:
function aparece(quem,speed){
//Aparece o 'quem' gradativamente na velocidade especificada em speed (high, normal, slow)
//by Micox - http://www.elmicox.com/2007/animacao-para-div-aparecer-gradativamente/
if(typeof(quem)=='string'){
quem = document.getElementById(quem);
}
if(typeof(window['micoxApareceGradativamente'+quem.id])!='undefined'){
//esta animação já está em execucao, saio
return true
}
var sty = quem.style;
sty.visibility = 'hidden'
var pos_init = sty.position;
sty.position = 'absolute';
if(sty.display=='none'){ sty.display = 'block' }
var alt_init = parseInt(quem.offsetHeight);
var lar_init = parseInt(quem.offsetWidth);
var over_ini = sty.overflow;
sty.overflow = 'hidden';
sty.visibility = 'visible';
sty.height = '0px';
sty.width = '0px';
if(typeof(quem.timeAparece)!='undefined'){
clearInterval(quem.timeAparece);
}
quem.timeAparece=null;
var loop = function(){
var alt_atu = parseInt(sty.height);
var lar_atu = parseInt(sty.width);
if(alt_atu < alt_init){
sty.height = (alt_atu + 5) + 'px';
}
if(lar_atu < lar_init){
sty.width = (lar_atu + 25) + 'px';
}
if(alt_atu == 0 ){
sty.position = pos_init;
}
if(alt_atu >= alt_init && lar_atu >= lar_init){
//acabou
clearInterval(quem.timeAparece);
delete window[’micoxApareceGradativamente’+quem.id];
sty.height = (alt_init) + ‘px’;
sty.width = (lar_init) + ‘px’;
sty.overflow = over_ini;
}
}
switch(speed){
case ‘high’: speed = 1; break;
case ‘normal’: speed = 20; break;
case ’slow’: speed = 40; break;
default: speed = 10;
}
window[’micoxApareceGradativamente’+quem.id] = true;
quem.timeAparece = setInterval(loop,speed);
}
Exemplo de uso (passando o ID):
<span onclick='aparece("apa","slow")'>clica</span>
<div id='apa' style='display: none; border: 1px solid black;'>asdfçlaksdfçl alsjdfçlajsdçlfjaçsldjfçlajsdçflj açlsdfjksd
asdfaslçkdfjçlaj<br />aç jdfljaçsldjkfçlaskjd f<br />lça jçdfljaçsdl fjkçalsjdf çlkajsçdlf</div>
Ou passando a referencia do elemento:
<span onclick='aparece(document.getElementById("apa"),"slow")'>clica</span>
<div id='apa' style='display: none; border: 1px solid black;'>asdfçlaksdfçl alsjdfçlajsdçlfjaçsldjfçlajsdçflj açlsdfjksd
asdfaslçkdfjçlaj<br />aç jdfljaçsldjkfçlaskjd f<br />lça jçdfljaçsdl fjkçalsjdf çlkajsçdlf</div>
Dezembro 14th, 2007 08:51
Esta vivo Micox!
Dezembro 14th, 2007 12:12
Muito legal, mas tu não acha mais fácil usar uma biblioteca como a jQuery ou a script.aculo.us?
Eu acho interessante pra ver como isso pode ser feito com JS “purinho”, mas na prática não sei se não é melhor usar uma dessas biliotecas…
Dezembro 14th, 2007 13:22
Eu JÁ sou um fiel da jquery hehehe, mas eu gosto de deixar funções prontas pra quem não gosta ou não usa frameworks, como por exemplo a bodyOnReady do penúltimo post.
Eu já fui um dos que não usava frameworks no passado e sei como é ruim não achar funções pra algumas coisas heheh.
Eu estou vivoo!!!
Dezembro 14th, 2007 13:41
Aí, cara… sempre acompanho seus artigos. Sempre muito úteis. Mas como vejo pelos feeds não tinha visto o layout novo do site. Ficou muito massa mesmo..
Aquele antigo era feinho de mais.. Eu gostava mais daquele verde do blogspot. Mas esse tá show. Parabéns. Quando eu crescer quero ser igual a você.
Dezembro 14th, 2007 16:17
hhaah, ae cara, essa parada bonita aqui não fui eu que fiz não.
Já vem pronta. hhaehhe
Dezembro 17th, 2007 13:32
cara, sou iniciante em javascript, to quebrando a cabeça aqui com seu script.
to carregando uma div dinamicamente, só que ela tem tamanho diferente dependendo daquilo que vem do banco, com esse seu script ela ta sempre mantendo o tamanho da primeira que foi carregada, tem como alterar isso pra a div sempre se adaptar ao tamanho daquilo que ta sendo carregado?
Desde já, obrigado!
Dezembro 17th, 2007 15:30
Cara, tem como sim.
té
É só definir direitinho via CSS ué.
Pergunta lá no fórum
Dezembro 17th, 2007 18:04
Na moral?
Ta ruim demais viu… tem seção inutilitario aqui no blog?
Desculpa ae mas ta ruim mesmo… minha opinião.
Dezembro 20th, 2007 07:28
Cara, me desculpe.
Fim de ano, mil projetos, serviço, então não dá tempo de fazer todo santo dia um super-mirabolante script. Eu não vivo por conta do blog.
Eu sempre deixei claro que o objetivo do blog aqui é postar códigos que eu faço e que podem talvez um dia serem úteis pros outros.
O objetivo aqui não é ser um top portal de javascript.
Se hoje eu fizer um scriptzinho que eu ache que talvez seja útil pra alguém eu posto aqui.
Eu não fico atoa pensando em scripts pra escrever.
Se era isso que você estava esperando do blog, lamento. Vou colocar um botão “desassinar”, ok?
Dezembro 20th, 2007 11:07
Sempre existem uns desagradáveis né! Fazer o que?!
Show de bola, eu sou um dos que não usa biblioteca.
Até tenho vontade de usar, mas tenho muito o que aprender, então não uso, pois é uma forma de eu aprender, pode não ser das melhores, porém aprendo bastante desse jeito.
Se não voltar aqui até o natal. Desejo um bom natal pra ti e que no próximo ano, vc não me desclassifique dos campeonatos, por causa de um espaço na frente. rs
To de zoa, tá.
Abs
Dezembro 20th, 2007 13:02
haheeh, beleza ramon ehaehe,
Bixo, dá uma olhada no último script antes desse (onready) que você vai gostar.
Dezembro 20th, 2007 14:00
uepa…
=D
Fui meio rude no meu comentario… =P
Tipo… a codificação ta legal…
Porem… é meio inutilitário…
Sugestão:
Postar ums artigos mais “comerciais”, “usuais”… que vc usa nos trabalhos que vc faz por exemplo…
Ps.: Se tu usou esse mal ae =D doidera usar este codigo…
* Tempo: Por isso não faço um blog… complicado isso de vir um cara chato como eu e criticar…
- Ramon: Desagradavel nao… Sincero… Não estou babando o cara… to sendo sincero… este é o canal de comunicação que ele tem no blog dele… entao estou usando.
Senhor Micox é um cara hoje conhecido no brasil pelos posts dele… pelos artigos dele…
Entao por isso que critiquei… pra ele ser mais cuidadoso… somente… Se fui mal interpretado… okay poe o botao ae “desassinar” que aperto aqui…
Sugestão 2 como prossivel post:
Micox que tal um versus mode dos frameworks javascript… os pros e os contra de jquery, moontools, prototype…
Abraço a todos e Feliz natal…
Dezembro 20th, 2007 14:10
E vc acha que eu não tinha lido? Muito massa, mesmo, porém não tive ainda oportunidade de colocar em prática. =/
Fuiii
Dezembro 20th, 2007 14:19
Micox, desculpa ae, mas tenho o meu direito de resposta para com o Flávio:
“- Ramon: Desagradavel nao… Sincero… Não estou babando o cara… to sendo sincero… este é o canal de comunicação que ele tem no blog dele… entao estou usando.”
Como vc mesmo mencionou que estava sendo sincero e este é um canal de comunicação o qual pode-se expressar a opinião, vou expressar a minha te achei muito desagradável, algum problema com isso?!
Micox o cara é tão esperto, propôs que você fizesse um post que o Julio Greff fez há um tempo atrás. Pra que repetir post?
Fuiii…
Dezembro 20th, 2007 15:06
Opa, vamos esfriar os animos pessoal heheh
Flavio,
Pois é cara, você foi meio rude sim, dando a entender que eu era obrigado a colocar só top tops no meu blog.
Acho que agora eu entendi o que vc quis dizer. Diboas.
Mas, no momento, é como eu disse: infelizmente não dá pra fazer posts artigos (tipo análise, comparando, falando bem, falando mal e tals). Este é realmente um problema que eu tenho que encarar e assumir.
Infelizmente eu não posso me comprometer a fazer um blog assim pois:
1) não é meu estilo
2) Não sou muito bom nisso (não dou conta)
3) Me falta tempo pra isto.
Perceba que nem tutoriais eu posto aqui. Eu posto apenas códigos prontos. Pá-pum sacas?
São raras as vezes que eu viajo em algum assunto.
Daí eu posto códigos que fiz e usei, fiz pra outros, fiz mas não usei, etc.
Às vezes sai um top top de linha que todo mundo usa (ajaxGet) e alguns que até os gringos gostam ( upload Assíncrono), mas não é sempre que há inspiração pra sair um top top sacas.
Eu também considero este blog como uma pasta eterna onde eu guardo meus scripts. Disponível de qualquer lugar.
Atualmente eu uso frameworks, mas até antes de descobrir o jquery (5 meses atrás) eu ODIAVA frameworks. E eu simplesmente ADORAVA quando achava funçõeszinhas pra fazer coisas bonitas sem depender de um gigantesco framework.
Foi por isso que desenvolvi o bodyOnReady (pra simular os onready dos frameworks), e desenvolvi esta animação deste post.
Outros que odeiam frameworks podem:
1) Usar poucas coisas sem ter que baixar e incluir uma lib inteira
2) Ver como pode ser implementada a função por dentro.
Sacou agora?
Espero que não haja qualquer tipo de rancor. Espero que tenha entendido que este script que você odiou, é útil pra muita gente (pra mim seria caso eu não tivesse descoberto o jquery).
Diboas. Té mais. Sem rancor.
Dezembro 21st, 2007 15:03
ahahha
Esse eh um problema serio, falta de tempo, meu blog esse mes escrevi somente um post e foi uma dica interessante, mas de script util feito e entregue de mao beijada como o povo gosto nada… final de ano é isso.. ainda mais trabalhando 8 horas por dia, tocando projetos pessoais fora desse horario… fica complicado…
Abraçao e bom Natal
Dezembro 21st, 2007 17:51
Xou… micox…
=D
Isso ae… sou meio desconhecido no meio “web” apesar de estar no mercado a mais de 7 anos com desenvolvimento…
Sugiro entao… que façamos o versus mode cooperativo la no webly ou em qq outro forum de nossa preferencia… e sei la quem sabe um dia um framework brasuka…
=D
Bom, quem não me achou bem vindo… paciencia… Eu mesmo me dou bem vindo…
Frequentarei mais o ambiente aqui e os demais de TI.
Abraço a todos…
Feliz Natal e Um feliz ano novo…
Ps.: Pega saco do papai noel… (quem nao gosta de mim).
Fevereiro 4th, 2008 13:29
Esse modelo dos comentários foi você mesmo quem o criou? Se tiver sido, tem um clone seu por aí: http://humortifero.com.br/index.php?option=com_content&task=view&id=57&Itemid=34
Fevereiro 4th, 2008 22:01
Foi eu não cara heheh.
Isso aqui é um template pronto do wordpress.
Sou preguiçoso e ainda não fiz o meu huaehuaehu.
Feliz carnaval pra todos hauhe