Ich muss über die JavaScript-Schaltfläche zu dem bestimmten Element in diesem Div scrollen (nach dem Klick muss Div zu diesem Element gescrollt werden). Wie kann ich das machen?
Wo position() gibt die zurück #dstElement‘s relative Position zu `.scrollable’, wenn scrollbar positioniert ist.
Code & Demo
var $scroller = $('.scroller');
// assign click handler
$('button').on('click', function () {
// get the partial id of the div to scroll to
var divIdx = $('input').val();
// retrieve the jquery ref to the div
var scrollTo = $('#d'+divIdx)
// change its bg
.css('background', '#9f3')
// retrieve its position relative to its parent
.position().left;
console.log(scrollTo);
// simply update the scroll of the scroller
// $('.scroller').scrollLeft(scrollTo);
// use an animation to scroll to the destination
$scroller
.animate({'scrollLeft': scrollTo}, 500);
});
Wenn Sie 4 setzen, funktioniert es, aber wenn Sie 2 direkt dahinter setzen, geht es zum ersten :/
– Si8
10. Juni 2016 um 18:07 Uhr
Endlich habe ich eine gefunden, die wirklich funktioniert! Danke @Matyas
– Jobst
1. Mai 2018 um 4:56 Uhr
warum nach links scrollen? Wenn Sie sich von 1 nach 7 bewegen, bewegt es sich tatsächlich nach rechts.
– Nguai al
26. Januar 2019 um 8:48 Uhr
es passt die Eigenschaft “scrollLeft” an. Wenn Sie es also von 300 auf 500 einstellen, scrollen Sie tatsächlich nach rechts, wenn Sie es von 500 auf 300 ändern, scrollen Sie nach links. Ähnlich wie beim Ändern der x-Koordinate
– Matyas
28. Januar 2019 um 8:01 Uhr
was kann ich tun, wenn ich das will .container eine dynamische Breite haben?
@trippincat warum? Überprüfen Sie dann einfach, was scrollTo tut, und replizieren Sie das.
– Mondwelle99
10. Juli 2013 um 15:38 Uhr
Super, aber die verlinkte Seite fehlt.
– Matthäus Schinckel
24. Dezember 2015 um 4:28 Uhr
@MatthewSchinckel danke für den Hinweis, ich habe die Antwort mit dem aktuellen Link aktualisiert ^^
– Mondwelle99
24. Dezember 2015 um 15:54 Uhr
Einfach mal abklären. Sie müssen die installieren jquery.scrollTo Plugin.
– Jaider
2. Juli 2020 um 0:01 Uhr
jmd
Ohne jquery:
scrollTo (el) {
const elLeft = el.offsetLeft + el.offsetWidth;
const elParentLeft = el.parentNode.offsetLeft + el.parentNode.offsetWidth;
// check if element not in view
if (elLeft >= elParentLeft + el.parentNode.scrollLeft) {
el.parentNode.scrollLeft = elLeft - elParentLeft;
} else if (elLeft <= el.parentNode.offsetLeft + el.parentNode.scrollLeft) {
el.parentNode.scrollLeft = el.offsetLeft - el.parentNode.offsetLeft;
}
}
Konnte das buchstäblich nirgendwo finden. Danke vielmals!
– SamCarlton
28. Dezember 2020 um 2:09 Uhr
Vielen Dank spart mir viel Zeit.
– Awais fiaz
20. September 2021 um 12:50 Uhr
Probieren Sie die folgende Funktion aus, um das Element oder Li beim Klicken in die Mitte zu bringen
function centerItVariableWidth(target, outer){
var out = $(outer);
var tar = $(target);
var x = out.width();
var y = tar.outerWidth(true);
var z = tar.index();
var q = 0;
var m = out.find('li');
//Just need to add up the width of all the elements before our target.
for(var i = 0; i < z; i++){
q+= $(m[i]).outerWidth(true);
}
out.scrollLeft(Math.max(0, q - (x - y)/2));
}
ling
Der folgende Code sollte den Zweck erfüllen:
document.addEventListener('DOMContentLoaded', function () {
var frames = document.getElementById('frames');
frames.addEventListener('click', function (e) {
if (e.target.classList.contains('item')) {
e.target.parentNode.scrollLeft = e.target.offsetLeft;
}
});
});
body {
background: red;
}
.group{
width: 300px;
display: flex;
position: relative; /* This is important for the js offsetLeft property */
overflow-x: scroll;
}
.item{
width: 200px;
background: #eee;
margin-right: 10px;
}
Ich brauchte nur diesen Teil “e.target.parentNode.scrollLeft = e.target.offsetLeft;”
– Ibrahim ben Salah
26. März 2017 um 18:51 Uhr
Das ist großartig, genau das, wonach ich gesucht habe.
– magnusarinell
16. Dezember 2019 um 18:15 Uhr
$(".ui-jqgrid-bdiv").scrollLeft(400);
Dies funktioniert sowohl in jqgrid als auch in div
Ich brauchte nur diesen Teil “e.target.parentNode.scrollLeft = e.target.offsetLeft;”
– Ibrahim ben Salah
26. März 2017 um 18:51 Uhr
Das ist großartig, genau das, wonach ich gesucht habe.
– magnusarinell
16. Dezember 2019 um 18:15 Uhr
Lukas Alarcon
Wenn Sie ein Element haben, das ein inneres horizontales Scrollen hat, können Sie wie in meinem Beispiel vorgehen: Zwei Pfeile mit verwendeten Klassen scrollen das Element zu den Seiten.
In diesem Fall habe ich mit Klasse .tabs, die ich verschieben muss. Die 500 ist die Zeit in Millisekunden, um diese Schriftrolle zu animieren, sodass Sie Ihren eigenen Schieberegler haben können.
welchen code hast du probiert?
– Avitus
10. Juli 2013 um 15:24 Uhr