Qual é a melhor maneira de percorrer a janela do navegador para expandir elementos?

StackOverflow https://stackoverflow.com/questions/245768

  •  05-07-2019
  •  | 
  •  

Pergunta

O que eu quero fazer é rolar para baixo da janela quando eu expandir elementos em minha página.

O efeito que eu estou tentando alcançar é como os comentários Stack Overflow. Se ele se expande para além da página, ele rola para baixo para caber todos os comentários na janela.

O que é a melhor maneira de fazer isso?

Edit:. Eu estou usando JQuery

Foi útil?

Solução

Este plugin jQuery funcionou bem para mim: http://demos.flesler.com/jquery/scrollTo/

Outras dicas

Se você tem a vantagem de usar Prototype, você pode usar $(element).scrollTo().

Caso contrário, a idéia geral é calcular o acumulado deslocamento do elemento, em seguida, definir window.scrollTop (e window.scrollLeft) em conformidade.

Você pode fazê-lo muito bem com Scriptaculous (construída em cima de Prototype ):

new Effect.ScrollTo('someDiv',{...some parameters...})

Ele lhe dá um controle mais fino do que sozinho Prototype (atraso antes de eventos de início, duração e retorno de chamada (como afterFinish) que permitem desencadear outros efeitos ou qualquer outra coisa que você escolher. Você pode fazê-lo rolar de forma harmoniosa e bem, de modo que o doesn página 't de repente saltar.

Se você sabe o que o próximo elemento na fonte é que você realmente pode apenas saltar a esse elemento (location.href = "# ..."). Este seria usar o navegador nativo 'rolando' e não usa qualquer bibliotecas.

Você pode usar este código wich é bom, mas não perfeito. Com base na sugestão de blonkm

function scrollTo( Selector ){
  $(Selector).before("<a name='scroll' id='scroll'></a>");
  document.location.hash = 'scroll';
  $('scroll').remove();
}

Isso deve funcionar. Requer jQuery, mas você já dizer que seu usando isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top