• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Horizontal Div Scroll Smooth

mustang

Mitglied
Hallo Leute,

ich habe auf meiner Website ein Div, welches horizontal gescrollt werden kann.
Damit der Benutzer mit dem Mausrad nach links und rechts scrollen kann, nutze ich das Script von:
https://github.com/jquery/jquery-mousewheel/blob/master/jquery.mousewheel.js
und folgendes Script, welches sich auf das Div (scrolldiv) bezieht:

Code:
<script type="text/javascript">
    $(document).ready(function() {
    $('#scrolldiv').mousewheel(function(e, delta) {
        this.scrollLeft -= (delta * 80);
        e.preventDefault();
    });
});
</script>

Leider sieht das Scrollen dabei sehr ruckelig aus. Habt ihr eine Lösung, wie man das besser machen könnte?
Problem ist, dass sämtliche "Smooth-Scrolling" Skripte mit Anchors arbeiten (die ich gefunden habe), ich aber keine Anchors habe, sondern nur das Div entlang scrollen will.

Gruß mustang
 
Zuletzt bearbeitet:
Werbung:
Servus,
gute Idee, aber wie sieht das genau aus? Denn egal wie ich das in ein animate() schreibe, funktioniert es nicht mehr.
 
Werbung:
Wenn ich nicht irre musst du das .animate() an scrollLeft anhängen.
So etwa scrollLeft.animate()

Bin mit aber nicht wirklich sicher ;)
 
Varianten, die ich jetzt probiert habe und leider nicht funktionieren:

Code:
this.scrollLeft.animate() -= (delta * 80);
this.animate().scrollLeft -= (delta * 80);
animate(this.scrollLeft -= (delta * 80););
 
Werbung:
Also müsste
Code:
this.animate(scrollLeft -= (delta * 80))
reichen falls keine Eigenschaften angegeben werden oder liege ich falsch?
 
Also der Code:
Code:
$( "#left" ).click(function(){
$( "#scrolldiv" ).animate({ "left": "-=50px" }, "slow" );
});
funktioniert insofern nicht, da hier CSS-Eigenschaften geändert werden, ich ja aber das:
Code:
this.scrollLeft -= (delta * 80);
ausführen möchte.

Die Variante:
Code:
$('#scrolldiv').mousewheel(function(e, delta) {
        $( "#scrolldiv" ).animate(this.scrollLeft -= (delta * 80), "slow" );
        e.preventDefault();
    });
funktioniert zwar, hat aber genau das gleiche Ruckeln, wie schon am Anfang.
Und die ScrollTop-Funktion umschreiben hat am Ende das gleiche Ergebnis vom Code her und vom Aussehen.
 
Werbung:
Dieser Ansatz erscheint mir Erfolg versprechend:
Code:
$( "#scrolldiv" ).animate({ "left": "-=50px" }, "slow" );
Nur müsstest Du IMO scrollLeft animieren statt left, weil Du sonst die Position des div animierst:
Code:
$( "#scrolldiv" ).animate({scrollLeft: "-=50px"}, "slow" );
 
Werbung:
Zurück
Oben