Signatur
Beschreibung
Element.scrollLeftMax liefert eine Zahl, die angibt, wie weit ein Element maximal nach links gescrollt werden kann – also den höchsten Wert, den scrollLeft annehmen kann. Ist der Inhalt nicht breiter als der sichtbare Bereich, ist der Wert 0.
Die Eigenschaft ist eine nicht standardisierte, Firefox-spezifische Erweiterung. In allen anderen Browsern ist sie undefined. Browserübergreifend erhält man denselben Wert über die Formel element.scrollWidth - element.clientWidth.
Nützlich ist der Wert zum Beispiel für horizontale Karussells, Tabellen mit Überbreite oder Fortschrittsanzeigen: Man kann prüfen, ob das rechte Ende erreicht ist, oder den Scrollfortschritt als Prozentwert berechnen.
Rückgabewert
0, wenn das Element nicht horizontal scrollbar ist. In Nicht-Firefox-Browsern ist die Eigenschaft undefined.Beispiele
Maximalen Scrollversatz browserübergreifend ermitteln
// Fallback für Browser ohne scrollLeftMax
const getScrollLeftMax = (el) =>
typeof el.scrollLeftMax === 'number'
? el.scrollLeftMax
: el.scrollWidth - el.clientWidth;
const box = document.querySelector('.tabelle-wrapper');
console.log(`Maximal scrollbar: ${getScrollLeftMax(box)} px`);
Erkennen, ob das rechte Ende eines Karussells erreicht ist
const carousel = document.querySelector('.carousel');
const nextBtn = document.querySelector('.carousel-next');
const updateButton = () => {
const max = carousel.scrollLeftMax ?? (carousel.scrollWidth - carousel.clientWidth);
// Toleranz von 1 px wegen Subpixel-Rundung
nextBtn.disabled = carousel.scrollLeft >= max - 1;
};
carousel.addEventListener('scroll', updateButton, { passive: true });
updateButton();
Horizontalen Scrollfortschritt in Prozent anzeigen
const scroller = document.querySelector('#zeitleiste');
const anzeige = document.querySelector('#fortschritt');
scroller.addEventListener('scroll', () => {
const max = scroller.scrollLeftMax ?? (scroller.scrollWidth - scroller.clientWidth);
const prozent = max > 0 ? Math.round((scroller.scrollLeft / max) * 100) : 100;
anzeige.textContent = `${prozent} %`;
}, { passive: true });
Direkt ans Ende scrollen
const liste = document.querySelector('.chips');
const max = liste.scrollLeftMax ?? (liste.scrollWidth - liste.clientWidth);
liste.scrollTo({ left: max, behavior: 'smooth' });
// Wichtig · Fallstricke
- Kompatibilität: Nur in Firefox verfügbar, nicht Teil eines Standards. Chrome, Edge und Safari liefern
undefined. Für produktiven Code immerscrollWidth - clientWidthals Fallback verwenden. - Schreibgeschützt: Eine Zuweisung wird ignoriert (im Strict Mode kann ein
TypeErrorausgelöst werden). Zum ScrollenscrollLeftoderscrollTo()verwenden. - Rechts-nach-links-Layouts (
direction: rtl):scrollLeftist dort 0 oder negativ, währendscrollLeftMaxpositiv bleibt. Vergleiche daher mitMath.abs(el.scrollLeft). - Rundung: Der Wert ist ganzzahlig,
scrollLeftkann bei Zoom oder hoher Pixeldichte gebrochene Werte haben – beim Vergleich eine kleine Toleranz einplanen. - Performance: Das Auslesen (wie auch
scrollWidth/clientWidth) kann eine Layout-Berechnung erzwingen. In Scroll-Handlern keine Lese- und Schreibzugriffe auf das Layout abwechseln; gegebenenfallsrequestAnimationFrameverwenden.