então eu tenho uma página que tem uma barra de links fixa ao lado. Eu gostaria de rolar para os diferentes divs. Basicamente, a página é apenas um site longo, onde eu gostaria de rolar para divs diferentes usando a caixa de menu ao lado.
Aqui está o jquery que eu tenho até agora
$(document).ready(function() {
$('#contactlink').click = function() {
$(document).scrollTo('#contact');
}
});
O problema é que ele vai automaticamente para a div de contato quando carrega, e quando pressiono o botão #contactlink
no menu, ele rola de volta para o topo.
EDIT: HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<!-- jQuery-->
<script src = "<?php echo base_url() ?>assets/js/jquery.js"></script>
<!-- .js file-->
<script src = "<?php echo base_url() ?>assets/js/pagetwo.js"></script>
<link rel="stylesheet" type="text/css" href="<?php echo base_url()?>assets/css/reset.css" />
<!-- .css for page -->
<link rel="stylesheet" type="text/css" href="<?php echo base_url()?>assets/css/pagetwo.css"/>
<!-- page title-->
<title><!-- Insert Title --></title>
</head>
<body>
<div id="container">
<div id="sidebar">
<ul>
<li><a id = "aboutlink" href="#">auck</a></li>
<li><a id = "peojectslink" href="#">Projects</a></li>
<li><a id = "resumelink" href="#">Resume</a></li>
<li><a id = "contactlink" href="#">Contact</a></li>
</ul>
</div>
<div id="content">
<div class="" id="about">
<p class="header">uck</p>
<p class="info">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
<div class="sections"id="projects">
<p class = "header">Projects</p>
<p class="info">Projects</p>
</div>
<div class="sections" id="resume">
<p class = "header">Resume</p>
<p class="info">Resume</p>
</div>
<div class="sections" id="contacts">
<p class = "header">Contact</p>
<p class="info">Contact</p>
</div>
</div>
</div>
</body>
Obrigado pela ajuda
Respostas:
Primeiro, seu código não contém uma
contact
div, ele tem umacontacts
div!Na barra lateral, você tem
contact
a div na parte inferior da páginacontacts
. Eu removi a finals
do exemplo de código. (você também digitou incorretamente oprojectslink
ID na barra lateral).Segundo, dê uma olhada em alguns dos exemplos para clicar na página de referência do jQuery. Você deve usar o click like,
object.click( function() { // Your code here } );
para vincular um manipulador de eventos click ao objeto .... Como no meu exemplo abaixo. Como um aparte, você também pode apenas acionar um clique em um objeto usando-o sem argumentos, comoobject.click()
.Terceiro,
scrollTo
é um plugin no jQuery. Não sei se você tem o plugin instalado. Você não pode usarscrollTo()
sem o plugin. Nesse caso, a funcionalidade que você deseja é de apenas 2 linhas de código, portanto não vejo razão para usar o plug-in.Ok, agora vamos a uma solução.
O código abaixo irá rolar para a div correta se você clicar em um link na barra lateral. A janela precisa ser grande o suficiente para permitir a rolagem:
Exemplo ao vivo
(Role para a função retirada daqui )PS: Obviamente, você deve ter um motivo convincente para seguir esse caminho, em vez de usar tags âncora
<a href="#gohere">blah</a>
...<a name="gohere">blah title</a>
fonte
Não há
.scrollTo()
método no jQuery, mas existe.scrollTop()
um..scrollTop
espera um parâmetro, ou seja, o valor do pixel para o qual a barra de rolagem deve rolar.Exemplo:
irá rolar a janela (se houver conteúdo suficiente).
Então você pode obter esse valor desejado com
.offset()
ou.position()
.Exemplo:
Isso deve rolar o
#contact
elemento para exibição.O método alternativo não-jQuery é
.scrollIntoView()
. Você pode chamar esse método de qualquer maneiraDOM element
:true
indica que o elemento está posicionado na parte superior, enquanto ofalse
colocaria na parte inferior da vista. O bom do método jQuery é que você pode usá-lo com ofx functions
like.animate()
. Então você pode suavizar a rolagem de algo.Referência: .scrollTop () , .position () , .offset ()
fonte
podes tentar :
fonte
Adicione esta pequena função e use-a da seguinte forma:
$('div').scrollTo(500);
fonte
OK pessoal, essa é uma solução pequena, mas funciona bem.
suponha o seguinte código:
você deseja que quando uma nova postagem for adicionada a 'the_div_holder', ela role seu conteúdo interno (o div .post) até o último como um bate-papo. Portanto, faça o seguinte sempre que um novo .post for adicionado ao principal titular de div:
fonte
Primeiro, obtenha a posição do elemento div até a qual você deseja rolar pelo método jQuery position ().
Exemplo: var pos = $ ("div"). Position ();
Em seguida, obtenha os cordinados y (altura) desse elemento com o método " .top ".
Exemplo: pos.top;
Em seguida, obtenha os cordinados x do elemento div com o método " .left ".
Esses métodos são originários do posicionamento CSS.
Quando obtivermos os cordinatos x e y, podemos usar o scrollTo () do javascript ; método.
Esse método rola o documento até a altura e largura específicas.
São necessários dois parâmetros como cordas x e y. Sintaxe: window.scrollTo (x, y);
Em seguida, passe os cordinados x e y do elemento DIV na função scrollTo () .
Consulte o exemplo abaixo ↓ ↓
fonte
Não há necessidade também destes. Simplesmente adicione div id ao href de uma tag <a>
Bem desse jeito.
fonte