Ich habe mal eine für mich halbwegs brauchbare Teillösung, aber verstehe das merkwürdige Verhalten dennoch nicht (Die Funktion scheint nicht mehr sauber zu funktionieren, erst beim dritten Klick (= active Status zum zweiten Mal)):
HTML-Code:
window.addEvent('domready', function() {
new Fx.Accordion($$('.wrapper'), $$('.code'), {
opacity: false,
display: <?php echo $wid; ?>,
duration: 1500,
alwaysHide: true,
onActive: function(tog, el) {
tog.addClass('active');
tog.setProperty('aria-expanded', 'true');
el.setProperty('aria-hidden', 'false');
/* request = this.previous;
if(request >= 0) {
var open = this.togglers[request].getStyle('margin-top').toInt();
if(open >= 0) new Fx.SmoothScroll({duration: this.options.duration}, window).toElement(this.togglers[request]);
} */
return false;
},
onBackground: function(tog, el) {
tog.removeClass('active');
tog.setProperty('aria-expanded', 'false');
el.setProperty('aria-hidden', 'true');
return false;
},
onComplete: function(el){
if(el.getSize().y > 0) {
el.setStyle('height','auto');
}
el.scrollIntoView({block:'start', behavior:'smooth'}, true);
/* request = this.previous;
if(request >= 0) {
var open = this.togglers[request].getStyle('margin-top').toInt();
if(open >= 0) new Fx.SmoothScroll({duration: this.options.duration}, window).toElement(this.togglers[request]);
} */
}
});
Der Code, egal ob in der Funktion onActive(); oder onComplete(); , bildet besagtes merkwürdiges Verhalten. In Version 2.11.17 funktionierte das einwandfrei (= siehe hier ):
HTML-Code:
request = this.previous;
if(request >= 0) {
var open = this.togglers[request].getStyle('margin-top').toInt();
if(open >= 0) new Fx.SmoothScroll({duration: this.options.duration}, window).toElement(this.togglers[request]);
}
Nach längerer Recherche gestern in der Spätschicht hab ich das jetzt so drin, und es funktioniert. Nicht ganz so sauber, wie im Beispiellink, aber es funktioniert:
HTML-Code:
onComplete: function(el){
if(el.getSize().y > 0) {
el.setStyle('height','auto');
}
el.scrollIntoView({block:'start', behavior:'smooth'}, true);
}
Für bessere Ideen bin ich dankbar!
ToM
Lesezeichen