Ich habe also eine Seite mit einer festen Linkleiste an der Seite. Ich möchte zu den verschiedenen Divs scrollen. Grundsätzlich ist die Seite nur eine lange Website, auf der ich über das Menüfeld zur Seite zu verschiedenen Divs scrollen möchte.
Hier ist die Frage, die ich bisher habe
$(document).ready(function() {
$('#contactlink').click = function() {
$(document).scrollTo('#contact');
}
});
Das Problem ist, dass es beim Laden automatisch zum Kontakt-Div wechselt. Wenn ich dann #contactlink
im Menü auf drücke , wird ein Bildlauf nach oben durchgeführt.
BEARBEITEN: 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>
Danke für die Hilfe
Antworten:
Erstens enthält Ihr Code kein
contact
Div, sondern eincontacts
Div!In der Seitenleiste haben Sie
contact
in der div am Ende der Seite, die Sie habencontacts
. Ich habe das Finales
für das Codebeispiel entfernt. (Sie haben auch dieprojectslink
ID in der Seitenleiste falsch geschrieben ).Schauen Sie sich zweitens einige Beispiele an, um auf die jQuery-Referenzseite zu klicken . Sie müssen click like verwenden,
object.click( function() { // Your code here } );
um einen click event handler an das Objekt zu binden .... Wie in meinem Beispiel unten. Nebenbei können Sie auch einfach einen Klick auf ein Objekt auslösen, indem Sie es ohne Argumente verwenden, wie zobject.click()
.Drittens
scrollTo
ist ein Plugin in jQuery. Ich weiß nicht, ob Sie das Plugin installiert haben. Sie können nichtscrollTo()
ohne das Plugin verwenden. In diesem Fall ist die gewünschte Funktionalität nur 2 Codezeilen, daher sehe ich keinen Grund, das Plugin zu verwenden.Ok, jetzt zu einer Lösung.
Der folgende Code führt zum richtigen Div, wenn Sie auf einen Link in der Seitenleiste klicken. Das Fenster muss groß genug sein, um einen Bildlauf zu ermöglichen:
Live-Beispiel
(Scrollen Sie zur Funktion von hier )PS: Natürlich sollten Sie einen zwingenden Grund haben, diesen Weg zu gehen, anstatt Ankertags zu verwenden
<a href="#gohere">blah</a>
...<a name="gohere">blah title</a>
quelle
.scrollTo()
In jQuery gibt es keine Methode, aber.scrollTop()
eine..scrollTop
erwartet einen Parameter, dh den Pixelwert, zu dem die Bildlaufleiste scrollen soll.Beispiel:
wird durch das Fenster scrollen (wenn es genügend Inhalt enthält).
So können Sie diesen gewünschten Wert mit
.offset()
oder erhalten.position()
.Beispiel:
Dies sollte das
#contact
Element in die Ansicht scrollen .Die alternative Methode ohne jQuery ist
.scrollIntoView()
. Sie können diese MethodeDOM element
wie folgt aufrufen :true
Gibt an, dass das Element oben positioniert ist, währendfalse
es unten in der Ansicht platziert wird. Das Schöne an der jQuery-Methode ist, dass Sie sie sogar mitfx functions
like verwenden können.animate()
. Sie können also etwas glatt scrollen.Referenz: .scrollTop () , .position () , .offset ()
quelle
Du kannst es versuchen :
quelle
Fügen Sie diese kleine Funktion hinzu und verwenden Sie sie wie folgt:
$('div').scrollTo(500);
quelle
OK Leute, das ist eine kleine Lösung, aber es funktioniert gut.
Angenommen, der folgende Code:
Wenn ein neuer Beitrag zu 'the_div_holder' hinzugefügt werden soll, wird der innere Inhalt (der .post des div) wie ein Chat zum letzten gescrollt. Gehen Sie also wie folgt vor, wenn ein neuer .post zum Haupt-Div-Halter hinzugefügt wird:
quelle
Ermitteln Sie zuerst die Position des div-Elements, bis zu dem Sie mit der Methode jQuery position () scrollen möchten.
Beispiel: var pos = $ ("div"). Position ();
Ermitteln Sie dann die y-Koordinaten (Höhe) dieses Elements mit der Methode " .top ".
Beispiel: pos.top;
Dann erhalten Sie die x-Koordinaten des div-Elements mit der Methode " .left ".
Diese Methoden stammen aus der CSS-Positionierung.
Sobald wir x & y-Koordinaten erhalten haben, können wir scrollTo () von Javascript verwenden. Methode.
Diese Methode scrollt das Dokument bis zu einer bestimmten Höhe und Breite.
Es werden zwei Parameter als x & y-Koordinaten verwendet. Syntax: window.scrollTo (x, y);
Übergeben Sie dann einfach die x & y-Koordinaten des DIV-Elements in der Funktion scrollTo () .
Siehe das folgende Beispiel ↓ ↓
quelle
Keine Notwendigkeit auch diese. Fügen Sie einfach die div-ID zu href eines <a Tag-Tags hinzu
Genau so.
quelle