Eu tenho um elemento que é a posição: fixo e então rola com a página como eu quero no entanto. quando o usuário rola para cima, quero que o elemento pare de rolar em um determinado ponto, digamos, quando está 250px do topo da página, isso é possível? Qualquer ajuda ou conselho seria útil, obrigado!
Tive a sensação de que precisaria usar jquery para fazer isso. Eu tentei obter a rolagem ou localização de onde o usuário está, mas fiquei muito confuso, há alguma solução jquery?
jquery
css
positioning
Louise McComiskey
fonte
fonte
Respostas:
Aqui está um plug-in jQuery rápido que acabei de escrever que pode fazer o que você precisa:
Veja o exemplo de trabalho →
fonte
$('window')
não deve estar entre aspas. Mas obrigado por isso, foi muito útil.Você quer dizer mais ou menos assim?
http://jsfiddle.net/b43hj/
Exibir trecho de código
fonte
bottom
e este valor calculado (deslocamento de 250) no máx.Aqui está um plugin jquery completo que resolve este problema:
https://github.com/bigspotteddog/ScrollToFixed
A descrição deste plugin é a seguinte:
Este plugin é usado para fixar elementos no topo da página, se o elemento tivesse rolado para fora da visualização, verticalmente; no entanto, permite que o elemento continue a se mover para a esquerda ou direita com a rolagem horizontal.
Dada uma opção marginTop, o elemento irá parar de se mover verticalmente para cima assim que a rolagem vertical atingir a posição de destino; mas, o elemento ainda se moverá horizontalmente conforme a página é rolada para a esquerda ou direita. Uma vez que a página foi rolada de volta para baixo após a posição de destino, o elemento será restaurado à sua posição original na página.
Este plug-in foi testado no Firefox 3/4, Google Chrome 10/11, Safari 5 e Internet Explorer 8/9.
Uso para seu caso particular:
fonte
Você pode fazer o que James Montagne fez com seu código em sua resposta, mas isso o fará piscar no Chrome (testado em V19).
Você pode consertar isso se colocar "margin-top" em vez de "top". Realmente não sei por que funciona com o margin tho.
http://jsbin.com/idacel
fonte
Uma possível solução SOMENTE CSS pode ser alcançada com
position: sticky;
O suporte do navegador é realmente muito bom: https://caniuse.com/#search=position%3A%20sticky
aqui está um exemplo: https://jsfiddle.net/0vcoa43L/7/
fonte
minha solução
fonte
Em um projeto, na verdade, tenho algum título fixado na parte inferior da tela no carregamento da página (é um aplicativo de desenho, portanto, o título fica na parte inferior para dar espaço máximo para o elemento de tela na janela de visualização ampla).
Eu precisava que o título se tornasse 'absoluto' quando atingir o rodapé na rolagem, já que não quero o título acima do rodapé (a cor do título é igual à cor de fundo do rodapé).
Peguei a resposta mais antiga aqui (editada por Gearge Millo) e aquele trecho de código funcionou para meu caso de uso. Com algumas brincadeiras, consegui fazer isso funcionar. Agora, o título fixo fica lindamente acima do rodapé quando atinge o rodapé.
Pensei em compartilhar meu caso de uso e como ele funcionava, e dizer obrigado! O aplicativo: http://joefalconer.com/web_projects/drawingapp/index.html
fonte
Escrevi uma postagem no blog sobre isso que apresentava esta função:
fonte
Uma solução usando Mootools Framework.
http://mootools.net/docs/more/Fx/Fx.Scroll
Obtenha a posição (x e y) do elemento em que deseja parar a rolagem usando $ ('myElement'). GetPosition (). X
$ ('myElement'). getPosition (). y
Para um tipo de rolagem de animação, use:
novo Fx.Scroll ('scrollDivId', {deslocamento: {x: 24, y: 432}}). toTop ();
Para definir a rolagem imediatamente, use:
novo Fx.Scroll (myElement) .set (x, y);
Espero que isto ajude !! : D
fonte
Gostei desta solução
meu problema era que eu tinha que lidar com um contêiner relativo de posição no Adobe Muse.
Minha solução:
fonte
Código mVChr apenas improvisado
fonte
$(this)
e$(window)
em variáveis é que você só precisa fazer$this.height()
e assim por diante. Em vez de definir uma posição superior, não seria melhor se o plugin armazenasse o valor superior original e revertesse para ele ao definir uma largura fixa? Além disso, o que você quer dizer comJust improvised mVChr code
?Eu adaptei a resposta de @mVchr e a inverti para usar no posicionamento de anúncio fixo: se você precisar posicioná-lo absolutamente (rolando) até que o lixo do cabeçalho esteja fora da tela, mas depois precisa que ele permaneça fixo / visível na tela:
CSS:
fonte
Adorei a resposta do @james, mas estava procurando o inverso, ou seja, pare a posição fixa antes do rodapé, aqui está o que eu descobri
Portanto, agora o elemento fixo iria parar antes do rodapé. e não se sobreporá a ele.
fonte