więc mam stronę, która ma stały pasek linków z boku. Chciałbym przewinąć do różnych div. Zasadniczo strona to tylko jedna długa strona internetowa, w której chciałbym przewijać różne divy, używając pola menu z boku.
Oto jquery, które mam do tej pory
$(document).ready(function() {
$('#contactlink').click = function() {
$(document).scrollTo('#contact');
}
});
Problem polega na tym, że automatycznie przechodzi do div kontaktu, gdy się ładuje, a następnie po naciśnięciu #contactlink
w menu przewija się z powrotem na górę.
EDYCJA: 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>
Dzięki za pomoc
Odpowiedzi:
Po pierwsze, twój kod nie zawiera
contact
div, macontacts
div!Na pasku bocznym masz
contact
div w dolnej części strony, którą maszcontacts
. Usunąłem końcowys
przykładowy kod. (źle wpisałeśprojectslink
identyfikator na pasku bocznym).Po drugie, spójrz na niektóre przykłady kliknięcia na stronie referencyjnej jQuery. Musisz użyć funkcji „kliknij jak”,
object.click( function() { // Your code here } );
aby powiązać moduł obsługi zdarzenia kliknięcia z obiektem .... Jak w moim przykładzie poniżej. Nawiasem mówiąc, możesz także wywołać kliknięcie obiektu, używając go bez argumentów, takich jakobject.click()
.Po trzecie,
scrollTo
jest wtyczką w jQuery. Nie wiem, czy masz zainstalowaną wtyczkę. Nie możesz używaćscrollTo()
bez wtyczki. W tym przypadku pożądana funkcjonalność to tylko 2 linie kodu, więc nie widzę powodu, aby używać wtyczki.Ok, teraz rozwiązanie.
Poniższy kod przewinie się do odpowiedniego div, jeśli klikniesz link na pasku bocznym. Okno musi być wystarczająco duże, aby umożliwić przewijanie:
Przykład na żywo
(Przewiń do funkcji pobranej stąd )PS: Oczywiście powinieneś mieć ważny powód, aby iść tą drogą zamiast używać tagów kotwicy
<a href="#gohere">blah</a>
...<a name="gohere">blah title</a>
źródło
W
.scrollTo()
jQuery nie ma metody, ale jest.scrollTop()
jedna..scrollTop
oczekuje parametru, czyli wartości w pikselach, do której powinien przewijać pasek przewijania.Przykład:
przewinie okno (jeśli jest w nim wystarczająco dużo treści).
Tak więc możesz uzyskać tę pożądaną wartość za pomocą
.offset()
lub.position()
.Przykład:
Powinno to przewinąć
#contact
element do widoku.Alternatywną metodą inną niż jQuery jest
.scrollIntoView()
. Możesz wywołać tę metodę w dowolny sposóbDOM element
:true
wskazuje, że element jest umieszczony na górze, podczas gdyfalse
umieściłby go na dole widoku. Zaletą metody jQuery jest to, że można jej nawet używać zfx functions
podobnymi.animate()
. Możesz więc płynnie przewijać coś.Odwołanie: .scrollTop () , .position () , .offset ()
źródło
możesz spróbować :
źródło
Dodaj tę małą funkcję i użyj jej w ten sposób:
$('div').scrollTo(500);
źródło
OK, to małe rozwiązanie, ale działa dobrze.
załóżmy następujący kod:
chcesz, gdy nowy post zostanie dodany do 'the_div_holder', a następnie przewinie jego wewnętrzną zawartość (. div div) do ostatniego jak na czacie. Tak, wykonaj następujące czynności za każdym razem, gdy nowy główny słupek zostanie dodany do głównego uchwytu div:
źródło
Najpierw uzyskaj pozycję elementu div do góry, którą chcesz przewijać metodą jQuery position ().
Przykład: var pos = $ („div”). Position ();
Następnie uzyskaj y cordinates (wysokość) tego elementu metodą „ .top ”.
Przykład: pos.top;
Następnie uzyskaj x cordinates tego elementu div za pomocą metody „ .left ”.
Metody te pochodzą z pozycjonowania CSS.
Gdy otrzymamy x & y cordinates, możemy użyć scrollTo () w javascript metoda.
Ta metoda przewija dokument do określonej wysokości i szerokości.
Przyjmuje dwa parametry, gdy x & y kordynuje. Składnia: window.scrollTo (x, y);
Następnie po prostu przekaż cordinate x & y elementu DIV w funkcji scrollTo () .
Zobacz przykład poniżej ↓ ↓
źródło
Te też nie są potrzebne. Wystarczy dodać identyfikator div do href znacznika <a>
Właśnie tak.
źródło