Contao 4.7.2 - Unterschiedliches Scroll-Verhalten in Safari, Chrome, FF, Opera
Hallo liebe Contao-Gemeinde ...
ich habe da noch eine Ungereimtheit in meinem OnePager https://www.luetten-dieks-carlito.eu bemerkt:
Und zwar soll beim Anklicken der Menüpunkte zum entsprechenden Abschnitt/Artikel gescrollt werden, die Topposition des Artikels soll dabei 80px (scrollOffset: $('#header-bar').height()) unterhalb des oberen Bildschirmrand liegen, da der Header-Bar mit dem Menü 80px hoch ist und der Header-Bar keinen Inhalt verdecken soll ...
Mein Scroll-Script benutzt u.a. folgenden Code, um das zu bewerkstelligen:
Code:
...
scrollTo: function(target, callback) {
var offset = $(target).offset().top - this.config.scrollOffset;
$('html, body').animate({scrollTop: offset}, this.config.scrollSpeed, this.config.easing, callback);
},
...
Soweit so gut, unter Safari funktioniert das auch genauso wie es soll, unter Chrome, FF etc. kommt es zu einem merkwürdigen Effekt: Es wird zunächst korrekt zur Position 80px unterhalb des Bildschirmrands gescrollt, danach springt der Abschnitt/Artikel ruckartig an den Bildschirmrand ... Kann ich mir keinen Reim drauf machen. Die Chrome/FF Useragents, die in Safari eingebaut sind verhalten sich ok, nur die proprietären Browser lassen den Inhalt nach oben schnellen.
Ich hoffe, dass ich mich einigermaßen verständlich gemacht habe ... läßt sich unter o.g. Link besichtigen ... Vielleicht hat von Euch einer eine Idee?! Danke im Voraus ...
Problem mittels anderem Script gelöst ...
Für das Script von Trevor Davis habe ich keine Lösung gefunden, scheint tatsächlich so, dass "preventDefault()" nicht greift und nach dem Smoothscroll noch ein Jump zum #anker (top: 0) ausgeführt wird.
Mittels des "scrollspy" jQuery Plugin (https://github.com/r3plica/Scrollspy) ließ sich das Problem nun lösen, habe es um eine "easing:" Option erweitert, als template eingebunden, und voilà, funktioniert wie gewünscht ...
Nur für den Fall, dass mal irgendjemand vor dem gleichen Problem stehen sollte ...