Animated Scroll em JavaScript

Por: Henrique C. Pereira

Publicado em Saturday 25 November 2006 às 14:53

Categoria: HTML/CSS/JScript

Semanas atrás eu achei um artigo interessante no Branding Spanking News chamado Animated anchor links with unobstrusive javascript que cria um feito de “scrolling animado” nas âncoras. O JavaScript é sim não obstrusiuvo mas eu não achei elegante a chamada de função no body do HTML da página de exemplo do post do autor do script. Por isso eu alterei o arquivo original e coloquei essa chamada dentro do próprio JavaScript e se quiser utilizar minha versão alterada (a mesma que eu uso aqui no site) sinta-se à vontade. Se preferir utilize a versão original do autor. Só peço o favor de copiar o script para seu próprio servidor ok?

Eu implementei ele aqui no Revolução Etc na forma de um botão “ir para o topo” no canto direito inferior do site. Várias pessoas já me escreveram dizendo que os artigos são grandes demais e que tinham muita rolagem, agora você tem a oportunidade de voltar ao topo do site rapidinho apenas clicando neste botão e se divertir enquanto vê a página sendo escrolada sozinha até o topo. Eu criei uma página de exemplo com o script e a implementação dele isolada para facilitar sua vida na hora de implementar. Basta linká-lo com a tag script que automaticamente o scroling de suas âncoras passaram a ser “animadinhas”.

Âncoras de modo geral ajudam e muito a navegação e a citação de determinados trechos em documentos muito longos como por exemplo este artigo que eu escrevi. Em alguns contextos eu me sinto feliz quando encontro algo do tipo “ir para o topo” onde está a navegação do documento e/ou navegação do próprio site. Contextos com muita rolagem agradecem um recurso como este. Neste exemplo que eu implementei aqui, mesmo que o usuário não tenha JavaScript habilitado, ele funcionará como uma âncora comum. Vale lembrar que a forma com que eu implementei aqui, não funciona no Internet Explorer 6. Não pelo JavaScript mas pelo CSS utilizado.

Para posicionar o botão fixo no canto esquerdo para todos os browsers (nem para o Internet Explorer 6) eu utilizei a seguinte regra de CSS:


.top a {
    width:41px;
    height:41px;
    display:block;
    overflow:hidden;
    font-size:1px;
    text-indent:-200px;
    background:url("http://www.revolucao.etc.br/imagens/topo.gif") no-repeat;
    }

No IE6 não vai funcionar, mas não me preocupei com isso aqui no meu site. Mas o JavaScript funciona sim no Internet Explorer 6, bem como nos outros browsers perfeitamente. Enjoy!

Comentários dos leitores

Este artigo possui 28 comentários

  1. Thalis Valle Saturday 25 November 2006 às 12:55

    eu particularmente não muita utilidade. mas nessas horas, não devemos pensar na gente e sim nos usuários.

  2. Rafael Oliveira #1° Saturday 25 November 2006 às 13:10

    Realmente não tem muita utilidade, mas que o efeito deixa a coisa bem mais "biitinha" deixa sim.

    Dá pra se divertir vendo a página rolar sozinho, se você não tiver mais nada pra fazer, né! =P

    Té! =)

  3. Anderson #2° Saturday 25 November 2006 às 13:26

    Muito interessante esse efeito. Legal mesmo!

    Agora em relação a esse botão na direita do site, que volta para o topo da página, eu não vejo muita utilidade nele, sei lá… Não acho que aja necessidade de colocar, é só apertar a tecla ‘HOME’ no teclado que vai pro topo dá página em um piscar de olhos, mas também tem aquele lado do usuário não ter que tirar a mão do mouse, ou ter que levar o dedinho da outra mão! =P

  4. Alenônimo #3° Saturday 25 November 2006 às 14:38

    Para quem tem o scroll no mouse, esse botão é bastante inútil. Mas estamos no Brasil e é comum o povo não ter um mouse sofisticado. Acho a idéia válida.

  5. Bruno Chaves #4° Saturday 25 November 2006 às 19:33

    muito legal este script, na http://script.aculo.us/ tem como fazer esse efeito tb.

    por sinal, a scriptaculous tem efeitos sensacionais :)

    eu estou fazendo uns estudos usando ela combinada com http://bennolan.com/behaviour/ e to fazendo coisas bem interessantes sem uma linha de javascritp inline

  6. Mário S&eacut #5° Monday 27 November 2006 às 03:03

    Não é algo só legalzinho. Sob o ponto de vista da usabilidade, esse comportamento nas âncoras favorece a navegação, principalmente para usuários normais, sobretudo em interfaces com conteúdo extenso.

    Valeu pela dica!

  7. Carlo Eduardo Papaci #6° Monday 27 November 2006 às 04:41

    Sexta feira estava eu atrás desse script que nem louco e não consegui encontrar de jeito nenhum ! E agora abro meus Feeds e vejo esse post ! Perfeito ! Bem na hora certa ! Abraços !

  8. Marcelo #7° Monday 27 November 2006 às 05:24

    O css que mostrou no corpo do post, ele sozinho não deixa o botão no canto direito!? deixa?

    Sem querer ser chato, vc não confundiu direita com esquerda tb não?

    É dúvida minha msm!

  9. Augusto Monteiro #8° Monday 27 November 2006 às 06:10

    O efeito é bacana e é útil pelo fato do usuário não se perder dentro da própria página com os textos linkados aparecendo de forma rápida na sua frente quando clica em um link de ancora mas perde o sentido se não tiver uma forma de usuários de IE não poderem visualizar…

  10. Caciano Gabriel #9° Monday 27 November 2006 às 06:53

    Cool…

  11. Rogério Brum #10° Monday 27 November 2006 às 07:21

    Eu deixaria a movimentação mais veloz (pq demora muito a chegar no topo) e colocaria no botão um png transparente (em 800×600 o botao vira um quadrado).

    O efeito é interessante para outros casos.

  12. Marcelo Macedo #11° Monday 27 November 2006 às 07:39

    Muito legal! ótimo para textos longos e fácil de implementar, vamos usar nos nossos sites.

    Thanks

  13. Carlos #12° Monday 27 November 2006 às 08:44

    O efeito é bacana, mas acho que é uma demora desnecessária esperar rolar toda a página para chegar no topo.

    Um simples toque no "Home" do teclado é suficinte.

    Mas é bacana conhecer o efeito e quem sabe ele pode ser útil em algum momento.

  14. Douglas d'Aquin #13° Monday 27 November 2006 às 08:53

    Excelente dica, valeu!

    essa é uma boa para implementar naqueles sites horizontais (como o da InterCon 2006). Fica um pouco mais "chique" haha.

    também achei meio estranho chamar a função no body, mas ainda bem que alguém corrigiu a tempo.

    []'s

  15. Andre #14° Monday 27 November 2006 às 09:51

    Bruno, também tenho usado bastante o Behaviour e ele, combinado ou não a outros frameworks ou bibliotecas, tem tido excelentes resultados.

    Sobre o topo, achei o efeito bacana, mesmo que não vá usar.

  16. Pingback: Animated Scroll em JavaScript « [REF]

  17. Rafael Marin #15° Monday 27 November 2006 às 15:28

    Gostei bem legal esse efeito. Já vi em alguns sites "horizontais", onde o menu era fixo embaixo e o conteúdo deslizava suavemente.

    []s

  18. Igor Escobar #16° Tuesday 28 November 2006 às 05:23

    Eu acho que quanto mais experiências pudermos proporcionar aos usuário melhor.

    Gostei do post eu sempre estou criando uns JsFx em casa quando sobra tempo para causar um certo impacto no usuário.

  19. Chan #17° Wednesday 29 November 2006 às 04:51

    Bacana sim, mas ainda prefiro ancora é mais rápido.

    Abraços…

  20. Lucas Castro (pingba #18° Monday 04 December 2006 às 08:46

    [...]7. Scroll animado em javascript[...]Imperdíveis, não deixem de ler.[...]

  21. henrique #19° Sunday 24 December 2006 às 20:29

    para esse efeito e show como no meu site la os textos sao grandes ,muito util

  22. ExtremaOnLine #20° Wednesday 23 January 2008 às 18:49

    Legal este código. Assim que puder irei colocar em meu site.

    Obrigado

  23. Edson #21° Friday 01 February 2008 às 22:46

    Olá, Parabéns pelo script, mas eu precisaria deste scritp na vertical será que teria como alterar para mim e enviar-me por e-mail, Valeu!

  24. gadarf #22° Wednesday 23 April 2008 às 22:55

    Muito útil vou testar.

  25. Rafael #23° Friday 22 August 2008 às 00:13

    Legal, mas só funciona em conteúdos que tem barra de rolagem lateral. Eu queria utilizar ele em um site que não tem barra de rolagem e não funfo.

  26. Juliano Ribeiro #24° Tuesday 04 November 2008 às 16:33

    Olá companheiro, achei muito interessante o artigo.

    Sou iniciante, portanto não estranhe a pergunta, mas e seu eu quiser fazer um scroll lateral? Digamos que o site seja completamente horizontal, há como fazer esse scroll lateralmente?

    Grato

  27. Pingback: Screencaster » jQuery Smooth Scroll permite que você faça scrolls animados

  28. Claiton #25° Monday 13 July 2009 às 18:50

    "Você fez uma busca no http://www.google.com.br por javascript mouse scroll"

    Se fui eu que fiz a busca, obviamente eu já sei que a fiz e sei qual o(os) termo(s) que eu pesquisei e não tem porque vocês me digam o que eu pesquisei.

    Sinto como se vocês estivessem me tratando como um idiota retardado.

Deixe seu comentário:

Observação: Todos os campos obrigatórios estão marcados com um asterisco (*).

  1. As seguintes tags podem ser inseridas nos comentários: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Sobre este blog

Meu nome é Henrique C. Pereira e o Revolução Etc é o meu blog pessoal. Eu trabalho com design de interfaces, dispositivos móveis, planejamento de soluções web, arquitetura da informação, programação de interfaces, acessibilidade, padrões web, e-commerce e outras coisas relacionadas.
Leia mais sobre o autor.