Blättern Elternteil Spitze Kind element
Ich versuche zu scrollen ein div, so dass eine Verknüpfung in der es erscheint.
JS:
$(document).ready(function(){
scrollit();
});
function scrollit(){
var elem= $("#link10");
if(elem.length){
console.log(elem.offset().top);
$("#sidebar").animate({ scrollTop: elem.offset().top }, { duration: 'medium', easing: 'swing' });
}
}
CSS:
#sidebar{
height:80px;
width:200px;
overflow:scroll;
}
HTML:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='sidebar'>
<a href='#' id='link1'>1</a><br/>
<a href='#' id='link2'>2</a><br/>
<a href='#' id='link3'>3</a><br/>
<a href='#' id='link4'>4</a><br/>
<a href='#' id='link5'>5</a><br/>
<a href='#' id='link6'>6</a><br/>
<a href='#' id='link7'>7</a><br/>
<a href='#' id='link8'>8</a><br/>
<a href='#' id='link9'>9</a><br/>
<a href='#' id='link10'>10</a><br/>
<a href='#' id='link11'>11</a><br/>
<a href='#' id='link12'>12</a><br/>
<a href='#' id='link13'>13</a><br/>
<a href='#' id='link14'>14</a><br/>
<a href='#' id='link15'>15</a><br/>
<a href='#' id='link16'>16</a><br/>
<a href='#' id='link17'>17</a><br/>
<a href='#' id='link18'>18</a>
</div>
<br/><br/>
<a href='#' onclick='scrollit();return false'>again</a>
Auf den ersten, es melden sich die offset-als eine bestimmte Distanz (sagen, 45), und Blättern Sie, um es korrekt. Dann, wenn es wieder läuft, die protokolliert Abstand ist 0 und wird dann Blättern Sie zu der Spitze der sidebar. Es sollte sagen, dass element.
- Ihre Frage ist nicht klar .. wie kann man Blättern übergeordneten oben in das child-element ... Ist es, dass Sie einen Bildlauf durchführen möchten, das Kind link, um die Spitze oder die Gründung von Eltern-div ??
- ja, siehe code snippet
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code funktioniert gut, wie Sie sehen können, in das jsbin
Das problem ist, dass die
elem.offset().top
Wert ist relativ zum aktuellen scroll-position, so dass Sie nehmen in Konto, und setzen Sie entweder den Bildlauf-oder discount-die scroll-position (mit so etwas wiewindow.pageYOffset
).UPDATE:
Lösung von danielb:
Können Sie verhindern, dass die animation auslösen wieder einmal das Element ist auf der Oberseite mit einer zusätzlichen Bedingung wie folgt:
JS:
CSS:
HTML:
was Sie tun können, finden Eltern top-offset und subtrahieren mit link-top-offset wird Ihnen immer die Distanz zwischen den beiden ..
aber stellen Sie sicher, dass das übergeordnete div hat position relative oder absolute (css)..
Lösung:
Die Lösung: