aside per JS scrollen

Sprint

Erfahrenes Mitglied
Hallo zusammen,

nachdem mein Hilfesystem nun schon ganz gut funktioniert, bin ich auf ein damit zusammenhängendes Problem gestoßen. Und zwar ist das Hauptmenü der Seite in einem aside angesiedelt, das per Button aus- bzw. eingefahren wird. Nun gibt es ein paar Hilfethemen, die Punkte ganz unten im Menü betreffen und auf etwas kleineren Monitoren liegen die außerhalb des sichtbaren Teils. Der aside Teil müßte also nach unten gescrollt werden.

HTML:
<body>
    <aside id="main-menu-panel" class="dv-panel mCustomScrollbar _mCS_1 mCS-autoHide ps-active-panel" style="position: fixed; top: 0px; height: 100%; z-index: 2147483647; left: auto; right: 0px; display: block;">
        <div id="mCSB_1" class="mCustomScrollBox mCS-light mCSB_vertical mCSB_inside" tabindex="0">
            <div id="mCSB_1_container" class="mCSB_container" style="position: relative; top: -1px; left: 0px;" dir="ltr">
                <nav id="mainmenu">
                    <ul>
                        <li>...</li>
                    </ul>
                </nav>
            </div>
        </div>
    </aside>
</body>

So ist der grundsätzliche Aufbau der Seite. Ich habe dann in das Script, das die Hilfeeinblendungen steuert, diesen Befehl eingesetzt.
Javascript:
$("#mCSB_1_container").scrollTop($("#mCSB_1_container")[0].scrollHeight);
Der #mCSB_1_container ist der Teil, der verschoben wird, wenn ich das Menü mit der Maus scrolle. Das kann man sehr schön an den top Angaben beim inline CSS sehen. Also sollte es doch auch der Bereich sein, der per JS verschoben werden muss, oder?

Der Befehl wird auch ausgeführt, allerdings wird nicht das angesprochene div verschoben, sondern die darunter liegende Webseite! Und da steige ich dann aus. Warum verschiebt er den den kompletten body und nicht das angegebene div? Ich hab auch schon verschiedene andere Varianten ausprobiert, es ist aber immer das selbe. Wie muß das aussehen, damit wirklich nur das betroffene div verschoben wird?

Und sollte das wirklich nicht funktionieren, könnte man ja auch noch das top per JS ändern. Aber wie bekomme ich da den korrekten Wert raus? jeder Bildschirm ist ja anders und mit einem festen Wert wird entweder nicht weit genug verschoben, oder zu weit und die betroffenen Teile verschwinden nach oben aus dem Bildschirm.

Edit:
Ich habe es inzwischen geschafft, über die div- und Fensterhöhe die Verschiebung per CSS hinzukriegen. aber das ist für mich jetzt nicht unbedingt eine elegante Lösung. Wenn also jemand weiß, warum das automatische Scrollen nicht funktioniert, wäre das toll.
 
Zuletzt bearbeitet:

Sempervivum

Erfahrenes Mitglied
Das sind so kryptische IDs und Klassen, benutzt Du ein CMS?

Du schriebst:
Das kann man sehr schön an den top Angaben beim inline CSS sehen.
In dem Fall hätte ich versucht, es genau so zu machen und die top-Angabe zu setzen statt zu scrollen.
 

Sprint

Erfahrenes Mitglied
Nein, ein CMS ist es nicht, aber ein fertiges Template. Und das ist bestimmt nicht von Hand erzeugt worden.

Über das Setzen von Top funktioniert es auch, nur hätte ich gedacht, daß es über scrollen auch gehen würde.