Tutorial: Modal-Scroll mit scrollIntoView + scrollTop-Fallback
scrollIntoView scrollt den naechsten scrollbaren Container (modal-body). Zusaetzlich wird scrollTop direkt gesetzt als Fallback via offsetTop-Berechnung.
Dieser Commit ist enthalten in:
@@ -1849,15 +1849,18 @@ const Tutorial = {
|
||||
var el = document.querySelector(selector);
|
||||
var modalBody = document.querySelector('#modal-new .modal-body');
|
||||
if (!el || !modalBody) return Promise.resolve();
|
||||
// Element zentriert im sichtbaren Modal-Bereich anzeigen
|
||||
var elRect = el.getBoundingClientRect();
|
||||
var bodyRect = modalBody.getBoundingClientRect();
|
||||
var bodyVisibleH = bodyRect.height;
|
||||
var offset = elRect.top - bodyRect.top + modalBody.scrollTop;
|
||||
var elCenter = offset + elRect.height / 2;
|
||||
var targetScroll = elCenter - bodyVisibleH / 2;
|
||||
modalBody.scrollTo({ top: Math.max(0, targetScroll), behavior: 'smooth' });
|
||||
return new Promise(function(resolve) { setTimeout(resolve, 500); });
|
||||
// scrollIntoView auf dem Element - scrollt den naechsten scrollbaren Container
|
||||
try { el.scrollIntoView({ behavior: 'smooth', block: 'center' }); } catch(e) {}
|
||||
// Fallback: manuell scrollTop setzen via offsetTop-Berechnung
|
||||
var elTop = 0;
|
||||
var node = el;
|
||||
while (node && node !== modalBody) {
|
||||
elTop += node.offsetTop || 0;
|
||||
node = node.offsetParent;
|
||||
}
|
||||
var targetScroll = elTop - modalBody.clientHeight / 2 + el.offsetHeight / 2;
|
||||
modalBody.scrollTop = Math.max(0, targetScroll);
|
||||
return new Promise(function(resolve) { setTimeout(resolve, 400); });
|
||||
},
|
||||
|
||||
// Helfer: Modal scrollen UND Bubble neu positionieren
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren